int PinoLED = 13; // variável para o pino digital 13
int PinoBotao = 12; // variável para o pino digital 12
int estadoBotao = 0; //variavel que le o estado atual do botao conectado em 12
int ultimoEstadoBotao = 0; //variavel que guarda o ultimo estado do botao conectado em 12
int controlaEstadoBotao = 0; //variavel que controla o estado do botao conectado em 12

void setup() {
  // put your setup code here, to run once:
pinMode(PinoLED, OUTPUT);// conecta o pino do LED como OUTPUT
  pinMode(PinoBotao, INPUT); //pino 12, onde esta ligado o pushbutton
}

void loop() {
  // put your main code here, to run repeatedly:
  //Verifica e controla o estado do botao conectado em 12
   //Verifica e controla o estado do botao conectado em 12
  estadoBotao = digitalRead(PinoBotao);
  if (ultimoEstadoBotao == 0 && estadoBotao == 1) {
    if (controlaEstadoBotao == 0) {
      controlaEstadoBotao = 1;
    } else {
      controlaEstadoBotao = 0;
    }
  }
  
  ultimoEstadoBotao = estadoBotao;
  delay(50); //espera para evitar efeito bouncing
 
  if (controlaEstadoBotao == 0) {
    digitalWrite(PinoLED, LOW);
  } else {
    digitalWrite(PinoLED, HIGH);
  }

}