![]() |
Figura 01 - Controle de Led's por chaves |
Primeiro, atribuímos os novos pinos de chaves na variáveis e configuramos como entradas e Led's como saídas, depois associamos cada chave á uma saída para definir o funcionamento.
![]() |
Figura 02 - "Multi-Funcion Shield" |
- Um "Reset button" instalado para reinicializar o Arduino conectado.
- Três "Push buttons" botões de pressão definidos pelo usuário conectado nos pinos de entradas analógicas A1, A2, A3.
- Um "Potentiometer" para que você insira uma tensão variável no Arduino, conectado ao pino de entrada analógica A0.
- Um "Buzzer" que não é acionado diretamente de um pino do Arduino, mas controlado por um transistor conectado ao pino digital D3.
- Um "LED display" de 4 dígitos e 7 segmentos que é acionado por meio de registradores de deslocamento 74HC595 para selecionar o dígito e os segmentos desse dígito a serem energizados.
- Quatro LEDs montados na placa (pinos digitais D10, D11, D12, D13).
1 2 3 | //Programa : Minuteria e pisca Leds com Arduino // Autor : Sinésio Gomes// Data : 18/05/2023 |
5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // Definição dos pinos de entradas #define S0 A1 // Nome do pino A1 #define S1 A2 // Nome do pino A2
#define S2 A3 // Nome do pino A3
// Definição dos pinos de saídas #define Led_Vm 13 // Nome do pino 13
#define Led_Vd 12 // Nome do pino 12
#define Buzzer 3 // Nome do pino 3
// Declaração do tipo e estado inicial das variáveis bool estado_S0 = 0; // Reset do pino A1
bool estado_S1 = 0; // Reset do pino A2
bool estado_S2 = 0; // Reset do pino A3 |
A terceira parte da programação é a estrutura do setup(). É nela que definimos quais componentes (pino) do Arduino serão utilizados como entradas e saídas e o estado inicial dos pinos de saída.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | void setup() { //Definição das chaves como entradas e dos led,s como saida
pinMode(S0, INPUT); // Pinos como entradas
pinMode(S1, INPUT);
pinMode(S2, INPUT);
pinMode(Led_Vm, OUTPUT); // Pinos como saídas
pinMode(Led_Vd, OUTPUT);
pinMode(Buzzer, OUTPUT);
//Apaga os led,s da saída
digitalWrite (Led_Vd, 1); // Reset dos pinos
digitalWrite (Led_Vm, 1);
digitalWrite (Buzzer, 1);
} |
Por último, temos o loop(), que contém as instruções para acender e apagar os led's conforme são acionados as chaves, cada chave terá uma função diferente.
37 38 39 40 41 42 43 44 75 | void loop() // Laço principal{ //Leitura das chaves estado_S0 = digitalRead (S0); // Lê entrada S0 estado_S1 = digitalRead (S1); // Lê entrada S1
estado_S2 = digitalRead (S2); // Lê entrada S2
// Agora será escrito a função de cada chave ... } |
if(condição) { ... }
45 46 47 48 | // Função da primeira chave, se acionada if (estado_S0 == 0) { digitalWrite (Led_Vd, 1);
digitalWrite (Led_Vm, 0); }
|
49 50 51 52 53 54 55 65 | // Função da segunda chave, se acionada if (estado_S1 == 0) { digitalWrite (Led_Vd, 0);
|
if(condição) { ... } else { ... }
65 66 67 68 69 70 71 72 73 74 75 | // Função da terceira chave, se acionada if (estado_S2 == 1) {digitalWrite (Buzzer, 1); }
|
O arquivo do diagrama elétrico - Semáforo de duas vias estará disponível em: 23_05_02_Controle_de_Led's_SRG (PDF).
Exercício proposto pelo Professor Murilo Henrique Miranda.