Botão de reset externo para Arduino. Realmente foi uma coisa com a qual nunca me preocupei, até receber o email abaixo de um leitor do blog:
“Caro,
Montei o seu circuito de lâmpadas com relés e controlado por infravermelho. Funciona perfeitamente mas o único problema é que quando o Arduino trava e o programa pára de funcionar, eu tenho que desparafusar a caixa plástica onde instalei o circuito, e apertar o botão de reset ou então desligar a energia do aparelho.
Isso dá um certo trabalho. Tem como instalar um botão de reset na caixa ?”
Tem sim, e é bem fácil de implementar.
O ATMega, quando ligado, está com o pino 1 (reset), em nível alto (1). Ao aplicarmos 0v (nível baixo) neste pino, o ATMega é resetado.
Repare que no barramento inferior do Arduino Uno, logo abaixo do microcontrolador, temos um dos pinos com a marcação RESET. Podemos utilizar este pino para resetar o microcontrolador, simplesmente aplicando à ele 0 volts.
Seguindo esse princípio, podemos ligar um push-button ao pino RESET, a outra perna do botão ao GND, e utilizar um resistor pull-up para manter o pino em nível alto quando o botão não estiver sendo acionado.
Circuito botão de reset externo e Arduino
O circuito fica mais ou menos assim, com um resistor de 10 K junto ao push-button. Usei um programa de teste para piscar o led ligado à porta 7 :
Algumas pessoas utilizam esse circuito sem o resistor pull-up. Eu testei aqui as duas versões, com o mesmo resultado.
Não sei se há algum problema na utilização dessa solução de botão de reset externo à longo prazo. Se alguém usa uma versão diferente ou tem alguma consideração sobre essa ligação e quiser contribuir com o post, será bem vindo.
Se gostou deste post, confira outros posts sobre Arduino aqui mesmo no Arduino e Cia!