//Este é um programa para ler um botão (chave táctil / momentary button)
// e manter um LED aceso até o botão ser novamente apertado.
#define pinodobotao 2 // Essa linha diz ao compilador para substituir tudo que estiver no programa como "pinodobotao" por 3
#define pinodoLED 12 // Essa linha diz ao compilador para substituir tudo que estiver no programa como "pinodoLED" por 7
byte botao; // variável que verifica se o botão foi apertado
bool estadoLED=false; // variável que diz se o LED está ligado (true) ou desligado (false). Inicia o programa com false, já que ele começa desligado
// obs: a variável apenas armazena o estado do LED. Ela não liga ou desliga o LED.
void setup() {
pinMode (pinodobotao, INPUT_PULLUP); //configura o pino onde está ligado o botão como entrada, com sinal constante de +5V
pinMode (pinodoLED,OUTPUT); //configura o pino onde está ligado o LED como saída
digitalWrite (pinodoLED,LOW); //inicia o LED desligado
}
void loop() {
botao = digitalRead(pinodobotao); //Armazena na variável botao o valor 1 se o botão estiver solto ou zero se o botão estiver apertado
if (botao == LOW) { //O valor 1 equivale à constante HIGH e o valor zero à constante LOW. Assim, SE botao for igual a LOW:
estadoLED = !estadoLED; //troca o conteúdo da variável estadoLED
digitalWrite (pinodoLED,estadoLED); //acende ou apaga o LED, conforme o que está armazenado na variável estadoLED
}
delay(100); //como o processador é muito rápido, é preciso esperar algum tempo entre as leituras para que cada aperto no botão seja contado apenas uma vez
}