A sugestão do programa apenas precisava de uns pequenos acertos, que eu presumo, você mesmo poderia ter debugado o código e verificado.
void loop() {
botao = digitalRead(pinoBotao);if ((botao == 1) && (botao != botaoAntes)) {//contacto activou e anteriormente o botao nao estava activo.
//mete aqui o teu codigo de envio de mensagem.
digitalWrite(ledVerm, HIGH);
delay(2000);}
{
delay(3000);
botaoAntes = botao;}}
Além do programa ficar preso em 2 Delays, o LED apenas era ligado 01 vez, porque não há um comando para desligá-lo. E também só era ligado quando os 2 delays eram executados primeiros, fazendo você ter que segurar o botão para acionar o LED.
Fiz uma pequena alteração no seu código, logo abaixo segue:
const unsigned int led_do_Arduino = 13; //LED do Arduino
const unsigned int leitura_do_botao = 12;
unsigned char estado_anterior_do_botao = 0;
unsigned char estado_atual_do_botao = 0;
void setup()
{
pinMode(leitura_do_botao, INPUT);
pinMode(led_do_Arduino, OUTPUT);
digitalWrite(led_do_Arduino, LOW);
}
void loop()
{
estado_atual_do_botao = digitalRead(leitura_do_botao); //pino 12
if ((estado_atual_do_botao == 1) && (estado_atual_do_botao != estado_anterior_do_botao)) //contacto activou e anteriormente o botao nao estava activo.
{
//mete aqui o teu codigo de envio de mensagem.
digitalWrite(led_do_Arduino, HIGH);
delay(2000);
digitalWrite(led_do_Arduino, LOW);
}
estado_anterior_do_botao = estado_atual_do_botao;
}
ATENÇÃO:
Escreva esse código numa folha de papel e vá com a caneta preenchendo ao lado os valores das variáveis e simule mentalmente o funcionamento. Dessa forma você vai entender e facilitará seu aprendizado.