2. Aula 1: Introdução ao Arduino e Portas
Digitais
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
3. Quem sou eu?
Wellington Cássio Faria
Formação:
Curso técnico – Médio (2o grau)
Técnico em Eletrônica Industrial, CEP - Centro de Educação Profissional
Tancredo Neves (julho/2010) - concluída.
Graduação
Engenharia da Computação, Inatel (junho/2015) - cursando.
Atividades:
Bolsista de Iniciação Científica
Conversão de sistemas de medição analógicos para digitais na
Agrometereologia utilizando plataforma Arduino.
Monitor Voluntário
Cas@viva - Arduino
Natural : Paraisópolis - MG
4. O que é ARDUINO?
É uma plataforma
de prototipagem eletrônica de hardware
livre, projetada com
um microcontrolador Atmel AVR de placa
única, com suporte de entrada /
saída embutido, uma linguagem de
programação padrão, a qual tem origem
em Wiring, e é essencialmente C/C++. O
objetivo do projeto é criar ferramentas que
são acessíveis, com baixo custo, flexíveis e
fáceis. Principalmente para aqueles que não
teriam alcance aos controladores mais
sofisticados e de ferramentas mais
complicadas.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
5. O que que quer dizer open-source?
As placas podem
ser construídas à mão ou
comprado pré-montado, o software
(IDE) pode ser
baixado gratuitamente. Os projetos de
hardware de referência (arquivos de
CAD) estão disponíveis sob uma licença
de código aberto, você é livre
para adaptá-los às suas
necessidades .
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
6. O que é ARDUINO?
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
7. Hardware do ARDUINO UNO
Portas Digitais
0 à 13
PWM: 3, 5, 6, 9, 10,
e 11 ( ~ )
Comunicação Serial:
1 e 0 (TX e RX)
Portas
Analógicas
0 à 5Alimentação
Externa
USB
Barramento de
Extensão
Microcontrolador
ATmega328
Botão para
Reiniciar
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
8. Programação do Arduino
Programação do Arduino pode ser dividido em três partes principais: estruturas,
valores (variáveis e constantes) e funções.
A
linguagem
tem origem
em Wiring,
e é
essencialm
ente C/C++
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
9. PIC assembly X PIC em C X Arduino
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
13. PIC assembly X PIC em C X Arduino
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
14. Shields do Arduino:
Shields são placas que
podem ser conectados em cima
do Arduino estendendo as suas
capacidades.
Os diferentes shields
seguem a mesma filosofia que
do Arduino: eles são baratos de
produzir e fáceis de montar e
programar.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
15. Arduino Ethernet Shield
O Shield permite que
Arduino conecte-se à
internet.
Existe uma entrada
de cartão micro-SD , que
pode ser usado para
armazenar arquivos para
disponibilizar na web.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
16. Arduino WiFi Shield
O Shield permite que que
Arduino conecte-se à internet
usando o WiFi.
O Shield WiFi pode se
conectar a redes sem fio que operam
de acordo com as especificações
802.11be 802.11g.
Há uma entrada de cartão
micro-SD , que pode ser usado para
armazenar dados que podem serem
transmitidos via WiFi.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
17. Arduino Wireless SD Shield
O Shield permite que uma que
Arduino para comunicar sem fios com um
módulo sem fios(RF).
Ele baseia-se nos módulos Xbee
produzidos pela Digi.
Há um slot para cartão SD.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
18. Shield Arduino GSM Shield
O shield conecta o
Arduino à internet usando a
rede GPRS sem fio.
Você também pode
fazer / receber chamadas de
voz (você vai precisar de um
alto-falante externo e circuito
de microfone) e enviar /
receber mensagens SMS.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
19. Arduino Motor Shield
O shield permite
que você controle dois
motores DC com sua placa
Arduino, controlando a
velocidade , a direção de
cada um de forma
independente.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
20. MP3 Player Shield
O MP3 Player Shield tem
a impressionante capacidade de decodificação de MP3
e a funcionalidade de
armazenamento do cartão SD. Agora você pode
puxar arquivos MP3 a partir de um cartão SD e
reproduzi-los usando apenas este shield,
efetivamente transformando todo o Arduino em
um completo MP3 Player! O Shield
de MP3ainda utiliza o decodificador de
áudio MP3 VS1053B IC para decodificar os arquivos de
áudio. O VS1053 também é capaz de
decodificar áudio Ogg Vorbis/MP3/AAC/WMA/MIDI e
codificação IMA ADPCM.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
21. LCD Shield
O LCD Shield Color,
fornece uma forma
fácil de conectar o
popular Nokia 6100
LCD no Arduino.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
22. Shield EasyVR
The Shield EasyVR é um
shield de reconhecimento de
voz para placas Arduino
integrando um módulo
EasyVR. Ele inclui todas as
funcionalidades do módulo
EasyVR que simplifica a
conexão à placa Arduino e PC.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
29. #MãoNaMassa!
O setup() é função para
configurações inicias. Use-se:
• Inicializar variáveis.
• Configuração de pino (entrada ou
saída)
É executada apenas uma vez, após cada
reinicialização da placa Arduino.
o loop() faz exatamente o
que seu nome sugere, e laços
infinito. O Código no loop() ativamente
“seu programa” a placa Arduino.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
30. Portas Digitais
0 à 13
PWM: 3, 5, 6, 9, 10,
e 11 ( ~ )
Comunicação Serial:
1 e 0 (TX e RX)
Funções para portas Digitais
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
31. pinMode( )
Sintaxe:
pinMode (pino, modo)
Parâmetros:
pino: o número do pin cujo modo
que você deseja definir
modo: INPUT (Entrada)
OUTPUT (Saída)
INPUT_PULLUP (Entrada com
PULL-UP)
Retorno:
Nenhum
Configura o pino especificado como uma
entrada ou saída.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
32. pinMode( )
Configuração de Portas
Digitais:
pinMode (pino, modo)
modo: INPUT (Entrada)
OUTPUT(Saída)
INPUT_PULLUP (Entrada
com PULLUP interno,
essa opção não é
necessário o circuito
PULLUP externo
podendo assim ser
ligado diretamente no
GND.
*Não se utiliza para
entradas analógicas.
Quando pressionado
“envia” 0 volts(GND)
(LOW) para porta.
Quando pressionado
“envia” 5 volts (HIGH)
para porta.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
33. digitalWrite()
Sintaxe:
digitalWrite (pino, valor)
Parâmetros:
pino: o número do pino
valor: HIGH (ALTO ) ou LOW (BAIXO)
Retorno:
Nenhum
Escreve uma valor ALTO ou valor
BAIXO para um pino digital
configurado como SAÍDA.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
34. digitalRead()
Sintaxe
digitalRead (pino)
Parâmetros
pino: o número do pino digital que
você quer ler configurado como
ENTRADA
Retorno:
HIGH ou LOW
Lê o valor de um pino digital
especificado, ALTO ou BAIXO
definido como ENTRADA.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
35. Exercício Portas Digitais
1- Faça um programa que faça o LED1 da placa (pino 13) piscar de 1 em 1 segundo.
Ligue um outro LED2 no pino 4 da porta digital e toda vez que o botão(PULL-UP Interno
pino 3) for precisado o LED2 deve ligar, caso contrario o LED2 deve ficar apagado.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
36. Exercício Portas Digitais
2- Faça um programa que se botão(D2) estiver pressionado pisque 3 LED (D4,D5,D6)
cada um de cada vez da direita para esquerda no intervalo de 1 segundo. Se o botão
não tiver pressionado pisque 3 LED (D4,D5,D6) cada um de cada vez da esquerda para
direita no intervalo de 1 segundo.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
37. Aula 2: Portas Analógicas, Comunicação
Serial e LCD
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
38. Funções para portas Analógicas
Portas
Analógicas
0 à 5
PWM: 3, 5, 6, 9, 10,
e 11 ( ~ )
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
39. analogReference( )
Configura a tensão de referência utilizada
para a entrada analógica (SETUP)
As opções são:
• DEFAULT: a referência analógica
padrão de 5 volts
• INTERNAL: referência igual a 1,1
volts(ATmega168 ou ATmega328)
• INTERNAL1V1: referência 1.1V
referência (apenas Arduino Mega)
• INTERNAL2V56: referência 2.56V
(apenas Arduino Mega)
• EXTERNAL: referência de tensão
aplicada ao pino AREF (0 a 5V )
Sintaxe:
analogReference(tipo)
Parâmetro:
tipo: DEFAULT, INTERNO,
INTERNAL1V1, INTERNAL2V56 ou
EXTERNAL.
Retorno:
Nenhum
TensãodeReferência
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
40. analogRead( )
Lê o valor do pino analógico especificado.
Mapeia tensões de
entrada entre 0 e tensão
de referência em valores
inteiros entre 0 e 1023
Sintaxe:
analogRead (pino)
Parâmetros:
pino: o número do pino de entrada
analógica.
Retorno:
Número inteiro de 0 a 1023
Convertendo Retorno em Tensão:
𝑇𝑒𝑛𝑠ã𝑜 = 𝑅𝑒𝑡𝑜𝑟𝑛𝑜 𝑥
𝑇𝑒𝑛𝑠ã𝑜 𝑑𝑒 𝑅𝑒𝑓ê𝑟𝑒𝑛𝑐𝑖𝑎
1024
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
41. analogWrite( )
Escreve um valor tensão no pino
especificado PWM.
Sintaxe:
analogWrite(pino, valor)
Parâmetros:
pino: Número do pino .
Valor : Entre 0 (0 Volts/ 0% Duty) a 255
(5 Volts/100% Duty).
Returno:
Nenhum
𝑇𝑒𝑛𝑠ã𝑜 𝑛𝑜 𝑃𝑖𝑛𝑜 =
5 𝑥 𝑣𝑎𝑙𝑜𝑟
255
Arduino Uno:
PWM: 3, 5, 6, 9, 10,
e 11 ( ~ )
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
42. Funções para Comunicação Serial
Comunicação Serial:
1 e 0 (TX e RX)
Usado para a comunicação entre a placa Arduino e um
computador ou outros dispositivos.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
43. Serial.begin( )
Define a taxa de dados em bits por
segundo (Banda) para a transmissão de
dados serial .
Sintaxe:
Serial.begin (velocidade)
Parâmetros:
Velocidade: em bits por segundo (banda)
Retorno:
Nenhum
Para se comunicar com o computador, use uma
dessas taxas: 300, 600, 1200, 2400, 4800, 9600,
14400, 19200, 28800, 38400, 57600 ou 115200.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
44. Serial.print( )
Imprime/Envia dados para a porta
serial/computador.
Sintaxe:
Serial.print (val)
Parâmetros:
val: o valor para imprimir - qualquer tipo
de dados
millis (): Retorna o número de milissegundos desde que o
Arduino começou a executar o programa atual.
delay(): Pausa o programa para a quantidade de tempo (em
milissegundos) especificado como parâmetro. (1000
milissegundos são um segundo.)
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
45. Serial.read( ) / Serial.available( )
Lê os dados de entrada Serial.
Sintaxe:
Serial.read ()
Parâmetros:
Nenhum
Retorna:
Um numero inteiro referente
a tabela ASCII.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
47. Exercício
1- Faça um programa que leia o sensor LM35 utilizando a porta analógica 0, e envia esse
dado para computador de 1 em 1 segundo em ºC.
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
O sensor LM35 é um sensor de precisão,
fabricado pela National Semiconductor ,que
apresenta uma saída de tensão linear relativa à
temperatura em que ele se encontrar no
momento em que for alimentado por uma
tensão de 4-20Vdc e GND, tendo em sua saída
um sinal de 10mV para cada Grau Celsius de
temperatura.
48. LiquidCrystal Biblioteca
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
Esta biblioteca permite que uma placa
Arduino possa controlar um LCD baseado no
Hitachi HD44780
49. LiquidCrystal Biblioteca
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
LiquidCrystal ()
Cria uma variável do tipo LiquidCrystal.
Sintaxe:
LiquidCrystal “NOME” (rs, enable,D4, D5,D6,D7)
begin ()
Especifica as dimensões (largura e altura)
do display.
Sintaxe:
lcd.begin (colunas, linhas)
Parâmetros:
lcd: uma variável do tipo LiquidCrystal
colunas: o número de colunas do LCD
linhas: o número de linhas do LCD
50. LiquidCrystal Biblioteca
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
print ()
Imprime texto ao LCD.
Sintaxe:
lcd.print (dados)
Parâmetro:
lcd: uma variável do tipo LiquidCrystal
dados: os dados para imprimir (char,
byte, int, long, ou string)
51. LiquidCrystal Biblioteca
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
setCursor ()
Posicione o cursor LCD, isto é, definir o
local em que o texto subseqüente é
escrito no LCD.
Sintaxe:
lcd.setCursor (coluna, linha)
Parâmetros:
lcd: uma variável do tipo LiquidCrystal
coluna: a coluna na qual se posiciona o
cursor (sendo 0 a primeira coluna)
linha: a linha em que a posição do cursor
(sendo 0 a primeira linha)
52. Exercício
Ministrado por: Wellington Cássio Faria
Contato: wellingtonf@gec.inatel.br
2- Faça um programa que imprima na Primeira linha o seu primeiro nome e na segunda
linha o primeiro nome do seu parceiro de bancada.
4- Entre em file/exemples/LiquidCrystal/Scroll e rode o programa.