Hemautomation med arduino, knappar, LCD, EEPROM och smarttelefon (6 / 7 steg)
Steg 6: Nu vi använder EEPROM för att spara senaste status för växlar
Med hjälp av EEPROM
Jag lägger till inre EEPROM för att spara den senaste statusen
Om enheten går ur makt och igen ansluten
det ladda senaste status för växlar
de växlar som finns på innan power off nu är de fortfarande på
#include < SoftwareSerial.h > / /
SoftwareSerial mySerial (1, 0); 1-RX, 0-TX-
#include < LiquidCrystal.h >
#include < EEPROM.h >
int ch1 = A0;
int ch2 = A1;
int ch3 = A2;
int ch4 = A3;
LiquidCrystal lcd (12, 11, 5, 4, 3, 2); / / (rs, aktivera, d4, d5, d6 och d7)
int switchPin [] = {6,7,8,9}.
void setup()
{
mySerial.begin(9600);
pinMode (ch1, produktionen);
pinMode (ch2, produktionen);
pinMode (ch3, produktionen);
pinMode (ch4, produktionen);
LCD.BEGIN (16, 2);
pinMode (switchPin [0], ingång);
digitalWrite (switchPin [0], hög);
pinMode (switchPin [1], ingång);
digitalWrite (switchPin [1], hög);
pinMode (switchPin [2], ingång);
digitalWrite (switchPin [2], hög);
pinMode (switchPin [3], ingång);
digitalWrite (switchPin [3], hög);
pinMode (switchPin [4], ingång);
digitalWrite (switchPin [4], hög);
om (EEPROM.read(0) == 1)
{/ / switch trycks - pullup håller pin hög normalt
digitalWrite (ch1, hög);
lcd.setCursor (0, 0);
LCD.Print ("r1 på");
växla mellan rinnande variabel
Ange via LED
}
om (EEPROM.read(0) == 0)
{/ / switch trycks - pullup håller pin hög normalt
digitalWrite (ch1, låg);
lcd.setCursor (0, 0);
LCD.Print ("r1 OFF");
växla mellan rinnande variabel
Ange via LED
}
om (EEPROM.read(1) == 1)
{/ / switch trycks - pullup håller pin hög normalt
digitalWrite (ch2, hög);
lcd.setCursor (8, 0);
LCD.Print ("r2 på");
växla mellan rinnande variabel
Ange via LED
}
om (EEPROM.read(1) == 0)
{/ / switch trycks - pullup håller pin hög normalt
digitalWrite (ch2, låg);
lcd.setCursor (8, 0);
LCD.Print ("r2 OFF");
växla mellan rinnande variabel
Ange via LED
}
om (EEPROM.read(2) == 1)
{/ / switch trycks - pullup håller pin hög normalt
digitalWrite (ch3, hög);
lcd.setCursor (0, 1);
LCD.Print ("r3 på");
växla mellan rinnande variabel
Ange via LED
}
om (EEPROM.read(2) == 0)
{/ / switch trycks - pullup håller pin hög normalt
digitalWrite (ch3, låg);
lcd.setCursor (0, 1);
LCD.Print ("r3 OFF");
växla mellan rinnande variabel
Ange via LED
}
om (EEPROM.read(3) == 1)
{/ / switch trycks - pullup håller pin hög normalt
digitalWrite (ch4, hög);
lcd.setCursor (8, 1);
LCD.Print ("r4 på");
växla mellan rinnande variabel
Ange via LED
}
om (EEPROM.read(3) == 0)
{/ / switch trycks - pullup håller pin hög normalt
digitalWrite (ch4, låg);
lcd.setCursor (8, 1);
LCD.Print ("r3 OFF");
växla mellan rinnande variabel
Ange via LED
}
}
void loop()
{
char caracter = mySerial.read();
//--------------------------------ch1---------------------
om (caracter == "A")
{
digitalWrite(ch1,HIGH);
lcd.setCursor (0, 0);
LCD.Print ("r1 på");
EEPROM.write (0, 1);
}
om (caracter == "a")
{
digitalWrite(ch1,LOW);
lcd.setCursor (0, 0);
LCD.Print ("r1 OFF");
EEPROM.write (0, 0);
}
//---------------------------------ch1----------------------
//---------------------------------ch2---------------------
om (caracter == "B")
{
digitalWrite(ch2,HIGH);
lcd.setCursor (8, 0);
LCD.Print ("r2 på");
EEPROM.write (1, 1);
}
om (caracter == "b")
{
digitalWrite(ch2,LOW);
lcd.setCursor (8, 0);
LCD.Print ("r2 OFF");
EEPROM.write (1, 0);
}
//---------------------------------ch2----------------------
//---------------------------------ch3---------------------
om (caracter == "C")
{
digitalWrite(ch3,HIGH);
lcd.setCursor (0, 1);
LCD.Print ("r3 på");
EEPROM.write (2, 1);
}
om (caracter == "c")
{
digitalWrite(ch3,LOW);
lcd.setCursor (0, 1);
LCD.Print ("r3 OFF");
EEPROM.write (2, 0);
}
//---------------------------------ch3----------------------
//---------------------------------ch4---------------------
om (caracter == hade ")
{
digitalWrite(ch4,HIGH);
lcd.setCursor (8, 1);
LCD.Print ("r4 på");
EEPROM.write (3, 1);
}
om (caracter == hade ")
{
digitalWrite(ch4,LOW);
lcd.setCursor (8, 1);
LCD.Print ("r4 OFF");
EEPROM.write (3, 0);
}
//---------------------------------ch4----------------------
om (digitalRead(switchPin[0]) == låg)
{/ / switch trycks - pullup håller pin hög normalt
digitalWrite (ch1, hög);
lcd.setCursor (0, 0);
LCD.Print ("r1 på");
EEPROM.write (0, 1);
}
om (digitalRead(switchPin[0]) == låg)
{/ / switch trycks - pullup håller pin hög normalt
digitalWrite (ch1, låg);
lcd.setCursor (0, 0);
LCD.Print ("r1 OFF");
EEPROM.write (0, 0);
}
om (digitalRead(switchPin[1]) == låg)
{/ / switch trycks - pullup håller pin hög normalt
digitalWrite (ch2, hög);
lcd.setCursor (8, 0);
LCD.Print ("r2 på");
EEPROM.write (1, 1);
}
om (digitalRead(switchPin[1]) == låg)
{/ / switch trycks - pullup håller pin hög normalt
digitalWrite (ch2, låg);
lcd.setCursor (8, 0);
LCD.Print ("r2 OFF");
EEPROM.write (1, 0);
}
om (digitalRead(switchPin[2]) == låg)
{/ / switch trycks - pullup håller pin hög normalt
digitalWrite (ch3, hög);
lcd.setCursor (0, 1);
LCD.Print ("r3 på");
EEPROM.write (2, 1);
}
om (digitalRead(switchPin[2]) == låg)
{/ / switch trycks - pullup håller pin hög normalt
digitalWrite (ch3, låg);
lcd.setCursor (0, 1);
LCD.Print ("r3 OFF");
EEPROM.write (2, 0);
}
om (digitalRead(switchPin[3]) == låg)
{/ / switch trycks - pullup håller pin hög normalt
digitalWrite (ch4, hög);
lcd.setCursor (8, 1);
LCD.Print ("r4 på"); / / växla kör variabel
EEPROM.write (3, 1);
}
om (digitalRead(switchPin[3]) == låg)
{/ / switch trycks - pullup håller pin hög normalt
digitalWrite (ch4, låg);
lcd.setCursor (8, 1);
LCD.Print ("r4 OFF");
EEPROM.write (3, 0);
}
Delay(0);
}