Управление светом, нужна помощь...
- Войдите на сайт для отправки комментариев
Пнд, 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/...