digitalRead() + SIMULADOR LADDER
digitalRead(): Leitura de Sinais Digitais no Arduino
A função digitalRead() permite que o
microcontrolador leia o estado lógico presente em um pino digital.
Ela faz a interface entre o circuito eletrônico físico e o programa
desenvolvido em C/C++.
digitalRead() permite que o programa
interprete essa condição como HIGH ou
LOW.
1. Sintaxe da função digitalRead()
A sintaxe básica da função é:
int valor = digitalRead(pino);
Por exemplo:
int estado = digitalRead(2);
- pino: número do pino que será lido.
- HIGH: nível lógico alto.
- LOW: nível lógico baixo.
2. Como o Arduino interpreta a tensão?
Uma entrada digital não interpreta qualquer tensão simplesmente como HIGH ou LOW. O microcontrolador possui especificações elétricas que determinam os níveis de entrada reconhecidos.
- VIL: tensão máxima especificada para uma entrada ser reconhecida como LOW.
- VIH: tensão mínima especificada para uma entrada ser reconhecida como HIGH.
3. HIGH e LOW
| Estado | Valor lógico | Interpretação |
|---|---|---|
| LOW | 0 | Nível lógico baixo |
| HIGH | 1 | Nível lógico alto |
4. Pinos analógicos como entradas digitais
No Arduino Uno R3, os pinos A0 até A5 também podem ser utilizados como entradas ou saídas digitais.
| Pino | Número digital |
|---|---|
| A0 | 14 |
| A1 | 15 |
| A2 | 16 |
| A3 | 17 |
| A4 | 18 |
| A5 | 19 |
5. Entradas flutuantes
Uma entrada digital sem uma referência definida pode apresentar comportamento instável. Essa condição é conhecida como entrada flutuante.
No Arduino também podemos utilizar o resistor Pull-Up interno através de
INPUT_PULLUP.
6. Exemplo com INPUT_PULLUP
const int BOTAO = 2;
const int LED = 13;
void setup() {
pinMode(BOTAO, INPUT_PULLUP);
pinMode(LED, OUTPUT);
}
void loop() {
int estado = digitalRead(BOTAO);
if (estado == LOW) {
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
}
INPUT_PULLUP, a lógica do botão
fica invertida. Normalmente o pino permanece em HIGH e, quando
o botão é pressionado e conectado ao GND, o pino passa para LOW.
7. Simulador Ladder — Circuito de Selo
O circuito abaixo representa um comando clássico de partida e parada com selo, utilizado em automação e comandos elétricos.
Simulador de Circuito Ladder
8. Como funciona o circuito de selo?
O botão LIGA é um contato normalmente aberto (NA). Quando pressionado, ele fecha o circuito e permite que a bobina Q0.0 seja energizada.
Quando Q0.0 energiza, o contato auxiliar de Q0.0 também fecha. Esse contato está ligado em paralelo com LIGA.
Dessa forma, quando o operador solta o botão LIGA, o circuito continua energizado através do contato auxiliar de selo.
1. Pressione LIGA.
2. Q0.0 energiza.
3. O contato auxiliar Q0.0 fecha.
4. Solte LIGA.
5. O contato de selo mantém Q0.0 energizado.
6. Pressione DESLIGA.
7. O circuito é interrompido e Q0.0 desliga.
9. Lógica booleana do circuito
A lógica do circuito pode ser representada por:
Q0.0 = (I0.0 OR Q0.0) AND I0.1
- I0.0: botão LIGA.
- I0.1: condição do botão DESLIGA NF.
- Q0.0: bobina/saída.
- Q0.0: também atua como contato de selo.
10. Estados do circuito
| LIGA | DESLIGA NF | SELO | Q0.0 | Resultado |
|---|---|---|---|---|
| 0 | 1 | 0 | 0 | Desligado |
| 1 | 1 | 1 | 1 | Ligado |
| 0 | 1 | 1 | 1 | Ligado pelo selo |
| 0 | 0 | 0 | 0 | Desligado |
11. O significado das linhas verdes
No simulador, a cor verde representa um trecho que está energizado.
Quando Q0.0 está desligado, o ramo de selo permanece desenergizado. Ao pressionar LIGA, o caminho até a bobina fica energizado. Depois que Q0.0 fecha o contato auxiliar, o ramo superior também permanece energizado.
Ao pressionar DESLIGA, o contato normalmente fechado abre. Como consequência, o caminho até a bobina é interrompido, Q0.0 desliga e o contato de selo volta a abrir.
12. Relação entre Ladder e programação
O mesmo princípio pode ser implementado em um microcontrolador utilizando entradas digitais, lógica de programa e uma saída.
const int LIGA = 2;
const int DESLIGA = 3;
const int MOTOR = 13;
bool selo = false;
void setup() {
pinMode(LIGA, INPUT_PULLUP);
pinMode(DESLIGA, INPUT_PULLUP);
pinMode(MOTOR, OUTPUT);
}
void loop() {
bool ligaPressionado =
(digitalRead(LIGA) == LOW);
bool desligaPressionado =
(digitalRead(DESLIGA) == LOW);
if (desligaPressionado) {
selo = false;
}
else if (ligaPressionado) {
selo = true;
}
digitalWrite(
MOTOR,
selo ? HIGH : LOW
);
}
Resumo
A função digitalRead() permite ao programa ler estados
digitais presentes nas entradas do microcontrolador. Esse princípio
é utilizado para ler botões, sensores, chaves fim de curso e outros
dispositivos.
No circuito Ladder, a lógica de selo permite que uma saída permaneça energizada depois que o botão de partida é liberado. O botão DESLIGA interrompe o circuito e desenergiza a saída.
digitalRead(): Leitura de Sinais Digitais no Arduino
A função digitalRead() permite que o
microcontrolador leia o estado lógico presente em um pino digital.
Ela faz a interface entre o circuito eletrônico físico e o programa
desenvolvido em C/C++.
digitalRead() permite que o programa interprete essa
condição como HIGH ou LOW.
1. Sintaxe da função digitalRead()
A sintaxe básica é:
int valor = digitalRead(pino);
Por exemplo:
int estado = digitalRead(2);
- pino: número do pino que será lido.
- HIGH: nível lógico alto.
- LOW: nível lógico baixo.
2. Como o Arduino interpreta a tensão?
Uma entrada digital não trabalha simplesmente com qualquer tensão. O microcontrolador possui especificações elétricas que determinam quais níveis de tensão podem ser reconhecidos como LOW ou HIGH.
- VIL: tensão máxima especificada para uma entrada ser reconhecida como LOW. ```
- VIH: tensão mínima especificada para uma entrada ser reconhecida como HIGH. ```
3. HIGH e LOW
| Estado | Valor lógico | Interpretação |
|---|---|---|
| LOW | 0 | Nível lógico baixo |
| HIGH | 1 | Nível lógico alto |
4. Pinos analógicos como entradas digitais
No Arduino Uno R3, os pinos A0 até A5 também podem ser utilizados como entradas ou saídas digitais.
| Pino | Número digital |
|---|---|
| A0 | 14 |
| A1 | 15 |
| A2 | 16 |
| A3 | 17 |
| A4 | 18 |
| A5 | 19 |
5. Entradas flutuantes
Uma entrada digital que não possui uma referência definida pode apresentar comportamento instável. Essa condição é conhecida como entrada flutuante.
INPUT_PULLUP.
6. Exemplo com INPUT_PULLUP
const int BOTAO = 2;
const int LED = 13;
void setup() {
pinMode(BOTAO, INPUT_PULLUP); pinMode(LED, OUTPUT);
}
void loop() {
int estado = digitalRead(BOTAO);
if (estado == LOW) {
```
digitalWrite(LED, HIGH);
```
} else {
```
digitalWrite(LED, LOW);
```
}
}
INPUT_PULLUP, a lógica do botão fica
invertida: normalmente o pino está em HIGH e, quando o botão é
pressionado e conectado ao GND, o pino passa para LOW.
7. Simulador Ladder — Circuito de Selo
O circuito abaixo demonstra um dos circuitos mais importantes utilizados em comandos elétricos e automação industrial: o circuito de partida com selo.
Simulador de Circuito Ladder
(NA)
(NF)
8. Como funciona o circuito de selo?
O botão LIGA é um contato normalmente aberto (NA). Quando acionado, ele permite que o circuito seja energizado.
O botão DESLIGA é representado como contato normalmente fechado (NF). Quando pressionado, ele interrompe o circuito.
Quando a bobina Q0.0 é energizada, seu contato auxiliar de selo também fecha. Esse contato cria um caminho paralelo ao botão LIGA.
1. Pressione LIGA.
2. Q0.0 energiza.
3. O contato auxiliar Q0.0 fecha.
4. Solte LIGA.
5. O contato de selo mantém Q0.0 energizado.
6. Pressione DESLIGA para interromper o circuito. ```
9. Lógica booleana do circuito
A lógica pode ser representada pela seguinte expressão:
Q0.0 = (I0.0 OR Q0.0) AND I0.1
- I0.0: botão LIGA;
- I0.1: botão DESLIGA;
- Q0.0: bobina/saída;
- Q0.0: também funciona como contato de selo.
10. Estados do circuito
| LIGA | DESLIGA | SELO | Q0.0 | Resultado |
|---|---|---|---|---|
| 0 | 1 | 0 | 0 | Desligado |
| 1 | 1 | 1 | 1 | Ligado |
| 0 | 1 | 1 | 1 | Ligado pelo selo |
| 0 | 0 | 0 | 0 | Desligado |
11. O significado das linhas verdes
No simulador, as linhas verdes representam os trechos do circuito que estão energizados.
Quando Q0.0 está desligado, o caminho de saída permanece apagado. Quando LIGA é acionado, o circuito encontra um caminho até a bobina. Depois que Q0.0 energiza, o ramo de selo mantém o circuito fechado. ```
Ao pressionar DESLIGA, o contato normalmente fechado abre e o caminho de energia é interrompido. Consequentemente, Q0.0 desliga e o contato de selo também abre.
12. Relação entre Ladder e programação
O mesmo princípio pode ser implementado em um microcontrolador, como um Arduino, utilizando entradas digitais e saídas digitais.
const int LIGA = 2;
const int DESLIGA = 3;
const int MOTOR = 13;
bool selo = false;
void setup() {
pinMode(LIGA, INPUT_PULLUP); pinMode(DESLIGA, INPUT_PULLUP); pinMode(MOTOR, OUTPUT);
}
void loop() {
bool ligaPressionado =
(digitalRead(LIGA) == LOW);
bool desligaPressionado =
(digitalRead(DESLIGA) == LOW);
if (desligaPressionado) {
```
selo = false;
```
}
else if (ligaPressionado) {
```
selo = true;
```
}
digitalWrite(MOTOR, selo ? HIGH : LOW);
}
Resumo
A função digitalRead() permite que o programa leia
estados digitais presentes nas entradas do microcontrolador.
Em sistemas de automação, esse princípio pode ser utilizado para
ler botões, sensores, fins de curso e outros dispositivos.
O circuito Ladder, por sua vez, representa graficamente a lógica de comando. No circuito de selo estudado aqui, a saída Q0.0 permanece energizada mesmo depois que o operador solta o botão LIGA, até que o botão DESLIGA interrompa o circuito.
Comentários
Postar um comentário