Olá pessoal sou da área de eletrônica mas estou me interessando por programação em arduino. Fiz a junção de dois códigos e de circuitos diferentes para formar um alarme mas agora gostaria de saber se é possivel implementar neste código alguma instrução que grave na eprom a última cronometragem (timming) e em qual parte do código, para que ao final da contagem, ele retorne ao valor inicial. Caso reu precisasse resetar, usaria o pushboton do arduino.
Ficaria agradecido por alguma ajuda.
segue abaixo o código para que possam analisar
#include <LiquidCrystal.h>
LiquidCrystal lcd( 12, 11, 5, 4, 3, 2);
int led = 13;
int segundo = 0;
int minuto = 0;
const int LED13 = 13;
const int Buzzer = A2;
const int Botao1 = A5;
const int Botao2 = A4;
const int Botao3 = A3;
const int pinobotao = 6;
const int pinoopto = 8;
int estadobotao = 0;
//continua
int EstadoBotao1 = 0;
int EstadoBotao2 = 0;
int EstadoBotao3 = 0;
void setup()
{
pinMode(led, OUTPUT);
pinMode(pinoopto, OUTPUT);
pinMode(pinobotao, INPUT);
pinMode(Botao1, INPUT);
pinMode(Botao2, INPUT);
pinMode(Botao3, INPUT);
pinMode(LED13,OUTPUT);
pinMode(Buzzer,OUTPUT);
lcd.begin(16, 2);
inicializacao();
}
void loop() {
EstadoBotao1 = digitalRead(Botao1);
if (EstadoBotao1 == HIGH){
delay(150);
segundo++;
if(segundo>=60){
segundo=0;
lcd.setCursor(11,0);
lcd.print(" ");
}
lcd.setCursor(0,0);
lcd.print("Segundos: ");
lcd.print(segundo);
}
EstadoBotao2 = digitalRead(Botao2);
if (EstadoBotao2 == HIGH){
delay(150);
if (EstadoBotao2 == HIGH){
minuto++;
if(minuto>=60){
minuto=0;
lcd.setCursor(10,1);
lcd.print(" ");
}
lcd.setCursor(0,1);
lcd.print("Minutos: ");
lcd.print(minuto);
}
}
EstadoBotao3 = digitalRead(Botao3);
if (EstadoBotao3 == HIGH){
if((minuto==0) && (segundo==0))
{
}
else
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" START ");}
{digitalWrite(led, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
//digitalWrite(led, LOW); // turn the LED off by making the voltage LOW
delay(1000);}
digitalWrite(pinoopto, HIGH);
digitalWrite(pinoopto, LOW);
estadobotao = digitalRead(pinobotao);
if (estadobotao == HIGH)
delay(1000);
if(segundo==0){
minuto--;
segundo=59;}
for(int y = 0; y<segundo; y--){
if(minuto<10){
lcd.setCursor(5,1);
lcd.print("0");
lcd.print(minuto);
lcd.print(":");
} else {
lcd.setCursor(5,1);
lcd.print(minuto);
lcd.print(":");
}
if(segundo<10){
lcd.print("0");
lcd.print(segundo);
} else {
lcd.print(segundo);
}
segundo--;
if(segundo<0){
minuto--;
segundo=59;
}
digitalWrite(pinoopto, HIGH);
delay(1000);
digitalWrite(pinoopto, LOW);
estadobotao = digitalRead(pinobotao);
delay(1000);
if((segundo<=0) && (minuto<=0)) {
lcd.clear();
lcd.setCursor(0,0);
digitalWrite(led, LOW);
lcd.print("fim da contagem!");
digitalWrite(Buzzer,HIGH);
delay(250);
digitalWrite(Buzzer,LOW);
delay(100);
digitalWrite(Buzzer,HIGH);
delay(250);
digitalWrite(Buzzer,LOW);
delay(100);
digitalWrite(Buzzer,HIGH);
delay(250);
digitalWrite(Buzzer,LOW);
delay(100);
digitalWrite(Buzzer,HIGH);
delay(1000);
digitalWrite(Buzzer, LOW);
break; //sai do loop for
}
}
inicializacao();
}
}
void inicializacao(){
lcd.begin(16, 2);
lcd.print("Selecione o ");
lcd.setCursor(0,1);
lcd.print(“tempo do timer…”);
delay(1500);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Segundos: ");
lcd.print(segundo);
lcd.setCursor(0,1);
lcd.print("Minutos: ");
lcd.print(minuto);
}