Управление светом, нужна помощь...
- Войдите на сайт для отправки комментариев
Пнд, 31/03/2014 - 21:48
Всем привет. Я тут новичек поэтому если что сильно не пинайте)). Постараюсь описать, что я хочу.
На данный момент имею ардуино уно, 8ми канальный реле модуль, rgb лента и 6 лампочек. Лампочки будут управляться с кнопок через ардуино и реле, 1 кнопка будет включать и выключать 2 лампы, т.е. всего будет 3 кнопки. RGB лента должна управляться с энкодера примерно так - короткое нажатие на энкодер вкл - выкл rgb ленты, поворот в лево-право меняет оттенок, а поворот влево-право при нажатом энкодере меняет яркость.
С управлением лампами вроде бы разобрался, а вот с rgb полный ступор не знаю даже с чего начать..
//подключаем библиотеки #include <Bounce.h> #include <SoftwareSerial.h> //порт блютуза SoftwareSerial mySerial(14, 15); // RX, TX //порты на свет int LED1 = 9; int LED2 = 8; int LED3 = 7; //порт кнопок int BUTTON = 14; //создаем объект класса Bounce. Указываем пин, //к которому подключена кнопка, и время дребезга в мс. Bounce bouncer = Bounce(BUTTON,100); //задаем начальное состояние светодиода "выключен" int LED1Value = LOW; int LED2Value = LOW; int LED3Value = LOW; char incomingByte; void setup() { // инициализация порта mySerial.begin(9600); //определяем режимы работы пинов pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(LED3, OUTPUT); pinMode(BUTTON,INPUT); } void loop() { {//управление с кнопок //если сменилось состояние кнопки if ( bouncer.update() ) // лампа 1, 2 { {if (analogRead(A0) > 680 && analogRead(A0) < 710) { if ( LED1Value == LOW ) { LED1Value = HIGH; mySerial.println("LED 1, 2 on"); } else { LED1Value = LOW; mySerial.println("LED 1, 2 off"); } //записываем значение вкл/выкл на пин со светодиодом digitalWrite(LED1,LED1Value); ; }} // лампа 3, 4 {if (analogRead(A0) > 615 && analogRead(A0) < 650) { if ( LED2Value == LOW ) { LED2Value = HIGH; mySerial.println("LED 3, 4 on"); } else { LED2Value = LOW; mySerial.println("LED 3, 4 off"); } //записываем значение вкл/выкл на пин со светодиодом digitalWrite(LED2,LED2Value); }} // лампа 5, 6 {if (analogRead(A0) > 520 && analogRead(A0) < 580) { if ( LED3Value == LOW ) { LED3Value = HIGH; mySerial.println("LED 5, 6 on"); } else { LED3Value = LOW; mySerial.println("LED 5, 6 off"); } //записываем значение вкл/выкл на пин со светодиодом digitalWrite(LED3,LED3Value); }} } } {//управление по блютузу if (mySerial.available() > 0) { //если пришли данные incomingByte = mySerial.read(); // считываем байт // лампа 1, 2 {if(incomingByte == '1') { if ( LED1Value == LOW ) { LED1Value = HIGH; mySerial.println("LED 1, 2 on"); } else { LED1Value = LOW; mySerial.println("LED 1, 2 off"); } //записываем значение вкл/выкл на пин со светодиодом digitalWrite(LED1,LED1Value); }} // лампа 3, 4 {if(incomingByte == '2') { if ( LED2Value == LOW ) { LED2Value = HIGH; mySerial.println("LED 3, 4 on"); } else { LED2Value = LOW; mySerial.println("LED 3, 4 off"); } //записываем значение вкл/выкл на пин со светодиодом digitalWrite(LED2,LED2Value); }} // лампа 5, 6 {if(incomingByte == '3') { if ( LED3Value == LOW ) { LED3Value = HIGH; mySerial.println("LED 5, 6 on"); } else { LED3Value = LOW; mySerial.println("LED 5, 6 off"); } //записываем значение вкл/выкл на пин со светодиодом digitalWrite(LED3,LED3Value); }} } } }
Если хотите использовать энкодер , то поищите на форуме. Эта тема не раз поднималась
https://www.google.com/url?q=http://arduino.ru/forum/apparatnye-voprosy/...
https://www.google.com/url?q=http://arduino.ru/forum/apparatnye-voprosy/...