Ви не увійшли.
Сторінки 1
Спасибо за ответ .Условие следующее: если одна из кнопок нажата выводим на сериал один раз(шлейф включен) ,если эта же кнопка отжата выводим один раз на сериал (шлейф выключен).
Добрый День!
Помогите пожалуйста.Перед вами код опроса 256 кнопок(контактов).Опрос идет, но нужен вывод в сериал контакт включен, контакт выключен .Спасибо.
#include <DS1307.h>
// Init the DS1307
DS1307 rtc(SDA, SCL);
int PinOut[16] {22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37}; // пины выходы
int PinIn[16] {38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53}; // пины входа
int val = 0;
int i = 0;// 1
int j = 0;// 1
const short value[16][16]
//unsigned int value[16][16]signed char
{ {16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1},
{32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17},
{48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33},
{64, 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49},
{80, 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65},
{96, 95, 94, 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, 83, 82, 81},
{112, 111, 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97},
{128, 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 113},
{144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 134, 133, 132, 131, 130, 129},
{160, 159, 158, 157, 156, 155, 154, 153, 152, 151, 150, 149, 148, 147, 146, 145},
{176, 175, 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 164, 163, 162, 161},
{192, 191, 190, 189, 188, 187, 186, 185, 184, 183, 182, 181, 180, 179, 178, 177},
{208, 207, 206, 205, 204, 203, 202, 201, 200, 199, 198, 197, 196, 195, 194, 193},
{224, 223, 222, 221, 220, 219, 218, 217, 216, 215, 214, 213, 212, 211, 210, 209},
{240, 239, 238, 237, 236, 235, 234, 233, 232, 231, 230, 229, 228, 227, 226, 225},
{256, 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241}
};
// двойной массив, обозначающий кнопку
void setup()
{
pinMode (22, OUTPUT); // инициализируем порты на выход (подают нули на столбцы)
pinMode (23, OUTPUT);
pinMode (24, OUTPUT);
pinMode (25, OUTPUT);
pinMode (26, OUTPUT);
pinMode (27, OUTPUT);
pinMode (28, OUTPUT);
pinMode (29, OUTPUT);
pinMode (30, OUTPUT);
pinMode (31, OUTPUT);
pinMode (32, OUTPUT);
pinMode (33, OUTPUT);
pinMode (34, OUTPUT);
pinMode (35, OUTPUT);
pinMode (36, OUTPUT);
pinMode (37, OUTPUT);
pinMode (38, INPUT); // инициализируем порты на вход с подтяжкой к плюсу (принимают нули на строках)
digitalWrite(38, HIGH);
pinMode (39, INPUT);
digitalWrite(39, HIGH);
pinMode (40, INPUT);
digitalWrite(40, HIGH);
pinMode (41, INPUT);
digitalWrite(41, HIGH);
pinMode (42, INPUT);
digitalWrite(42, HIGH);
pinMode (43, INPUT);
digitalWrite(43, HIGH);
pinMode (44, INPUT);
digitalWrite(44, HIGH);
pinMode (45, INPUT);
digitalWrite(45, HIGH);
pinMode (46, INPUT);
digitalWrite(46, HIGH);
pinMode (47, INPUT);
digitalWrite(47, HIGH);
pinMode (48, INPUT);
digitalWrite(48, HIGH);
pinMode (49, INPUT);
digitalWrite(49, HIGH);
pinMode (50, INPUT);
digitalWrite(50, HIGH);
pinMode (51, INPUT);
digitalWrite(51, HIGH);
pinMode (52, INPUT);
digitalWrite(52, HIGH);
pinMode (53, INPUT);
digitalWrite(53, HIGH);
Serial.begin(9600); // открываем Serial порт
// Initialize the rtc object
rtc.begin();
// Set the clock to run-mode
rtc.halt(false);
// The following lines can be uncommented to set the time
//rtc.setDOW(FRIDAY); // Set Day-of-Week to SUNDAY
//rtc.setTime(22, 01, 0); // Set the time to 12:00:00 (24hr format)
//rtc.setDate(17, 10, 2018); // Set the date to October 3th, 2010
}
void matrix () // создаем функцию для чтения кнопок
{
for (int i = 1; i <= 16; i++) // цикл, передающий 0 по всем столбцам
{
digitalWrite(PinOut[i - 1], LOW); // если i меньше 16 , то отправляем 0 на ножку
for (int j = 1; j <= 16; j++) // цикл, принимающих 0 по строкам
{
if (digitalRead(PinIn[j - 1]) == LOW) // если один из указанных портов входа равен 0, то..
{
Serial.println( value[i - 1][j - 1]); // то b равно значению из двойного массива
Serial.println( "shleif on");
//Serial.println( 256);
delay(175);
//Serial.println(" "); // перенос строки.
// Send date
Serial.print(rtc.getDateStr());
Serial.print(" -- ");
// Send time
Serial.println(rtc.getTimeStr());
}
}
digitalWrite(PinOut[i - 1], HIGH); // подаём обратно высокий уровень
//delay(175);
}
}
void loop()
{
matrix(); // используем функцию опроса матрицы
}
Сторінки 1