Відповісти

Введіть повідомлення і натисніть Надіслати
Параметри

Назад

Огляд теми (нові повідомленні вгорі)

Watchdog
2019-06-20 16:55:29
psv1962 пише:

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

Вот, помоги человеку так он уже и условия выставляет, с выводом на сериал. Пусть сам выводит на сериал.  lol

psv1962
2019-06-20 14:24:04

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

Подсказчик
2019-06-20 13:56:42
psv1962 пише:

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

Спасёт: if (нажата) {...} then {...}

psv1962
2019-06-20 13:16:26

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

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

}

UA1ZKI
2019-04-18 18:26:21

Спасибо, что быстро откликнулись, всё работает, как надо. Был затык с одной из кнопок (UP), поправил значение её сопротивления и все работает дальше. 98 Ом намерил, в скетче записал, как 100, т. е. почти без запаса. Замена записи на 120 всё исправила.

Green
2019-04-11 21:28:58

Ну... относительно неправильности, непонятности и сложности, я вам это не говорил. Всё определяется ситуацией и текущей задачей. Должно быть у вас не стоял вопрос в универсальности, поэтому вам и незачем было париться.)

Вячеслав Азаров
2019-04-11 20:45:40
Green пише:

О себе ничего.) О кнопках. Си чем удобнее ассемблера? Тем что выше абстракция, нет привязки к железу. А у вас? Только Ардуино. Только С++. Ограничение в одну кнопку. Понятно, что это не та задача, что бы её без особых проблем адаптировать под что то другое. Однако и она требует каких то усилий. Только заради чего? Отчего бы не писать проще, если это возможно. И если это удобно во всех случаях.

Я знаю, что я неправильно, непонятно, и сложно программирую. Вы не открыли мене на это глаза первый. Эти программулинки предназначались для Ардуино и не для чего более. Использование их в программах Ардуино не требует каких-то особенных умственных усилий, за-ради чего они и были написаны.

Green
2019-04-11 20:23:14

О себе ничего.) О кнопках. Си чем удобнее ассемблера? Тем что выше абстракция, нет привязки к железу. А у вас? Только Ардуино. Только С++. Ограничение в одну кнопку. Понятно, что это не та задача, что бы её без особых проблем адаптировать под что то другое. Однако и она требует каких то усилий. Только заради чего? Отчего бы не писать проще, если это возможно. И если это удобно во всех случаях.

Вячеслав Азаров
2019-04-11 20:09:58

Нет не прикалываюсь. Особой разницы нет, но на С++ выходит намного лаконичнее. Я не знаю, что вам ответить. Я не понял что вы о себе говорите. Напишите конкретнее. Обсудим.

Green
2019-04-11 19:28:46

Вячеслав, вы прикалываетесь? Какая ещё профессиональная клавиатура! Я ж вроде популярно объяснил.) У меня Си без плюсов, без зависимостей от окружения и железа. И мне не надо думать где эти плюсы брать и куда их вставлять!

Вячеслав Азаров
2019-04-11 18:57:38

Просто нужно знать где эти плюсы вставлять. А хороший встраиваемый драйвер кнопочной клавиатуры нигде просто так не валяется. Если вам нужна клавиатура для быстрого ввода, с возможностью нажатия двух переходных клавиш, а не только клавиш модификаторов, то лучше просто купить стандартную, профессиональную.

Green
2019-04-11 18:04:25

Вячеслав, библиотека это красиво, конечно. Особенно для одной кнопки.) А если их несколько? И ещё нужны их сочетания? И не везде Ардуино нужна... И даже вообще не AVR... Да и компилятор может плюсы не поддерживать... Да и места мало зачастую... ) Да и Линус плюсы терпеть не может (я ни на кого не намекаю).)))

vvr
2019-04-11 14:46:34

ну он всё свёл в библиотеку, у других просто код используется))))
а OneButton ещё отслеживает удержание и фронты длительных нажатий)))

Вячеслав Азаров
2019-04-11 13:46:22
vvr пише:

... в 80% случаев применяю OneButton, в ней реализованы наверное все варианты нажатий и меня она полностью устраивает. но это дело вкуса. с проф. программистами спорить не буду)))))

Это дело не вкуса но науки, хотя приятно когда и гайки красивые. Наверно, все возможные варианты не всегда нужны. Вот еще один любительский Button, из любви к искусству. https://github.com/slavaza/SuperButton Это сейчас любители такие пошли, Линуксы пишут, от нечего делать.

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