Para isso, vamos precisar conhecer algumas sintaxes básicas da linguagem de programação do arduino, tais como: Constantes, Função digitalRead() e Desvio de código (if/else).
- A função digitalRead lê um valor de entrada no pino especificado, ou ALTO (quando recebe/lê 5V na porta) ou BAIXO (quando recebe/lê 0V na porta)
- A função if/else permite controlar o fluxo de código, através dele vamos determinar o que ser feito caso o botão seja pressionado ou não, conforme código demonstrativo baixo:
if (botão pressionado)
{
// Faça isso
}
else
{
//Faça aquilo
}
Uma grande vantagem de utilizar o arduino é que não é necessário colocar resistor de elevação (Pull-up) no botão externamente, pois o próprio arduino já possui resistor de elevação interno, basta ativarmos no setup, como no exemplo abaixo:
void setup()
{
pinMode(10, INPUT); //configurando porta 10 como entrada
digitalWrite(10,1); //Escrevo na porta 10 o nível lógico ALTO
}
void loop() {}
No momento que eu solicito ao arduino para que escreva nível lógico 1 na porta de entrada, o Arduino "entende" que solicitamos o resistor interno de elevação, ativando-o.
Fazendo isso, a função digitalRead() vai sempre retornar ALTO, até que o botão (que está ligado ao GND) seja pressionado, ai então retornará BAIXO na função digitalRead(),
Logo, o circuito fica assim:
Sem mais delongas, vamos ao código:
void setup()
{
pinMode(13, OUTPUT); //Porta escolhida para escrever informação caso botão pressionado
pinMode(10, INPUT); //Porta escolhida para ler o botão
digitalWrite(10, 1); //Ativamos o resistor de elevação
}
void loop()
{
int leitura = digitalRead(10); //Atribuimos a função digitalRead() na variável leitura
if (leitura == 0) //Compara, se leitura for igual a zero, isto é, botão pressionado
{
digitalWrite(13, 1); //Escreva nível lógico ALTO (5V) na porta 13, podemos acionar Led, relês, etc
}
else //senão
{
digitalWrite(13, 0); //Escreva nivel lógico BAIXO (0V) na porta 13
}
}