Ардуинщики всех стран - объединяйтесь! В этом форуме, конечно.
Ответить

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

Чт авг 17, 2023 08:24:50

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

"Чудесный код" - это пример. Всё делается без доп. регистров и для кучи светодиодов с кнопками. Если только ТС нормальным языком ТЗ напишет.

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

Чт авг 17, 2023 10:31:12

Арду, кнопа, светик... Стыдоба!
Код:
  for (int i = 0; i < 3000; i++) {
    pinMode(LED, OUTPUT);
    digitalWrite(LED, HIGH);
    delay(1);
    pinMode(LED, INPUT_PULLUP);
    if (!digitalRead(LED))
      break;
  }

Да я уже тоже сообразил через цикл
Код:
for (c = 0; c < 250; c++){ //250~=3сек
   bool buttonState = digitalRead(randNumber);
      if  (!buttonState) {
       digitalWrite(randNumber, LOW);}


Добавлено after 2 minutes 52 seconds:
Не обязательно, если поставить ключ. Проблема в другом - ТС поставил на выходе "диоды", на что ему флаг в руки.


Думаете будет лучше все диоды подключить на общий плюс, а минус с пинов ардуины давать?

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

Чт авг 17, 2023 12:08:36

Я ж уже раньше говорил -
без конкретной схемы обсуждение бессмысленно.
Сделайте хоть какой-то набросок и конкретно чего хотите получить.
8)

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

Чт авг 17, 2023 15:30:12

без конкретной схемы обсуждение бессмысленно.

Ну почему же. Если по минимуму, то кнопка параллельно светодиоду, который на общий. Светодиод, естественно, через резистор. Но, в этом случае, светодиод не будет светиться при нажатой кнопке. Иначе, нужен резистор и для кнопки. А вот тут и посчитаешь чего лучше - этот огород или TM16xx.)

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

Чт авг 17, 2023 16:19:59

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

Изображение

менять направление портов не требуется, программка будет простой, трассировка тоже.

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

Пт авг 18, 2023 11:40:13

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

Чёйта? Или, главное что бы ты сам понимал? Ужос.

Определить нажатие "не правильной" кнопки

Пт авг 18, 2023 12:10:02

Добрый день коллеги. Это продолжение темы 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]);                     
      }}}

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

Чт авг 31, 2023 14:14:18

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