segunda-feira, 8 de fevereiro de 2021

EX20 - Programa: Controle de Led's e Buzzer por chaves com Arduino

Figura 01 - Controle de Led's por chaves 
Iremos programar o controle de Led's por chaves. A aplicação terá três chaves, S0 irá ligar o Led 0, S1irá piscar Led 1 e Led 2 alternadamente, e a terceira irá controlar o buzzer por alguns segundos.

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.

Para esta aplicação utilizei a "Multi-Funcion Shield"  sem o uso de uma biblioteca Arduino. Se você está elaborando projetos simples que exigem interruptores, leds e uma campainha, talvez não precise de tudo isso, então este guia não tem como objetivo substituir o uso da biblioteca, mas fornecer ao usuário uma maneira de acessar facilmente os recursos da placa  "Multi-Funcion Shield".  
Figura 02 - "Multi-Funcion Shield" 
Primeiro, vamos examinar os componentes instalados:

  • 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).
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

//Programa : Minuteria e pisca Leds com Arduino
// Autor : Sinésio Gomes
// Data : 18/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
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 ...
 
}

Para esta estrutura de programação iremos utilizar o "if". O if é uma das estruturas mais básicas de programação em geral. O "if" significa "se" em inglês, e é exatamente isso que ele faz: ele verifica uma expressão e, apenas se ela for verdadeira, executa um conjunto de comandos. Em linguagem natural, ele executa uma lógica do tipo: "se isso for verdadeiro, então faça aquilo". Quando usamos um "if", ele segue o seguinte formato:
if(condição) { ... }
A lógica é muito simples: sempre que a condição for verdadeira, os comandos entre { e } são executados, caso contrário o programa prossegue sem executá-los. Vamos ver então como fica a função.

Função condicional da primeira chave, que liga 01 led, dentro do "loop()" ...
45
46
47
48

// Função da primeira chave, se acionada
if (estado_S0 == 0) { digitalWrite (Led_Vd, 1); digitalWrite (Led_Vm, 0);
                     }

Função condicional da segunda chave, que pisca dois Led's três vezes, dentro do "loop()" ...
49
50
51
52
53
54
55

65

// Função da segunda chave, se acionada
if (estado_S1 == 0) {  digitalWrite (Led_Vd, 0);
digitalWrite (Led_Vm, 1);
delay(500);
digitalWrite (Led_Vd, 1);
digitalWrite (Led_Vm, 0);
delay(500);
// A estrutura de programação acima irá se repetir três vezes.
                     }


Agora iremos utilizar o "if-else". O if-else, também conhecido como if-then-else, pode ser visto como uma extensão do comando if. Else em inglês significa "caso contrário", e ele faz exatamente o que o nome diz: "se isso for verdadeiro, então faça aquilo, caso contrário, faça outra coisa". Ele segue o seguinte formato:
if(condição) { ...  } else { ... }
Para a função condicional da terceira chave, que liga o Buzzer por 5 segundos, e apagar os Led's dentro do "loop()" ...
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);
                    }

else {digitalWrite (Buzzer,0);
delay(5000);
digitalWrite (Led_Vd, 1);
digitalWrite (Led_Vm, 1);
}
}

Arquivo do código fonte - Controle de Led's por chaves está disponível em:  23_05_02_Controle_de_Led's_SRG. (PDF)

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.

© Direitos de autor. 2023: Gomes; Sinésio Raimundo. Última atualização: 16/05/2023 

domingo, 7 de fevereiro de 2021

EX19 - Programa: Sequencial com 4 leds e Arduino


 Iremos programar o controle de quatro LED's sequenciais. A aplicação irá ligar os LED's  na sequência: 0000, 0001, 0011, 0111, 1110, 1100, 1000, retornando ao inicio. Para esta aplicação utilizei a "Shield Módulo Relé 5V de 4 Canais"  sem o uso de uma biblioteca Arduino.

Arquivo do código fonte - Sequencial de quatro LED's está disponível em:  23_05_05_Sequencial_com_4 _Leds_SRG. (PDF)
O arquivo do diagrama elétrico - Sequencial de quatro LED's estará disponível em: 23_05_05_Sequencial_com_4 _Leds_SRG.  (PDF).

Exercício proposto pelo Professor Murilo Henrique Miranda.

© Direitos de autor. 2023: Gomes; Sinésio Raimundo. Última atualização: 27/05/2023 

sábado, 6 de fevereiro de 2021

EX18 - Programa: Partida e reversão de motor de indução com LCD por Arduino


A Partida direta com reversão, de motor de indução com Arduino destina-se a máquinas que partem em vazio ou com carga e permitindo a inversão do sentido de rotação em partidas normais (< 10 s). A codificação prevê o desligar o circuito através de acionamento de uma tecla do LCD Keypad nos comandos Desligar ou Emergência, há mais dois acionamento um para ligar no sentido horário e outro anti-horário. Há ainda a sinalização sonora para falha, painel energizado e indicação de sentido horário e anti-horário através de LED's.

O arquivo do código fonte Partida e reversão de motor de indução com LCD está disponível em: 21_02_13_Partida_reversão_motor _LCD_SRG (PDF).

O arquivo do diagrama elétrico Partida e reversão de motor de indução está disponível em: 21_02_13_Circuito_Partida_reversão_motor _LCD_SRG (PDF).

© Direitos de autor. 2020: Gomes; Sinésio Raimundo. Última atualização: 02/03/2021 

quarta-feira, 3 de fevereiro de 2021

Aula 08 - Simulando Arduino Uno no Proteus

Para começar é preciso ter instalado em sua máquina o Proteus e a IDE do Arduino. Temos que lembrar que o Proteus não é uma ferramenta gratuita, porem o site do Labcenter disponibiliza uma versão demo para download. Já o IDE da Arduino, é gratuito e está disponível na pagina do Arduino.

Para fazer a simulação do Arduino no Proteus é importante saber que existem dois métodos. O primeiro é  procurar o nome do micro-controlador do Arduino dentro da biblioteca de componentes do próprio software. A segunda forma é simplesmente fazer o download da biblioteca na web. Vale lembrar que existem várias disponíveis na internet.

Vamos entender então a diferença entre as duas formas.  Não existe dificuldade em executar nenhuma delas, pois o que traz a desigualdade nas duas é que na primeira teremos apenas o micro-controlador no circuito. Ou seja, será necessário adicionar componentes como oscilador de cristal e capacitores para o funcionamento do projeto. Já na segunda forma, a biblioteca traz a placa Arduino pronta, dispensando o uso de componentes extras.

Para carregá-lo devemos ter o Proteus já instalado. Efetuar o download da biblioteca ( library ) que está disponível abaixo e colocar os arquivos na pasta com as bibliotecas do Proteus.

Após efetuar o download, deve copiar os arquivos ARDUINO.IDX e ARDUINO.LIB para a pasta:

  • Windows em Português - C:\Arquivos de Programas\Labcenter Electronics\Proteus 7 Professional\LIBRARY
  • Windows em Inglês - C:\Program Files\Labcenter Electronics\Proteus 7 Professional\LIBRARY
  • Windows 7 ou 8 com Proteus 8) - C:\ProgramData\Labcenter Electronics\Proteus 8 Professional\Data\LIBRARY

Depois que já estivermos com essas ferramentas instaladas em nosso computador, basta definirmos qual vai ser projeto que vamos simular e qual método usaremos. 

Neste exemplo há a interação do Arduino com sensor LDR. Para ficar mais fácil a compreensão do nosso manual, separamos a explicação em 6 passo:

Primeiro passo: Este é um dos mais importantes, pois será preciso baixar a biblioteca Simulino, em seguida extrair os arquivos da pasta que está no formato “.zip”, depois copiar os arquivos ARDUINO.IDX e ARDUINO.LIB, e por fim colar dentro da pasta LIBRARY do Proteus. A pasta a qual referimos, fica no seguinte diretório: C:\Progam Files\Labcenter Eletronics\Proteus 8 Professional (Ou outra Versão)\ LIBRARY

Segundo passo: Neste passo, será onde vamos listar os componentes necessários para o projeto. Em nosso exemplo, usaremos os mesmo seguintes componentes: 

  • 1 Display LCD 20×4; 
  • 1 Arduino Uno; 
  • 1 Potenciômetro 10KR; 
  • 1 Resistor 10KR
  • 1 LDR.

Terceiro passo: Aqui, vamos precisar de buscar os materiais que listamos na biblioteca de componentes do Proteus. Para isso, acesse a guia “Component Mode” e depois procure pelo  botão “Pick from Libraries(“P”)”dando um click sobre ele. Feito isso, basta procurar os componentes dentro da biblioteca, e na sequência executar a montagem do circuito.

Quarto passo: Agora vamos trabalhar com a programação. O nosso simulador precisa dos códigos no formato hexadecimal. Dessa forma, vamos precisar fazer um configuração na IDE. Isso é simples, pois a IDE do Arduino traz uma opção em suas preferencias que simplifica essa configuração. Então vamos lá, para fazer isso, é só  clicar no botão “File”, procurar por “Preferences”, selecionar a opção Compilation” dentro da janela e por fim basta apertar o botão “Ok”.

Quinto passo: Após deixar as configurações prontas, será preciso apenas digitar os códigos do Arduino e apertar o botão “Verify”. Isso fará com que a IDE verifique se os códigos estão corretos e depois, mostre o diretório onde foi gerado o código hexadecimal. A imagem abaixo ilustra onde fica o botão e o diretório:

Sexto Passo: O que precisaremos agora é mostrar ao Proteus onde o código hexadecimal que  foi gerado. Para fazer isso, só precisaremos  selecionar o diretório dentro da IDE e em seguida copiá-lo. Ao fazer esses passos, volte no Proteus, dê um duplo click com botão esquerdo do mouse em cima do Arduino, e cole o diretório na guia “Program File”. Agora sim, é só apertar o botão “Play” e assistir o projeto funcionando. 

© Direitos de autor. 2021: Gomes; Sinésio Raimundo. Última atualização: 03/02/2021 


EX17 - Programa: Partida e reversão de motor de indução com Arduino


A Partida direta com reversão, de motor de indução com Arduino destina-se a máquinas que partem em vazio ou com carga e permitindo a inversão do sentido de rotação em partidas normais (< 10 s). A codificação prevê o desligar o circuito através de acionamento de uma botoeira vermelha ou botoeira de emergência, há mais dois acionamento um para ligar no sentido horário e outro anti-horário. Há ainda a sinalização sonora para falha, painel energizado e indicação de sentido horário e anti-horário.

O arquivo do código fonte Partida e reversão de motor de indução está disponível em: 21_02_12_Partida_reversão_motor _SRG (PDF).

O arquivo do diagrama elétrico Partida e reversão de motor de indução está disponível em: 21_02_12_Circuito_Partida_reversão_motor _SRG (PDF).

© Direitos de autor. 2020: Gomes; Sinésio Raimundo. Última atualização: 02/03/2021 

terça-feira, 2 de fevereiro de 2021

Aula 07 - Módulo relé para Arduino

Figura 01 - Modulo relé de 4 canais
    Os relés são componentes eletromecânicos capazes de controlar circuitos externos de grandes correntes a partir de pequenas correntes ou tensões, ou seja, acionando um relé com uma pilha podemos controlar um motor que esteja ligado em 110 ou 220 volts, por exemplo.
    O Módulo Relé é ideal para acionar uma lâmpada ou outra carga que exija até no máximo 10A contínuos utilizando o Arduino ou qualquer outro microcontrolador.
    Na figura 01 temos o módulo relé 5V com 4 canais que permite integração com uma ampla gama de microcontroladores como Arduino, AVR, PIC, ARM. A partir das saídas digitais pode-se, através do relé, controlar cargas maiores e dispositivos como motores AC/DC, eletroímãs, solenoides, lâmpadas incandescentes e eletrodomésticos por exemplo.
Figura 02 - Controle de lâmpada
com arduino e modulo relé
    Ele funciona exatamente como uma chave (interruptor). No borne cinza há 3 conexões: NA (Normalmente Aberto), C (Comum) e NF (Normalmente Fechado). Ou seja, quando o Módulo Relé estiver "desligado", C estára conectado à NF.
Quando estiver ligado, C estará conectado à NA.
    Veja no esquemático da figura 02, como fazer a ligação do Módulo Relé no Arduino e em uma lâmpada.
    Compile o código abaixo no Arduino e em seguida abra o serial monitor da própria IDE do Arduino.
Ao enviar a letra "A" (maiúscula) você irá acionar a porta 9 do Arduino e conseguentemente o Módulo Relé, comutando os conectores "C" e "NA" de modo à acender a lâmpada.
    Ao enviar a letra "D" (maiúscula) você desativa a porta 9 do Arduino, desativando o módulo rele de forma a abrir o contato entre "C" e "NA", desligando a lâmpada.
    Veja que no código o módulo relé é desligado com o comando HIGH e ligado com o comando LOW. O acionamento é feito desta forma devido ao ao módulo relé trabalhar com logica inversa.




const int RelePin = 9; // pino ao qual o Módulo Relé está conectado
int incomingByte;      // variavel para ler dados recebidos pela serial

void setup() {
  Serial.begin(9600); // inicializa a comunicação serial em 9600bps
  pinMode(RelePin, OUTPUT); // seta o pino como saída
  digitalWrite(RelePin, LOW); // seta o pino com nivel logico baixo
}

void loop() {
  if (Serial.available() > 0) {
    // verifica se tem algum dado na serial
    incomingByte = Serial.read();  //lê o primeiro dado do buffer da serial

    if (incomingByte == 'A') {     //se for A
      digitalWrite(RelePin, HIGH); //aciona o pino
    } 

    if (incomingByte == 'D') {     //se for D
      digitalWrite(RelePin, LOW);  //desativa o pino
    }
  }
}
O manual com diagrama elétrico da placa do Módulo Relé está disponível em: Módulo Relé 4 canais.

© Direitos de autor. 2020: Gomes; Sinésio Raimundo. Última atualização: 02/04/2021 

segunda-feira, 1 de fevereiro de 2021

EX16 - Programa: Separa peças por tamanho com Arduino

 O LCD Keypad Shield é um módulo integrado que emprega toda a praticidade dos shields, de um display 16×2 e de um conjunto de pequenos botões push buttons que são utilizados para navegar em menus na diretamente na tela, com funções selecionar e resetar.

Devido ao LCD Keypad Shield com botões ser conectado diretamente sobre a face superior do Arduino a possibilidade de falhas nas ligações é nula, além de evitar interrupções de imagens devido a pequenas vibrações no microcontrolador ou na base onde ele encontra-se localizado.


A biblioteca do LCD Keypad Shield, tem a função de exibir um menu de navegação que através do botão SELECT proporciona a escolha de uma das opções apresentadas junto ao display.

O Display LCD Shield com Teclado é uma opção compacta para incluir uma interface homem-máquina nos seus projetos com Arduino. Basta encaixar o shield em uma placa Arduino para acrescentar ao seu projeto um display alfanumérico e cinco teclas. Conectores de expansão no shield dão acesso aos demais pinos do Arduino para ligação de sensores e atuadores.

Um único produto reproduz a funcionalidade de três: Display, Botões e pinos de expansão ocupando mínimo espaço físico.

  • Display - O shield contém um display alfanumérico de 2 linhas de 16 colunas, com backlight azul. Ao ser encaixado, o shield necessariamente ocupa alguns pinos do Arduino que serão dedicados ao display. 
  • Botões - O shield possui cinco botões para interação com o operador. O shield possui as legendas Up, Down, Left, Right e Select, entretanto, você tem a liberdade para definir a ação de cada botão de acordo com a sua aplicação.
  • Conectores de Expansão - Quatro conectores permitem ligar outros dispositivos aos pinos não utilizados do Arduino.

Abaixo realizei o programa que separa peças por tamanho para demonstrar um pouco da funcionalidade do Shield LCD 16×2, onde criaremos um menu demonstrativo, controlando assim, o backlight do display. Como estratégia para economizar portas digitais, a leitura dos botões é feita através de parâmetros analógicos. Os cinco botões estão ligados à entrada analógica A0 através de resistores diferentes. Portanto o botão pressionado pode ser determinado através da tensão medida pelo ADC através de analogRead(A0), onde cada faixa de valor está associada a um botão . Para controle do display vamos usei a biblioteca padrão de LCD do Arduino (LiquidCrystal). A leitura das teclas é feito testando o valor retornado por analogRead(A0) com os vários limites que são armazenados em uma tabela.

Para uso do  Display LCD Shield com Teclado, elaborei o projeto que separa peças por tamanho, controlado através do teclato e display, que liga atuadores através do conectores de expansão.

O arquivo do código fonte Separa peças por tamanho está disponível em: 21_02_09_Separa_peças_por_tamanho_SRG (PDF).

O arquivo do diagrama elétrico - Separa peças por tamanho está disponível em: 21_02_09_Separa_peças_por_tamanho_Proteus_SRG (PDF).

O manual com diagrama elétrico da placa do LCD KeyPad Shield está disponìvel em: LCD Keypad Shield .

© Direitos de autor. 2020: Gomes; Sinésio Raimundo. Última atualização: 21/02/2021