12 апр 2022 · 14:49    
{"document":[{"text":[{"type":"string","attributes":{"bold":true},"string":"В этой статье я расскажу как работать с семисегментным светодиодным индикатором в Arduino Uno и напишем скетч увлекательной игры \"Поймай меня\"."},{"type":"string","attributes":{"blockBreak":true},"string":"\n"}],"attributes":[]},{"text":[{"type":"string","attributes":{},"string":"Что такое семисегментный индикатор? По сути это 8 отдельных светодиодов (8-й это десятичная точка), расположенных в корпусе так, чтобы с их помощью можно было показывать цифры и другие знаки. Обычно одни из выводов соединены вместе и такие индикаторы делят на индикаторы с общим анодом или с общим катодом."},{"type":"string","attributes":{"blockBreak":true},"string":"\n"}],"attributes":[]},{"text":[{"type":"string","attributes":{},"string":"Если индикатор с общим катодом, то его средние ножки подключают к общему проводу (GND), а если с общим анодом, то к напряжению питания. Выводы сегментов через резистор сопротивлением 220 Ом подключаем к выводам портов Arduino Uno."},{"type":"string","attributes":{"blockBreak":true},"string":"\n"}],"attributes":[]},{"text":[{"type":"attachment","attributes":{"caption":"Проект","presentation":"gallery"},"attachment":{"caption":"","contentType":"image/png","filename":"Паблико1 (18).png","filesize":2808413,"height":1080,"pic_id":38265,"url":"/files/article_image/2022/04/12/%D0%9F%D0%B0%D0%B1%D0%BB%D0%B8%D0%BA%D0%BE1_18.jpeg","width":1920}},{"type":"string","attributes":{"blockBreak":true},"string":"\n"}],"attributes":[]},{"text":[{"type":"string","attributes":{},"string":"Это правильная схема, нет риска сжечь порты микроконтроллера, но для нее требуются 8 резисторов. Но в нашей схеме мы будем зажигать сегменты по одному и нет риска сжечь порт при одновременном зажигании нескольких светодиодов. Поэтому экономим как в этой схеме."},{"type":"string","attributes":{"blockBreak":true},"string":"\n"}],"attributes":[]},{"text":[{"type":"string","attributes":{},"string":"Подключим сегменты A,B,C,D,E,F,G,DP (десятичная точка) к выводам GP4-GP11 микроконтроллера. Подавая высокий уровень на порт мы зажигаем, а низкий - гасим соответствующий сегмент."},{"type":"string","attributes":{"blockBreak":true},"string":"\n"}],"attributes":[]},{"text":[{"type":"attachment","attributes":{"caption":"Схема подключения индикатора и кнопки","presentation":"gallery"},"attachment":{"caption":"","contentType":"image/png","filename":"Паблико1 (19).png","filesize":1342048,"height":1080,"pic_id":38266,"url":"/files/article_image/2022/04/12/%D0%9F%D0%B0%D0%B1%D0%BB%D0%B8%D0%BA%D0%BE1_19.jpeg","width":1920}},{"type":"string","attributes":{"blockBreak":true},"string":"\n"}],"attributes":[]},{"text":[{"type":"string","attributes":{},"string":"Давайте попробуем зажигать поочередно все сегменты в цикле для примера. Вот скетч и он очень простой. В основном цикле в операторе for() перебираем порты и командой digitalWrite записываем лог. \"1\" в порт, зажигая его, а после задержки лог. \"0\" - гасим его. И так по кругу.\n"},{"type":"attachment","attributes":{"caption":"Гоняем сегмент в цикле","presentation":"gallery"},"attachment":{"caption":"","contentType":"image/png","filename":"Паблико1 (20).png","filesize":707878,"height":1080,"pic_id":38267,"url":"/files/article_image/2022/04/12/%D0%9F%D0%B0%D0%B1%D0%BB%D0%B8%D0%BA%D0%BE1_20.jpeg","width":1920}},{"type":"string","attributes":{},"string":"\nДавайте усложним задачу. Будем зажигать сегменты не автоматически а по нажатии кнопки. Подключим один вывод кнопки к порту GP3 а другой к GND. И все? И все! А как же резистор, \"подтягивающий\"вывод к напряжению питания. Без него при разомкнутой кнопке на входе будет случайное напряжение и результат чтения будет неопределенный."},{"type":"string","attributes":{"blockBreak":true},"string":"\n"}],"attributes":[]},{"text":[{"type":"string","attributes":{},"string":"Все просто! Вместо внешнего, мы подключим к выводу внутренний или PULLUP резистор. Для этого в команде pinMode() мы определим пин не как INPUT а как INPUT_PULLUP. Дальше все просто.\n"},{"type":"attachment","attributes":{"caption":"Гоняем сегмент при нажатии на кнопку","presentation":"gallery"},"attachment":{"caption":"","contentType":"image/png","filename":"Паблико1 (21).png","filesize":646859,"height":1080,"pic_id":38268,"url":"/files/article_image/2022/04/12/%D0%9F%D0%B0%D0%B1%D0%BB%D0%B8%D0%BA%D0%BE1_21.jpeg","width":1920}},{"type":"string","attributes":{},"string":"\nВ цикле loop() мы ждем пока на 3-м пине не появится уровень лог. \"0\", это будет значит, что кнопка нажата зажигаем и гасим очередной сегмент через секунду. Теперь у нас все готово для нашей игры."},{"type":"string","attributes":{"blockBreak":true},"string":"\n"}],"attributes":[]},{"text":[{"type":"string","attributes":{},"string":"Игра очень простая. Нужно \"поймать\" заранее заданный сегмент. Его номер мы вычисляем с помощью функции randomize(). Перед началом игры мы его высвечиваем на 1 секунду и затем в цикле поочередно зажигаем сегменты и ждем пока не нажмется кнопка.\n"},{"type":"attachment","attributes":{"caption":"Игра \"Поймай меня\"","presentation":"gallery"},"attachment":{"caption":"","contentType":"image/png","filename":"Паблико1 (22).png","filesize":813521,"height":1080,"pic_id":38270,"url":"/files/article_image/2022/04/12/%D0%9F%D0%B0%D0%B1%D0%BB%D0%B8%D0%BA%D0%BE1_22.jpeg","width":1920}},{"type":"string","attributes":{},"string":"\nИ если нажатие кнопки происходит в момент высвечивания \"загаданного\" сегмента, игра прекращается и сегмент гаснет. Затем игра начинается снова. Вот скетч этой игры."},{"type":"string","attributes":{"blockBreak":true},"string":"\n"}],"attributes":[]},{"text":[{"type":"string","attributes":{},"string":"Конечно, игра примитивна, но она дает представление, как работать с 7-и сегментным светодиодным индикатором. И, кстати, вы можете доработать ее по своему вкусу и написать свой вариант в комментариях."},{"type":"string","attributes":{"blockBreak":true},"string":"\n"}],"attributes":[]},{"text":[{"type":"string","attributes":{"bold":true},"string":"Ну вот как то так! Понравилась статья? Поставьте лайк!"},{"type":"string","attributes":{"blockBreak":true,"bold":true},"string":"\n"}],"attributes":[]},{"text":[{"type":"string","attributes":{"bold":true},"string":"Напишите свое мнение в комментариях!"},{"type":"string","attributes":{"blockBreak":true,"bold":true},"string":"\n"}],"attributes":[]},{"text":[{"type":"string","attributes":{"bold":true,"href":"https://pabliko.ru/@shulp/"},"string":"Подписывайтесь на канал!"},{"type":"string","attributes":{"blockBreak":true},"string":"\n"}],"attributes":[]},{"text":[{"type":"string","attributes":{"bold":true},"string":"А вот где я брал"},{"type":"string","attributes":{"bold":true,"href":"https://ali.ski/b3YkK"},"string":" стартовый набор Arduino Uno"},{"type":"string","attributes":{"blockBreak":true},"string":"\n"}],"attributes":[]}],"selectedRange":[2679,2679]}
Комментарии 0