Как-то раз пришла мне в голову идея — что, если управлять светодиодом через джойстик-грибок? Или целой светодиодной лентой?
Я решил воплотить эту идею в жизнь и использовал плату Arduino.
Чтобы собрать такое устройство, нам понадобятся:
- Arduino Uno
- Джойстик-грибок
- Светодиод RGB
RGB светодиод — это три светодиода с общим анодом или катодом. В зависимости от подводимого тока на каждую ногу светодиода, меняется его оттенок. Он использует систему RGB — красный, зелёный и синий — эта система используется в большинстве дисплеев и мониторов компьютеров и различных «умных устройств». Я использую готовую печатную плату со встроенными резисторами — можно смело подводить от 5 до 7 вольт. Джойстик-грибок использует два аналоговых входа — они отвечают за оси X и Y — влево-вправо и вверх-вниз. Также ему необходимы питание и земля.
Схема собирается следующим образом: ножки светодиода R, G, B подключаются к пинам 9, 10, 11 соответственно; ножка минуса подключается к пину GND. Ножка джойстика VCC подключается к пину 5V, ножка GND — к земле, ножка оси X (VRx) подключается к аналоговому пину A0. Ножка оси Y (VRy) не подключается, потому что мы не используем ось Y.
Схема работы программы такова: если плата засекает движение джойстика влево, светодиод меняет свой оттенок ближе к красному; если вправо — ближе к синему. Движения вниз и вверх в данном проекте не используются. Если мы отключим джойстик, светодиод будет показывать спектральные цвета от красного к фиолетово-розовому.
Для того, чтобы реализовать это, нам необходимо написать специальную функцию — ledRgb. О ней будет рассказано в комментариях к коду. Также в коде вы можете заметить функции работы с serial-портом — они остались после отладки, Вы можете ими воспользоваться, чтобы отладить и видоизменить программу.
Это устройство может использоваться для управления целой светодиодной лентой, а не одним RGB-светодиодом. Для этого необходимо вместо светодиода подключить транзисторы, которые будут управлять током для светодиодной ленты.
Прикрепленные файлы:
- joyled.ino (2 Кб)