RDL Smart Home Automation Kit
/*
* Project name:
RDL Smart Home Automation Kit
* Copyright
(c) Researchdesignlab.com
* Description:
* Test configuration:
MCU: ATMEGA328
Dev.Board: Arduino uno
Oscillator: 16 MHz
Software: Arduino
*/
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX
const int buttonPin1 = A0;
const int buttonPin2 = A1;
const int buttonPin3 = A2;
const int buttonPin4 = A3;
byte flag1=0,COUNT1=0, flag2=0,COUNT2=0, flag3=0,COUNT3=0, flag4=0,COUNT4=0;
int buttonState = 0;
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
// set the data rate for the SoftwareSerial port
mySerial.begin(9600);
mySerial.write('S');
}
void loop() // run over and over
{
if (Serial.available())
{
char value=Serial.read();
if(value=='$')
{
while(!Serial.available());
value=Serial.read();
/*******************************/
if(value=='H')
{
while(!Serial.available());
value=Serial.read();
if(value=='L')
{
while(!Serial.available());
value=Serial.read();
if(value=='1')
{
digitalWrite(4, HIGH); // turn the LED on (HIGH is the voltage level)
flag1=1;
}
else if(value=='0')
{
digitalWrite(4, LOW);
flag1=0;
}
}
/****************************/
else if(value=='T')
{
while(!Serial.available());
value=Serial.read();
if(value=='1')
{
digitalWrite(5, HIGH); // turn the LED on (HIGH is the voltage level)
flag2=1;
}
else if(value=='0')
{
digitalWrite(5, LOW);
flag2=0;
}
}
/****************************/
else if(value=='S')
{
while(!Serial.available());
value=Serial.read();
if(value=='1')
{
digitalWrite(6, HIGH); // turn the LED on (HIGH is the voltage level)
flag3=1;
}
else if(value=='0')
{
flag3=0;
digitalWrite(6, LOW);
}
}
/****************************/
else if(value=='W')
{
while(!Serial.available());
value=Serial.read();
if(value=='1')
{
digitalWrite(7, HIGH); // turn the LED on (HIGH is the voltage level)
flag4=1;
}
else if(value=='0')
{
digitalWrite(7, LOW);
flag4=0;
}
}
else if(value=='F')
{
mySerial.write('A');
mySerial.write('0');
while(!Serial.available());
value=Serial.read();
mySerial.write(value);
while(!Serial.available());
value=Serial.read();
mySerial.write(value);
}
}
}
}
buttonState = digitalRead(buttonPin1);
if (buttonState == HIGH) {
if(flag1==1)
{
flag1=0;
digitalWrite(4, LOW);
}else if(flag1==0)
{
flag1=1;
digitalWrite(4, HIGH);
}
delay(1000);
}
buttonState = digitalRead(buttonPin2);
if (buttonState == HIGH) {
if(flag2==1)
{
flag2=0;
digitalWrite(5, LOW);
}else if(flag2==0)
{
flag2=1;
digitalWrite(5, HIGH);
}
delay(1000);
}
buttonState = digitalRead(buttonPin3);
if (buttonState == HIGH) {
if(flag3 ==1)
{
flag3=0;
digitalWrite(6, LOW);
}else if(flag3==0)
{
flag3=1;
digitalWrite(6, HIGH);
}
delay(1000);
}
buttonState = digitalRead(buttonPin4);
if (buttonState == HIGH) {
if(flag4==1)
{
flag4=0;
digitalWrite(7, LOW);
}else if(flag1==0)
{
flag4=1;
digitalWrite(7, HIGH);
}
delay(1000);
}
}

