Microcontroladores
Professores: Momesso / Fábio
Arduino
Arduino é uma plataforma de prototipagem eletrônica de
hardware livre e de placa única, projetada com um
microcontrolador Atmel AVR com suporte de entrada/saída
embutido, uma linguagem de programação padrão C/C++ .
Modelos de Arduino
UNO MEGA NANO
Pinagem Arduino UNO X ATmega 328
Estrutura Interna do Atmega 328
Pinagem Arduino UNO
Como baixar IDE Arduino
[Link]
IDE Arduino sketch
IDE Arduino sketch
Primeiro Programa
1- Abrir o programa arduino.
2- Clicar no menu arquivo e selecionar “novo”.
3- Clicar em “salvar como”, obs: organizar os programas
em pastas.
4- Para cada linha de programação, pode-se usar o
comando // para comentários.
Primeiro Programa
5- Nosso primeiro programa será um pisca LED, vamos
definir o pino 13 como pino de saída. Na plataforma
arduino o pino 13 já possui um LED SMDd instalado, não
havendo necessidade de conectar um resistor e LED na
saída.
Primeiro Programa
6- O LED vai acender num intervalo de 500ms e apagar
também no mesmo intervalo.
Código - Primeiro Programa
Compilando - Primeiro Programa
Botão compilar
OBS:Os erros mais comum são códigos digitados errados
ou falta da chave na abertura ou fechamento de funções
Compilação terminada sem erros
Exemplo de erro no compilar programa
Falta da chave fechada no final da função loop
Erro
Carregar Programa para arduino
Conectar o Arduino na porta USB
Menu
Ferramentas
Escolher modelo
Arduino Uno
Carregar Programa para arduino
Menu Ferramentas: Porta USB
Porta encontrada
COM pelo arduino
Carregar Programa para arduino
Botão carregar
Mensagem
Carregado
Plataforma Tinkercad Arduino
• Link de acesso - [Link]
• Utilizar uma conta de email e criar uma senha de acesso. Após acessar, você encontrará
a seguinte tela;
Plataforma Tinkercad Arduino
• Criando um circuito na Plataforma Tinkercad
Clicar em circuitos
Plataforma Tinkercad Arduino
• Criando um circuito na Plataforma Tinkercad;
Criar novo circuito
Plataforma Tinkercad Arduino
• Localizando os componentes na Plataforma Tinkercad;
Encontrar os componentes básicos e
avançados.
Selecionar o componente , dar um
clique na área de simulação
Plataforma Tinkercad Arduino
• Escolher o Arduino UNO;
Arduino UNO
Plataforma Tinkercad Arduino
• Programação em Texto;
OpçãoTexto
Plataforma Tinkercad Arduino
• Programação em Texto;
Opção Texto
Plataforma Tinkercad Arduino
• Digita o código do programa ou copia da IDE do arduino e cola as linhas de comando;
Programação
Plataforma Tinkercad Arduino
• Simulação;
LED pino 13
Simulação
Tipos de variáveis
Variável inteira ( int )
Int (integer ou inteiros) - são o tipo de dados primário para
armazenamento de números.
No Arduino Uno (e outras placas baseadas em micros ATmega) um
int armazena um valor 16-bit (2 bytes). Isso garante um intervalo
de -32,768 a 32,767 (um valor mínimo de -2^15 e um valor
máximo de (2^15) - 1).
Comando ( if )
Descrição
O comando if verifica uma condição e executa o comando a seguir ou um bloco de
comandos delimitados por chaves, se a condição é verdadeira ('true').
Sintaxe
if (condição)
{
//comando(s)
}
Parâmetros
condição: uma expressão booleana, isto é, que pode resultar apenas em true ou false
(verdadeiro ou falso).
Exemplo
Fazer um programa na IDE do arduino com duas saída;
1 - LED
2 - Motor
O LED deverá piscar num intervalo de 500 ms durante 5 vezes, em seguida, o motor deverá
ligar por 5 segundos e depois desligar.
Programa no arduino iDE
Programa no arduino iDE
Observe que as chaves da função loop finaliza o programa , e as chaves do comando if
abre e fecha a rotina de execução que atende ao contador igual a 5.
Entradas Digitais
Como exemplo, vamos utilizar um push button como entrada digital e um LED como saída
digital. Toda vez que o push button for pressionado, o LED deverá acender e quando não for
pressionado, o LED apaga. Existem duas maneiras de ligar os componentes no arduino;
1 – Utilizando resistor Pull Up interno
do arduino
2 – Utilizando resistor Pull Up externo de
valor 10K
Configuração entrada digital na IDE arduino
1 – Utilizando resistor Pull Up interno do arduino
Código completo IDE arduino
1 – Utilizando resistor Pull Up interno do arduino
Configuração entrada digital na IDE arduino
2 – Utilizando resistor Pull Up externo de valor 10K
Código completo IDE arduino
2 – Utilizando resistor Pull Up externo 10K
Operadores Porta And e Porta OR
Montagem do circuito no Tinkercad
Código completo IDE arduino Operando AND (&&)
Código completo IDE arduino Operando OR (||)
Exercícios
1) Baseado nas expressões lógicas, montar a tabela verdade dos circuitos, a programação
na IDE do arduino e simular no Tinkercad.
a) Y = (CH1 . CH2) + CH3
b) Y = (CH1 + CH2) . CH3
c) Y = (CH1 . CH2 ) + (CH3 . CH4)
d) Y = ((CH1+CH2).CH3) + CH4
Ponte H para motores DC
Circuito integrado LN293
Ponte H para motores DC
Circuito integrado Arduino e LN293 no Tinkercad
Exercício
Criar um programa na IDE do arduino para controle do Motor DC utilizando o LN293.
Funcionamento do circuito;
• O motor gira somente quando um dos push button forem pressionados.
• Cada push button é responsável pelo sentido de giro horário ou anti-horário.
LCD - “Liquid Cristal Display”
LCD 16X2 – Linha e Coluna
Linha (0)
Linha (1)
Coluna (0) Coluna (15)
Tabela de Caracter do LCD
Identificando um caracter na tabela LCD.
Caractere "A" :
Linha horizontal = 0100
Linha vertical = xxx0001
Portanto o caractere "A" deverá ser
identificado por: 01000001
LCD 16X2
Arduino LCD 16X2
LCD – Pisca LED
LCD – Pisca LED
Exemplo LCD - Contador
Programa: Mostra no LCD o valor de uma variável inteira contador
Exemplo LCD - Contador
LCD I2C
LCD I2C
A comunicação I2C é um protocolo amplamente utilizado em muitos dispositivos
eletrônicos devido à sua simplicidade, flexibilidade e facilidade de uso
1- Dado transferido é iniciado com um bit INICIAR (S) sinalizado com SDA sendo arrastado para baixo
enquanto SCL continua alto.
2- SDA coloca o primeiro dado em nível de bit enquanto mantendo SCL baixo (durante o tempo de barra
azul.)
3- O dado é recebido quando SCL aumenta (verde) para o primeiro bit (B1).
4- Este processo repete, SDA em transição enquanto SCL está baixo, e os dados sendo lidos quando SCL
estiver alto (B2, Bn).
5-Um bit PARAR (P) é sinalizado quando SDA for puxado para cima enquanto o SCL está alto.
Módulo I2C
LCD I2C - Tinkercad
Endereço ( 0X20 )
Exemplo LCD I2C - Texto
Exemplo LCD I2C - Contador
Exemplo LCD I2C - Contador
Exercício
Montar o circuito e desenvolver a lógica de programação na IDE do arduino ou Tinkercad. O motor é
ligado e desligado por um único push button, ou seja, um pulso para ligar e outro pulso para desligar,
o status do motor deverá aparecer no LCD conforme imagens e o LED acender quando motor ligado
e apagar quando motor desligado.
Dispositivos de saída de controle
Servo Motores
O servo motor trabalha com servo-mecanismo que usa o feedback de posição
para controlar a velocidade e a posição final do motor. ... Ele usa um codificador
ou sensor de velocidade (encoder) que tem a função de fornecer o feedback de
velocidade e posição.
Servo Motor – Primeiro Programa
Programa : O servo motor vai movimentar a cada 5 segundo iniciando em
0°, 45°, 90°, 135°, 180°, 135°, 90°, 45° e 0°.
Esquema de ligação PlataformaTinkercad:
Servo Motor – Incluir biblioteca Servo.h
Servo Motor
Servo Motor
Servo Motor
Comando FOR
Estrutura:
For( inicialização; comparação; incremento)
{
Programação;
}
Exemplo
Programa : O servo motor vai movimentar de 0° até 180°, com intervalos
de 100(ms) um grau por vez.
Esquema de ligação PlataformaTinkercad:
Exemplo - programação
Exercício – Servo Motor
Programa : O servo motor vai movimentar de 0° até 180°. Os dois push button
têm a finalidade de incrementar e decrementar os valores do ângulo em 5° .
O LED verde acende quando o ângulo é menor ou igual a 90° e o LED vermelho
quando o ângulo é maior que 90° .
Conversor AD Arduino
Diferença entre sinal digital e analógico.
Conversor AD – Entrada Analógica
Um conversor A/D quantifica o valor analógico conforme a quantidade de bits
da sua resolução. A resolução de um conversor A/D é dada pela seguinte
equação:
Vref: tensão de referência do conversor A/D – arduino (5Vcc);
n: número de bits do conversor.
Exemplo:
• Conversor A/D 10 bits = 210 = 1024 Resolução = 5V / 1024 = 4,88 mV
• Conversor A/D 12 bits = 212 = 4096 Resolução = 5V / 4096 = 1,22 mV
Conversor AD Arduino
O conversor A/D do microcontrolador ATmega328 possui 10 bits de resolução
(210), a sua tensão de entrada pode variar de 0 V até o valor de VCC (5V).
Dessa forma quando está trabalhando com a referência em VCC o menor valor
que pode ser lido será:
Resolução = 5 V/1024 = 0,00488 V = 4,88 mV
.
Leitura de entrada analógica com potenciômetro
Leitura de entrada analógica com potenciômetro
Leitura de entrada analógica com potenciômetro
Exercício – Potenciômetro com Bargraph de LED
Montar o circuito e desenvolver a lógica de programação na IDE do arduino ou Tinkercad.
Fazer a leitura analógica do potenciômetro de ( 0 a 1023 ) e mostrar no display. Os 5 leds vão fazer a
função de um bargraph, o primeiro acende se o valor do potenciômetro for maior que 200, o
segundo se maior que 400, o terceiro se maior que 600, o quarto se for que 800 e o último se for
maior que 1000.
Conversor AD – Função “map”
Leitura do canal analógica A0 no valor de ( 0 a 1023 ) e converter o valor para ( 0 a 100 ), mostrando
no display o valor em (%).
Programação Arduino Conversor AD – Função “map”
Exercício – Servo ,Potenciômetro e Bargraph de LED
Montar o circuito e desenvolver a lógica de programação na IDE do arduino ou Tinkercad.
Controlar a posição de um servo motor através de um potenciômetro de ( 0 a 1023 ), converter para
( 0 a 180 ) utilizando a função ( map ) e mostrar no display o valor em ângulo do Servo. Os 5 leds vão
fazer a função de um bargraph, o primeiro acende se o valor do ângulo for maior que 40, o segundo
se maior que 80, o terceiro se maior que 120 e o quarto se for que 160.
Exercícios Finais
Como proposta final em Sistemas Eletrônicos Digitais do curso Técnico em Eletroeletrônica, estão
disponíveis 3 exercícios com arduino. O aluno deve escolher um dos exercícios para montar o
circuito na plataforma Tinkercad , fazer a programação do arduino e simular.
O aluno que estiver com dificuldades com recursos como internet e acesso a plataforma Tinkercad,
poderá fazer o desenho do circuito e a programação à mão sem perdas de pontos na nota de
avaliação.
No final da atividade, o aluno deverá entregar em um documento Word o print do circuito do
Tinckercad e o programa desenvolvido no arduino.
O exercício deverá ser entregue até a data do dia 10/06/2020 no email
[Link]@[Link]
Exercício 1
Material e equipamentos: 2 Push Button, 5 LEDS, 5 resistor 150 ohm e uma plataforma Arduino.
Funcionamento:
• Se pressionar o Push Button (1), acendem os LEDs na sequência do primeiro até o quinto, num
intervalo de 500 ms. quando todos estiverem acesos, apagam na sequência do primeiro até o
quinto também no intervalo de 500 ms.
• Se pressionar o Push Button (2), os LEDs vão piscar na sequência do primeiro até o quinto, num
intervalo de 500 ms.
Exercício 2
Material e equipamentos: 1 Interruptor deslizante , 4 LEDS, 4 resistor 150 ohm, 1 potenciômetro
10K e uma plataforma Arduino UNO.
Funcionamento:
O arduino faz a leitura analógica do potenciômetro de ( 0 a 1023 ) e mostrar no display o valor em
decimal. Os 4 leds vão fazer a função de um bargraph, com os valores de ( 250, 500, 750 e 1000).
O bargraph vai funcionar em dois sentidos dependendo da posição do interruptor deslizante;
• Se o interruptor estiver desligado, os LEDs acenderam do primeiro para o quarto com os
respectivos valores de potenciômetro ( 250, 500, 750 e 1000).
• Se o interruptor estiver ligado, os LEDs acenderam do quarto para o primeiro com os respectivos
valores de potenciômetro ( 250, 500, 750 e 1000).
Exercício 2 - Circuito
Exercício 3
Material e equipamentos: sensor Temperatura ( para cada 1°C = 10 mV saída , exemplo: 30°C = 300mv)
, servo motor, motor DC, display de LCD e Arduino UNO.
Funcionamento:
O servo motor é acoplado a uma válvula de controle de vazão de água que controla a temperatura de
um processo, o ângulo de abertura da válvula depende da temperatura do processo, em caso de
emergência, o motor do ventilador é ligado. As condições do funcionamento são as seguintes;
• Se a temperatura for menor que 30°C - válvula de água fechada.
• Se a temperatura for maior ou igual a 30°C e menor igual a 50 °C - válvula de água 25% aberta
• Se a temperatura for maior que 50°C e menor igual a 70 °C - válvula de água 50% aberta.
• Se a temperatura for maior que 70°C e menor igual a 90 °C - válvula de água 75% aberta
• Se a temperatura for maior que 100°C - válvula de água 100% aberta , motor do ventilador ligado e
aparece um mensagem no LCD “TRIP”.
Exercício 3 Circuito
Exercício 3 – Simulação
Controle PWM ( Pulse Width Modulation ) = Modulação de Largura de Pulso
PWM
Aplicação :
• Controle de velocidade de Motores DC
• Controle de luminosidade LED
PWM
Motor DC
PWM - Arduino
Saída de PWM ( 8 bits - 28 ) = 0 a 255
Pinos PWM (
~) = 3, 5, 6, 9, 10 e 11 .
PWM – Arduino ( Exemplo 1 )
PWM – Arduino ( Exemplo 2 )
Aplicativo arduinoDroid
Vídeo como gravar o programa no arduino pelo celular
[Link]
Comunicação Serial Protocolo RS232
Comunicação Serial Protocolo RS232
Arduino comunicação RS232
Arduino comunicação RS232
Módulo Bluetooth hc-05
Módulo Bluetooth hc-05
Módulo Bluetooth hc-05
Aplicativo Bluetooth hc-05
Aplicativo Bluetooth hc-05
Escolher Nova Interface
Aplicativo Bluetooth hc-05
Botão
Objeto Caracter
Pressionado e solto
Aplicativo Bluetooth hc-05
Conectar com módulo HC05
Aplicativo Bluetooth hc-05
Bluetooth Classic
Avançar
Aplicativo Bluetooth hc-05
Localizar Bluetooth disponível
Aplicativo Bluetooth hc-05
módulo HC 05 encontrado Parear o módulo HC 05 com o celular
Aplicativo Bluetooth hc-05
Selecionar módulo HC 05
Conectar Finalizar
Aplicativo Bluetooth hc-05
Rodar Tela
Aplicativo Bluetooth hc-05
Aplicativo Bluetooth hc-05
Código Enviando e Recebendo Dados
Botão = envia caracter ‘B’
Botão = envia caracter ‘C’
Aplicativo Bluetooth hc-05
Código Indicador de Luz no aplicativo
String = *LR255G200B0*
Vermelho: *LR255G200B0*
Vermelho: *LG255G200B0*
“L” = caracter de envio
Vermelho: *LB255G200B0*
“R” = caracter da cor
“R255” = Intensidade de iluminação
Aplicativo Bluetooth hc-05
Aplicativo Bluetooth hc-05
Código Aplicativo Servo Motor / Gauge
Botão = envia caracter ‘A’ para Servo 0°
Botão = envia caracter ‘B’ para Servo 45°
Botão = envia caracter ‘C’ para Servo 90°
Botão = envia caracter ‘D’ para Servo 135°
Botão = envia caracter ‘E’ para Servo 180°
Aplicativo Bluetooth hc-05
Código Aplicativo Servo Motor / Gauge
String enviado pelo arduíno para Leitura do Gauge
String = *G0* ( Gauge = 0)
String = *G25* ( Gauge = 25)
String = *G50* ( Gauge = 50)
String = *G75* ( Gauge = 75)
String = *G100* ( Gauge = 100)
Aplicativo Bluetooth hc-05
Aplicativo Bluetooth hc-05
Código Aplicativo Servo Motor / Gauge / Incrementa e Decrementa ângulo
Strings enviado pelo arduíno para Leitura do Gauge
String = *G(angulo)*
No código arduíno a variável inteira que será incrementada ou decrementada, deverá ser
transformada em string e concatenada com “*G” e “*”
Aplicativo Bluetooth hc-05
Aplicativo Bluetooth hc-05
Aplicativo Bluetooth hc-05
Função Millis()
Os dois push button vão funcionar como liga e desliga LEDa
O LEDb deverá piscar com intervalo de 5 segundos através da função millis()
Função Millis()
Função Millis()
Função Interrupção Externa
Se ocorrer a interrupção externa no pino (2) através do Push Button, muda o status da variável
bool ( false ou true ).
Na condição ( true ) o LED ficará piscando num intervalo de 2 segundos.
Na condição ( false ) o LED apaga.
Função Interrupção Externa