Управление светом, нужна помощь...

Dmitriy_399
Offline
Зарегистрирован: 31.03.2014

Всем привет. Я тут новичек  поэтому если что сильно не пинайте)). Постараюсь описать, что я хочу.

На данный момент имею ардуино уно, 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);
          }}
      }
     }
}
     

 

vvadim
Offline
Зарегистрирован: 23.05.2012

Если хотите использовать энкодер , то поищите на форуме. Эта тема не раз поднималась

vvadim
Offline
Зарегистрирован: 23.05.2012
vvadim
Offline
Зарегистрирован: 23.05.2012