1

Topic: smart room

я решил доработать rgb подсветку по периметру комнаты и сделать её управляемой с телефона,также я доработал лампу добавив в её схему mosfet транзистор,у меня также имелась лазерная установка я добавил реле по питанию (с транзистором у неё двигатель не включался) я поставил двигатель лазерной установки через mosfet чтобы управлять скоростью движения вот сам проэкт http://remotexy.com/ru/editor/578a13ff2 … aa8644441/ и скетч

#define REMOTEXY_MODE__HARDSERIAL
#define PINR    11
#define PING    10
#define PINB    9
#define PINW    7
#define LAMP_PIN 8 //на этот пин выводится авто подсветка по наступлению темноты
#define POT_PIN A0 //яркость лампы
#define PINS     6
#define LAMPR_PIN 5
#define POTR A1
#define POTG A2
#define POTB A3
#include <RemoteXY.h> 

// настройки соединения  
#define REMOTEXY_SERIAL Serial 
#define REMOTEXY_SERIAL_SPEED 9600 


// конфигурация интерфейса   
#pragma pack(push, 1) 
uint8_t RemoteXY_CONF[] = 
  { 255,9,0,0,0,10,1,6,5,4,
  4,0,3,2,12,47,1,1,4,0,
  19,2,13,47,4,1,4,0,36,2,
  13,47,6,1,2,0,6,12,25,12,
  2,2,79,78,0,79,70,70,0,2,
  0,73,11,25,12,2,2,79,78,0,
  79,70,70,0,4,0,58,3,8,49,
  2,2,2,0,7,29,23,11,2,2,
  115,108,105,100,101,114,0,112,111,116,
  0,4,0,38,4,8,47,2,2,3,
  3,88,19,8,22,2,1,131,0,23,
  54,21,8,2,1,208,187,208,181,208,
  189,209,130,208,176,0,131,1,2,54,
  20,8,2,2,209,129,208,178,208,181,
  209,130,0,129,0,8,3,22,7,9,
  2,208,187,208,176,208,188,208,191,208,
  176,0,129,0,76,3,20,7,9,2,
  208,187,208,176,208,183,208,181,209,128,
  0,129,0,70,32,18,6,9,2,0,
  129,0,70,20,18,6,9,1,208,178,
  209,139,208,186,208,187,0,129,0,69,
  34,18,6,9,1,208,187,208,176,208,
  188,208,191,208,176,0,129,0,71,27,
  16,6,9,1,208,187,208,181,208,189,
  209,130,208,176,0,129,0,64,11,34,
  6,9,1,208,176,208,178,209,130,208,
  190,32,209,128,208,181,208,182,208,184,
  208,188,0 }; 
   
// структура определяет все переменные вашего интерфейса управления  
struct { 

    // input variable
  int8_t slider_1; // =0..100 положение слайдера 
  int8_t slider_2; // =0..100 положение слайдера 
  int8_t slider_3; // =0..100 положение слайдера 
  uint8_t switch_1; // =1 если переключатель включен и =0 если отключен 
  uint8_t switch_2; // =1 если переключатель включен и =0 если отключен 
  int8_t slider_4; // =0..100 положение слайдера 
  uint8_t switch_3; // =1 если переключатель включен и =0 если отключен 
  int8_t slider_5; // =0..100 положение слайдера 
  uint8_t select_1; // =0 если переключатель в положении A, =1 если в положении B, =2 если в положении C, ... 

    // other variable
  uint8_t connect_flag;  // =1 if wire connected, else =0 

} RemoteXY; 
#pragma pack(pop) 
 

///////////////////////////////////////////// 
//           END RemoteXY include          // 
///////////////////////////////////////////// 

#define PIN_SWITCH_1 13
#define PIN_SWITCH_2 12
#define PIN_SWITCH_3 3
int ldr = 4;

void setup()  
{  pinMode(LAMPR_PIN, OUTPUT);
  pinMode(POT_PIN, INPUT);
  pinMode (PINR, OUTPUT);
  pinMode (PING, OUTPUT);
  pinMode (PINB, OUTPUT); 
  pinMode (PINS, OUTPUT);
  pinMode (POTR,INPUT);
  pinMode (POTG,INPUT);
  pinMode (POTB,INPUT);
  pinMode (PINW, OUTPUT); 
  RemoteXY_Init ();  
   
  pinMode (PIN_SWITCH_1, OUTPUT);
  pinMode (PIN_SWITCH_2, OUTPUT);
  pinMode (PIN_SWITCH_3, OUTPUT);
   
  // TODO you setup code 
   
} 

void loop()  
{  
  RemoteXY_Handler (); 
   
  digitalWrite(PIN_SWITCH_1, (RemoteXY.switch_1==0)?LOW:HIGH);
  digitalWrite(PIN_SWITCH_2, (!RemoteXY.switch_2==0)?LOW:HIGH);
  digitalWrite(PIN_SWITCH_3, (RemoteXY.switch_3==0)?LOW:HIGH);
   analogWrite(PINS, RemoteXY.slider_4 * 2.55);
  if(RemoteXY.switch_3==0){int rotation, brightness;  
  rotation = analogRead(POT_PIN);
  brightness = rotation / 4;
  analogWrite(LAMPR_PIN, brightness);}
  if(RemoteXY.switch_3==1){ analogWrite(LAMPR_PIN, RemoteXY.slider_5 * 2.55);}
if(RemoteXY.switch_3==0){int rotation, brightness;  
rotation = analogRead(POTR);
brightness = rotation / 4;
analogWrite(PINR, brightness);}
if(RemoteXY.switch_3==0){int rotation, brightness;  
rotation = analogRead(POTG);
brightness = rotation / 4;
analogWrite(PING, brightness);}
if(RemoteXY.switch_3==0){int rotation, brightness;  
rotation = analogRead(POTB);
brightness = rotation / 4;
analogWrite(PINB, brightness);}
if(RemoteXY.switch_3==1){analogWrite(PINR, RemoteXY.slider_1 * 2.55);}
if(RemoteXY.switch_3==1){analogWrite(PING, RemoteXY.slider_2 * 2.55);}
if(RemoteXY.switch_3==1){analogWrite(PINB, RemoteXY.slider_3 * 2.55);}
  if (RemoteXY.select_1==0) {
    /*  текущее состояние A */ 
  } 
  else if (RemoteXY.select_1==1) { if (analogRead(ldr) < 800) digitalWrite(PINW, HIGH);
else digitalWrite(PINW, LOW);digitalWrite(PINR,LOW);digitalWrite(PING,LOW); digitalWrite(PINB,LOW);}
    /*  текущее состояние B */ 
  
  else if (RemoteXY.select_1==2) {if (analogRead(ldr) < 800) digitalWrite(LAMP_PIN, HIGH);}
else digitalWrite(LAMP_PIN, LOW);} //иначе выключаем 
    /*  текущее состояние C */