Например TDA7294

Форум РадиоКот • Просмотр темы - Ждать пока не нажму кнопу
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб дек 13, 2025 22:51:37

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 28 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Ждать пока не нажму кнопу
СообщениеДобавлено: Вт авг 15, 2023 06:50:11 
Первый раз сказал Мяу!

Зарегистрирован: Вт авг 15, 2023 06:46:22
Сообщений: 24
Рейтинг сообщения: 0
Доброго времени коллеги, не могу решить задачу:
На арду Нано повешать 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);
   }}}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Вт авг 15, 2023 09:09:18 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1493
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15286
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
"Совмещенная" со светиком кнопа?
Это только если активный статус вывода МК будет 0 (когда светик горит). Иначе (при активной 1) сделаем козу вывода.
При условии, что горит он не непрерывно, а в некоем подобии ШИМ - даются интервалы для опроса линии "на ввод", во время которых кнопа может быть замкнута и соответственно счтиано ее состояние.
Штука довольно нудная, учитывая практически одновременное сканирование линий на вывод и на ввод.
Но вполне решаемая.
Правда "побочный эффект" - при нажатии кнопы ВСЕГДА зажжется соответствующий светик.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Вт авг 15, 2023 09:55:50 
Электрический кот

Карма: 5
Рейтинг сообщений: 157
Зарегистрирован: Пн май 01, 2017 20:01:45
Сообщений: 1018
Рейтинг сообщения: 0
Не обязательно, если поставить ключ. Проблема в другом - ТС поставил на выходе "диоды", на что ему флаг в руки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Вт авг 15, 2023 10:47:18 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
нужно просто пожертвовать одним входом, куда завести общий всех кнопок, с подтяжкой резистором к плюсу или минусу, лишь бы светодиоды при нажатии не светились. и дальше просто:

старт 1
N = 0
cтарт 2
светодиод(N) = 0 (или 1, то есть включили/выключили)
если вход кнопок не равен светодиод(N), то кнопка(N) нажата
N = N +1
проверяем N == 12? если да, возврат на старт 1, если нет - на старт 2


ошибся


Последний раз редактировалось Martian Вт авг 15, 2023 13:29:57, всего редактировалось 1 раз.

Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Вт авг 15, 2023 12:38:27 
Первый раз сказал Мяу!

Зарегистрирован: Вт авг 15, 2023 06:46:22
Сообщений: 24
Рейтинг сообщения: 0
нужно просто пожертвовать одним входом, куда завести общий всех кнопок, с подтяжкой резистором к плюсу или минусу, лишь бы светодиоды при нажатии не светились. и дальше просто:

старт 1
N = 0
cтарт 2
светодиод(N) = 0 (или 1, то есть включили/выключили)
если вход кнопок не равен светодиод(N), то кнопка(N) нажата
N = N +1
проверяем N == 12? если да, возврат на старт 1, если нет - на старт 2


Как тогда определять что нажата правильная кнопка


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Вт авг 15, 2023 12:53:32 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1493
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15286
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
В любом случае или сканирование как при динамической развертке или вариант ШИМ при статике.
Но оба варианта при нажатии кнопы "зажгут" соответствующий светик.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Вт авг 15, 2023 12:59:20 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
что-то я сам запутался.
может, так: ловить нажатие кнопки во время гашения:
общий вход кнопок подтягиваем к + резистором. Прогоняем 0 по всем светодиодам, отлавливаем его появление на входе кнопок.


Последний раз редактировалось Martian Вт авг 15, 2023 13:05:27, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Вт авг 15, 2023 13:03:12 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1493
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15286
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Не мудрено то без конкретной схемы ошибиться.
8)
Мы в данном случае вроде "гадалок на кофейной гуще" выступаем.
:tea:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Вт авг 15, 2023 13:32:53 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
о, оказывается, я отправил сообщение, а потом правил. Так-с, пора спать :)

Не. не получается всё равно. Перетащить поразрядный принцип на посегментный не выйдет, наверное. Можно решить для частного случая, когда вкл-выкл каждого светодиода более-менее равномерно распределены.

Добавлено after 12 minutes 12 seconds:
еще немного подумав, я рискну предложить пожертвовать ещё одним выходом для отключения общего светодиодов. Тогда строб по кнопкам можно прогонять совершенно легко и определять нажатие любой и даже комбинаций.
(токоограничивающий резистор забыл)
Изображение

Добавлено after 13 minutes 44 seconds:
Вообще, надо иначе сформулировать задачу:
адресация 12 светодиодов и 12 кнопок с минимальным количеством портов мк (возможно, это всего 7, максимум по выше предложенному варианту - 14)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Вт авг 15, 2023 14:20:21 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1493
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15286
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Положу "заготовку" для рисовалки типовых адуринкиных схем:
https://img.radiokot.ru/files/20529/37rjtbdpmo.GIF
и файл для splan (закатан в архив)
Вложение:
fishNano328P.zip [4.61 KiB]
Скачиваний: 90

:write:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Вт авг 15, 2023 20:34:23 
Электрический кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 47
Зарегистрирован: Вс мар 01, 2009 19:47:16
Сообщений: 1046
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Странный код. В настройке вы порты настраиваете на вход с подтяжкой, тут же пытаетесь в них записывать что-то. Делать надо не так: порт периодически нужно переключать с входа на выход. Когда порт на входе, его и нужно опрашивать.

_________________
Не важно чем все начнется. Важно чем кончится!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Вт авг 15, 2023 20:38:23 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1493
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15286
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Стандартный прием для АВРок (адуринок на их базе)
В порт записывается 0, а переключением с режима вывода на режим ввода с "подтяжкой" получаем на линии то 0 то 1 и при 1 ввод данных ("двунаправленность")
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Вт авг 15, 2023 21:52:28 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
Viper_Snake в другой теме упомянул TM1650.

32 светодиодика и 32 кнопки :))

Изображение

Это, конечно, не то, что требуется ТС, но мало ли, на будущее...


Вложения:
1810281208_TM-Shenzhen-Titan-Micro-Elec-TM1650_C44444.pdf [463.99 KiB]
Скачиваний: 74
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Ср авг 16, 2023 12:01:30 
Это не хвост, это антенна

Карма: 12
Рейтинг сообщений: 136
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 1306
Рейтинг сообщения: 0
Арду, кнопа, светик... Стыдоба!
Код:
  for (int i = 0; i < 3000; i++) {
    pinMode(LED, OUTPUT);
    digitalWrite(LED, HIGH);
    delay(1);
    pinMode(LED, INPUT_PULLUP);
    if (!digitalRead(LED))
      break;
  }


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Ср авг 16, 2023 18:20:29 
Друг Кота
Аватар пользователя

Карма: 96
Рейтинг сообщений: 1493
Зарегистрирован: Вт мар 16, 2010 22:02:27
Сообщений: 15286
Откуда: ДОНЕЦК
Рейтинг сообщения: 0
Это с одной кнопкой.
А у топикстартера их за десяток.
Там чуток мудрить надо.
8)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Ср авг 16, 2023 21:02:14 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
кроме того, проблемы кз или изменения состояния светодиода в момент нажатия этот чудесный код не решает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Ср авг 16, 2023 22:55:29 
Мучитель микросхем
Аватар пользователя

Карма: 8
Рейтинг сообщений: 76
Зарегистрирован: Пт фев 17, 2017 11:18:07
Сообщений: 460
Откуда: Ставрополь-Донское
Рейтинг сообщения: 0
TM1637
https://aliexpress.ru/item/100500426559 ... 8568704054

_________________
LIVE - EVIL


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Чт авг 17, 2023 01:35:36 
Электрический кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 47
Зарегистрирован: Вс мар 01, 2009 19:47:16
Сообщений: 1046
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Viper_Snake в другой теме упомянул TM1650....

Даааа! Это прямо палочка-выручалочка. При грамотном использовании работает как часики и память не жрет абсолютно. Особенно хорошо с мелкожопыми контроллерами типа тини13 идет - когда хочется много и недорого. Одна эта мелочь заменяет ораву сдвиговых регистров, не требует обвязки громоздкой и позволяет творить содомЪ. Но ардуинщикам скорее всего она не зайдет, ибо библиотек под эту микросхемку я не нашел в свое время. А так - годнота неоспоримая.

Добавлено after 1 minute 17 seconds:
TM1637

Тоже хороший вариант, но она крупнее TM1650.

_________________
Не важно чем все начнется. Важно чем кончится!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Чт авг 17, 2023 01:42:49 
Друг Кота

Карма: 67
Рейтинг сообщений: 1964
Зарегистрирован: Сб дек 18, 2021 19:25:32
Сообщений: 12867
Рейтинг сообщения: 0
Одна эта мелочь заменяет ораву сдвиговых регистров.
Два :))
я именно так и делаю. но... хоть и не орава, но все же сдвиговые регистры требуют 3 ноги, а эта 2, плюс кнопки, так что, она, конечно, функциональней. Когда у меня регистры кончатся, прикуплю этих.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ждать пока не нажму кнопу
СообщениеДобавлено: Чт авг 17, 2023 01:49:32 
Электрический кот
Аватар пользователя

Карма: 2
Рейтинг сообщений: 47
Зарегистрирован: Вс мар 01, 2009 19:47:16
Сообщений: 1046
Откуда: Ростов-на-Дону
Рейтинг сообщения: 0
Martian, Очень рекомендую.

_________________
Не важно чем все начнется. Важно чем кончится!


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 28 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Ariadna-on-Line и гости: 4


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y