SlideShare a Scribd company logo
1 of 94
Download to read offline
Introdução ao ARDUINO
www.eletronicaparaartistas.com.br
Helder da Rocha
ARDUINO 1
Introdução
Instalação e configuração
www.eletronicaparaartistas.com.br
Helder da Rocha
O que é Arduino?
• Uma placa para prototipagem de projetos eletrônicos

• Uma plataforma eletrônica que consiste de um circuito
contendo um microcontrolador (da família AVR)
configurado para facilitar a programação e controle de
entradas e saídas.

• Criado para facilitar o uso da eletrônica por artistas

• Open hardware - circuito pode ser montado e vendido
sem precisar pagar royalties
Arquitetura do Arduino
Entradas
(sensores, chaves,
geradores de sinais)
Saídas
(dispositivos, mecanismos,
processadores de sinais)
Processamento
(plataforma de computação
baseada em microcontrolador)
Programação do Arduino
A programação do Arduino é feita em uma linguagem de
alto-nível (é uma versão simplificada da linguagem C)
A linguagem define abstrações (estruturas, variáveis e funções)
que representam pinos e funcionalidades do Arduino.
Antes de ser transferido para a
memória do Arduino, o programa
precisa ser compilado (traduzido para
a linguagem de máquina do Arduino)
A transferência é feita através da saída USB do
computador, que também fornece energia para a
placa.Algumas placas possuem entrada USB,
outras requerem um adaptador.
A função dos pinos do Arduino (se irão
funcionar como entradas ou saídas) é
definida através de programação
Uso do Arduino
• Depois que um programa é transferido para a memória do Arduino,
ele executará automaticamente sempre que for conectado a uma
fonte de energia elétrica

• Um programa geralmente é construído para executar continuamente,
lendo os sinais recebidos de sensores e controlando dispositivos

• O botão RESET reinicia o Arduino (o programa é interrompido e
reiniciado novamente)
Alguns projetos com Arduino
Microcontroladores
• Um microcontrolador é um pequeno computador contido
em um chip

• O Arduino é um circuito que existe para dar suporte ao
microcontrolador (que é quem faz todo o trabalho)

• Arduinos usam microcontroladores da arquitetura AVR
fabricados pela ATMel. Os mais usados são da série
ATMega e ATTiny
ATMega328 SMD ATMega168 DIL ATTiny85
Esquema de um circuito
Arduino usando ATMega328
Exemplo de um circuito
Arduino usando ATMega328
Uso de um adaptador USB
Placas Arduino
Arduino MEGA
Arduino Leonardo
Arduino UNO
Arduino Nano Arduino Pro Mini
DigiSpark

ATTiny
LilyPad Arduino
AdaFruit
Gemma
AdaFruit Flora
DigiSpark
LilyTiny
Arduino LilyPad
WearablesArduino para vestir
AdaFruit Flora
Wearables
Placas Arduino com USB
• Podem ser conectadas
diretamente ao computador
através de um cabo USB

• A entrada USB permite a
transferência de programas
para o Arduino (ocupa o pino
digital 1) e fornece energia (5V)
Cabo

Mini-USB
Cabo USB
LilyPad
Arduino
USB
Arduino Nano
Arduino Mega Arduino Uno
Placas Arduino
sem USB
• Para transferir o programa do
computador para o Arduino é preciso
utilizar um circuito USB-Serial
LilyPad ArduinoArduino Pro Mini
Adaptador
USB-Serial
Cabo USB
LilyPad Arduino
Adaptador USB-Serial
Instalação
• Para programar o Arduino é necessário usar um
ambiente de desenvolvimento (IDE) para digitar o
código, compilar (traduzir o código para linguagem do
microcontrolador) e transferir o programa através de USB

• Para que a comunicação via USB seja possível, é preciso
que o computador esteja configurado para reconhecer a
porta. Isto às vezes requer a instalação de um driver
(programa que realiza a comunicação via USB)

• O IDE pode ser baixado do site arduino.cc. O driver
precisa ser baixado do site do fabricante (isto depende
do Arduino usado, se é original da Itália ou clone).
Driver do adaptador USB
• Descubra se sua placa precisa e qual o fabricante; depois
baixe e execute o instalador do driver).

• Principais fabricantes são ATMel, FTDI e CH341
FTDI Mac, Linux & Windows

https://learn.sparkfun.com/tutorials/how-to-install-ftdi-drivers
CH341 

Windows: http://www.wch.cn/download/CH341SER_EXE.html
Mac: http://www.wch.cn/download/CH341SER_MAC_ZIP.html
Linux: http://www.wch.cn/download/CH341SER_MAC_LINUX.html
ATMel

Instalação é feita automaticamente durante a instalação do
ambiente de desenvolvimento (IDE)
Aplicação Arduino (IDE)
• Baixe o instalador em https://www.arduino.cc/en/Main/Software

• Disponível para Windows, Mac e Linux

• Instala automaticamente o driver USB Atmel
Arduino
Seleção do tipo de placa
É necessário selecionar a placa usada para que a
compilação seja feita corretamente

A aplicação Arduino lista as placas mais
conhecidas (se uma placa não estiver na lista, é
necessário baixar e instalar suporte para ela)
Seleção da porta de comunicação USB
Como descobrir a porta:
1. Desconecte o cabo USB e veja
quais as portas que aparecem no
menu Tools/Serial Port.
2. Reconecte o cabo e selecione o
menu Tools/Serial Port novamente.
A porta que aparecer na lista é a
porta do Arduino
No Windows a porta aparece
como COM2, COM3, COM4, etc.
No Mac e Linux a porta
começa com /dev/cu ou
/dev/tty e contém
"usb" no nome
Se não aparecer uma porta nova ao conectar o
Arduino em USB, o driver pode não ter sido
instalado corretamente
Às vezes é necessário reiniciar o computador (a
versão do driver também pode ser incompatível
com a versão do sistema operacional usado)
Arduino IDE: barra de menu
Monitor serial
Permite imprimir na tela dados
do Arduino conectado via USB
(usa o pino digital 0)
Compila o programa
(erros indicam problemas no
programa, como erros de sintaxe,
falta de bibliotecas, etc.)
Transfere o programa
para o Arduino
(erros indicam problemas na
transferência como falta de
drivers, uso do pino 1, etc.)
Abre uma janela nova 

(com um editor em branco ou
contendo o programa mínimo)
Abre um programa
armazenado em disco
(mesmo que File/Open)
Grava um
programa em disco

(mesmo que File/Save)
Compilando um programa
Aperte aqui para compilar o programa
(aplicação irá tentar converter o
programa em linguagem de máquina)
Erros de compilação
impedem a geração do código
de máquina (geralmente são
causados por erros de sintaxe,
falta de bibliotecas, etc.)
Programa
mínimo
Carregue programa BareMinimum
é o programa mais simples que compila
(mas não faz nada)
Programa mínimo contém dois blocos
(instruções estarão entre chaves { ... } )
void setup():
Contém instruções que irão executar uma
única vez (na inicialização do programa)

void loop():
Contém instruções que irão executar
continuamente (as instruções se repetem)
Transferindo o programa para a placa
Depois de compilado com
sucesso (sem erros) o
programa poderá ser
transferido para o Arduino

Se a transferência ocorrer
com sucesso, o Arduino
poderá ser desconectado

Causas mais comuns de
erros que acontecem
durante a transferência

• Tipo de Arduino incorreto
(veja menu Board)

• Porta de comunicação
incorreta (veja menu Port)

• Pino 1 está sendo usado
pelo circuito (desligue-o
durante a transferência)
Aperte aqui para
transferir o programa
Pinagem
ARDUINO UNO
• Programas não podem ser transferidos
via USB se o pino D1 estiver sendo usado.
• O Monitor Serial não irá funcionar se o
pino D0 estiver sendo usado.
• O pino D13 está permanentemente
conectado a um LED
Evite usar pinos D0, D1 e D13
Pinagem
ARDUINO NANO
Arduino Nano no protoboard
D12
D11
D10
D9
D8
D7
D6
D5
D4
D3
D2
GND
RST
RX0
TX1
D13
3V3
REF
A0
A1
A2
A3
A4
A5
A6
A7
5V
RST
GND
VIN
Encaixe os terminais com
cuidado, mas firmemente (não
deve haver maus contatos)
Protoboard conecta 2 a 3
soquetes por pino
Teste da instalação com o
programa "Blink"
1. Conecte o Arduino ao computador via USB

2. Carregue o programa "01.Basics/Blink"

3. Veja o LED "L" da placa Arduino piscar

4. Desconecte o Arduino do computador e reconecte a
uma fonte de energia (9V) usando a entrada P4 (Arduino
UNO) ou pinos VIN(+) e GND(-) (Arduino Nano)
ARDUINO 2
Saída digital
www.eletronicaparaartistas.com.br
Helder da Rocha
Lógica digital
• Associa valores de tensão a níveis lógicos binários (0 ou 1)

• O valor da tensão é uma referência. A referência mais comum para o valor
ALTO (HIGH) ou LIGADO (ON) é 5V

• A referência para o valor BAIXO (LOW) ou DESLIGADO (OFF) é 0V

• Em programação, 5V é representado pelo algarismo 1 e 0V é representado
pelo algarismo 0

• Informação é representada em programas de computador através de
sequências de 0s e 1s (lógica binária). A unidade é o bit (que pode ser 0
ou 1) e palavras (sequências) de 8 bits são bytes.

• Bits são representados em eletrônica por chaves (geralmente transistores)
que podem reter 5V (armazenam a informação 1) ou 0V (armazenam 0). A
lógica também pode ser inversa.
0
1
0
LED (Light-Emmiting Diode)
Corrente máxima: 20mA

Tensão sobre o LED em 20mA é fixa

LEDs vermelhos e amarelos: ~2V

LEDs verdes, azuis e brancos: ~3V

Para limitar a corrente em 20mA em circuitos com
Arduino use um resistor de no mínimo 150 ohms
digitalWrite
"Blink"
LED acende quando pino 8 for HIGH
LED apaga quando pino 8 for LOW
K
KA
A
Troque o LED pela cigarra
(use o mesmo
programa que
pisca o LED)
+
-
Positivo e negativo
Nos esquemas e
dispositivos (módulos,
arduinos) é comum
usar os nomes:

• VCC (+), ou V+



(Voltage = tensão;
CC é sufixo usado
por convenção)

• GND (-)



(GrouND = terra =
pólo negativo = 0
volts)
Referência é relativa!
Tensão é DIFERENÇA de potencial
VCC para GND (+)
GND para VCC (-)
GND para GND (0)
VCC para VCC (0)
digitalWrite
"Blink"
LED acende quando pino 8 for LOW
LED apaga quando pino 8 for HIGH
K
K A
A
Usando múltiplos pinos
Catodo comum
ligado em GND
Anodo comum
ligado em VCC
corrente corrente
Pino-GND Pino-VCC
Vários LEDs (anodo comum)
Anodo comum: LED acende quando pino em LOW (VCC é sempre HIGH)
LEDs em anodo
comum
Nesta configuração,
LEDs acendem quando
pino está em LOW.

Se LEDs forem montados
em catodo comum, os
catodos são ligados em
GND e os LEDs
acendem quando seu
pino estiver em HIGH
LED RGB (anodo comum)
Anodo comum: LED acende quando pino em LOW (VCC é sempre HIGH)
Relé (chave eletromecânica)
8 pinos
2 pinos: eletroimã (circuito do Arduino): 5V
6 pinos: 2 chaves de 2 posições (circuitos independentes): até 120V / 1A
5 pinos
2 pinos: eletroimã (circuito do Arduino): 5V
3 pinos: chave de 2 posições (circuito independente): até 240V / 7A
Diodos
1N4148
1N4001
A
K
K
A
K
A
Permite a passagem de corrente apenas em
um sentido (não conduz no outro sentido)

Diodos de propósito geral são usados para
em retificadores de corrente (corta correntes
negativas), circuitos de proteção (contra
correntes armazenadas em motores e relés)
Os diodos do kit podem ser
1N4001 ou 1N4148
Troque o
LED por
um relé
diodo de proteção
circuito independente
(use o mesmo
programa que
pisca o LED)
O diodo de proteção
• Relés (e indutores em geral - inclui motores, solenóides)
armazenam corrente que fluem no sentido oposto quando
componente é desligado

• Para evitar que essa corrente oposta volte para o Arduino
através do pino GND (podendo causar danos), deve-se
colocar um diodo de proteção em posição reversa e em
paralelo com os terminais do relé.

• O diodo só permite a passagem da corrente em um sentido,
e anulará correntes reversas com um curto no indutor.

• IMPORTANTE: o diodo precisa estar em posição
REVERSA, com o catodo (K) do lado positivo e o anodo (A)
no negativo. Se a configuração for Pino-GND, ligue A em
GND e K no pino. Na configuração Pino-VCC, ligue K em
VCC/5V e A no pino. O diodo em posição direta causará
um curto e queimará o pino.
K
A
+
-
Usando um relé 

de 5 pinos 

(1 circuito, 2 posições)
Relé
chaveando
duas
posições
Relé
chaveando
2 circuitos
em 2
posições
Níveis lógicos (saída)
Nível lógico em pino configurado com pinMode OUTPUT é
traduzido para uma tensão de valor VCC (5V ou 3,3V) ou 0V.
Para usar a tensão produzida por um pino OUTPUT em um
circuito é preciso observar os limites de corrente*:
~40mA para qualquer pino digital
~100mA para pinos de um grupo (D1-D7, D8-D13, A0-A5)
~200mA para o Arduino inteiro (vários pinos)
~50mA para o pino 3,3V (nos modelos de 5V)
~500mA para o pino VCC/5V ou GND (limite USB)
ATENÇÃO: Ligar OUTPUT com nível LOW diretamente a VCC,
ou OUTPUT com nível HIGH diretamente a GND sem limitar a
corrente produz um curto-circuito que queima o pino.
Use um resistor calculado para limitar a corrente demandada
pelo circuito de saída quando a diferença de potencial entre o
pino e VCC ou GND for máxima (5 volts)
Arduino
VCC/5V
3,3V
GND
D1 a D19
D1+D7
D8+D13
D14+D19
D1+D19
até 500mA
até 50mA
até 500mA
até 40mA
até 100mA
até 100mA
até 100mA
até 200mA
* valores típicos do Uno - valores são diferentes em outros modelos e clones
Display de LEDs de 7
segmentos
O modelo acima (HS 5101A) possui um catodo comum
Display de
LEDs de 7
segmentos
Produz uma
contagem de

00 a 99
ARDUINO 3
Entrada digital
www.eletronicaparaartistas.com.br
Helder da Rocha
int valor = digitalRead(pino)
VCC
5V ou 3,3V
1 = HIGH
VCC representa o nível lógico HIGH do
Arduino (5V ou 3,3V dependendo do tipo)
Se VCC for 5V (Arduino Uno)
LOW = 0V, HIGH = 5V
Se VCC for 3,3V (Due, LilyPad, ProMini)
LOW = 0V, HIGH = 3,3V
Não há como mudar o nível VCC do
Arduino. Ele é fixo. Cada pino em nível
HIGH terá esse valor.
Para conectar componentes com níveis
lógicos incompatíveis (3,3V x 5V) é
preciso usar um conversor de nível
lógico (pode ser um divisor de tensão)
0V
0 = LOW
valor = 0 (LOW)
ou
valor = 1 (HIGH)
digitalRead
Estado do pino 3 quando chave
estiver aberta é INDEFINIDO
(pode se traduzido como HIGH ou
LOW, ou ficar mudando)
Níveis lógicos (entrada)
Pino VCC (Pino 5V em Arduino Uno/Nano)
sempre fornece nível lógico HIGH
Pino GND sempre fornece nível lógico LOW
Pinos digitais D1 a D19 têm níveis lógicos
indefinidos (podem ser interpretados como
HIGH ou LOW)
Pino digital configurado como INPUT (default)
pode ser ligado a VCC (HIGH) ou GND (LOW)
para ter valor definido
Ligação pode ser direta (fio) ou via resistor de
pull-up (para VCC) ou pull-down (para GND)
Arduino
VCC
GND
D1
Sempre
HIGH
Sempre
LOW
Indefinido
Arduino
VCC
GND
D1 LOW
Arduino
VCC
GND
D1
HIGH
Sempre
HIGH
Sempre
LOW
Sempre
HIGH
Sempre
LOW
Níveis lógicos reais (entrada)
VCC
5V (ou 3,3V) 1 = HIGH
Um valor de tensão é traduzido para o
nível lógico 1 (HIGH) se for maior que
60% da tensão VCC do Arduino
Um valor de tensão é traduzido para o
nível lógico 0 (LOW) se for menor que
30% da tensão VCC do Arduino
Valores intermediários são indefinidos e
serão traduzidos para qualquer um dos
dois níveis lógicos (não há como prever)0V
0 = LOW
60% Vcc
3V (ou 2V)
30% Vcc
1,5V (ou 1V)
Nível indefinido
1,5 a 3V (ou 1 a 2V)
Pull-up e Pull-down
Resistores de pull-down (ou pull-up)
garantem estado inicial definido
quando a chave estiver aberta
Pino 3 com um
resistor de pull-up
Agora o valor do pino 3 quando o
botão não estiver apertado é HIGH e
muda para LOW apenas quando
estiver sendo pressionado
Adicione uma chave de inclinação (tilt)
Incline o protoboard para ver o LED acender ou apagar
Adicione uma chave magnética (reed)
Aproxime um imã para ver o LED acender ou apagar
Esquema: Chave + Tilt + Reed
INPUT_PULLUP
pinMode(pino, INPUT_PULLUP);
Circuito bi-estável
(set/reset)
Usando o pinMode INPUT_PULLUP
não é necessário usar resistores de pull-up
(o Arduino já fornece um pull-up interno)
Botão D3: set (acende e mantém aceso)

Botão D4: reset (apaga o LED)
Troque o set por um fototransistor
Use um LED infravermelho (ou luz
direta) para acionar o sensor
(O LED infravermelho tem uma
tensão direta a 20mA de 1,6V;
você pode usar com esta pilha
de 3V por alguns segundos;
conecte um resistor de 100
ohms se precisar manter
ligado mais tempo)
C E
Experimente também usando
outros sensores:

Chave tilt
Chave reed
Quando o sensor fechar o
circuito o LED acende (set) e
só apaga quando o botão
(reset) é apertado
CE
Troque o set por um sensor de som
Transistor amplifica o sinal
e gera pulso no pino D3
B
C
E
BC548 ou
2N2222
BC548
BC549
C
B
E
BC548
Pequeno pulso no
microfone é suficiente
para disparar o
transistor e mudar o
estado do circuito
Troque o set por um sensor de som
Transistor amplifica o sinal
e gera pulso no pino D3
B
C
E
BC548 ou
2N2222
2N2222
2N3904
C
B
E
2N 2222
Pequeno pulso no
microfone é suficiente
para disparar o
transistor e mudar o
estado do circuito
Amplificação do sinal do
microfone
Troque o set por um sensor de deformação
(diodos de
propósito geral)
1N4148
1N4001
A
K
K
A
A
A K
K
K A
C E
B
BC548
Troque o set por um sensor de deformação
(diodos de
propósito geral)
1N4148
1N4001
A
K
K
A
A
A K
K
K A2N2222
C
B
E
ARDUINO 4
Saída analógica
www.eletronicaparaartistas.com.br
Helder da Rocha
analogWrite
Experimente
também trocar o
LED por

cigarra (buzzer)
K
KA
A
analogWrite(pino, valor)
valor = 255
valor = 128
valor = 192
valor = 64
HIGH
LOW
HIGH
LOW
HIGH
LOW
HIGH
LOW
100%
50%
75%
25%
valor = 0
HIGH
LOW
0%
PWM (Pulse-Width Modulation)
simula saída analógica (não é saída
analógica verdadeira)
Acende (HIGH) e apaga (LOW)
rapidamente; simula efeito analógico
variando tempo em HIGH e LOW
Únicos valores produzidos são VCC
(5V ou 3,3V) e 0V
Saída analógica verdadeira requer
circuito retificador (com capacitores)
Frequência do PWM em Arduino
Uno/Nano

Pinos 3, 9, 10 e 11: 31250Hz

Pinos 5 e 6: 62500Hz
1 pulso (16 a 32µs)
valor
simulado
MOSFET
• MOSFETs são transistores muito usados na eletrônica digital
(principalmente em circuitos que utilizam grandes quantidades
de transistores, como chips)

• São similares aos transistores bipolares. O terminal G (gate,
comporta) tem função similar à base (B). D (drain, dreno) é
similar ao coletor (C), e S (source, fonte) ao emissor.

• A principal diferença é que o transistor não requer corrente
alguma em G. Ele é ligado aplicando uma tensão em G que
carrega o capacitor interno e abre a comporta entre D e G. 

• O consumo de energia é baixo, podem ser usados em cascata
facilmente, mas são vulneráveis a cargas eletrostáticas.
Metal-Oxide-Semiconductor Field-Effect Transistor
D
S
G
MOSFET Canal-N
Símbolo
simplificado
+
-
+
-
"Ligue" o MOSFET
aplicando tensão positiva
(> +2V) no seu terminal G
Controle de motor DC com PWM
MOSFET isola o circuito
do motor que é alimentado
separadamente

Arduino controla o G do
MOSFET com PWM
Controle de motor DC com PWM
DS
G
2N7000
1N4148
A K
Use mesmo programa do LED e
motor irá acelerar e desacelerar
continuamente

O motor de DVD incluído no kit pode ser
alimentado pelo pino 5V do Arduino pois
sua demanda de corrente é baixa (35mA) e
os picos não ultrapassam 100mA (mas
não faça isto com outros motores DC)
ARDUINO 5
Entrada analógica
www.eletronicaparaartistas.com.br
Helder da Rocha
int valor = analogRead(pino)
AREF
Default = 5V ou 3,3V
1024 posições
(valor: 0 a 1023)
Se AREF for 5V (Arduino Uno, Nano)
V = (valor / 1024) * 5V
Se AREF for 3,3V (Due, LilyPad, ProMini)
V = (valor / 1024) * 3,3V
Se AREF for 1,1V (Internal)
V = (valor / 1024) * 1,1V
AREF=VREF (<5V no pino AREF)
V = (valor / 1024) * VREF0V
Valor lido é inteiro com resolução de 1/1024 da tensão de referência AREF
AREF é a referência de tensão máxima para leitura analógica.
Normalmente é usada a tensão VCC do Arduino (5V ou 3,3V)
Mas AREF pode ser alterada:
Via software, usando instrução analogReference(): 1,1V
Via hardware, aplicando tensão no pino AREF: tensão < 5V
analogRead
Abra o monitor
serial para ver as
mensagens com
o valor lido no
potenciômetro
Troque o potenciômetro
por um LDR
O LDR pode ser conectado a qualquer pino
analógico, com um resistor de pull-up (se
conectado a GND) ou de pull-down (se
conectado a VCC)
A tensão de referência
analógica é 5V (default)
portanto pra calcular a
tensão no pino divide-se por
1024 e multiplica-se por 5
Troque potenciômetro
por termistor
O termistor do kit é
NTC 5k (significa que
sua temperatura cai
com o calor, e que a
resistência mede 5k
ohms aos 25 graus
Celsius)
É preciso calibrar o
termistor para
determinar a
temperatura.
Termômetro analógico
com LM35
Veja resultados no Monitor Serial
VCC
GND
OUT
10mV para cada °C
entre OUT e GND
Termômetro
usando display
de LEDs de 7
segmentos
http://eletronicaparaartistas.com.br/alteracao-35-1-termometro-com-display-de-7-segmentos/
Veja código no
link acima ou
baixe do GitHub
Controle de
LED RGB
Sensor de
luminosidade
com LED RGB
LED ficará
vermelho com
pouca luz e azul
com muita luz.
Ficará verde com
luz intermediária
Troque o
potenciômetro por
um divisor de
tensão com LDR
Controle de motor com PWM
DS
G
2N7000
1N4148
A K
D
G
S
Gire o potenciômetro
para variar a
velocidade do motor
Troque o
potenciômetro
por um LDR
Motor gira mais rápido quando
está claro e mais devagar
quando está escuro (ou vice-
versa - é só mudar no código)
DS
G
2N7000
1N4148
A K
D
G
S
Helder da Rocha
ARDUINO 6
www.eletronicaparaartistas.com.br
Dispositivos controlados por pulsos
Geração de pulsos
Leitura de pulsos
tone(pino, frequencia)
Gera pulsos de ondas quadradas
em determinada frequência 

(em Hertz - pulsos por segundo)
• O Arduino gera apenas um tom de cada vez, que
continua até que haja uma instrução noTone(pino)

• Duração também pode ser especificada (em ms):
tone(pino, frequencia, duracao)
Gerando pulsos
Diversos dispositivos e sensores são controlados por pulsos.

Um pulso é um sinal com duração especificada no estado oposto ao inicial/final.

Pode ser gerado usando digitalWrite() + delay() ou delayMicroseconds()
• Pulso LOW no pino 12 com 5ms de duração (estado inicial/final é HIGH)
digitalWrite(12, LOW);
delay(5);
digitalWrite(12, HIGH);
5ms
• Pulso HIGH no pino 7 com 5µs de duração (estado inicial/final é LOW)
digitalWrite(7, HIGH);
delayMicroseconds(5);
digitalWrite(7, LOW);
5µs
• Dois pulsos HIGH no pino 9, com 1µs e 10µs, com intervalo de 50µs
digitalWrite(9, HIGH);
delayMicroseconds(1);
digitalWrite(9, LOW);
delayMicroseconds(50);
digitalWrite(9, HIGH);
delayMicroseconds(5);
digitalWrite(9, LOW);
10µs1µs
50µs
Controle com PWM
• PWM - Pulse Width Modulation é a produção de pulsos contínuos
variando a largura do pulso HIGH. 

• analogWrite(pino, largura) varia o duty-cycle, que é a proporção
da largura do pulso HIGH em relação ao LOW = 0 (0%) a 255
(100%) e independe da frequência

• Controle de dispositivos como servos usam outra forma de PWM
que independe do duty-cycle e utiliza pulsos com largura
específica (não pode ser feito com analogWrite)

• Para controlar um servo motor típico é preciso gerar no máximo
um pulso HIGH a cada 20ms com largura variando de 1 a 2ms,
onde 1ms = -90 graus, 2ms = +90 graus e 1,5ms = 0 graus (centro)
1,5ms
20ms
1,5ms 2ms
20ms
2ms1ms
20ms
1ms
-90° +90°0°
Controle de um Servo
A forma mais fácil de controlar um servo é
incluir a biblioteca Servo.h
disponibilizada pelo portal arduino.cc
Gira 0 a 180 graus (0 = min, 90 = centro, 179 = max)
Declara objeto
(variável)
Inclui a biblioteca
Informa pino PWM
onde está o servo
Sensor ultrassônico HC-SR04
pulsoultrassônico
eco
Pulso ultrassônico 8x40kHz
SinalenviadoSinalrecebido
O sensor é ativado através do envio de um pulso HIGH de 10µs ao pino
TRIG, provocando o envio de um pulso ultrassônico (a 40kHz) que
deverá refletir em uma superfície situada entre 1cm e 2m de distância. 

O eco do pulso é recebido pelo sensor que mede o intervalo de tempo
entre o envio e o recebimento. Um pulso HIGH com duração
proporcional à distância é enviado ao pino ECHO.
+5V TRIG ECHO GND
Para ler a duração de um pulso em µs:

pulseIn(pino, nível)
pulseIn(pino, nível, timeout_µs)
Sensor de distância
Instrução pulseIn(pino, nível) retorna duração do pulso em µs (ou 0 se estourar o timeout)
Veja resultados no
Monitor Serial
LEDs
endereçáveis
Instale as bibliotecas:

FastLED e/ou AdaFruit NeoPixel

Abra, altere e rode os exemplos: 

1) NeoPixel: RGBWstrandtest

Mude as linhas

#define PIN 4
#define NUM_LEDS 5
2) FastLED: DemoReel100

Mude as linhas

#define DATA_PIN 4
#define NUM_LEDS 5
LEDs RGB WS2812 são pixels endereçáveis

Veja como usar usando exemplos das bibliotecas
FastLED e AdaFruit NeoPixel
www.eletronicaparaartistas.com.br
Veja mais em
Introdução ao Arduino
Helder da Rocha

(agosto 2017)

More Related Content

What's hot

Internet das Coisas - Conceitos, tecnologias e aplicações
Internet das Coisas - Conceitos, tecnologias e aplicaçõesInternet das Coisas - Conceitos, tecnologias e aplicações
Internet das Coisas - Conceitos, tecnologias e aplicaçõesFabio Souza
 
1ª aula introdução a informática
1ª aula introdução a informática1ª aula introdução a informática
1ª aula introdução a informáticasocrahn
 
História da informática
História da informáticaHistória da informática
História da informáticaAron Sporkens
 
Material aula informática básica
Material aula informática básicaMaterial aula informática básica
Material aula informática básicaCarlos Melo
 
Aula02 - Componentes de um Computador
Aula02 - Componentes de um ComputadorAula02 - Componentes de um Computador
Aula02 - Componentes de um ComputadorSuzana Viana Mota
 
A Internet das Coisas
A Internet das CoisasA Internet das Coisas
A Internet das CoisasLuiz Avila
 
Regras para o funcionamento da sala de informática
Regras para o funcionamento da sala de  informáticaRegras para o funcionamento da sala de  informática
Regras para o funcionamento da sala de informáticaFatima Ribeiro
 
Principios de Eletronica
Principios de EletronicaPrincipios de Eletronica
Principios de EletronicaHelder da Rocha
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-Mauro Pereira
 
Aula 04 arquitetura de computadores
Aula 04   arquitetura de computadoresAula 04   arquitetura de computadores
Aula 04 arquitetura de computadoresDaniel Moura
 
Algoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de AlgoritmosAlgoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de AlgoritmosElaine Cecília Gatto
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAislan Rafael
 
Resumo básico de introdução à informática
Resumo básico de introdução à informáticaResumo básico de introdução à informática
Resumo básico de introdução à informáticaDaiana de Ávila
 
Sistemas Digitais - Aula 02 - Componentes Elétricos
Sistemas Digitais - Aula 02 - Componentes ElétricosSistemas Digitais - Aula 02 - Componentes Elétricos
Sistemas Digitais - Aula 02 - Componentes ElétricosSuzana Viana Mota
 

What's hot (20)

Aula 08 - Placa Mãe
Aula 08 - Placa MãeAula 08 - Placa Mãe
Aula 08 - Placa Mãe
 
Placa mãe (motherboard)
Placa mãe (motherboard)Placa mãe (motherboard)
Placa mãe (motherboard)
 
Internet das Coisas - Conceitos, tecnologias e aplicações
Internet das Coisas - Conceitos, tecnologias e aplicaçõesInternet das Coisas - Conceitos, tecnologias e aplicações
Internet das Coisas - Conceitos, tecnologias e aplicações
 
1ª aula introdução a informática
1ª aula introdução a informática1ª aula introdução a informática
1ª aula introdução a informática
 
Informática Básica - Aula 04 - Software
Informática Básica - Aula 04 - SoftwareInformática Básica - Aula 04 - Software
Informática Básica - Aula 04 - Software
 
História da informática
História da informáticaHistória da informática
História da informática
 
Informática Básica - Aula 03 - Hardware
Informática Básica - Aula 03 - HardwareInformática Básica - Aula 03 - Hardware
Informática Básica - Aula 03 - Hardware
 
Placa mãe
Placa mãePlaca mãe
Placa mãe
 
Material aula informática básica
Material aula informática básicaMaterial aula informática básica
Material aula informática básica
 
Aula02 - Componentes de um Computador
Aula02 - Componentes de um ComputadorAula02 - Componentes de um Computador
Aula02 - Componentes de um Computador
 
A Internet das Coisas
A Internet das CoisasA Internet das Coisas
A Internet das Coisas
 
Regras para o funcionamento da sala de informática
Regras para o funcionamento da sala de  informáticaRegras para o funcionamento da sala de  informática
Regras para o funcionamento da sala de informática
 
Leis de ohm
Leis de ohmLeis de ohm
Leis de ohm
 
Principios de Eletronica
Principios de EletronicaPrincipios de Eletronica
Principios de Eletronica
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
Aula 04 arquitetura de computadores
Aula 04   arquitetura de computadoresAula 04   arquitetura de computadores
Aula 04 arquitetura de computadores
 
Algoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de AlgoritmosAlgoritmos - Formas de Representação de Algoritmos
Algoritmos - Formas de Representação de Algoritmos
 
Aula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e ProgramaçãoAula 01 - Algoritmo e Programação
Aula 01 - Algoritmo e Programação
 
Resumo básico de introdução à informática
Resumo básico de introdução à informáticaResumo básico de introdução à informática
Resumo básico de introdução à informática
 
Sistemas Digitais - Aula 02 - Componentes Elétricos
Sistemas Digitais - Aula 02 - Componentes ElétricosSistemas Digitais - Aula 02 - Componentes Elétricos
Sistemas Digitais - Aula 02 - Componentes Elétricos
 

Viewers also liked

Programação c# - banco de dados
Programação   c# - banco de dadosProgramação   c# - banco de dados
Programação c# - banco de dadosdouglasschaefler
 
Interop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETInterop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETAlessandro Binhara
 
Minicurso Testes em .NET - Globalcode Vinicius Quaiato
Minicurso Testes em .NET - Globalcode Vinicius QuaiatoMinicurso Testes em .NET - Globalcode Vinicius Quaiato
Minicurso Testes em .NET - Globalcode Vinicius QuaiatoVinicius Quaiato
 
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONITOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONIFábio Delboni
 
TOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulas
TOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulasTOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulas
TOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulasFábio Delboni
 
TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLFábio Delboni
 
Fundamentos do asp.net
Fundamentos do asp.netFundamentos do asp.net
Fundamentos do asp.netleojr_0
 
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)Helder da Rocha
 
C sharp feup10set2001
C sharp feup10set2001C sharp feup10set2001
C sharp feup10set2001leojr_0
 
Asp julio battisti - criando sites dinamicos com asp 3.0
Asp   julio battisti - criando sites dinamicos com asp 3.0Asp   julio battisti - criando sites dinamicos com asp 3.0
Asp julio battisti - criando sites dinamicos com asp 3.0leojr_0
 
Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#Vinicius Vieira
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Daniel Makiyama
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net codersRenato Groff
 
105 apostila asp net, c# e visual basic.net
105 apostila asp net, c# e visual basic.net105 apostila asp net, c# e visual basic.net
105 apostila asp net, c# e visual basic.netFernando Helen
 
Curso desenvolvendo web sites (asp)
Curso desenvolvendo web sites (asp)Curso desenvolvendo web sites (asp)
Curso desenvolvendo web sites (asp)Feliz Bunguele
 

Viewers also liked (20)

Programação c# - banco de dados
Programação   c# - banco de dadosProgramação   c# - banco de dados
Programação c# - banco de dados
 
Interop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETInterop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NET
 
Minicurso Testes em .NET - Globalcode Vinicius Quaiato
Minicurso Testes em .NET - Globalcode Vinicius QuaiatoMinicurso Testes em .NET - Globalcode Vinicius Quaiato
Minicurso Testes em .NET - Globalcode Vinicius Quaiato
 
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONITOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
TOTVS IP CAMPINAS FSW Treinamento .NET C# - v4 POR FABIO DELBONI
 
TOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulas
TOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulasTOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulas
TOTVS LINHA RM - FÓRMULAS - Lógica de construção de fórmulas
 
TOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQLTOTVS LINHA RM TREINAMENTO SQL
TOTVS LINHA RM TREINAMENTO SQL
 
Fundamentos do asp.net
Fundamentos do asp.netFundamentos do asp.net
Fundamentos do asp.net
 
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)
Reconstrução de pterossauros com poliestireno extrudido (24o. cbp)
 
Curso de xml
Curso de xmlCurso de xml
Curso de xml
 
C sharp feup10set2001
C sharp feup10set2001C sharp feup10set2001
C sharp feup10set2001
 
Asp julio battisti - criando sites dinamicos com asp 3.0
Asp   julio battisti - criando sites dinamicos com asp 3.0Asp   julio battisti - criando sites dinamicos com asp 3.0
Asp julio battisti - criando sites dinamicos com asp 3.0
 
Apostila de C# & Asp.Net
Apostila de C# & Asp.NetApostila de C# & Asp.Net
Apostila de C# & Asp.Net
 
Tutorial EJB 3.0 (2009)
Tutorial EJB 3.0 (2009)Tutorial EJB 3.0 (2009)
Tutorial EJB 3.0 (2009)
 
Curso asp - intermediario
Curso   asp - intermediarioCurso   asp - intermediario
Curso asp - intermediario
 
Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#Apostila desenvolvimento aplicações comerciais com C#
Apostila desenvolvimento aplicações comerciais com C#
 
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
Aprendendo Na Prática: Aplicativos Web Com Asp.Net MVC em C# e Entity Framewo...
 
C# 6.0 .net coders
C# 6.0   .net codersC# 6.0   .net coders
C# 6.0 .net coders
 
105 apostila asp net, c# e visual basic.net
105 apostila asp net, c# e visual basic.net105 apostila asp net, c# e visual basic.net
105 apostila asp net, c# e visual basic.net
 
Apostila php
Apostila phpApostila php
Apostila php
 
Curso desenvolvendo web sites (asp)
Curso desenvolvendo web sites (asp)Curso desenvolvendo web sites (asp)
Curso desenvolvendo web sites (asp)
 

Similar to Introdução ao Arduino

Robótica e Sistemas interativos utilizando Arduino
Robótica e Sistemas interativos utilizando ArduinoRobótica e Sistemas interativos utilizando Arduino
Robótica e Sistemas interativos utilizando ArduinoDomingosRodrigues16
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerGlobalcode
 
Ufes erus minicurso arduino
Ufes erus minicurso arduinoUfes erus minicurso arduino
Ufes erus minicurso arduinotamarasalvatori
 
Palestra arduino
Palestra arduinoPalestra arduino
Palestra arduinoWalter Coan
 
Slide - Introdução ao Arduino e Sensores.pdf
Slide - Introdução ao Arduino e Sensores.pdfSlide - Introdução ao Arduino e Sensores.pdf
Slide - Introdução ao Arduino e Sensores.pdfHenrique Alves
 
Arduino introdução - 10 projectos
Arduino   introdução - 10 projectosArduino   introdução - 10 projectos
Arduino introdução - 10 projectosDaniel Chavier
 
TDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDeviceTDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDeviceRicardo Rufino
 
Introdução ao arduino palestra
Introdução ao arduino palestraIntrodução ao arduino palestra
Introdução ao arduino palestraVitor Ferreira
 
Apostila arduino
Apostila arduinoApostila arduino
Apostila arduinoEdson Paz
 
Apresentação pós tic
Apresentação   pós ticApresentação   pós tic
Apresentação pós ticThiago Melo
 
Arduino - aula Teste - Ilha
Arduino - aula Teste - IlhaArduino - aula Teste - Ilha
Arduino - aula Teste - IlhaLuckas Judocka
 
Palestra sobre Arduino e Raspberry Pi (Totvs)
Palestra sobre Arduino e Raspberry Pi (Totvs)Palestra sobre Arduino e Raspberry Pi (Totvs)
Palestra sobre Arduino e Raspberry Pi (Totvs)Walter Coan
 
Sestinfo 2013 - Arduino
Sestinfo 2013 - ArduinoSestinfo 2013 - Arduino
Sestinfo 2013 - ArduinoRafael Sakurai
 

Similar to Introdução ao Arduino (20)

Robótica e Sistemas interativos utilizando Arduino
Robótica e Sistemas interativos utilizando ArduinoRobótica e Sistemas interativos utilizando Arduino
Robótica e Sistemas interativos utilizando Arduino
 
Erus minicurso arduino
Erus minicurso arduinoErus minicurso arduino
Erus minicurso arduino
 
Arduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius SengerArduino Hack Day por Vinicius Senger
Arduino Hack Day por Vinicius Senger
 
Ufes erus minicurso arduino
Ufes erus minicurso arduinoUfes erus minicurso arduino
Ufes erus minicurso arduino
 
CURSO_ARDUÍNO.pptx
CURSO_ARDUÍNO.pptxCURSO_ARDUÍNO.pptx
CURSO_ARDUÍNO.pptx
 
Palestra arduino
Palestra arduinoPalestra arduino
Palestra arduino
 
Slide - Introdução ao Arduino e Sensores.pdf
Slide - Introdução ao Arduino e Sensores.pdfSlide - Introdução ao Arduino e Sensores.pdf
Slide - Introdução ao Arduino e Sensores.pdf
 
Oficina Arduino
Oficina ArduinoOficina Arduino
Oficina Arduino
 
Arduino introdução - 10 projectos
Arduino   introdução - 10 projectosArduino   introdução - 10 projectos
Arduino introdução - 10 projectos
 
TDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDeviceTDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDevice
 
Introdução - Arduino - Renan Martins
Introdução - Arduino - Renan MartinsIntrodução - Arduino - Renan Martins
Introdução - Arduino - Renan Martins
 
Introdução ao arduino palestra
Introdução ao arduino palestraIntrodução ao arduino palestra
Introdução ao arduino palestra
 
Apostila arduino
Apostila arduinoApostila arduino
Apostila arduino
 
18. arduino
18. arduino18. arduino
18. arduino
 
Apresentação pós tic
Apresentação   pós ticApresentação   pós tic
Apresentação pós tic
 
ARDUINO.pptx
ARDUINO.pptxARDUINO.pptx
ARDUINO.pptx
 
Semana 1
Semana 1Semana 1
Semana 1
 
Arduino - aula Teste - Ilha
Arduino - aula Teste - IlhaArduino - aula Teste - Ilha
Arduino - aula Teste - Ilha
 
Palestra sobre Arduino e Raspberry Pi (Totvs)
Palestra sobre Arduino e Raspberry Pi (Totvs)Palestra sobre Arduino e Raspberry Pi (Totvs)
Palestra sobre Arduino e Raspberry Pi (Totvs)
 
Sestinfo 2013 - Arduino
Sestinfo 2013 - ArduinoSestinfo 2013 - Arduino
Sestinfo 2013 - Arduino
 

More from Helder da Rocha

Como criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.jsComo criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.jsHelder da Rocha
 
Transforming public data into thematic maps (TDC2019 presentation)
Transforming public data into thematic maps (TDC2019 presentation)Transforming public data into thematic maps (TDC2019 presentation)
Transforming public data into thematic maps (TDC2019 presentation)Helder da Rocha
 
TDC 2019: transformando 
dados
públicos
em mapas interativos
TDC 2019: transformando 
dados
públicos
em mapas interativosTDC 2019: transformando 
dados
públicos
em mapas interativos
TDC 2019: transformando 
dados
públicos
em mapas interativosHelder da Rocha
 
Padrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasPadrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasHelder da Rocha
 
Visualização de dados e a Web
Visualização de dados e a WebVisualização de dados e a Web
Visualização de dados e a WebHelder da Rocha
 
Eletrônica Criativa: criando circuitos com materiais alternativos
Eletrônica Criativa: criando circuitos com materiais alternativosEletrônica Criativa: criando circuitos com materiais alternativos
Eletrônica Criativa: criando circuitos com materiais alternativosHelder da Rocha
 
Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)Helder da Rocha
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8Helder da Rocha
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Helder da Rocha
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Helder da Rocha
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)Helder da Rocha
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Helder da Rocha
 
Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Helder da Rocha
 
Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Helder da Rocha
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)Helder da Rocha
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsHelder da Rocha
 
Threads 07: Sincronizadores
Threads 07: SincronizadoresThreads 07: Sincronizadores
Threads 07: SincronizadoresHelder da Rocha
 

More from Helder da Rocha (20)

Como criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.jsComo criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.js
 
Transforming public data into thematic maps (TDC2019 presentation)
Transforming public data into thematic maps (TDC2019 presentation)Transforming public data into thematic maps (TDC2019 presentation)
Transforming public data into thematic maps (TDC2019 presentation)
 
TDC 2019: transformando 
dados
públicos
em mapas interativos
TDC 2019: transformando 
dados
públicos
em mapas interativosTDC 2019: transformando 
dados
públicos
em mapas interativos
TDC 2019: transformando 
dados
públicos
em mapas interativos
 
Padrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasPadrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemas
 
Visualização de dados e a Web
Visualização de dados e a WebVisualização de dados e a Web
Visualização de dados e a Web
 
Eletrônica Criativa: criando circuitos com materiais alternativos
Eletrônica Criativa: criando circuitos com materiais alternativosEletrônica Criativa: criando circuitos com materiais alternativos
Eletrônica Criativa: criando circuitos com materiais alternativos
 
Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8
 
Java 9, 10, 11
Java 9, 10, 11Java 9, 10, 11
Java 9, 10, 11
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
 
Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7
 
Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)
 
Curso de Java: Threads
Curso de Java: ThreadsCurso de Java: Threads
Curso de Java: Threads
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e Streams
 
Threads 07: Sincronizadores
Threads 07: SincronizadoresThreads 07: Sincronizadores
Threads 07: Sincronizadores
 
Threads 09: Paralelismo
Threads 09: ParalelismoThreads 09: Paralelismo
Threads 09: Paralelismo
 

Introdução ao Arduino

  • 2. ARDUINO 1 Introdução Instalação e configuração www.eletronicaparaartistas.com.br Helder da Rocha
  • 3. O que é Arduino? • Uma placa para prototipagem de projetos eletrônicos • Uma plataforma eletrônica que consiste de um circuito contendo um microcontrolador (da família AVR) configurado para facilitar a programação e controle de entradas e saídas. • Criado para facilitar o uso da eletrônica por artistas • Open hardware - circuito pode ser montado e vendido sem precisar pagar royalties
  • 4. Arquitetura do Arduino Entradas (sensores, chaves, geradores de sinais) Saídas (dispositivos, mecanismos, processadores de sinais) Processamento (plataforma de computação baseada em microcontrolador)
  • 5. Programação do Arduino A programação do Arduino é feita em uma linguagem de alto-nível (é uma versão simplificada da linguagem C) A linguagem define abstrações (estruturas, variáveis e funções) que representam pinos e funcionalidades do Arduino. Antes de ser transferido para a memória do Arduino, o programa precisa ser compilado (traduzido para a linguagem de máquina do Arduino) A transferência é feita através da saída USB do computador, que também fornece energia para a placa.Algumas placas possuem entrada USB, outras requerem um adaptador. A função dos pinos do Arduino (se irão funcionar como entradas ou saídas) é definida através de programação
  • 6. Uso do Arduino • Depois que um programa é transferido para a memória do Arduino, ele executará automaticamente sempre que for conectado a uma fonte de energia elétrica • Um programa geralmente é construído para executar continuamente, lendo os sinais recebidos de sensores e controlando dispositivos • O botão RESET reinicia o Arduino (o programa é interrompido e reiniciado novamente)
  • 8. Microcontroladores • Um microcontrolador é um pequeno computador contido em um chip • O Arduino é um circuito que existe para dar suporte ao microcontrolador (que é quem faz todo o trabalho) • Arduinos usam microcontroladores da arquitetura AVR fabricados pela ATMel. Os mais usados são da série ATMega e ATTiny ATMega328 SMD ATMega168 DIL ATTiny85
  • 9. Esquema de um circuito Arduino usando ATMega328
  • 10. Exemplo de um circuito Arduino usando ATMega328
  • 11. Uso de um adaptador USB
  • 12. Placas Arduino Arduino MEGA Arduino Leonardo Arduino UNO Arduino Nano Arduino Pro Mini DigiSpark
 ATTiny LilyPad Arduino AdaFruit Gemma AdaFruit Flora DigiSpark LilyTiny
  • 15. Placas Arduino com USB • Podem ser conectadas diretamente ao computador através de um cabo USB • A entrada USB permite a transferência de programas para o Arduino (ocupa o pino digital 1) e fornece energia (5V) Cabo Mini-USB Cabo USB LilyPad Arduino USB Arduino Nano Arduino Mega Arduino Uno
  • 16. Placas Arduino sem USB • Para transferir o programa do computador para o Arduino é preciso utilizar um circuito USB-Serial LilyPad ArduinoArduino Pro Mini Adaptador USB-Serial Cabo USB LilyPad Arduino Adaptador USB-Serial
  • 17. Instalação • Para programar o Arduino é necessário usar um ambiente de desenvolvimento (IDE) para digitar o código, compilar (traduzir o código para linguagem do microcontrolador) e transferir o programa através de USB • Para que a comunicação via USB seja possível, é preciso que o computador esteja configurado para reconhecer a porta. Isto às vezes requer a instalação de um driver (programa que realiza a comunicação via USB) • O IDE pode ser baixado do site arduino.cc. O driver precisa ser baixado do site do fabricante (isto depende do Arduino usado, se é original da Itália ou clone).
  • 18. Driver do adaptador USB • Descubra se sua placa precisa e qual o fabricante; depois baixe e execute o instalador do driver). • Principais fabricantes são ATMel, FTDI e CH341 FTDI Mac, Linux & Windows https://learn.sparkfun.com/tutorials/how-to-install-ftdi-drivers CH341 Windows: http://www.wch.cn/download/CH341SER_EXE.html Mac: http://www.wch.cn/download/CH341SER_MAC_ZIP.html Linux: http://www.wch.cn/download/CH341SER_MAC_LINUX.html ATMel Instalação é feita automaticamente durante a instalação do ambiente de desenvolvimento (IDE)
  • 19. Aplicação Arduino (IDE) • Baixe o instalador em https://www.arduino.cc/en/Main/Software • Disponível para Windows, Mac e Linux • Instala automaticamente o driver USB Atmel Arduino
  • 20. Seleção do tipo de placa É necessário selecionar a placa usada para que a compilação seja feita corretamente A aplicação Arduino lista as placas mais conhecidas (se uma placa não estiver na lista, é necessário baixar e instalar suporte para ela)
  • 21. Seleção da porta de comunicação USB Como descobrir a porta: 1. Desconecte o cabo USB e veja quais as portas que aparecem no menu Tools/Serial Port. 2. Reconecte o cabo e selecione o menu Tools/Serial Port novamente. A porta que aparecer na lista é a porta do Arduino No Windows a porta aparece como COM2, COM3, COM4, etc. No Mac e Linux a porta começa com /dev/cu ou /dev/tty e contém "usb" no nome Se não aparecer uma porta nova ao conectar o Arduino em USB, o driver pode não ter sido instalado corretamente Às vezes é necessário reiniciar o computador (a versão do driver também pode ser incompatível com a versão do sistema operacional usado)
  • 22. Arduino IDE: barra de menu Monitor serial Permite imprimir na tela dados do Arduino conectado via USB (usa o pino digital 0) Compila o programa (erros indicam problemas no programa, como erros de sintaxe, falta de bibliotecas, etc.) Transfere o programa para o Arduino (erros indicam problemas na transferência como falta de drivers, uso do pino 1, etc.) Abre uma janela nova 
 (com um editor em branco ou contendo o programa mínimo) Abre um programa armazenado em disco (mesmo que File/Open) Grava um programa em disco
 (mesmo que File/Save)
  • 23. Compilando um programa Aperte aqui para compilar o programa (aplicação irá tentar converter o programa em linguagem de máquina) Erros de compilação impedem a geração do código de máquina (geralmente são causados por erros de sintaxe, falta de bibliotecas, etc.)
  • 24. Programa mínimo Carregue programa BareMinimum é o programa mais simples que compila (mas não faz nada) Programa mínimo contém dois blocos (instruções estarão entre chaves { ... } ) void setup(): Contém instruções que irão executar uma única vez (na inicialização do programa) void loop(): Contém instruções que irão executar continuamente (as instruções se repetem)
  • 25. Transferindo o programa para a placa Depois de compilado com sucesso (sem erros) o programa poderá ser transferido para o Arduino Se a transferência ocorrer com sucesso, o Arduino poderá ser desconectado Causas mais comuns de erros que acontecem durante a transferência • Tipo de Arduino incorreto (veja menu Board) • Porta de comunicação incorreta (veja menu Port) • Pino 1 está sendo usado pelo circuito (desligue-o durante a transferência) Aperte aqui para transferir o programa
  • 27. • Programas não podem ser transferidos via USB se o pino D1 estiver sendo usado. • O Monitor Serial não irá funcionar se o pino D0 estiver sendo usado. • O pino D13 está permanentemente conectado a um LED Evite usar pinos D0, D1 e D13 Pinagem ARDUINO NANO
  • 28. Arduino Nano no protoboard D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 GND RST RX0 TX1 D13 3V3 REF A0 A1 A2 A3 A4 A5 A6 A7 5V RST GND VIN Encaixe os terminais com cuidado, mas firmemente (não deve haver maus contatos) Protoboard conecta 2 a 3 soquetes por pino
  • 29. Teste da instalação com o programa "Blink" 1. Conecte o Arduino ao computador via USB 2. Carregue o programa "01.Basics/Blink" 3. Veja o LED "L" da placa Arduino piscar 4. Desconecte o Arduino do computador e reconecte a uma fonte de energia (9V) usando a entrada P4 (Arduino UNO) ou pinos VIN(+) e GND(-) (Arduino Nano)
  • 31. Lógica digital • Associa valores de tensão a níveis lógicos binários (0 ou 1) • O valor da tensão é uma referência. A referência mais comum para o valor ALTO (HIGH) ou LIGADO (ON) é 5V • A referência para o valor BAIXO (LOW) ou DESLIGADO (OFF) é 0V • Em programação, 5V é representado pelo algarismo 1 e 0V é representado pelo algarismo 0 • Informação é representada em programas de computador através de sequências de 0s e 1s (lógica binária). A unidade é o bit (que pode ser 0 ou 1) e palavras (sequências) de 8 bits são bytes. • Bits são representados em eletrônica por chaves (geralmente transistores) que podem reter 5V (armazenam a informação 1) ou 0V (armazenam 0). A lógica também pode ser inversa. 0 1 0
  • 32. LED (Light-Emmiting Diode) Corrente máxima: 20mA Tensão sobre o LED em 20mA é fixa LEDs vermelhos e amarelos: ~2V LEDs verdes, azuis e brancos: ~3V Para limitar a corrente em 20mA em circuitos com Arduino use um resistor de no mínimo 150 ohms
  • 33. digitalWrite "Blink" LED acende quando pino 8 for HIGH LED apaga quando pino 8 for LOW K KA A
  • 34. Troque o LED pela cigarra (use o mesmo programa que pisca o LED) + -
  • 35. Positivo e negativo Nos esquemas e dispositivos (módulos, arduinos) é comum usar os nomes: • VCC (+), ou V+
 
 (Voltage = tensão; CC é sufixo usado por convenção) • GND (-)
 
 (GrouND = terra = pólo negativo = 0 volts) Referência é relativa! Tensão é DIFERENÇA de potencial VCC para GND (+) GND para VCC (-) GND para GND (0) VCC para VCC (0)
  • 36. digitalWrite "Blink" LED acende quando pino 8 for LOW LED apaga quando pino 8 for HIGH K K A A
  • 37. Usando múltiplos pinos Catodo comum ligado em GND Anodo comum ligado em VCC corrente corrente Pino-GND Pino-VCC
  • 38. Vários LEDs (anodo comum) Anodo comum: LED acende quando pino em LOW (VCC é sempre HIGH)
  • 39. LEDs em anodo comum Nesta configuração, LEDs acendem quando pino está em LOW. Se LEDs forem montados em catodo comum, os catodos são ligados em GND e os LEDs acendem quando seu pino estiver em HIGH
  • 40. LED RGB (anodo comum) Anodo comum: LED acende quando pino em LOW (VCC é sempre HIGH)
  • 41. Relé (chave eletromecânica) 8 pinos 2 pinos: eletroimã (circuito do Arduino): 5V 6 pinos: 2 chaves de 2 posições (circuitos independentes): até 120V / 1A 5 pinos 2 pinos: eletroimã (circuito do Arduino): 5V 3 pinos: chave de 2 posições (circuito independente): até 240V / 7A
  • 42. Diodos 1N4148 1N4001 A K K A K A Permite a passagem de corrente apenas em um sentido (não conduz no outro sentido) Diodos de propósito geral são usados para em retificadores de corrente (corta correntes negativas), circuitos de proteção (contra correntes armazenadas em motores e relés) Os diodos do kit podem ser 1N4001 ou 1N4148
  • 43. Troque o LED por um relé diodo de proteção circuito independente (use o mesmo programa que pisca o LED)
  • 44. O diodo de proteção • Relés (e indutores em geral - inclui motores, solenóides) armazenam corrente que fluem no sentido oposto quando componente é desligado • Para evitar que essa corrente oposta volte para o Arduino através do pino GND (podendo causar danos), deve-se colocar um diodo de proteção em posição reversa e em paralelo com os terminais do relé. • O diodo só permite a passagem da corrente em um sentido, e anulará correntes reversas com um curto no indutor. • IMPORTANTE: o diodo precisa estar em posição REVERSA, com o catodo (K) do lado positivo e o anodo (A) no negativo. Se a configuração for Pino-GND, ligue A em GND e K no pino. Na configuração Pino-VCC, ligue K em VCC/5V e A no pino. O diodo em posição direta causará um curto e queimará o pino. K A + -
  • 45. Usando um relé 
 de 5 pinos 
 (1 circuito, 2 posições)
  • 48. Níveis lógicos (saída) Nível lógico em pino configurado com pinMode OUTPUT é traduzido para uma tensão de valor VCC (5V ou 3,3V) ou 0V. Para usar a tensão produzida por um pino OUTPUT em um circuito é preciso observar os limites de corrente*: ~40mA para qualquer pino digital ~100mA para pinos de um grupo (D1-D7, D8-D13, A0-A5) ~200mA para o Arduino inteiro (vários pinos) ~50mA para o pino 3,3V (nos modelos de 5V) ~500mA para o pino VCC/5V ou GND (limite USB) ATENÇÃO: Ligar OUTPUT com nível LOW diretamente a VCC, ou OUTPUT com nível HIGH diretamente a GND sem limitar a corrente produz um curto-circuito que queima o pino. Use um resistor calculado para limitar a corrente demandada pelo circuito de saída quando a diferença de potencial entre o pino e VCC ou GND for máxima (5 volts) Arduino VCC/5V 3,3V GND D1 a D19 D1+D7 D8+D13 D14+D19 D1+D19 até 500mA até 50mA até 500mA até 40mA até 100mA até 100mA até 100mA até 200mA * valores típicos do Uno - valores são diferentes em outros modelos e clones
  • 49. Display de LEDs de 7 segmentos O modelo acima (HS 5101A) possui um catodo comum
  • 50. Display de LEDs de 7 segmentos Produz uma contagem de
 00 a 99
  • 52. int valor = digitalRead(pino) VCC 5V ou 3,3V 1 = HIGH VCC representa o nível lógico HIGH do Arduino (5V ou 3,3V dependendo do tipo) Se VCC for 5V (Arduino Uno) LOW = 0V, HIGH = 5V Se VCC for 3,3V (Due, LilyPad, ProMini) LOW = 0V, HIGH = 3,3V Não há como mudar o nível VCC do Arduino. Ele é fixo. Cada pino em nível HIGH terá esse valor. Para conectar componentes com níveis lógicos incompatíveis (3,3V x 5V) é preciso usar um conversor de nível lógico (pode ser um divisor de tensão) 0V 0 = LOW valor = 0 (LOW) ou valor = 1 (HIGH)
  • 53. digitalRead Estado do pino 3 quando chave estiver aberta é INDEFINIDO (pode se traduzido como HIGH ou LOW, ou ficar mudando)
  • 54. Níveis lógicos (entrada) Pino VCC (Pino 5V em Arduino Uno/Nano) sempre fornece nível lógico HIGH Pino GND sempre fornece nível lógico LOW Pinos digitais D1 a D19 têm níveis lógicos indefinidos (podem ser interpretados como HIGH ou LOW) Pino digital configurado como INPUT (default) pode ser ligado a VCC (HIGH) ou GND (LOW) para ter valor definido Ligação pode ser direta (fio) ou via resistor de pull-up (para VCC) ou pull-down (para GND) Arduino VCC GND D1 Sempre HIGH Sempre LOW Indefinido Arduino VCC GND D1 LOW Arduino VCC GND D1 HIGH Sempre HIGH Sempre LOW Sempre HIGH Sempre LOW
  • 55. Níveis lógicos reais (entrada) VCC 5V (ou 3,3V) 1 = HIGH Um valor de tensão é traduzido para o nível lógico 1 (HIGH) se for maior que 60% da tensão VCC do Arduino Um valor de tensão é traduzido para o nível lógico 0 (LOW) se for menor que 30% da tensão VCC do Arduino Valores intermediários são indefinidos e serão traduzidos para qualquer um dos dois níveis lógicos (não há como prever)0V 0 = LOW 60% Vcc 3V (ou 2V) 30% Vcc 1,5V (ou 1V) Nível indefinido 1,5 a 3V (ou 1 a 2V)
  • 56. Pull-up e Pull-down Resistores de pull-down (ou pull-up) garantem estado inicial definido quando a chave estiver aberta
  • 57. Pino 3 com um resistor de pull-up Agora o valor do pino 3 quando o botão não estiver apertado é HIGH e muda para LOW apenas quando estiver sendo pressionado
  • 58. Adicione uma chave de inclinação (tilt) Incline o protoboard para ver o LED acender ou apagar
  • 59. Adicione uma chave magnética (reed) Aproxime um imã para ver o LED acender ou apagar
  • 60. Esquema: Chave + Tilt + Reed
  • 62. Circuito bi-estável (set/reset) Usando o pinMode INPUT_PULLUP não é necessário usar resistores de pull-up (o Arduino já fornece um pull-up interno) Botão D3: set (acende e mantém aceso) Botão D4: reset (apaga o LED)
  • 63. Troque o set por um fototransistor Use um LED infravermelho (ou luz direta) para acionar o sensor (O LED infravermelho tem uma tensão direta a 20mA de 1,6V; você pode usar com esta pilha de 3V por alguns segundos; conecte um resistor de 100 ohms se precisar manter ligado mais tempo) C E Experimente também usando outros sensores: Chave tilt Chave reed Quando o sensor fechar o circuito o LED acende (set) e só apaga quando o botão (reset) é apertado CE
  • 64. Troque o set por um sensor de som Transistor amplifica o sinal e gera pulso no pino D3 B C E BC548 ou 2N2222 BC548 BC549 C B E BC548 Pequeno pulso no microfone é suficiente para disparar o transistor e mudar o estado do circuito
  • 65. Troque o set por um sensor de som Transistor amplifica o sinal e gera pulso no pino D3 B C E BC548 ou 2N2222 2N2222 2N3904 C B E 2N 2222 Pequeno pulso no microfone é suficiente para disparar o transistor e mudar o estado do circuito
  • 66. Amplificação do sinal do microfone
  • 67. Troque o set por um sensor de deformação (diodos de propósito geral) 1N4148 1N4001 A K K A A A K K K A C E B BC548
  • 68. Troque o set por um sensor de deformação (diodos de propósito geral) 1N4148 1N4001 A K K A A A K K K A2N2222 C B E
  • 70. analogWrite Experimente também trocar o LED por cigarra (buzzer) K KA A
  • 71. analogWrite(pino, valor) valor = 255 valor = 128 valor = 192 valor = 64 HIGH LOW HIGH LOW HIGH LOW HIGH LOW 100% 50% 75% 25% valor = 0 HIGH LOW 0% PWM (Pulse-Width Modulation) simula saída analógica (não é saída analógica verdadeira) Acende (HIGH) e apaga (LOW) rapidamente; simula efeito analógico variando tempo em HIGH e LOW Únicos valores produzidos são VCC (5V ou 3,3V) e 0V Saída analógica verdadeira requer circuito retificador (com capacitores) Frequência do PWM em Arduino Uno/Nano
 Pinos 3, 9, 10 e 11: 31250Hz
 Pinos 5 e 6: 62500Hz 1 pulso (16 a 32µs) valor simulado
  • 72. MOSFET • MOSFETs são transistores muito usados na eletrônica digital (principalmente em circuitos que utilizam grandes quantidades de transistores, como chips) • São similares aos transistores bipolares. O terminal G (gate, comporta) tem função similar à base (B). D (drain, dreno) é similar ao coletor (C), e S (source, fonte) ao emissor. • A principal diferença é que o transistor não requer corrente alguma em G. Ele é ligado aplicando uma tensão em G que carrega o capacitor interno e abre a comporta entre D e G. • O consumo de energia é baixo, podem ser usados em cascata facilmente, mas são vulneráveis a cargas eletrostáticas. Metal-Oxide-Semiconductor Field-Effect Transistor D S G MOSFET Canal-N Símbolo simplificado + - + - "Ligue" o MOSFET aplicando tensão positiva (> +2V) no seu terminal G
  • 73. Controle de motor DC com PWM MOSFET isola o circuito do motor que é alimentado separadamente Arduino controla o G do MOSFET com PWM
  • 74. Controle de motor DC com PWM DS G 2N7000 1N4148 A K Use mesmo programa do LED e motor irá acelerar e desacelerar continuamente O motor de DVD incluído no kit pode ser alimentado pelo pino 5V do Arduino pois sua demanda de corrente é baixa (35mA) e os picos não ultrapassam 100mA (mas não faça isto com outros motores DC)
  • 76. int valor = analogRead(pino) AREF Default = 5V ou 3,3V 1024 posições (valor: 0 a 1023) Se AREF for 5V (Arduino Uno, Nano) V = (valor / 1024) * 5V Se AREF for 3,3V (Due, LilyPad, ProMini) V = (valor / 1024) * 3,3V Se AREF for 1,1V (Internal) V = (valor / 1024) * 1,1V AREF=VREF (<5V no pino AREF) V = (valor / 1024) * VREF0V Valor lido é inteiro com resolução de 1/1024 da tensão de referência AREF AREF é a referência de tensão máxima para leitura analógica. Normalmente é usada a tensão VCC do Arduino (5V ou 3,3V) Mas AREF pode ser alterada: Via software, usando instrução analogReference(): 1,1V Via hardware, aplicando tensão no pino AREF: tensão < 5V
  • 77. analogRead Abra o monitor serial para ver as mensagens com o valor lido no potenciômetro
  • 78. Troque o potenciômetro por um LDR O LDR pode ser conectado a qualquer pino analógico, com um resistor de pull-up (se conectado a GND) ou de pull-down (se conectado a VCC) A tensão de referência analógica é 5V (default) portanto pra calcular a tensão no pino divide-se por 1024 e multiplica-se por 5
  • 79. Troque potenciômetro por termistor O termistor do kit é NTC 5k (significa que sua temperatura cai com o calor, e que a resistência mede 5k ohms aos 25 graus Celsius) É preciso calibrar o termistor para determinar a temperatura.
  • 80. Termômetro analógico com LM35 Veja resultados no Monitor Serial VCC GND OUT 10mV para cada °C entre OUT e GND
  • 81. Termômetro usando display de LEDs de 7 segmentos http://eletronicaparaartistas.com.br/alteracao-35-1-termometro-com-display-de-7-segmentos/ Veja código no link acima ou baixe do GitHub
  • 83. Sensor de luminosidade com LED RGB LED ficará vermelho com pouca luz e azul com muita luz. Ficará verde com luz intermediária Troque o potenciômetro por um divisor de tensão com LDR
  • 84. Controle de motor com PWM DS G 2N7000 1N4148 A K D G S Gire o potenciômetro para variar a velocidade do motor
  • 85. Troque o potenciômetro por um LDR Motor gira mais rápido quando está claro e mais devagar quando está escuro (ou vice- versa - é só mudar no código) DS G 2N7000 1N4148 A K D G S
  • 86. Helder da Rocha ARDUINO 6 www.eletronicaparaartistas.com.br Dispositivos controlados por pulsos Geração de pulsos Leitura de pulsos
  • 87. tone(pino, frequencia) Gera pulsos de ondas quadradas em determinada frequência 
 (em Hertz - pulsos por segundo) • O Arduino gera apenas um tom de cada vez, que continua até que haja uma instrução noTone(pino) • Duração também pode ser especificada (em ms): tone(pino, frequencia, duracao)
  • 88. Gerando pulsos Diversos dispositivos e sensores são controlados por pulsos. Um pulso é um sinal com duração especificada no estado oposto ao inicial/final. Pode ser gerado usando digitalWrite() + delay() ou delayMicroseconds() • Pulso LOW no pino 12 com 5ms de duração (estado inicial/final é HIGH) digitalWrite(12, LOW); delay(5); digitalWrite(12, HIGH); 5ms • Pulso HIGH no pino 7 com 5µs de duração (estado inicial/final é LOW) digitalWrite(7, HIGH); delayMicroseconds(5); digitalWrite(7, LOW); 5µs • Dois pulsos HIGH no pino 9, com 1µs e 10µs, com intervalo de 50µs digitalWrite(9, HIGH); delayMicroseconds(1); digitalWrite(9, LOW); delayMicroseconds(50); digitalWrite(9, HIGH); delayMicroseconds(5); digitalWrite(9, LOW); 10µs1µs 50µs
  • 89. Controle com PWM • PWM - Pulse Width Modulation é a produção de pulsos contínuos variando a largura do pulso HIGH. • analogWrite(pino, largura) varia o duty-cycle, que é a proporção da largura do pulso HIGH em relação ao LOW = 0 (0%) a 255 (100%) e independe da frequência • Controle de dispositivos como servos usam outra forma de PWM que independe do duty-cycle e utiliza pulsos com largura específica (não pode ser feito com analogWrite) • Para controlar um servo motor típico é preciso gerar no máximo um pulso HIGH a cada 20ms com largura variando de 1 a 2ms, onde 1ms = -90 graus, 2ms = +90 graus e 1,5ms = 0 graus (centro) 1,5ms 20ms 1,5ms 2ms 20ms 2ms1ms 20ms 1ms -90° +90°0°
  • 90. Controle de um Servo A forma mais fácil de controlar um servo é incluir a biblioteca Servo.h disponibilizada pelo portal arduino.cc Gira 0 a 180 graus (0 = min, 90 = centro, 179 = max) Declara objeto (variável) Inclui a biblioteca Informa pino PWM onde está o servo
  • 91. Sensor ultrassônico HC-SR04 pulsoultrassônico eco Pulso ultrassônico 8x40kHz SinalenviadoSinalrecebido O sensor é ativado através do envio de um pulso HIGH de 10µs ao pino TRIG, provocando o envio de um pulso ultrassônico (a 40kHz) que deverá refletir em uma superfície situada entre 1cm e 2m de distância. O eco do pulso é recebido pelo sensor que mede o intervalo de tempo entre o envio e o recebimento. Um pulso HIGH com duração proporcional à distância é enviado ao pino ECHO. +5V TRIG ECHO GND Para ler a duração de um pulso em µs: pulseIn(pino, nível) pulseIn(pino, nível, timeout_µs)
  • 92. Sensor de distância Instrução pulseIn(pino, nível) retorna duração do pulso em µs (ou 0 se estourar o timeout) Veja resultados no Monitor Serial
  • 93. LEDs endereçáveis Instale as bibliotecas: FastLED e/ou AdaFruit NeoPixel Abra, altere e rode os exemplos: 1) NeoPixel: RGBWstrandtest Mude as linhas #define PIN 4 #define NUM_LEDS 5 2) FastLED: DemoReel100 Mude as linhas #define DATA_PIN 4 #define NUM_LEDS 5 LEDs RGB WS2812 são pixels endereçáveis Veja como usar usando exemplos das bibliotecas FastLED e AdaFruit NeoPixel
  • 94. www.eletronicaparaartistas.com.br Veja mais em Introdução ao Arduino Helder da Rocha (agosto 2017)