Kod jsem upravoval z internetu.Chtěl bych ,aby při stisku tlačítka se přehodil mod a při tak 5 sekundach se uložil do EEPROM ,a pak už neukládal znova ve smyčce po 300mil/sekund.
#include <EEPROM.h>
const int buttonPin = PB3;
const int redPin = PB0;
const int greenPin = PB1;
const int bluePin = PB2;
byte mode;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
mode = EEPROM.read(10); //priradím byte hodnotu z EEPROM z ofsetu 10 k premennej mode
}
void loop() {
int buttonState;
buttonState = digitalRead(buttonPin);
if (buttonState == LOW) {
mode++; //mode+1
delay(250);
}
else if (mode == 0) {
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, LOW);
}
else if (mode == 1) {
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, HIGH);
digitalWrite(bluePin, HIGH);
EEPROM.update(10,1);
delay(300);
}
else if (mode == 2) {
digitalWrite(redPin, HIGH);
digitalWrite(greenPin,LOW );
digitalWrite(bluePin, LOW);
EEPROM.update(10,2);
delay(300);
}
else if (mode == 3) {
digitalWrite(redPin, LOW);
digitalWrite(greenPin,HIGH);
digitalWrite(bluePin,LOW );
EEPROM.update(10,3);
delay(300);
}
else if (mode == 4) {
digitalWrite(redPin, LOW);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, HIGH);
EEPROM.update(10,4);
delay(300);
}
else if (mode == 5) {
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, HIGH);
digitalWrite(bluePin, LOW);
EEPROM.update(10,5);
delay(300);
}
else if (mode == 6) {
digitalWrite(redPin, LOW);
digitalWrite(greenPin, HIGH);
digitalWrite(bluePin, HIGH);
EEPROM.update(10,6);
delay(300);
}
else if (mode == 7) {
digitalWrite(redPin, HIGH);
digitalWrite(greenPin, LOW);
digitalWrite(bluePin, HIGH);
EEPROM.update(10,7);
delay(300);
}
else {
mode = 0;
//EEPROM o tejto hodnote nevie, lebo ju tam nezapisuješ, ostane nastavena v EEPROM 7 a nasledne po inkrementacii skoci na 1.
}
}