#1 Re: Програмування Arduino » помогите новичку - счет количества нажатий кнопки » 2019-06-20 14:24:04

Спасибо за ответ .Условие следующее: если одна из кнопок нажата выводим на сериал один раз(шлейф включен) ,если эта же кнопка отжата выводим один раз  на сериал (шлейф выключен).

#2 Re: Програмування Arduino » помогите новичку - счет количества нажатий кнопки » 2019-06-20 13:16:26

Добрый День!
Помогите пожалуйста.Перед вами код опроса 256 кнопок(контактов).Опрос идет, но нужен вывод в сериал контакт включен, контакт выключен .Спасибо.

#3 Re: Програмування Arduino » помогите новичку - счет количества нажатий кнопки » 2019-06-20 13:11:28

#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(); // используем функцию опроса матрицы

}

Підвал форуму