#include <EEPROM.h>
const int buttonPin = 2; // Gomb tüskeszáma
const int LedPin = 3;
int buttonState = 0; // Gomb állapota
int buttonOldState = 0;
char data[16] = "valami"; // +1 az '\0' lezáró karakternek
unsigned long startTime = 0;
unsigned long buttonPressed = 0;
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT);
pinMode(LedPin, OUTPUT);
EEPROMWrite(data);
}
void EEPROMClear(){
for (int i = 0; i < 16; i++) {
EEPROM.write(i, 0); // Törlés
}
}
char* EEPROMRead(){
for (int i = 0; i < 16; i++) {
data[i] = EEPROM.read(i); // Az EEPROM-ból olvasás
}
return data;
}
void EEPROMWrite(char* data){
for (int i = 0; i < 15; i++) {
EEPROM.write(i, data[i]); // Az EEPROM-ba írás
//Serial.println(data[i]);
}
data[16] = '\0';
}
void loop() {
buttonState = digitalRead(buttonPin);
if(buttonState != buttonOldState){//Gomb állapota megváltozott
buttonOldState = buttonState;
//Serial.println(String(millis()) + " Változás");
if (buttonState == HIGH ) {//Serial.println("A Gombot megnyomva");
digitalWrite(LedPin, HIGH); //Ha a gomb állapota "Lenyomva"-ra változott akkor lámpa be.
startTime = millis();
}else{//Serial.println("Gomb elengedve");
digitalWrite(LedPin, LOW); //Ha a gomb állapota "Elengedve"-re változott akkor lámpa ki.
buttonPressed = (millis()-startTime);
if(buttonPressed>0){
if( buttonPressed >=3000){ //Ha a gomb állapota "Elengedve"-re változott és legalább 3mp-ig le volt nyomva akkor
Serial.println(String(buttonPressed) + "Hosszan nyomva tartották a gombot, az EEPROM törlődik.");
EEPROMClear();
}else{
Serial.println(String(buttonPressed) + "Röviden nyomták meg a gombot.");
Serial.println(EEPROMRead());
}
startTime = 0;
}
}
}
if (buttonState == HIGH && (millis()-startTime)>3000){ // Ha eléghosszan van nyomva akkor aludjon ki a lámpa
digitalWrite(LedPin, LOW);
}
//delay(1000); // Késleltetés a gombolvasáshoz
}