Para projetos de automação residencial o Shield Módulo Relé 5V de 4 Canais é um componente importante, pois a placa em conjunto com o Arduino conectado à internet, possibilita que lâmpadas sejam acionadas através de uma página web, smartphone ou tablet, por exemplo. Por ser um shield, mesmo acoplado na parte de cima do Arduino, você ainda poderá utilizar as portas digitais e analógicas da placa. Especificações e características:
- Tensão de operação: 5VDC
- Corrente de operação: 15 ~ 20mA (por canal)
- Capacidade do relé: 24VDC/3A e 120VAC/3A
- Corrente máxima por canal: 3A
- 4 canais independentes
- Tempo de resposta: 5 ~ 10ms
A primeira coisa que fazemos no início do programa é colocar uma pequena observação sobre o nome do programa, sua função e quem o criou:
1 2 3 4 | //Programa : Relé de Impulso SRG
//Autor : Sinésio Gomes
//Data :23/05/2023 |
Após os comentários, vem é realizado a declaração e estado inicial das variáveis, com isso cada pino será associados á um componente, não sendo mais necessário saber qual pino está o componente.
5 6 7 8 9 10 11 12 | // Definição das variáveis int Rele_3 = 6; // Declara a variável "Rele" do tipo inteiro no endereço "6" int Rele_4 = 7; // Declara a variável "Rele" do tipo inteiro no endereço "7"
int botao = A1; //Declara a variável "botão" do tipo inteiro no endereço "A1"
int funcaoa = 0; // Declara a variável "função a" com valor inicial 0
int funcaob = 0; // Declara a variável "função b" com valor inicial 0
int estado = 0; // Declara a variável "estado" com valor inicial 0 |
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.
13 14 15 16 17 18 19 | // Definição dos pinos de entradas void setup()
{ pinMode (Rele_3, OUTPUT); //Define o Rele como saida
pinMode (Rele_4, OUTPUT); //Define o Rele como saida
pinMode (botao, INPUT); //Define o botão como entrada
} |
Por último, temos o loop(), que contém as instruções para acender e apagar as lâmpadas através dos reles conforme é acionado a chave.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | // Programação principal void loop()
{funcaoa = digitalRead (botao); // ler o valor enviado pelo botão
if ((funcaoa == HIGH) && (funcaob == LOW))
{(estado = estado +1);
delay (500); // tempo apertando o botão
} funcaob = funcaoa;
if (estado > 3){ estado = 0; } // zera o contador
switch (estado) {
case 0:
digitalWrite (Rele_3, LOW); // desliga o rele 3
digitalWrite (Rele_4, LOW); // desliga o Rele 4
break;
case 1:
digitalWrite (Rele_3, LOW); // desliga o rele 3
digitalWrite (Rele_4, HIGH); // desliga o Rele 4
break;
case 2:
digitalWrite (Rele_3, HIGH); // desliga o rele 3
digitalWrite (Rele_4, LOW); // desliga o Rele 4
break;
case 3:
digitalWrite (Rele_3, HIGH); // desliga o rele 3
digitalWrite (Rele_4, HIGH); // desliga o Rele 4
break;
}
} |
Para esta aplicação foi utilizados a estrutura de decisão "Switch / Case" no Arduino
A estrutura de decisão condicional Switch / Case é utilizada para que seja possível escolher uma opção dentre várias existentes, eliminando a necessidade de se usar diversos if .. else encadeados. Isso simplifica a codificação do algoritmo, e facilita sua depuração e atualização. Assim, esse comando testa uma condição (“caso”), e dependendo do resultado, executará os códigos associados a cada caso.
Switch / Case – Sintaxe
A sintaxe do Switch / Case no Arduino é, como esperamos, a da linguagem C, como podemos ver a seguir:
switch <variável) {
case <valor1>:
comandos a executar
break;
case <valor2>:
comandos a executar
break;
case <valor3>:
comandos a executar
break;
case <valorN>:
comandos a executar
break;
default:
comandos-padrão
break;
}
O conteúdo da variável passada para a instrução switch é testado, sendo comparado com os valores de cada caso, e quando uma correspondência for encontrada (variável igual ao caso), os comandos referentes ao caso são executados. Se o primeiro caso não corresponder à variável, então o próximo é avaliado, e assim sucessivamente até que uma correspondência de valores seja encontrada. Caso nenhum caso corresponda, então os comandos do bloco default serão executados, por padrão.
Note o uso da instrução break; em cada caso. Ela é utilizada para encerrar as comparações caso um valor correspondente seja encontrado. Se essa instrução não for utilizada, mesmo que uma correspondência seja encontrada, o comando switch continuará a fazer comparações da variável com os casos seguintes, o que é desnecessário.
Arquivo do código fonte - Rele de impulso está disponível em: 23_05_04_Rele_de_Impulso_SRG. (PDF)
O arquivo do diagrama elétrico - Rele de impulso estará disponível em: 23_05_02_Rele_impulso_SRG (PDF).
Exercício proposto pelo Professor Murilo Henrique Miranda.
© Direitos de autor. 2023: Gomes; Sinésio Raimundo. Última atualização: 24/05/2023
Nenhum comentário:
Postar um comentário