"Чудесный код" - это пример. Всё делается без доп. регистров и для кучи светодиодов с кнопками. Если только ТС нормальным языком ТЗ напишет.
Ждать пока не нажму кнопу
- Сообщения: 1430
- Зарегистрирован: Вт июн 07, 2011 08:03:18
[uquote="Martian",url="/forum/viewtopic.php?p=4463192#p4463192"]кроме того, проблемы кз или изменения состояния светодиода в момент нажатия этот чудесный код не решает.[/uquote]
"Чудесный код" - это пример. Всё делается без доп. регистров и для кучи светодиодов с кнопками. Если только ТС нормальным языком ТЗ напишет.
"Чудесный код" - это пример. Всё делается без доп. регистров и для кучи светодиодов с кнопками. Если только ТС нормальным языком ТЗ напишет.
- Реклама
- Сообщения: 24
- Зарегистрирован: Вт авг 15, 2023 06:46:22
[uquote="OKF",url="/forum/viewtopic.php?p=4462948#p4462948"]Арду, кнопа, светик... Стыдоба!
[/uquote]
Да я уже тоже сообразил через цикл
Добавлено after 2 minutes 52 seconds:
[uquote="u37",url="/forum/viewtopic.php?p=4462326#p4462326"]Не обязательно, если поставить ключ. Проблема в другом - ТС поставил на выходе "диоды", на что ему флаг в руки.[/uquote]
Думаете будет лучше все диоды подключить на общий плюс, а минус с пинов ардуины давать?
Код: Выделить всё
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);}[uquote="u37",url="/forum/viewtopic.php?p=4462326#p4462326"]Не обязательно, если поставить ключ. Проблема в другом - ТС поставил на выходе "диоды", на что ему флаг в руки.[/uquote]
Думаете будет лучше все диоды подключить на общий плюс, а минус с пинов ардуины давать?
Я ж уже раньше говорил -
без конкретной схемы обсуждение бессмысленно.
Сделайте хоть какой-то набросок и конкретно чего хотите получить.

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

менять направление портов не требуется, программка будет простой, трассировка тоже.
менять направление портов не требуется, программка будет простой, трассировка тоже.
- Реклама
- Сообщения: 1430
- Зарегистрирован: Вт июн 07, 2011 08:03:18
[uquote="Martian",url="/forum/viewtopic.php?p=4463571#p4463571"]ну самое простое и притом всего 10 ног:[/uquote]
Чёйта? Или, главное что бы ты сам понимал? Ужос.
Чёйта? Или, главное что бы ты сам понимал? Ужос.
- Сообщения: 24
- Зарегистрирован: Вт авг 15, 2023 06:46:22
Добрый день коллеги. Это продолжение темы 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 и т.д.
В общем есть 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]);
}}}Вот порой диву даешся как из простейшего можно наворотить кучу сложностей...
Зачем вообще массивы то в данном случае?
У нас ГСЧ да четко определенные перечни светиков и кнопушек.
Добавляем динамическое сканирование кноп во время индикации одного из светиков (включение на десяток- друго микросекунд светика глазу незаметно, также как и его отключение на подобны интервал) да пару контрольных флагов и на том завершаем .
Без схемы , как ранее уже говорилось, конкретизировать бессмысленно - ибо вариантов огромное множество.

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


