Форум Вопросы и темы по программированию Arduino, ESP8266, STM32, Digispark и пр.

Ждать пока не нажму кнопу

15 августа, 2023 - 06:59
Доброго времени коллеги, не могу решить задачу:
На арду Нано повешать 12 диодов и 12 кнопок. Решил вешать диод и кнопу на один пин
Смысл работы такой: Зажечь светодиод от рандома, ждать 3 сек, нажать соответствующую кнопку, считать нажатие, ... дальше сам)
Но вот незадача, Delay вешает контроллер и не считывает нажатие, millis не ждет 3 секунды, Ниже представлю код, может где то я ошибся?
И получается: или цикл пробегает и я не успеваю нажать кнопу или вешается делеем и не считывает нажатие
Если не использовать рандом а прописать +5 на конкретный пин, то нажатие кнопки считывается.
long randNumber;
unsigned long timing;
int p, r, d;
void setup() {
Serial.begin(9600);
for (p = 4; p < 9; p++) {pinMode(p, INPUT_PULLUP);}
pinMode(17, OUTPUT);
for (d = 4; d < 9; d++) {digitalWrite(d, LOW);}  
}
void loop() {
  if (millis() - timing > 3000) { // Вместо 10000 подставьте нужное вам значение паузы
  timing = millis();
    label:  
randNumber = random(4, 8);  // Выбрать число

 if (r == randNumber) {goto label;} //что бы рандом не повторялся
 r = randNumber;
 //delay(3000);
 digitalWrite(randNumber, HIGH);   // вкл светодиод
 bool buttonState = digitalRead(randNumber); // определить пин рандома
 
   if  (!buttonState) {   // определить нажатие кнопки
    digitalWrite(randNumber, LOW);
   }}}

Будущий АСУшник
rss-999 rss-999 Зарегистрирован:
15.08.2023

Войдите или Зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Cлучайные товары

Посмотреть товар в Магазине »

Мы в соц сетях

Подпишись на канал Telegram

Portal-PK (Портал ПК) © 2015 - 2024
Разработка проектов
AT Block
DWIN Box