Monitorando o estado de um switch (Digital Read Serial) - Arduino Basics

Experimente Nosso Instrumento Para Eliminar Problemas





Este básico do Arduino discute o método de implementação de um código por meio do qual o estado ON ou OFF de um botão externo pode ser lido ou monitorado dentro do Arduino.

Serial de leitura digital

Aqui, aprendemos por meio de um exemplo como monitorar o estado de um switch realizando comunicação serial em seu Arduino e seu PC via USB.



Além da placa Arduino, você precisaria dos seguintes itens fundamentais:

Hardware

Um interruptor momentâneo, botão ou um interruptor push-to-ON



10k, resistor de 1/4 watt ohm

tábua de pão
ligações ou ligações de fio em ponte.

Operação de Circuito

A operação pode ser realizada com as seguintes etapas:

Pegue 3 pedaços de fios de ligação e conecte-os à sua placa Arduino. Dois dos fios, vermelho e preto, vão para as duas longas filas verticais na lateral da placa de ensaio que se tornam os cabos de alimentação da placa para transportar o 5 Vcc necessários para a placa.

O terceiro fio é usado para conectar o pino digital 2 a um dos fios da chave push-to-ON.

Este cabo específico do botão também se conecta com um resistor pull-down de 10k ao trilho de alimentação negativo ou ao aterramento. O outro cabo livre da chave está ligado ao positivo de 5 volts.

Com as conexões acima feitas, o interruptor alterna ou executa uma ação dupla no circuito quando pressionado.

Normalmente, quando a chave está na posição desconectada, seus dois condutores permanecem isolados, de modo que o pino que está conectado ao terra por meio do resistor pull-down torna-se um LOW ou um nível lógico 0.

Na situação pressionada, a chave executa uma ponte momentânea de seus dois condutores, de modo que seus condutores sejam submetidos a + 5 volts, gerando um nível ALTO ou lógico 1 entre eles.

Isolar a pinagem de E / S digital do resto das coisas pode forçar o LED a ficar maluco e causar uma intermitência irregular. Isto se deve ao fato de a entrada não ser processada em nada, ou mantida em uma posição 'suspensa' - ou seja, não é designada a nenhuma lógica definida, nem alta nem baixa (+ 5V ou 0V), por isso empregamos o resistor pull-down com o switch.

Esquemático

Compreender o Código

No programa a seguir abaixo, começamos com a comunicação serial dentro da função de configuração na taxa de 9600 bits de dados por segundo, isso é iniciado entre a placa Arduino e o computador conectado: Serial.begin (9600)

Na próxima etapa, acionamos o pino digital 2, o pino que seria responsável pela saída com a chave de pressão como uma entrada: pinMode (2, INPUT) Isso completa nossa 'configuração', agora navegamos para o loop principal de nosso código .

Aqui, ao pressionar o botão, 5 volts podem passar pelo nosso circuito, enquanto o pino de entrada é conectado ao terra através do resistor de 10 kilohm quando está em uma condição não pressionada.

O acima é o que chamamos de entrada digital, que se refere a uma condição em que o switch só pode estar em um estado particular ou um estado ligado (aceito pelo Arduino como '1', ou LOGIC HIGH) ou um estado desligado (visualizado pelo Arduino como um '0' ou LÓGICA BAIXA), sem nenhum outro estado indefinido entre eles.

A ação fundamental que precisamos executar no loop principal do programa é aplicar uma variável para manter as informações no lugar que foram enviadas por meio do botão.

Conforme discutido acima, com os sinais sendo na forma de '1' ou '0', aqui empregamos um tipo de dados int. Podemos nomear essa variável como sensorValue e corrigi-la para corresponder a tudo o que está sendo lido no pino digital 2. Tudo isso pode ser alcançado por meio de uma linha de código:

int sensorValue = digitalRead (2) Depois que o Arduino tiver lido a entrada, imprima-a de volta no computador na forma de um valor decimal.

Isso pode ser implementado com a ajuda do comando Serial.println () na linha de conclusão do código: Serial.println (sensorValue)

Depois disso, sempre que o Serial Monitor for iniciado no domínio Arduino, testemunharíamos uma cadeia de '0's durante a posição do botão de ação aberta e correntes' 1's nos casos em que o botão fosse mantido na condição fechada.

/*
DigitalReadSerial
Reads a digital input on pin 2, prints the result to the serial monitor
This example code is in the public domain.
*/
// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = 2

// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600)
// make the pushbutton's pin an input:
pinMode(pushButton, INPUT)
}
// the loop routine runs over and over again forever:
void loop() {
// read the input pin:
int buttonState = digitalRead(pushButton)
// print out the state of the button:
Serial.println(buttonState)
delay(1) // delay in between reads for stability
}




Anterior: Controlador de fluxo de água personalizado com circuito temporizador Próximo: Conversão de analógico em digital (leitura serial analógica) - Noções básicas do Arduino