Controladora patrones led con guardado

He hecho un codigo en el que con un botón puedo ir cambiando entre x patrones de parpadeo de unos leds, pero cuando se reinicia la placa, la variable que se encarga de ir cambiando de patrón a medida que se va pulsando el botón, se reinicia a 1(que se corresponde con el primer patron).
Mi duda es, ¿como puedo hacer que se almacene la ultima posicion de la variable para que de esta manera aunque reincie la placa, inicie el ultimo patrón que seleccione anteriormente?

int t = 1;
void setup()
{
  
  pinMode (1 , OUTPUT);
  pinMode (2 , OUTPUT);
  pinMode (3 , OUTPUT);
  pinMode (4 , OUTPUT);
  pinMode (5 , OUTPUT);
  pinMode (6 , OUTPUT);
  pinMode (7 , OUTPUT);
  pinMode (8 , OUTPUT);
  pinMode (9 , OUTPUT);
  pinMode (10 , OUTPUT);
  pinMode (11, OUTPUT);
  pinMode (12 , OUTPUT);
  pinMode(13, INPUT);
}

void loop()
{
  if (digitalRead(13)==HIGH){
    t++;
    delay(50);}
    
if (t==1){
  pattern1();}
if (t==2){
  pattern2();}
if (t==3){
  pattern3();}
if (t==4){
  pattern4();}
if (t==5){
  pattern5();}
if (t==6){
  pattern6();}


}
  
void pattern1(){
 digitalWrite(1, HIGH);
 digitalWrite(2, HIGH);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
 delay(130);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  delay(130);}
    
void pattern2(){    
   digitalWrite(1, HIGH);
  digitalWrite(2, HIGH);
 delay(55);
   digitalWrite(1, LOW);
  digitalWrite(2, LOW);
 delay(55);
  digitalWrite(1, HIGH);
  digitalWrite(2, HIGH);
  delay(55);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);
  delay(55);
   digitalWrite(1, HIGH);
  digitalWrite(2, HIGH);
  delay(55);
   digitalWrite(1, LOW);
  digitalWrite(2, LOW);
  delay(55);
   digitalWrite(1, HIGH);
  digitalWrite(2, HIGH);
   delay(55);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);
delay(55);
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
 delay(55);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  delay(55);
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
 delay(55);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  delay(55);
   digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
 delay(55);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  delay(55);
   digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  delay(55);
   digitalWrite(3, LOW);
  digitalWrite(4, LOW);}
    
void pattern3(){
 digitalWrite(1, HIGH);
 digitalWrite(2, HIGH);
 delay(60);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);
  delay(60);
  digitalWrite(1, HIGH);
  digitalWrite(2, HIGH);
 delay(60);
   digitalWrite(1, LOW);
  digitalWrite(2, LOW);
   delay(70);
   digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
 delay(60);
   digitalWrite(3, LOW);
  digitalWrite(4, HIGH);
  delay(60);
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
 delay(60);
   digitalWrite(3, LOW);
  digitalWrite(4, HIGH);
   delay(70);}
    
void pattern4(){
   digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
 delay(30);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);
 delay(30);
  digitalWrite(1, HIGH);
  digitalWrite(2, HIGH);
 delay(140);
  digitalWrite(1, LOW);
  digitalWrite(2, LOW);
 delay(40);
 digitalWrite(3, HIGH);
 digitalWrite(4, HIGH);
 delay(30);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
 delay(30);
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
 delay(140);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
 delay(40);}
  
void pattern5(){
   digitalWrite(1, HIGH);
  digitalWrite(2, HIGH); 
  delay(40);
   digitalWrite(1, LOW);
  digitalWrite(2, LOW);
 
  delay(40);
  digitalWrite(1, HIGH);
  digitalWrite(2, HIGH);
 
  delay(40);
   digitalWrite(1, LOW);
  digitalWrite(2, LOW);
 
  delay(40);
  digitalWrite(1, HIGH);
  digitalWrite(2, HIGH);
  
  delay(40);
   digitalWrite(1, LOW);
  digitalWrite(2, LOW);
 
  delay(40);
  digitalWrite(1, HIGH);
  digitalWrite(2, HIGH);
   delay(40);
   digitalWrite(1, LOW);
  digitalWrite(2, LOW);
  delay(150);
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
 
  delay(40);
   digitalWrite(3, LOW);
  digitalWrite(4, LOW);
 
  delay(40);
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
 
  delay(40);
   digitalWrite(3, LOW);
  digitalWrite(4, LOW);
 
  delay(40);
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  
  delay(40);
   digitalWrite(3, LOW);
  digitalWrite(4, LOW);
 
  delay(40);
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
   delay(40);
   digitalWrite(3, LOW);
  digitalWrite(4, LOW);
   delay(150);
  }
    
void pattern6(){
digitalWrite(1,LOW);
    digitalWrite(2,LOW);
    digitalWrite(3,LOW);
    digitalWrite(4,LOW);
    digitalWrite(5,LOW);
    digitalWrite(6,LOW);
    digitalWrite(7,LOW);
    digitalWrite(8,LOW);
t=0;
}
  



Muy buena explicación y qué quieres que hagamos nosotros si no vemos el código?
Te recomiendo que hagas lo que te pondré a continuación

Moderador.
Lee las Normas del foro y postea el código usando etiquetas.

Respalda el valor de la variable en la eeprom y al iniciar la recuperas.
Googlea "eeprom arduino" que vas a encontrar mucha información al respecto.

Usted perdone, ahí está el código.

Muchas gracias!!
Buscaré mas info.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.