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

Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить
OKF
Это не хвост, это антенна
Сообщения: 1430
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

[uquote="Martian",url="/forum/viewtopic.php?p=4463192#p4463192"]кроме того, проблемы кз или изменения состояния светодиода в момент нажатия этот чудесный код не решает.[/uquote]
"Чудесный код" - это пример. Всё делается без доп. регистров и для кучи светодиодов с кнопками. Если только ТС нормальным языком ТЗ напишет.
Реклама
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Вт авг 15, 2023 06:46:22

Сообщение rss-999 »

[uquote="OKF",url="/forum/viewtopic.php?p=4462948#p4462948"]Арду, кнопа, светик... Стыдоба!

Код: Выделить всё

  for (int i = 0; i < 3000; i++) {
    pinMode(LED, OUTPUT);
    digitalWrite(LED, HIGH);
    delay(1);
    pinMode(LED, INPUT_PULLUP);
    if (!digitalRead(LED))
      break;
  }
[/uquote]
Да я уже тоже сообразил через цикл

Код: Выделить всё

for (c = 0; c < 250; c++){ //250~=3сек
   bool buttonState = digitalRead(randNumber);
      if  (!buttonState) {
       digitalWrite(randNumber, LOW);}
Добавлено after 2 minutes 52 seconds:
[uquote="u37",url="/forum/viewtopic.php?p=4462326#p4462326"]Не обязательно, если поставить ключ. Проблема в другом - ТС поставил на выходе "диоды", на что ему флаг в руки.[/uquote]

Думаете будет лучше все диоды подключить на общий плюс, а минус с пинов ардуины давать?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15679
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Я ж уже раньше говорил -
без конкретной схемы обсуждение бессмысленно.
Сделайте хоть какой-то набросок и конкретно чего хотите получить.
8)
OKF
Это не хвост, это антенна
Сообщения: 1430
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

[uquote="BOB51",url="/forum/viewtopic.php?p=4463450#p4463450"]без конкретной схемы обсуждение бессмысленно.[/uquote]
Ну почему же. Если по минимуму, то кнопка параллельно светодиоду, который на общий. Светодиод, естественно, через резистор. Но, в этом случае, светодиод не будет светиться при нажатой кнопке. Иначе, нужен резистор и для кнопки. А вот тут и посчитаешь чего лучше - этот огород или TM16xx.)
Реклама
Эиком - электронные компоненты и радиодетали
Друг Кота
Сообщения: 12867
Зарегистрирован: Сб дек 18, 2021 19:25:32

Сообщение Martian »

ну самое простое и притом всего 10 ног:

Изображение

менять направление портов не требуется, программка будет простой, трассировка тоже.
Контактная информация:
Реклама
OKF
Это не хвост, это антенна
Сообщения: 1430
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

[uquote="Martian",url="/forum/viewtopic.php?p=4463571#p4463571"]ну самое простое и притом всего 10 ног:[/uquote]
Чёйта? Или, главное что бы ты сам понимал? Ужос.
Реклама
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Вт авг 15, 2023 06:46:22

Сообщение rss-999 »

Добрый день коллеги. Это продолжение темы https://radiokot.ru/forum/viewtopic.php?f=66&t=189578
В общем есть 12 кнопок, одну из них подсвечивает цикл, её нажал - все ок. А как отследить если нажата была не та кнопка?
Мне представляется такая логика:
1. Взять новый массив с номерами пинов.
2. Номер пина от рандома вычесть из массива.
3. Следить за состоянием всех пинов из массива через цикл for, при изменении состояния сообщить
4. --> 1.
Может вы предложите логику проще и эффективней?
Код ниже частично работает, исключает из нового массива нужное число. Но:
1. не останавливается на d<12 и продолжает выводить в монитор значения
2. В монитор выводит каждый элемент массива 12 раз, т.е. 4 4 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5 5 5 7 7 7 7 7 7 7 7 7 7 7 7...20...21...22 и т.д.

Код: Выделить всё

int randNumber = 6;
j=4; 
for (i=0; i<13; i++){              //Набрать массив от 4 до 15
      arr[i] = j;
      j++;}
lenarr = sizeof(arr)/sizeof(int); //длинна массива
for (o = 0; o < lenarr; o++) { //Пройти циклом по всему массиву 
k=arr[o];                               // На каждом проходе элемент массива записать в переменную
if (randNumber != k) {            //Сравнить
for (d=0; d<12; d++){            //Циклом создать новый массив
      arrr[d] = k;  
      Serial.println(arrr[d]);                      
      }}}
Друг Кота
Аватара пользователя
Сообщения: 15679
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Вот порой диву даешся как из простейшего можно наворотить кучу сложностей...
:facepalm:
Зачем вообще массивы то в данном случае?
У нас ГСЧ да четко определенные перечни светиков и кнопушек.
Добавляем динамическое сканирование кноп во время индикации одного из светиков (включение на десяток- друго микросекунд светика глазу незаметно, также как и его отключение на подобны интервал) да пару контрольных флагов и на том завершаем .
Без схемы , как ранее уже говорилось, конкретизировать бессмысленно - ибо вариантов огромное множество.
8)
Ответить

Вернуться в «Arduino»