Hi all,
I am trying to control the output level of some LEDS then store the values to the EEPRO memory and recall them after power down. This is my first attempt at using the EEPRO memory so slightly confused as to how it actually works. Any advice would be great I will attach my full code below.
#include <EEPROM.h>
int led1 = 3;
int led2 = 5;
int led3 = 6;
int led4 = 9;
int button = 7;
int pot = A0;
int lightCounter = 0;
int brightness1 = 0;
int brightness2 = 0;
int brightness3 = 0;
int brightness4 = 0;
int level1 = 0;
int level2 = 0;
int level3 = 0;
int level4 = 0;
int address1 = 1;
int address2 = 2;
int address3 = 3;
int address4 = 4;
int updater = 10000;
int longPress = 2000;
unsigned long lastMillis = 0;
unsigned long lastMillis2 = 0;
unsigned long currentMillis = millis();
unsigned long currentMillis2 = millis();
void setup() {
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(button, INPUT);
pinMode(pot, INPUT);
}
void loop() {
buttonRead();
potRead();
lightLevels();
memory();
Serial.print("Level1 = ");
Serial.println(level1);
Serial.print(" Level2 = ");
Serial.println(level2);
Serial.print(" Level3 = ");
Serial.println(level3);
Serial.print(" Level4 = ");
Serial.println(level4);
Serial.print("Brightness1 = ");
Serial.println(brightness1);
Serial.print(" Brightness2 = ");
Serial.println(brightness2);
Serial.print(" Brightness3 = ");
Serial.println(brightness3);
Serial.print(" Brightness4 = ");
Serial.println(brightness4);
Serial.println(pot);
}
void buttonRead(){
if((digitalRead(button) == HIGH) && (lightCounter<4) && (currentMillis - lastMillis >= longPress)){
lastMillis = millis();
analogWrite(led1, 255);
analogWrite(led2, 255);
analogWrite(led3, 255);
analogWrite(led4, 255);
delay(300);
analogWrite(led1, LOW);
analogWrite(led2, LOW);
analogWrite(led3, LOW);
analogWrite(led4, LOW);
delay(300);
analogWrite(led1, 255);
analogWrite(led2, 255);
analogWrite(led3, 255);
analogWrite(led4, 255);
delay(300);
analogWrite(led1, LOW);
analogWrite(led2, LOW);
analogWrite(led3, LOW);
analogWrite(led4, LOW);
delay(300);
analogWrite(led1, 255);
analogWrite(led2, 255);
analogWrite(led3, 255);
analogWrite(led4, 255);
delay(300);
analogWrite(led1, LOW);
analogWrite(led2, LOW);
analogWrite(led3, LOW);
analogWrite(led4, LOW);
}
if ((digitalRead(button) == HIGH)&&(lightCounter == 0)){
analogWrite(led1, 255);
delay(300);
analogWrite(led1, LOW);
delay(300);
analogWrite(led1, 255);
delay(300);
analogWrite(led1, LOW);
delay(300);
analogWrite(led1, 255);
delay(300);
analogWrite(led1, LOW);
delay(300);
lightCounter = 1;
delay(300);
}
if ((digitalRead(button) == HIGH)&&(lightCounter == 1)){
analogWrite(led2, 255);
delay(300);
analogWrite(led2, LOW);
delay(300);
analogWrite(led2, 255);
delay(300);
analogWrite(led2, LOW);
delay(300);
analogWrite(led2, 255);
delay(300);
analogWrite(led2, LOW);
delay(300);
lightCounter = 2;
delay(300);
}
if ((digitalRead(button) == HIGH)&&(lightCounter == 2)){
analogWrite(led3, 255);
delay(300);
analogWrite(led3, LOW);
delay(300);
analogWrite(led3, 255);
delay(300);
analogWrite(led3, LOW);
delay(300);
analogWrite(led3, 255);
delay(300);
analogWrite(led3, LOW);
delay(300);
lightCounter = 3;
delay(300);
}
if ((digitalRead(button) == HIGH)&&(lightCounter == 3)){
analogWrite(led4, 255);
delay(300);
analogWrite(led4, LOW);
delay(300);
analogWrite(led4, 255);
delay(300);
analogWrite(led4, LOW);
delay(300);
analogWrite(led4, 255);
delay(300);
analogWrite(led4, LOW);
delay(300);
lightCounter = 0;
delay(300);
}
}
void potRead(){
if (lightCounter == 1){
level1 = analogRead(pot);
brightness1 = map(level1,0,1023,0,255);
analogWrite(led1, brightness1);
}
if (lightCounter == 2){
level2 = analogRead(pot);
brightness2 = map(level2,0,1023,0,255);
analogWrite(led2, brightness2);
}
if (lightCounter == 3){
level3 = analogRead(pot);
brightness3 = map(level3,0,1023,0,255);
analogWrite(led3, brightness3);
}
if (lightCounter == 0){
level4 = analogRead(pot);
brightness4 = map(level4,0,1023,0,255);
analogWrite(led4, brightness4);
}
if (lightCounter == 4){
level1 = analogRead(pot);
brightness1 = map(level1,0,1023,0,255);
brightness2 = map(level1,0,1023,0,255);
brightness3 = map(level1,0,1023,0,255);
brightness4 = map(level1,0,1023,0,255);
}
}
void memory(){
if (currentMillis2 - lastMillis2 >= updater){
if ((brightness1!=0)&&(brightness2!=0)&&(brightness3!=0)&&(brightness4!=0)){
EEPROM.update(address1,brightness1);
EEPROM.update(address2,brightness2);
EEPROM.update(address3,brightness3);
EEPROM.update(address4,brightness4);
}
if((EEPROM.read(1)!=0)&&(EEPROM.read(2)!=0)&&(EEPROM.read(3)!=0)&&(EEPROM.read(4)!=0)){
brightness1 = EEPROM.read(1);
brightness2 = EEPROM.read(2);
brightness3 = EEPROM.read(3);
brightness4 = EEPROM.read(4);
}
}
}
void lightLevels(){
analogWrite(led1, brightness1);
analogWrite(led2, brightness2);
analogWrite(led3, brightness3);
analogWrite(led4, brightness4);
delay(100);
}