código para acender e apagar leds e um botão de reset

estou fazendo um código que funcionará da seguinte maneira, são tres botões de pressão os dois primeiros comando um led ao apertar ele acende um led, ao apertar de novo ele apaga o led, são dois assim, o terceiro botão seria um reset ao pressioná-lo ele apagaria todos os leds que estiverem acesos, escrevi o código abaixo, só que o reset não consigo fazer, onde está o erro? Alguém pode me ajudar:

int led = 11;
int led2 = 12;
int botao = 7;
int botao2 = 6;
int botaor = 5;

int var=0;
int var2=0;
int var3=0;
int var4=0;
int varr=0;
int varr2=0;

int estado=0;
int estado2=0;
int estador=0;

void setup(){
pinMode(led, OUTPUT);
pinMode(botao, INPUT);
pinMode(led2, OUTPUT);
pinMode(botao2, INPUT);
pinMode(botaor, INPUT);
}

void loop(){
var = digitalRead(botao);
if((var==HIGH)&&(var2==LOW)){
estado=1-estado;
delay(20);
}
var2=var;
if(estado==1){
digitalWrite(led,HIGH);
}
else{
digitalWrite(led,LOW);
}

var3 = digitalRead(botao2);
if((var3==HIGH)&&(var4==LOW)){
estado2=1-estado2;
delay(20);
}
var4=var3;
if(estado2==1){
digitalWrite(led2,HIGH);
}
else{
digitalWrite(led2,LOW);
}

varr = digitalRead(botaor);
if((varr==HIGH)&&(varr2==LOW)){
estador=1-estador;
delay(20);
}
varr2=varr;
if(estador==1){
digitalWrite(led,LOW);
digitalWrite(led2,LOW);
}
}

Ola colega.Olhando para o teu codigo fico todo baralhado e aposto que até tu para o entenderes deves ter de estar com muita atençao.

int var=0;
int var2=0;
int var3=0;
int var4=0;
int varr=0;
int varr2=0;

int estado=0;
int estado2=0;
int estador=0;

Porque nao dares nomes mais sugestivos as tuas variaveis?
Quanto tento decifrar o teu erro dame um nó no cerebro ...
Em todo o caso penso que para o que pretendes é super simples fazer algo mais simples pra esse programa
Estas a prever o debouncing dos botoes?
Como ligas-te os teus botoes ao micro?

#define LED1 11
#define LED2 12

#define BOTAO_LED_1 7
#define BOTAO_LED_2 6
#define BOTAO_RESET 5

bool estadoBotaoLed1=false;
bool estadoBotaoLed2=false;
bool estadoBotaoReset=false;

void setup()
{
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(BOTAO_LED_1, INPUT);
  pinMode(BOTAO_LED_2, INPUT);
  pinMode(BOTAO_RESET, INPUT);
  //Configurar os pull-ups internos nos pinos de entrada pra prever o pino "flutuar"
  digitalWrite(BOTAO_LED_1,HIGH);
  digitalWrite(BOTAO_LED_2,HIGH);
  digitalWrite(BOTAO_RESET,HIGH);
}

void loop()
{
  if (digitalRead(BOTAO_LED_1) == LOW)
    {
      //Alguem pressionou o botao do LED1 entao vamos vamos fazer o debouncing dele
      delay(100);//Aguardamos 100 ms e voltamos a verificar o estado do botao.
      if(digitalRead(BOTAO_LED_1) == LOW)//Se ainda estiver low entao quer dizer que um ser humano o primiu
      {
        estadoBotaoLed1 = true;//Setamos a flag que o botao esta true= pressionado
        digitalWrite(LED1,HIGH);//Ligas o teu led
      }
    }
  if (digitalRead(BOTAO_RESET) == LOW)
  {
    //Alguem pressionou o botao do reset entao vamos vamos fazer o debouncing dele
    delay(100);//Aguardamos 100 ms e voltamos a verificar o estado do botao.
    if(digitalRead(BOTAO_RESET) == LOW)//Se ainda estiver low entao quer dizer que um ser humano o primiu
    {
      estadoBotaoReset = true;//Setamos a flag que o reset esta true= pressionado
      botaoResetPressionado();//Chamamos a funçao que reseta tudo
    }
  }  
  

}

void botaoResetPressionado()
{
  //Se o botao de reset foi pressionado entao vamos resetar todos os estados e apagar todos os leds
  estadoBotaoLed1 = false;
  estadoBotaoLed2 = false;
  estadoBotaoReset =false;
  digitalWrite(LED1,LOW);//Apagamos o LED1
  digitalWrite(LED2,LOW);//Apagamos o LED2
}

Aqui tens um bocado de como podes ter o codigo mais facil de manter.
Nao faz tudo o que queres pois esse é o teu trabalho de casa :grin:
Tens no entanto o esqueleto para isso funcionar.
Nao testei o codigo por isso se encontrares falhas tenta resolver :grin:
Bom ano
O botoes têm de estar ligados assim

5V-----|///|----/ -----GND
|
|
Pino que le o botao

Ok, amigo muito obrigado pela ajuda, vou estudar o q vc me citou, só fiquei com uma dúvida nesta parte do código:

bool estadoBotaoLed1=false;
bool estadoBotaoLed2=false;
bool estadoBotaoReset=false;

poderia me explicar melhor o que isso faz, desculpe se for muito básico, é que eu estou começando a brincar com o arduino tem umas 2 semanas.

Grato desde já,

e um feliz ano novo a todos.

bool estadoBotaoLed1=false;
bool estadoBotaoLed2=false;
bool estadoBotaoReset=false;

bool é um tipo de dados booleano ou seja representa verdade ou falso.Verdade é todo o valor diferente de zero e falso é o valor 0.
Eu uso os para representar estados, se está ligado ou não, se algo é verdade ou falso.
No código que te passei basicamente quero marcar o estado do botão, será verdadeiro quando o botão for pressionado e falso quando ninguém o pressionar.