PROJETO 1
Prof. Eng. Luiz Gustavo
OBJETIVO GERAL DO PROJETO
Projeto: Pisca LED (o famoso blink)
-Objetivo: Fazer um led acender e apagar por
intervalos de tempo pré-definidos resultando
no efeito de um pisca-pisca.
LISTA DE COMPONENTES
Componente Quantidade
Arduino uno com cabo USB 1
Jumpers macho-macho 2
Protoboard 400 furos 1
Led 1
Resistor 220 ohms 1
ANÁLISE DO HARDWARE
ARDUINO
É um pequeno computador capaz de lê entradas,
processar dados e programar saídas
Plataforma de computação física ou embarcada,
ou seja, pode interagir com o ambiente por meio
de hardware e software
Ele é uma plataforma de prototipagem
Ele não é um microcontrolador, e sim possui um.
ANÁLISE DO HARDWARE
PROTOBOARD
É um dispositivo reutilizável, sem solda, utilizado para
prototipar um circuito eletrônico ou para experimentar
projetos de circuitos.
A placa consiste em uma série de furos em grade; sob a
placa , estes furos são conectados por uma tira de metal
condutivo exatamente como mostrado na figura ao lado.
É importante lembrar que há um espaço vazio no meio da
protoboard que tem o objetivo de encaixar Circuitos
integrados, de modo que cada pino do chip vá em um
barramento diferente.
ANÁLISE DO HARDWARE
LED – Características básicas
LED siginifica: Light Emitting Diode
DIODO EMISSOR DE LUZ
O diodo é um dispositivo que permite o fluxo de
corrente elétrica em apenas um sentido.
Um LED também é um diodo todavia ele também
emite luz.
Existem vários tipos de cores e intensidades
luminosas além da parte ultravioleta e infravermelha
do espectro.
ANÁLISE DO HARDWARE
LED – Características físicas
O LED possui dois terminais de
comprimentos diferentes:
ÂNODO E CATODO
O ÂNODO é o terminal de maior comprimento ,
parte cilíndrica do LED, e recebe o potencial
POSITIVO do Arduino (Ex: +3,3V)
O CÁTODO é o terminal de menor comprimento,
parte chanfrada do LED, e recebe o potencial GND,
ou também chamado de terra.
Se você conectar o LED com o lado invertido ele não
vai funcionar e dependendo da corrente ele pode ser
danificado de forma permanente
ANÁLISE DO HARDWARE
É possível obter LED’s bicollores ou tricolores, que possui
vários terminais saindo dele.
Um LED RGB oferece um LED vermelho, verde e
azul. (Red, green, blue) .
É possível variar a intensidade de cada cor obtendo
qualquer cor desejada.
ANÁLISE DO HARDWARE
RESISTOR
É um dispositivo projetado para provocar resistência à
passagem da corrente elétrica, causando uma queda na
voltagem em seus terminais
O valor de sua resistência é conhecido, e sua unidade é
dada em Ohm , e seu símbolo é o ômega grego [Ω].
Seu valor é determinado por Neste caso, a função do resistor é Limitar a tensão e
meio de um código de cores que a corrente que o led ficará submetido.
fica gravado no seu corpo.
ANÁLISE DO HARDWARE
POR QUE É IMPORTANTE O COLOCAR UM RESISTOR?
Especificação do LED Pino digital do Arduino
Grandeza Valor Grandeza Valor
Tensão 2V Tensão 5V
Corrente 35 mA Corrente 40 mA
ANÁLISE DO HARDWARE
RESISTOR: CALCULANDO A RESITÊNCIA NECESSÁRIA
R ??
5v
iL 2v 3v
VR = [Link] R = 85,7 Ω
3 = R.35. 10-³ Como não existe resistor comercial com este
valor é escolhido uma resistência próxima
com um valor maior, no caso: 100 Ω
ANÁLISE DO HARDWARE
Calculei o valor. Como identifico fisicamente a
resistência com o valor desejado?
Resistores vêm com valor padrão, e devemos escolher
sempre aquele que tiver a resistência próxima daquela
que calculamos
Para este caso, sempre escolha o valor mais próximo e
MAIOR que o valor calculado pois se você fizer o
contrário poderá queimar o LED
Nós identificamos o valor da resistência por meio do
código de cores gravado em seu corpo de ACORDO COM
A TABELA A SEGUIR
ANÁLISE DO HARDWARE
ESQUEMÁTICO DE MONTAGEM
A perna maior do Led
A perna menor do Led
deve ser conectada no
deve ser conectada no
pino 9.
pino GND.
Esta perna é chamada de
Esta perna é chamada de
Anodo.
catodo.
ALGORITMO OU PASSO-A-PASSO
Início
Declarar o pino digital 9
como saída
Acender o Led
Esperar 1 segundo
Apagar o led
Esperar 1 segundo
Vamos escrever o código?
AGORA SUA MISSÃO É TRANSFORMAR ESTE
ALGORITMO, PASSO-A-PASSO EM UM CÓDIGO DE
PROGRAMAÇÃO.
ANÁLISE DO CÓDIGO ARDUINO
Trata-se apenas de um comentário textual. É essencial
para o código pois ajuda na compreensão do mesmo
como ajuda na recordação das funcionalidades.
// PROJETO 1 – LED PISCANTE Se o seu código estiver sendo lido por outra
pessoa, os comentários ajuda na compreensão.
Os comentários são iniciados por // e são
desprezados pelo compilador, ou seja, NÃO FAZ
/* PARTE DA PROGRAMAÇÃO.
PROJETO 1 – LED PISCANTE
*/
ANÁLISE DO CÓDIGO ARDUINO
Coloque nome da variável Esta linha se refere à declaração de uma variável.
que seja descritivo, ou
seja, que faça sentido
dentro do código
Uma variável é um local em que podemos
armazenar dados, ou seja, é como se fosse uma
int ledPin = 9; caixinha que guardamos objetos.
O nome deve iniciar com uma A variável tem três característica:
LETRA e não pode ser igual a [Link]. Ex: inteiro (int)
nenhuma palavra chave da 2. Nome. Ex: ledPin
linguagem C (while, if ,etc) 3. Valor armazenado
Um inteiro para o Arduino é um Ao final da instrução há um ponto e vírgula. Este
número entre -32768 a 32767 símbolo diz ao compilador que a instrução está
completa.
ANÁLISE DO CÓDIGO ARDUINO
O sketch(código) do Arduino deve ter uma
void: Significa que a função setup() e outra função loop(), do
função não retorna contrário, não funcionará
nenhum resoltado
A função setup é executada apenas uma vez no
início do programa. Geralmente é utilizada para
configurar parâmetros gerais do programa.
void setup() {
pinMode(ledPin, OUTPUT) ; Uma função é uma porção de código agrupada em
} um bloco. É muito útil quando você quer realizar
uma série de operações complicadas. Quando você
Os parênteses vazios () indica coloca dentro de uma função, você pode executar
que não é necessário fornecer quantas vezes quiser apenas chamando seu nome.
nenhum parâmetro para que
esta função seja executada.
Todo código dentro da função deve está contido
entre as chaves. O símbolo “{ “inicia e o outro “} “
termina o bloco
ANÁLISE DO CÓDIGO ARDUINO
A função setup neste programa possui apenas
uma instrução dentro dela: pinMode.
Ela define o modo de um dos pinos digitais do
Arduino. No caso, ela definiu como saída
(OUTPUT), e não como entrada (INPUT).
pinMode(ledPin, OUTPUT) ;
Neste caso, o pino escolhido foi o ledPin, que no
caso vale 10, já declarado anteriormente
Esta função está dizendo o seguinte para o Arduino:
DEFINA O PINO 9 COMO SAÍDA DE DADOS
ANÁLISE DO CÓDIGO ARDUINO
A função loop() é uma função do programa que
executa continuamente enquanto o Arduino
estiver ligado.
Cada instrução é executada passo-a-passo, uma
void loop() { por voz, na sequência escrita e mostrada ao lado,
digitalWrite(ledPin, HIGH); até que se alcance o fim da função
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
Depois de todas as instruções da função loop serem
} executadas, o loop reinicia desde o príncipio e
executada infinitamente, ou até que o Arduino seja
desligado, ou botão de Reset seja pressionado
ANÁLISE DO CÓDIGO ARDUINO
Esta função escreve um valor ou também
Acender o Led chamado de nível lógico digital HIGH(alto) ou
LOW(baixo) para o pino de dentro da instrução
Quando se define HIGH o Arduino envia 5V para o
digitalWrite(ledPin, HIGH); respectivo pino digital enquanto que o LOW envia
0V ou terra.
Como no esquemático o anodo do led está
ligado na porta digital do Arduino e o catodo no
terra, ao enviar HIGH para o pino, o LED ACENDE.
ANÁLISE DO CÓDIGO ARDUINO
Esperar 1 segundo com o
LED ACESO
Diz ao Arduino esperar um tempo especificado
em milissegundos, antes de executar a próxima
instrução.
delay(1000);
Neste caso, o Arduino vai aguardar 1 SEGUNDO
ANÁLISE DO CÓDIGO ARDUINO
APAGAR O LED digitalWrite(ledPin, LOW);
ESPERAR 1 SEGUNDO delay(1000);
PROJETO 2
Prof. Eng. Luiz Gustavo
OBJETIVO GERAL DO PROJETO
Projeto: CÓDIGO MORSE S.O.S
-Objetivo: Fazer um led piscar simulando o sinal de socorro
internacional em código Morse através das letras S.O.S.
O código Morse é um tipo de codificação de
caracteres que transmite letras e números utilizando
o padrão ligado e desligado
Código MORSE
Traço curto: Tempo curto: 150 ms
Traço Longo: Tempo longo: 400 ms
LISTA DE COMPONENTES
Componente Quantidade
Arduino uno com cabo USB 1
Jumpers macho-macho 2
Protoboard 400 furos 1
Led 1
Resistor 220 ohms 1
ANÁLISE DO HARDWARE
ARDUINO RESISTOR
A ANÁLISE JÁ FOI FEITA NO
PROTOBOARD VÍDEO ANTERIOR:
LED PROJETO 1 – LED PISCANTE
ESQUEMÁTICO DE MONTAGEM
MESMO
ESQUEMÁTICO
DO VÍDEO
ANTERIOR:
PROJETO 1 – LED
PISCANTE
A perna maior do Led
A perna menor do Led
deve ser conectada no
deve ser conectada no
pino 9.
pino GND.
Esta perna é chamada de
Esta perna é chamada de
Anodo.
catodo.
ALGORITMO OU PASSO-A-PASSO
Início
Declarar o pino digital 9
como saída
Marca 3 pontos Símbolo: S
Esperar 1 segundo Intervalo entre letras
Marca 3 traços Símbolo: O
Esperar 1 segundo Intervalo entre letras
Marca 3 pontos Símbolo: S
Esperar 1 segundo Intervalo entre letras
Vamos escrever o código?
AGORA SUA MISSÃO É TRANSFORMAR ESTE
ALGORITMO, PASSO-A-PASSO EM UM CÓDIGO DE
PROGRAMAÇÃO.
ANÁLISE DO CÓDIGO ARDUINO
Iremos fazer a análise detalhada apenas dos
conceitos novos. O restante já foi analisado
anteriormente no projeto 1.
Nos demais projetos só serão analisados os novos
conceitos de hardware e software
ANÁLISE DO CÓDIGO ARDUINO
Este bloco é responsável pela saída dos 3 pontos
A CADA LOOP A
CONDIÇÃO É TESTADA!
Isto é feito utilizando a função loop: for.
for (int x=0; x<3; x++) { É uma função de repetição.
digitalWrite(ledPin, HIGH);
delay(150);
digitalWrite(ledPin, LOW); A função “for” precisa de 3 parâmetros:
delay(100); 1. Inicialização
} 2. Condição
3. Incremento
QUANDO A CONDIÇÃO SE
TORNA FALSA , O PROGRAMA
SAI DA FUNÇÃO. As instruções dentro deste bloco são repetidas e o
incremento somado enquanto a condição for
verdadeira.
ANÁLISE DO CÓDIGO ARDUINO
DETALHANDO A FUNÇÃO FOR
1º Definir uma variável “x” e declarar como zero para ser
o inicializador . int x = 0
• == (igual a)
2º Definir uma condição para decidir quantas vezes o
• != (nao igual a)
código será repetido. x<3. As instruções do bloco serão
• < (menor que)
repetidas 3 vezes.
• > (maior que)
• <= (menor ou igual a)
3º Inserir um incremento: x++. É uma instrução que
• >= (maior ou igual a)
eleva o valor de x em uma unidade. Pode ser escrito
também x = x +1.
•1+1=2
•3-2=1
•2*4=8
•8/2=4
PROJETO 3
Prof. Eng. Luiz Gustavo
PROJETOS BÁSICOS
3. Semáforo
Projeto: Semáforo de trânsito
-Objetivo: Fazer 3 leds simularem o
funcionamento de um sinal de trânsito.
PROJETOS BÁSICOS
3. Semáforo
Lista de componentes
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 4
Protoboard 400 furos 1
Led vermelho 1
Led amarelo 1
Led verde 1
Resistor 220 ohms 3
Análise do código e Hardware
Este projeto contempla os mesmos componentes e
códigos da linguagem de programação dos projetos
anteriores.
PROJETOS BÁSICOS
3. Semáforo
Esquemático de montagem
ALGORITMO OU PASSO-A-PASSO
Início
[Link] os 3 pinos como saída.
2. Apagar todos os leds
Configurar parâmetros 3. Define o tempo de espera do
verde ou vermelho
Acender o verde
Apagar o vermelho
Esperar 5 segundo Sinal verde por 5 segundos
Apagar o verde
Acender o amarelo
Esperar 1 segundo Sinal amarelo por 1 segundo
Apagar o amarelo
Acender o vermelho
Esperar 5 segundo Sinal vermelho por 5 segundos
PROJETO 4
Prof. Eng. Luiz Gustavo
PROJETO 4
Semáforo Interativo
Projeto: Semáforo de trânsito Interativo
-Objetivo: Inserir no projeto anterior(semáforo), um semáforo
para pedestres, e um botão para que os pedestres solicitem a
travessia da rua.
Este é o primeiro projeto em que nós iremos interagir com o
Arduino, fazendo-o realizar algo, que neste caso, é por meio do
botão.
PROJETOS BÁSICOS
3. Semáforo
Lista de componentes
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 4
Protoboard 400 furos 1
Led vermelho 2
Led amarelo 1
Led verde 2
Resistor 220 ohms 5
Resistor de 150 Ω 1
Botão táctil(push button) 1
ANÁLISE DO HARDWARE
[Link] um componente novo neste projeto:
Botão táctil ou botão momentâneo ou push button
2. O resistor de 150 Ω estará conectado no botão mas
terá uma função diferente daquela que vimos nos
projetos anteriores.
ANÁLISE DO HARDWARE
ESTADOS LÓGICOS
Um circuito lógico é um circuito para
emitir uma saída de ligado ou
desligado, representado pelos números
binários 1 e 0, respectivamente.
Estado Número binário Nível de Tensão Nível lógico
Mas... O que
é resistor DESLIGADO 0 0V (ou próximo) LOW
pull-up e LIGADO 1 5V(ou próximo) HIGH
pull-down?
Se a voltagem não ficar próxima de 0V ou 5V, podemos considerar esta
parte do circuito como flutuante ou ruído elétrico . Por isso, é comum
trabalhar com resistores pull-up e pull-down para FORÇAR o estado
desejado (alto ou baixo).
ANÁLISE DO HARDWARE
RESISTORES PULL-DOWN E PULL-UP
Diversos circuitos necessitam ter alguns pinos constantemente
em nível lógico baixo ou alto para ativar ou desativar
funcionalidades importantes no circuito.
Por isso, estes resistores são muito importantes para estas
aplicações.
ANÁLISE DO HARDWARE
RESISTOR PULL-DOWN
Objetivo: Evitar que o nível lógico no pino do
Arduino fique flutuando entre dois valores (0 e 1V).
i
i
Quando o botão é pressionado a corrente flui pelo
caminho de menor resistência.
Desta forma é possível fazer com que o nível
lógico no pino quando o botão for pressionado
seja ALTO (HIGH- 5V) e quando estiver solto
BAIXO(LOW – 1v)
ANÁLISE DO HARDWARE
RESISTOR PULL-UP
Objetivo: Evitar que o nível lógico no pino do
Arduino fique flutuando entre dois valores (0 e 1V).
i
Quando o botão é pressionado a corrente flui pelo
caminho de menor resistência.
i
Desta forma é possível fazer com que o nível
lógico no pino quando o botão for pressionado
seja BAIXO(LOW – 1v) e quando estiver solto ALTO
(HIGH- 5V).
ANÁLISE DO HARDWARE
RESISTORES PULL-UP INTERNO DO ARDUINO
Nos pinos digitais e analógicos do Arduino, temos uma
resistência pull-up interna de 20 KΩ que devem ser
ativadas via software.
São bastante úteis e evitam em alguns casos as
resistências pull-up que acabamos de estudar.
ESQUEMÁTICO DE MONTAGEM
ALGORITMO OU PASSO-A-PASSO
Início
Configurar parâmetros
Verde para os carros
Vermelho para os pedestres
Marca “este” momento da Botão pedestre foi
alteração do sinal pressionado
E
Já passou 5 segundo desde NÃO
a última alteração de sinal?
Verde para os carros
Vermelho para os SIM
pedestres Espera um tempo para os Vermelho para os carros
pedestres atravessar Verde para os pedestres
ANÁLISE DO CÓDIGO
Este tipo de variável “long” diferentemente do
tipo “inteiro” armazena um número entre
-[Link] a [Link].
Como foi especificado “unsigned” significa que
unsigned long changeTime a variável não pode armazenar valores
negativos. Ou seja, 0 a [Link].
Com a variável “inteira” só era possível
armazenar o equivalente a 32 segundos. Já com
a long, podemos chegar a 49 dias esperando
alguém apertar o botão
[Link] ms = 49 dias
ANÁLISE DO CÓDIGO
Espera um pouco... É praticamente Variáveis ocupam espaço de memória!
inevitável que ao menos uma vez Portanto, quanto maior o número maior o
dentro de espaço de memória consumido do
49 dias, algum pedestre pressione o microcontrolador (neste caso, o Atmega328).
botão.
Esta tolerância de tempo não está
muito grande?
Será que tem algum problema em usar
este tipo de variável?
ANÁLISE DO CÓDIGO
TIPOS DE DADOS
Veja o tamanho e
tipo do dado a
ser armazenado
e depois escolha
o tipo de variável!
ANÁLISE DO CÓDIGO
A instrução digitalRead lê o valor do pino digital
int state = digitalRead(button); que está entre os parênteses e retorna o valor
para a variável inteiro state.
Este bloco de instruções verifica 2 condições: se
if (state == HIGH && (millis() - changeTime) > 5000) {
// Chama a função para alterar as luzes o botão foi pressionado, e se já se passaram
changeLights(); pelo menos 5 segundos desde a última
} alteração de sinal.
VAMOS ANALISAR DETALHADAMENTE CADA
INSTRUÇÃO E FUNÇÃO DESTE BLOCO?
ANÁLISE DO CÓDIGO
millis() - changeTime
A função millis() é integrada à linguagem
Arduino ,e retorna o tempo em millisegundos
desde o início da execução do programa atual
A variável changeTime irá armazenar o
momento em que houve a última alteração do
sinal de pedestre.
ANÁLISE DO CÓDIGO
Exemplo:
if (x>500) {digitalWrite(ledPin, HIGH);
A função if é uma estrutura de controle, cujo
propósito é verificar se determinada condição
foi ou não atingida.
Caso a condição seja verdadeira, as instruções
que estão dentro do bloco são executadas.
ANÁLISE DO CÓDIGO
state == HIGH && (millis() – changeTime)>5000
Símbolo Operador O QUE FAZ O símbolo && é um operador
booleano, ou seja, são
== IGUAL Verifica se as duas condições são instruções lógicas.
iguais.
&& E LÓGICO É verdadeiro apenas se ambas as
condições forem Eles são úteis para testar
diversas condições em funções
|| OU LÓGICO É verdadeiro se um ou mais dos if.
operandos forem verdadeiros
! NÃO É verdadeira apenas se o operando
for falso.
ANÁLISE DO CÓDIGO
VERDADEIRA
ANÁLISE DO CÓDIGO
Este é um exemplo de
chamada de função . O
programa sai da linha atual,
changeLights(); pula para a função desejada
e depois retorna ao ponto do
código logo após à chamada
. de funcão.
.
.
Função é tão somente um
bloco de código separado que
recebeu um nome .
changeLights{
Instrução 1;
Instrução 2;
Instrução 3; Elas podem receber ou retornar
Instrução 4 dados.
}
PROJETO 5
Prof. Eng. Luiz Gustavo
PROJETO 5
Iluminação sequencial com leds
Projeto: Iluminação sequencial com Leds
-Objetivo: Realizar um efeito de iluminação sequencial,
semelhante ao do carro KITT, da série da TV “A Super Máquina” ou
do rosto do Cylons da série “Battlestar Galactica”.
PROJETOS BÁSICOS
5. Iluminação sequencial
Lista de componentes
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 11
Protoboard 400 furos 1
Led vermelho 10
Resistor 220 ohms 10
PROJETOS BÁSICOS
Esquemático de Montagem
ANÁLISE DO HARDWARE
Não utilizaremos nenhum componente novo,
portanto não teremos esta análise.
ALGORITMO OU PASSO-A-PASSO
Início
Configurar parâmetros
Início
Apaga todos os Leds
Marca o tempo inicial da
alteração entre os LED’s Acende o Led da vez
Incrementa o valor da
sequência dos LEDs
O LED já ficou o
tempo mínimo SIM
Está no INÍCIO
aceso? NÃO da sequência?
sentido
sequência:
NÃO
INÍCIO-> FIM
SIM Está no FIM da
Marca este momento que Direciona o programa para a sequência?
rotina(função) SIM
o led aceso foi alterado
de alteração dos leds sentido NÃO
sequência:
FIM -> INÍCIO
ANÁLISE DO CÓDIGO
Estes números
representam os
pinos a que os
Leds estão Este tipo de variável “byte” é do tipo
conectados array(vetor). Um array é um conjunto de
variáveis acessadas por meio de um índice.
Arrays são indexados a partir do zero, logo:
ledPin[0] possui o valor 4
ledPin[3] possui o valor 6
Elementos do array
Você deve declarar o tamanho o array se não inicializá-
lo com valores, por exemplo: ledPin[10];
Mas como você atribuiu valores ( 4 a 13), o compilador
0– 1– 2– 3– 4– 5 6 7 8 9 é capaz de contar e mensurar o tamanho array por
Índices do array conta própria.
PROJETO 5
Prof. Eng. Luiz Gustavo
PROJETO 5
Iluminação sequencial com leds
Projeto: Iluminação sequencial com Leds
-Objetivo: Realizar um efeito de iluminação sequencial,
semelhante ao do carro KITT, da série da TV “A Super Máquina” ou
do rosto do Cylons da série “Battlestar Galactica”.
PROJETOS BÁSICOS
5. Iluminação sequencial
Lista de componentes
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 11
Protoboard 400 furos 1
Led vermelho 10
Resistor 220 ohms 10
PROJETOS BÁSICOS
Esquemático de Montagem
ANÁLISE DO HARDWARE
Não utilizaremos nenhum componente novo,
portanto não teremos esta análise.
ALGORITMO OU PASSO-A-PASSO
Início
Configurar parâmetros
Início
Apaga todos os Leds
Marca o tempo inicial da
alteração entre os LED’s Acende o Led da vez
Incrementa o valor da
sequência dos LEDs
O LED já ficou o
tempo mínimo SIM
Está no INÍCIO
aceso? NÃO da sequência?
sentido
sequência:
NÃO
INÍCIO-> FIM
SIM Está no FIM da
Marca este momento que Direciona o programa para a sequência?
rotina(função) SIM
o led aceso foi alterado
de alteração dos leds sentido NÃO
sequência:
FIM -> INÍCIO
ANÁLISE DO CÓDIGO
Estes números
representam os
pinos a que os
Leds estão Este tipo de variável “byte” é do tipo
conectados array(vetor). Um array é um conjunto de
variáveis acessadas por meio de um índice.
Arrays são indexados a partir do zero, logo:
ledPin[0] possui o valor 4
ledPin[3] possui o valor 6
Elementos do array
Você deve declarar o tamanho o array se não inicializá-
lo com valores, por exemplo: ledPin[10];
Mas como você atribuiu valores ( 4 a 13), o compilador
0– 1– 2– 3– 4– 5 6 7 8 9 é capaz de contar e mensurar o tamanho array por
Índices do array conta própria.
Gostou do conteúdo?
Curta, comente e compartilhe
Prof. Eng. Luiz Gustavo
Inscreva-se em nosso canal
Email: LGUSTAVOSDP@[Link]
CANAL YOUTUBE: L GUSTAVO
PROJETO 6
Prof. Eng. Luiz Gustavo
PROJETO 6
Iluminação sequencial
com leds - INTERATIVA
Projeto: Iluminação sequencial com Leds - INTERATIVA
-Objetivo: Alterar a velocidade das luzes por meio de um
potenciômetro enquanto o código está em execução.
PROJETOS BÁSICOS
5. Iluminação sequencial
Lista de componentes
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 11
Protoboard 400 furos 1
Led vermelho 10
Resistor 220 ohms 10
Potenciômetro Giratório de 4,7 kΩ 1
ANÁLISE DO HARDWARE
Potenciômetro
O potenciômetro é um resistor ajustável com um
alcance de zero a um valor definido
(vem gravado em seu corpo). Neste caso, seu valor é
de 4,7 KΩ, ou seja, pode variar de 0 a 4,7 K Ω (4700 Ω).
Se conectar apenas dois, teremos um resistor
variável. Se conectarmos os três, ele será um divisor
de tensão. Precisamos desta última forma, para
conectá-lo na entrada analógica por meio do seu pino
central
Ajustando o botão, teremos no pino central
uma tensão de 0 a 5V, que será lida na entrada
analógica do Arduino.
ANÁLISE DO HARDWARE
GND VCC
5v
ENTRADA
ANALÓGICA
ARDUINO
PROJETOS BÁSICOS
Esquemático de Montagem
ALGORITMO OU PASSO-A-PASSO
Início
Configurar parâmetros
Marca o tempo inicial da
Início
alteração entre os LED’s
Apaga todos os Leds
Fazer a leitura do potenciômetro
Acende o Led da vez
Ajustar a velocidade de alteração das luzes
Incrementa o valor da
sequência dos LEDs
O LED já ficou o
tempo mínimo SIM
Está no INÍCIO
aceso? NÃO da sequência?
sentido
sequência:
NÃO
INÍCIO-> FIM
SIM Está no FIM da
Marca este momento que Direciona o programa para a sequência?
rotina(função) SIM
o led aceso foi alterado
de alteração dos leds sentido NÃO
sequência:
FIM -> INÍCIO
ANÁLISE DO CÓDIGO
Os pinos
analógicos não
precisam ser Para ler o valor de um pino analógico, devemos
definidos como utilizar a função analogRead. Para isso,
entrada ou saída podemos utilizar qualquer um dos 6 pinos
analógicos (A0 a A5).
Cada entrada possui um conversos analógico-para-
digital de 10bits. Isso possibilita uma leitura de 0 a 5V,
utilizando valores inteiros de 0(0V) a 1023 (5V).
Resolução de 5V/1024 = 4,9mV/unidade
O valor lido do pino analógico que está conectado ao
potenciômetro será o valor do tempo: 0 a 1023 ms,
para ajustar a velocidade do efeito.
Índices do array
ANÁLISE DO CÓDIGO
NÚMEROS DE DIVISÕES (10 BITS) TENSÃO EM VOLTS LIDA NO
PINO ANALÓGICO DO ARDUINO
0 0
1 0,0049
2 0,0098
3 0,0147
. .
. .
. .
1022 4,9951
1023 5v
PROJETO 7
Prof. Eng. Luiz Gustavo
PROJETO 7
LÂMPADA PULSANTE
Objetivo: Controlar a intensidade do brilho do LED, ao invés, de
apenas acender ou apagar. Iremos utilizar os pinos PWM bem
como os conceitos de programação para gerar este efeito.
LISTA DE COMPONENTES
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 2
Protoboard 400 furos 1
Led vermelho 1
Resistor 220 ohms 1
ANÁLISE DO HARDWARE
Não existem componentes novos. Os
componentes deste projeto já foram analisados no
Projeto 1.
Veremos novos conceitos de programação.
ESQUEMÁTICO DE MONTAGEM
A perna maior do Led
A perna menor do Led
deve ser conectada no
deve ser conectada no
pino PWM 9.
pino GND.
Esta perna é chamada de
Esta perna é chamada de
Anodo.
catodo.
ALGORITMO OU PASSO-A-PASSO
Início
Configurar parâmetros
Entra em um loop “for” para
mudar a intensidade do LED
Contador
Condição
Configurar parâmetros Aplicar o valor obtido na
Incremento
FOR saída PWM (Brilho do LED)
LED apagado
(brilho nulo)
Converter graus para Incrementa o valor de x
radiano
Transforma em um valor Brilho do Led está SIM
inteiro de 0 a 255 no máximo?
(Rotina for chegou
ao fim)
NÃO
ANÁLISE DO CÓDIGO
Você precisa
transformar de
graus para Neste projeto você está criando uma onda
radiano. senoidal e fazendo com que o brilho do LED
acompanhe esta onda. Isto causa o efeito
pulsante no LED.
A função sin() é uma função matemática no Arduino
para calcular o seno de um ângulo. Dentro da função, o
ângulo deve estar em radianos.
O resultado desta expressão deve ser positivo
(0 a 255), portanto, o ângulo não pode estar fora do
intervalo de 0 a 179, pois estamos utilizando o seno.
Índices do array
ANÁLISE DO CÓDIGO
O resultado deve ser armazenado dentro de
uma variável chamada ledVal, multiplicando por
255.
É necessário converter o tipo flutuante de sinVal para
inteiro, utilizando a função int().
ANÁLISE DO CÓDIGO
Esta função envia o valor inteiro ledVal para o pino
PWM ledPin, o qual está conectado no pino 9.
Os pinos PWM na Arduino estão identificados NA
PLACA por um ~ e o nome PWM.
No Arduino Uno, são seis (3,5,6,9,10 e 11).
Por meio desta função (analogWrite) estes pinos são
diferentes dos outros pois eles são capazes de enviar
(escrever) um SINAL PWM em suas saídas.
ANÁLISE DO CÓDIGO
O que é sinal PWM?
PWM significa Pulse Width Modulation, ou
A duração do modulação por largura de pulso (MLP), e
tempo em que a representa uma técnica para obter resultados
saída permanece
ligada é chamada analógicos por meio digitais.
de LARGURA DE
PULSO
Nestes pinos, o Arduino envia uma onda quadrada,
Tensão do pino PWM ligando e desligando o pino muito rapidamente.
Nível lógico alto(HIGH)
5V(ligado)
Este padrão ligado/desligado, permite simular uma
voltagem entre 0 e 5V. Isto é feito alterando a quantidade
Pino do
de tempo em que a saída permanece alta(ligada) e baixa
Arduino 0V(desligado) tempo (desligada).
Nível lógico baixo(LOW)
Período do
pulso:
2ms(500Hz)
ANÁLISE DO CÓDIGO A duração do
tempo em que a
saída permanece
ligada é chamada
de CICLO DE
Entenda o que é: Ciclo de trabalho (duty cycle) TRABLHO OU DUTY
CYCLE!
Ciclo de trabalho igual a zero – DT = 0%
Tempo em que o LED fica aceso é nulo LED APAGADO
Valor enviado: 63
(25% do total de 255) – DT = 25% LED COM 25% DE INTENSIDADE
Tempo em que o LED fica aceso é 25% DO BRILHO
do período do pulso
Valor enviado: 127 (50% do total de 255) LED COM 50% DE INTENSIDADE
DT = 50% DO BRILHO
LED COM 100% DE
Valor enviado: 255 (100% do total de 255) INTENSIDADE DO BRILHO
DT = 100%
CICLO DE
TRABALHO
0%→ 0
100% -→ 255
PROJETO 8
Prof. Eng. Luiz Gustavo
PROJETO 8
LAMPADA RGB
Objetivo: Iremos aproveitar o recurso PWM do projeto anterior
utlizando 3 leds (vermelho, azul e verde) para
misturar estas cores resultando na cor que você
quiser.
RGB: R (RED/VERMELHO)
G (GREEN/VERDE)
B(BLUE/AZUL)
Vamos criar uma mood Lamp, como aquela que
vemos nas lojas que muda de cor para caracterizar
o humor do ambiente.
LISTA DE COMPONENTES
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 4
Protoboard 400 furos 1
Led vermelho 1
Led verde 1
Led azul 1
Resistor 220 ohms 3
ANÁLISE DO HARDWARE
Não existem componentes novos. Os
componentes deste projeto já foram analisados no
Projeto 1.
Veremos novos conceitos de programação.
ESQUEMÁTICO DE MONTAGEM
ALGORITMO OU PASSO-A-PASSO
Início
Configurar parâmetros
Define um ponto de partida
para gerar valores aleatórios
Cria um array para os valores
iniciais dos leds (desligados)
Cria um array para os valores
finais aleatórios RGB dos leds
Define o incremento para
Incrementa o valor de cada
avançar de um valor para
LED
o outro em 256 passos
Atribui os valores Finalizou os
SIM Define um novo valor
aleatórios para cada LED 256 passos? final aleatório
NÃO
ANÁLISE DO CÓDIGO
Afinal de contas, o que é RGB?
RGB é a combinação das
3 cores primátias:
Pode ser um Led RGB
vermelha, verde e azul com quatro terminais
(Um é o catodo comum)
Podem ser 3 Leds
ANÁLISE DO CÓDIGO
Variando os valores analógicos que são enviados pelo PWM a cada um dos
3 Leds, você pode conseguir a cor que quiser (não apenas as cores da tabela
abaixo). Observe:
Você pode LED Vermelho LED verde LED azul COR
conseguir até 255 0 0 Vermelha
16.777.216 cores!
(255x255x255) 0 255 0 Verde
0 0 255 Azul
255 255 0 Amarela
0 255 255 Ciano
255 0 255 Maganeta
255 255 255 Branco
ANÁLISE DO CÓDIGO
O comando randomSeed cria números pseudo-
aleatórios, para o chip iniciar a contagem.
É necessário definir uma semente(seed) para
que o microcontrolador possa iniciar a
contagem, pois um chip de computador não é
capaz de gerar números aleatórios de verdade.
Ele pega dados da sua memória.
Nós coletamos esta semente fazendo uma leitura do
pino analógico do Arduino. Como ele não está
conectado a nada, o valor lido será um número
aleatório gerado por um ruído analógico.
ANÁLISE DO CÓDIGO
Será necessário dois conjuntos de arrays de 3
elementos para gerar valores para RGB para as
lâmpadas.
RGB1 contém os valores inicias das lâmpadas
(tem como função deixar os leds, desligados)
RGB2 contém valores aleatórios nos quais
desejamos que a lâmpada faça a transição.
random(256): Gera um valor aleatório de 256 valores
( entre 0 e 255).
random(10,100): Gera um valor aleatório entre 10 e 99.
Perceba que o limite superior não faz parte do sorteio.
ANÁLISE DO CÓDIGO
O objetivo desta
função dentro deste
projeto é evitar
números negativos, constrain é uma função que força os valores
como também aleatórios estarem dentro de um intervalo.
maiores que 255.
Ela requer 3 parâmetros: constrain (x,a,b)
x: Número desejado para restringir
a: menor valor do intervalo
b: maior valor do intervalo
Então esta função verifica o valor de x, e garante que o
resultado estará entre a e b. Se o número aleatório
gerado for menor que a, o resultado é a. Se for maior
que b, o resultado é b.
Gostou do conteúdo?
Curta, comente e compartilhe
Prof. Eng. Luiz Gustavo
Inscreva-se em nosso canal
Email: LGUSTAVOSDP@[Link]
CANAL YOUTUBE: L GUSTAVO
PROJETO 9
Prof. Eng. Luiz Gustavo
PROJETO 9
EFEITO DE FOGO
Objetivo: Utilizar o PWM para gerar um efeito aleatório de
cintilação para imitar o efeito de uma chama
cintilante.
Lâmpadas
Teatro
Dioramas
Maquete de
ferromodelismo
Filmes
LISTA DE COMPONENTES
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 4
Protoboard 400 furos 1
Led vermelho 1
Led amarelo 2
Resistor 220 ohms 3
ANÁLISE DO HARDWARE E DO
CÓDIGO
Não existem componentes novos. Os
componentes deste projeto já foram analisados no
Projeto 1.
Também não há novos conceitos de
programação.
ESQUEMÁTICO DE MONTAGEM
ALGORITMO OU PASSO-A-PASSO
Início
Configura os parâmetros
Escreve um valor aleatório
na saída de todos os leds
Esperar um tempo
aleatório entre 0 e 99 ms
Gostou do conteúdo?
Curta, comente e compartilhe
Prof. Eng. Luiz Gustavo
Inscreva-se em nosso canal
Email: LGUSTAVOSDP@[Link]
CANAL YOUTUBE: L GUSTAVO
PROJETO 10
00111010
Prof. Eng. Luiz Gustavo
PROJETO 10
CONTROLE SERIAL RGB – MOOD LAMP
Objetivo: Controlar a lâmpada RGB enviando
comandos do PC para o Arduino utilizando o Serial
Monitor, do IDE Arduino.
Veremos o conceito de comunicação serial e a
manipulação de strings de texto.
LISTA DE COMPONENTES
ESQUEMÁTICO DE MONTAGEM
ANÁLISE DO HARDWARE
Os componentes e o esquemático de montagem
já foram visto no Projeto 8 – LED RGB.
A análise do Hardware já foi feita no projeto 1.
ESQUEMÁTICO DE MONTAGEM
ALGORITMO OU PASSO-A-PASSO
Início
Configurar parâmetros...
Novo: Iniciar comunicação Serial
Foi enviado
algum dado
pela serial?
Não
Sim
Armazena os dados da Serial em
um buffer
Envia o valor PWM para o pino
Faz o tratamento dos dados
do LED correspondente
Verifica qual Letra e Número
foram enviados
ALGORITMO
Faz o tratamento dos dados
Início
Envia o buffer preenchido para a
função de tratamento da informação
Define um ponteiro para o
números de caracteres Cria outra variável para acessar o buffer
Remove os espaços e vírgulas do valor
Espera 100 ms para o buffer encher enviado
Armazena o valor tratado na variável
Armazena o número de caracteres
data
recebidos em uma variável
Lê e armazena o caractere lido Limpa o buffer e a linha serial
dentro de um array buffer
Envia o valor PWM para o pino
do LED correspondente
Leitura
Não finalizada? Sim
FIM
ANÁLISE DO CÓDIGO
O QUE É UM PSEUDOCÓDIGO??
Linguagem do computador descrita com mais detalhes, utilizando
palavras e pensamentos.
ANÁLISE DO CÓDIGO
-Inicia comunicações Serias
-O número entre parênteses define a taxa
de transmissão em pulsos por segundos.
Neste caso, podemos dizer 9600 bits por
00111010 segundos.
-A comunicação serial é uma das formas
que os dispositivos, módulos e
computadores se comunicam.
Comunicação serial
ANÁLISE DO CÓDIGO
Buffer com dados
0001010100101 Liberará caracteres que estejam na linha
010101010101 serial, deixando-a vazia e pronta para
entradas/saidas.
Buffer Limpo
Comunicação serial
ANÁLISE DO CÓDIGO
Serve para verificar se algum caractere
foi enviado pela linha serial.
001010101011
Comunicação serial
ANÁLISE DO CÓDIGO
while é um loop condicional que é
executada enquanto uma condição
está sendo atendida.
O comando [Link](), lê dados seriais,
um bit por vez.
Todos os bits são armazenados dentro do
buffer.
ANÁLISE DO CÓDIGO
O monitor serial é uma ferramenta
muito importante para quem
programa pois conseguimos imprimir
nesta tela qualquer dado desejado em
relação ao nosso programa.
Nesta tela é possível visualizar os
dados que são enviados do Arduino,
como também escrever por meio da
janela de texto os dados a serem
enviados para a Arduino.
ANÁLISE DO CÓDIGO
Deixa o curso ao final do texto
É a forma de enviarmos dados da
Arduino para o PC.
O comando print envia o que estiver
dentro dos parenteses para o PC, por
meio do cabo USB, e voce pode ler o
resultado na janela do Serial Monitor.
Imprime a informação data , e depois avança uma
linha. O próximo texto será impresso na linha É um recurso importante, pois podemos
abaixo.
enxergar tudo o que está acontecendo na
Arduino se enviarmos os dados para o PC.
ANÁLISE DO CÓDIGO
Tem como propósito dividir strings
em partes menores.
Ele vai eliminar o espaço ou vírgula da
informação que você digitar.
R127 G56 B98 → R127G56B98
Ela divide quanto encontra um espaço ou
vírgula.
Gostou do conteúdo?
Curta, comente e compartilhe
Prof. Eng. Luiz Gustavo
Inscreva-se em nosso canal
Email: LGUSTAVOSDP@[Link]
CANAL YOUTUBE: L GUSTAVO
PROJETO 11
Prof. Eng. Luiz Gustavo
PROJETO 11
ALARME COM SONORIZADOR PIEZO
Objetivo: Iremos criar o som de uma sirene de
carro
LISTA DE COMPONENTES
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 4
Protoboard 400 furos 1
Sonorizador ou disco piezo (opcional) 1
Módulo buzzer 1
ANÁLISE DO HARDWARE
É um dispositivo feito de uma fina camada de
cerâmica, ligada a um disco metálico.
Materiais piezoelétricos, feitos de cristais e
cerâmica, têm a capacidade de produzir
eletricidade quando uma pressão mecânica é
aplicada a eles.
O efeito é reversível: Se um campo elétrico for
aplicado em um material piezoelétrico, ele fará
com que o material mude de forma.
O campo elétrico é desligado e ligado
mudando a forma do material, e
conseqüentemente gerando sons.
ESQUEMÁTICO DE MONTAGEM
ALGORITMO OU PASSO-A-PASSO
Início
Configurar parâmetros
Entra em um loop “for” para
mudar a frequência do SOM
Configurar parâmetros Gera uma frequência a
FOR partir do valor do seno
Converter graus para Insere a frequência no módulo
radiano buzzer e aguarda 2 segundos
Calcular o valor do seno Frequência está no SIM
máximo ?
(Rotina for chegou ao
fim)
NÃO
ANÁLISE DO CÓDIGO
O comando tone() é utilizado para
gerar a freqüência do sonorizador
O comando tone() requer dois ou tres parametros, da
seguinte maneira:
tone(pin, frequency)
tone(pin, frequency, duration)
Pino: Pino digital utilizado para o buzzer
Frequência: Frequência da nota musical utilizada
Duração (opcional): Duração em millisegundos do som
Se a duração não for especificada, o som
será emitido até o comando noTone(pino)
ser executado.
Gostou do conteúdo?
Curta, comente e compartilhe
Prof. Eng. Luiz Gustavo
Inscreva-se em nosso canal
Email: LGUSTAVOSDP@[Link]
CANAL YOUTUBE: L GUSTAVO
PROJETO 12
Prof. Eng. Luiz Gustavo
PROJETO 12
MELODIA COM SONORIZADOR PIEZO
Objetivo: Usar o piezo para tocar musica e
melodias. Vamos tocar o refrão da música
“Puff, o dragão mágico”
LISTA DE COMPONENTES / ANÁLISE DO
HARDWARE / ESMÁTICO DE MONTAGEM
IREMOS UTILIZAR OS MESMOS COMPONENTES E
O MESMO ESQUEMÁTICO DE MONTAGEM DO
PROJETO PASSADO.
ALGORITMO OU PASSO-A-PASSO
Início
Configurar parâmetros
Tocar melodia
Melodia
chegou ao
fim? NÃO
Sim
Aguardar 5 segundos
ANÁLISE DO CÓDIGO
# define... É uma diretiva que define
o valor e seu token correspondente.
É útil pois evita que você substitua o mesmo valor
(que pode ser bem grande, pi, por exemplo:
3,14592653... )em diversas linhas do seu código.
Facilita a leitura do seu código por você e
principalmente por terceiros.
Para alterar o valor de uma diretiva basta
alterar o seu valor ao lado, e o novo valor
é repassado para todo o código, pois o
token é o mesmo.
Não precisa de ponto-e-vírgula ao final
Gostou do conteúdo?
Curta, comente e compartilhe
Prof. Eng. Luiz Gustavo
Inscreva-se em nosso canal
Email: LGUSTAVOSDP@[Link]
CANAL YOUTUBE: L GUSTAVO
PROJETO 13
Prof. Eng. Luiz Gustavo
PROJETO 13
SENSOR DE BATIDA PIEZO
Objetivo: Fazer o Arduino ler o sinal de corrente
elétrica vinda o sensor piezo.
Um disco piezo se deforma ao ser atravessado por
uma corrente elétrica, e o inverso também ocorre:
quando se bate nele ou ele sofre algum tipo de
pressão, a força do material provoca a geração de uma
corrente elétrica.
LISTA DE COMPONENTES
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 4
Protoboard 400 furos 1
Sensor piezo ou módulo buzzer 1
Led vermelho 1
Resistor de 1 MΩ 1
ANÁLISE DO HARDWARE
Não precisa pois já vimos nos projetos anteriores.
ESQUEMÁTICO DE MONTAGEM
ALGORITMO OU PASSO-A-PASSO
Início
Configurar parâmetros:
Piscar o Led 2 vezes para iniciar
Decrementar o
Fazer a leitura do sinal do sensor
valor do brilho
Sinal detectado Atribuir valor do
maior/igual que o brilho ao LED
limiar?
NÃO
Sim
Definir brilho máximo
para o LED
ANÁLISE DO CÓDIGO
Não precisa pois já vimos nos projetos anteriores.
Gostou do conteúdo?
Curta, comente e compartilhe
Prof. Eng. Luiz Gustavo
Inscreva-se em nosso canal
Email: LGUSTAVOSDP@[Link]
CANAL YOUTUBE: L GUSTAVO
PROJETO 14
Prof. Eng. Luiz Gustavo
PROJETO 14
SENSOR DE LUZ LDR
Objetivo: Neste projeto, iremos utilizar um LDR para detectar a luz, e um
sonorizador piezo para fornecer feedback sonoro da quantidade
de luz detectada.
Aplicações com a configuração do projeto de hoje:
Alarmes
Instrumentos musicais, como o teremim
LISTA DE COMPONENTES
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 4
Protoboard 400 furos 1
Módulo buzzer 1
Resistor de 1o kΩ 1
Sensor LDR 1
ANÁLISE DO HARDWARE
LDR (Light Dependent Resistor, ou LDR) :
Resistor dependente de Luz, é utilizado para
medir a luminosidade de um ambiente.
É composto por Sulfeto de Cádmio (CdS)
Também é chamado de fotorresistor, pois sua
resistência elétrica depende da luz que incide
Maior resistência sobre o material fotocondutor.
Quando a luz atinge o LDR, ele perde sua resistência
SENSOR LDR (ficando em torno de 10kΩ ou menos, por exemplo). Se o
ambiente for escuro, ele pode chegar até 100 kΩ.
Menor resistência
ANÁLISE DO HARDWARE
Também chamado de divisor de potencial é
utilizado para converter de um para outro
nível de tensão, por exemplo.
Como a resistência de R1 é fixa, e a do LDR
varia com a luz, podemos ter diferentes
valores para Vout que está indo para o pino
analógico do Arduino.
LDR
LUZ
Os valores de tensão lidos são analisados
como variação da luminosidade do ambiente
ANÁLISE DO HARDARE
ESQUEMÁTICO DE MONTAGEM
10 kΩ
ALGORITMO OU PASSO-A-PASSO
Início
Configurar parâmetros:
Fazer a leitura do sinal do sensor
Emite um bip
Espera 25 ms
Interrompe o som
Espera um tempo conforme a
leitura do sensor
ANÁLISE DO CÓDIGO
Não há conceitos novos de programação!
Gostou do conteúdo?
Curta, comente e compartilhe
Prof. Eng. Luiz Gustavo
Inscreva-se em nosso canal
Email: LGUSTAVOSDP@[Link]
CANAL YOUTUBE: L GUSTAVO
PROJETO 15
Prof. Eng. Luiz Gustavo
PROJETO 15
CONTROLE DE UM MOTOR CC
Objetivo: Controlar a velocidade do motor CC em apenas uma direção.
Este projeto é útil para diversas aplicações móveis como robôs,
por exemplo.
LISTA DE COMPONENTES
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 6
Protoboard 400 furos 1
MOTOR CC 5V 1
Transistor TIP 1
Potenciômetro 10 kΩ 1
Diodo 1N4001
Fonte de alimentação externa 1
(5V) 3
Pilhas AA de 1,5V
ANÁLISE DO HARDWARE
Um motor gera um campo magnético (em sua
bobina – enrolamento) quando uma energia é
fornecida nos seus terminais, fazendo um rotor
girar.
Pela lei de Lenz, quando a alimentação é removida
surge uma corrente reversa que pode retornar pela
afiação e danificar o Arduino. Por isso, é necessário
um diodo para proteger o Arduino.
Ele pode girar no sentido horário ou anti-horário
dependendo da polaridade da alimentação
fornecida.
ANÁLISE DO HARDWARE
O diodo é uma válvula de uma via. Só permite a
passagem de corrente elétrica em apenas um
sentido semelhantemente à válvula de retenção de
um encanamento residencial, por exemplo.
O terminal do diodo que tem a faixa branca é
chamado de catodo, enquanto que o outro é
chamado de anodo.
Para ele conduzir, o potencial aplicado no Anodo
deve ser maior e ter pelo menos 0,7 V(diodo de silício) de
São essenciais em circuitos de proteção
diferença do potencial aplicado no catodo.
contra alimentação incorreta, tensão
reversa etc.
ANÁLISE DO HARDWARE
O transistor pode ser utilizado como chave digital ou
amplificador de potência. Neste circuito, iremos utilizá-lo
como uma chave.
Ele possui 3 terminais: coletor, base e emissor. É possível
controlar ligar ou desligar o transistor por meio da
aplicação de uma determinada. tensão em sua base.
Ele é utilizado para controlar correntes maiores daquela
que o Arduino é capaz de suportar.
Quando ele é ligado ele permite o fluxo de corrente entre
o coletor e o emissor, fazendo o motor funcionar.
Datasheet TIP 122
ESQUEMÁTICO ELETRÔNICO
MOTOR
GND
M
ARDUINO
PINO PWM 9
FONTE DE
ALIMENTAÇÃO 5V
OU 3 pilhas AA
GND
ESQUEMÁTICO DE MONTAGEM
10 kΩ
TIP-122
Base-coletor-emissor
Verificar o
datasheet caso
seja outro
transistor
Diodo
1N4001
FONTE DE
ALIMENTAÇÃO 5V
OU 3 pilhas AA
ALGORITMO OU PASSO-A-PASSO
Início
Configurar parâmetros:
Fazer a leitura do sinal do
potenciômetro e divide por 4
Ajusta a velocidade do motor
ANÁLISE DO CÓDIGO
Não há conceitos novos de programação!
Gostou do conteúdo?
Curta, comente e compartilhe
Prof. Eng. Luiz Gustavo
Inscreva-se em nosso canal
Email: LGUSTAVOSDP@[Link]
CANAL YOUTUBE: L GUSTAVO
PROJETO 16
Prof. Eng. Luiz Gustavo
PROJETO 16
CI L293D – CONTROLADOR DE MOTOR
Objetivo: Utilizar um CI (Circuito integrado) controlador de motor L293D.
Vantagens:
LISTA DE COMPONENTES
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 12
Protoboard 400 furos 1
MOTOR CC 5V 1
CI L293D 1
Potenciômetro 10 kΩ 1
Chave seletora 1
Fonte de alimentação externa (5V) 1 Se não utilizar o
Pilhas AA de 1,5V 3 dissipador no
chip L293D pode
Resistor 10 kΩ 1
derreter o chip,
Dissipador de calor 1 e até a
protoboard!!!
Lista de componentes
ANÁLISE DO HARDWARE
Além do chip L293D, poderíamos estar utilizando
outros chips controladores como SN754410, ou
módulos específicos para controles de motores,
como a mini ponte victory L298N
O L293D é uma ponte H dupla. Um conceito
importantíssimo na eletrônica .
ELE CONTROLA VELOCIDADE E SENTIDO DE
Você pode usar também... ROTAÇÃO DO MOTOR COM APENAS 3 PINOS DE
CONTROLE.
Veja a seguir, o conceito e o princípio de
Cuidado com as especificações elétricas!! A montagem
pode mudar! funcionamento de uma ponte H.
ANÁLISE DO HARDWARE
Datasheet
PONTE H
i
Uma ponte H é uma configuração com 4 chaves e
uma carga no centro. Leva este nome, pois lembra
a letra H.
Cada par de chaves na diagonal gira o motor em
sentidos contrários.
i Dentro deste chip não utilizadas chaves comuns, e sim
transistores para realizarem a função de chave como o
projeto 15 (projeto passado).
O chip L293D possui duas pontes como esta e portanto
são capazes de controlar 2 motores: velocidades e
direção, ao mesmo tempo.
ESQUEMÁTICO DE MONTAGEM
10 kΩ
5v
10 kΩ
FONTE DE
ALIMENTAÇÃO 5V a
12V OU 3 pilhas AA
Esquemático de montagem
Mapeamento de pinos
L293D
CHIP L293D CIRCUITO CIP L293D CIRCUITO
Enable 1 Pino 6 Arduino VSS 5V (Arduino)
Input1 Pino 3 Arduino Input3
Output1 Motor 1 Output3
GND GND GND GND
GND GND GND GND
Output2 Motor 1 Output4
Input 2 Pino 4 Arduino Input 4
VS (12V) Fonte Externa (+) Enable 2
ALGORITMO OU PASSO-A-PASSO
Início
Configurar parâmetros:
Fazer a leitura do sinal do
potenciômetro e divide por 4
Ajusta a velocidade do motor
Não
Chave está em Gira o motor no sentido
nível lógico HIGH? anti- horário
Sim
Gira o motor no sentido horário
ANÁLISE DO CÓDIGO
Não há conceitos novos de programação!
Gostou do conteúdo?
Curta, comente e compartilhe
Prof. Eng. Luiz Gustavo
Inscreva-se em nosso canal
Email: LGUSTAVOSDP@[Link]
CANAL YOUTUBE: L GUSTAVO
PROJETO 17
=9
Prof. Eng. Luiz Gustavo
PROJETO 17
CONTADOR BINÁRIO 8 BITS
REGISTRADOR DE DESLOCAMENTO 74HC595
Objetivo: Fazer com 8 leds contem de forma binária. Na prática iremos controlar
8 leds utilizando apenas 3 pinos de saída do Arduino.
LISTA DE COMPONENTES
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 20
Protoboard 400 furos 1
Led vermelho 8
CI – Registrador de deslocamento 74HC595 1
Resistor 220 Ω 8
Sistema de números binários
Seres humanos utilizam o sistema Contagem.
decimal ou numérico de base 10, pois Posseum 10 dígitos, de 0 a 9.
temos 10 dedos
Os computadores sabem o que é ON (ligado) e
OFF(desligado) , níveis lógicos de tensão Contagem.
diferentes. Por isso, usam o sistema binário, ou de
base 2. Posseum 2 dígitos, de 0 e 1.
SISTEMA DE NÚMEROS BINÁRIOS
Cada dígito (0 ou 1) representa um bit
Um número de 8 bits é chamado de 1 byte
ANÁLISE DO HARDWARE
É um registrador de deslocamento de 8 bits com
entrada serial e saída serial ou paralela, latches de
saída. Você envia 1 bit por vez, e tem na saída 8 bits
ao mesmo tempo.
Serial: Um bit por vez
Paralela: Muitos bits por vez(8 bits neste caso)
Latches: travas de saída
O pino Latch é semelhante a um portão: permite
que dados apenas entrem no chip quando está em
LOW, e o contrário quando está em HIGH.
Datasheet do CI74HC595
ANÁLISE DO HARDWARE
PINO do 595 Função
11 Latch (portão)
12 Clock
14 10
Entrada de dados
1 0
1 0 1 0
1 0 01
HIGH
1 0 10
(bit 1)
1 01 0 1 1 1 1
0 0 00
1 0 1 0 LOW HIGH
0 0
0 0 LOW HIGH
1 0 1 0
ANÁLISE DO HARDWARE
SEQUÊNCIA DE EVENTOS
ESQUEMÁTICO DE MONTAGEM
Q7 Q6
3.3V
LED
LED
Mapeamento de pinos
CI74HC595
CI 74HC595 CIRCUITO CI 74HC595 Circuito
Q1 Led1 VCC 3.3V Arduino
Q2 Led2 Q0 Led0
Q3 Led3 DS Pino 11 Arduino
Q4 Led4 OE GND Arduino
Q5 Led5 ST_CP Pino 8 Arduino
Q6 Led6 SH_CP Pino 12 Arduino
Q7 Led7 MR 3.3V Arduino
GND GND Arduino Q7’
ALGORITMO OU PASSO-A-PASSO
Lógica de
Início programação
Configurar parâmetros:
Função dos 8 bits de saída
Entra no loop for até 256 Limpa a linha de dados para o
envio de mais bits
Permite o fluxo de dados pelo
pino Latch Gera 8 bits(LOW ou HIGH) por
meio de uma operação lógica
entre a contagem e uma
Direciona o programa para a
máscara de bits (Função FOR)
função bits de saída enviando o
valor sequencial “i” da
contagem Armazena o bit no registrador
Interrompe o fluxo de dados
Envia os bits para o pino de saída
ANÁLISE DO CÓDIGO
A condição “dataOut & (1<<i), é
chamada de máscara de bits.
O operador “&” é chamado de
operador de bit a bit.
Eles são operadores lógicos porém
atua nos níveis dos bits.
Neste caso, realizam a operação
lógica E(&) entre dois números:
dataOut
Resultado de: (1<<i)
Operadores bit a bit
Realizam cálculos em variáveis no nível dos bits
Podem ser utilizados
apenas entre interios.
Cada operação desta obedece a uma
regra lógica. Confira a seguir!
Operador: E (&) bit a bit
Se ambas as entradas forem 1, a saída
será 1. Do contrário, será zero.
OU ( | ) bit a bit
Se qualquer das entradas forem 1, a
saída será 1. Do contrário, será zero.
XOU ( ^ ) bit a bit
Se apenas uma das entradas forem 1,
a saída será 1. Do contrário, será zero.
NÃO ( ~ ) bit a bit
A saída se torna o oposto da entrada.
Deslocamento para a esquerda (<<)
Deslocamento para a direita (>>)
Operadores de deslocamento
movimentam os bits para a esquerda
ou para a direita, pelo número
posições no operando da direita.
Os bits do fim da linha são
perdidos para sempre.
Entendendo estes conceitos no
código...
Gostou do conteúdo?
Curta, comente e compartilhe
Prof. Eng. Luiz Gustavo
Inscreva-se em nosso canal
Email: LGUSTAVOSDP@[Link]
CANAL YOUTUBE: L GUSTAVO
PROJETO 18
Prof. Eng. Luiz Gustavo
PROJETO 18
CONTADOR BINÁRIO DUPLO
REGISTRADOR DE DESLOCAMENTO 74HC595
Objetivo: Montar um contador binário duplo, por meio da montagem de dois
CI’s 74HC595 conectados em cascata.
Um CI irá contar na ordem crescente e outro na ordem decrescente,e
vice-versa
Primeiro CI: 0 a 256 ////// 256 a 0
Segundo CI: 256 a 0 ///// 0 a 256
LISTA DE COMPONENTES
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 20
Protoboard 400 furos 1
Led vermelho 8
CI – Registrador de deslocamento 74HC595 2
Resistor 220 Ω 16
Led verde 8
ANÁLISE DO HARDWARE E DO
CÓDIGO
ESQUEMÁTICO DE MONTAGEM – CI 595 (1)
Q7 Q6
3.3V
LED
LED
PINO 14 DO CI 2
ESQUEMÁTICO DE MONTAGEM – CI 595 (2)
Q7 Q6
PINO 9 DO CI 1
3.3V
LED
LED
Mapeamento de pinos
CI74HC595 (1)
CI 74HC595 CIRCUITO CI 74HC595 Circuito
Q1 Led1 VCC 3.3V Arduino
Q2 Led2 Q0 Led0
Q3 Led3 DS Pino 11 Arduino
Q4 Led4 OE GND Arduino
Q5 Led5 ST_CP Pino 8 Arduino
Q6 Led6 SH_CP Pino 12 Arduino
Q7 Led7 MR 3.3V Arduino
GND GND Arduino Q7’ Pino 14 CI 2
Mapeamento de pinos
CI74HC595 (2)
CI 74HC595 CIRCUITO CI 74HC595 Circuito
Q1 Led1 VCC 3.3V Arduino
Q2 Led2 Q0 Led 0
Q3 Led3 DS Pino 9 CI 1
Q4 Led4 OE GND Arduino
Q5 Led5 ST_CP Pino 8 Arduino
Q6 Led6 SH_CP Pino 12 Arduino
Q7 Led7 MR 3.3V Arduino
GND GND Arduino Q7’
ALGORITMO OU PASSO-A-PASSO
Lógica de
Início programação
Configurar parâmetros:
Função dos 8 bits de saída
Entra no loop for de 0 a 256 Limpa a linha de dados para o
envio de mais bits
Permite o fluxo de dados pelo
pino Latch Gera 8 bits(LOW ou HIGH) por
meio de uma operação lógica
entre a contagem e uma
Direciona o programa para a
máscara de bits (Função FOR)
função bits de saída enviando o
valor sequencial “i” da
contagem Armazena o bit no registrador
Envia os bits para o pino de saída Interrompe o fluxo de dados
Entra no loop for de 256 a 0, e
repete o mesmo processo!
Gostou do conteúdo?
Curta, comente e compartilhe
Prof. Eng. Luiz Gustavo
Inscreva-se em nosso canal
Email: LGUSTAVOSDP@[Link]
CANAL YOUTUBE: L GUSTAVO
PROJETO 19
Prof. Eng. Luiz Gustavo
PROJETO 19
DISPLAY DE MATRIZ DE PONTOS
ANIMAÇÃO BÁSICA
Objetivo: Utilizar os dois CI’s 74HC595 conectados a uma matriz de pontos para
mostrar o funcionamento deste novo componente, e o efeito de multiplexação.
LISTA DE COMPONENTES
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 20
Protoboard 400 furos 1
Display de Matriz de pontos (8x8) (C+) 1
C+ :Catodo comum
(Veja o datasheet)
CI – Registrador de deslocamento 74HC595 2
Resistor 220 Ω 8
ANÁLISE DO HARDWARE
É uma matriz de pontos vermelhos formada
por Leds. Neste caso, uma matriz 8x8, com
16 pinos: 8 para linhas e 8 para colunas.
Com ele é possível controlar 64 Leds com 2 CI’s
74HC595 utilizados no projeto passado.
É possível criar imagens, e outros efeitos
Conectando todos os catodos dos leds da
Cada Led é chamado de pixel. Estes Leds mesma linha , e os anodos na mesma coluna,
poderiam ser RGB, com isso seria possível
gerar intensidades e cores diferentes! é possível obter este fenômeno.
ANÁLISE DO HARDWARE
5V
As linhas e colunas existem para
minimizar o número de pinos utilizados!
Se não, iríamos utilizar 65 pinos!!!
0V Acender o Led da 3ª Linha e 5ª Coluna :
Basta aplicar 5V à 5ª Coluna, e 0V na 3ª
coluna:
ANÁLISE DO HARDWARE
E para acender também o Led da
5ª linha e 3ª coluna?
5V 5V
Para se evitar isso, iremos recorrer a um
recurso importantíssimo na Eletrônica:
A multiplexação.
0V Se fizermos isso, veremos que 2 Leds
indesejados acenderão!
0V
MULTIPLEXAÇÃO
É a técnica de controlar diversas saídas alternando
o momento de acionamento!
Neste projeto, esta técnica irá acender uma linha
por vez, e cada led de forma sequencial.
Se isso for feito em uma velocidade suficiente
(mais de 100 Hz), o fenômeno de persistência
da visão, fará com que o display pareça acender
por inteiro (mesmo isso não sendo verdade)
ESQUEMÁTICO DE MONTAGEM
Mapeamento de pinos
CI74HC595 (1)
CI 74HC595 CIRCUITO CI 74HC595 Circuito
Q1 PINO MATRIZ: 3 VCC 3.3V Arduino
Q2 PINO MATRIZ: 4 Q0 PINO MATRIZ: 13
Q3 PINO MATRIZ: 10 DS Pino 11 Arduino
Q4 PINO MATRIZ: 6 OE GND Arduino
Q5 PINO MATRIZ: 11 ST_CP Pino 8 Arduino
Q6 PINO MATRIZ: 15 SH_CP Pino 12 Arduino
Q7 PINO MATRIZ: 16 MR 3.3V Arduino
GND GND Arduino Q7’ Pino 14 CI 2
Mapeamento de pinos
CI74HC595 (2)
CI 74HC595 CIRCUITO CI 74HC595 Circuito
Q1 PINO MATRIZ: 14 VCC 3.3V Arduino
Q2 PINO MATRIZ: 8 Q0 PINO MATRIZ: 9
Q3 PINO MATRIZ: 12 DS Pino 9 CI 1
Q4 PINO MATRIZ: 1 OE GND Arduino
Q5 PINO MATRIZ: 7 ST_CP Pino 8 Arduino
Q6 PINO MATRIZ: 2 SH_CP Pino 12 Arduino
Q7 PINO MATRIZ: 5 MR 3.3V Arduino
GND GND Arduino Q7’
ALGORITMO OU PASSO-A-PASSO
Lógica de
Início programação
Configurar parâmetros:
Inserir representação binária da imagem
Função de exibição da imagem
Configurar parâmetros:
Inicializar Timer e configurar função timer Envia o array de leds para as colunas
Inverte a imagem a cada 1 segundo
Envia o número binário da linha
para os chips (aqui determina
qual linha vai ser acesa)
Espera 500 ms
Exibe a imagem
Análise do código
Este projeto utiliza um recurso
do chip Atmega, conhecido
como Hardware Time.
É um timer que serve para
disparar um evento. No nosso
Intervalo caso, é um Serviço de rotina de
interrupção (ISR) que dispara a
cada 10 mil microsegundos
TimerOne é uma biblioteca
Função de disparo
externa, e por isso precisa ser
incluída no códgo.
É necessário fornecer apenas
dois parâmetros: o intervalo, e o
nome da função que será
ativada a cada disparo.
ANÁLISE DO CÓDIGO
É operador bit a bit NÃO (~).
Transforma a imagem binária em
um negativo dela mesma.
Transforma todos os bits 1 em 0,
e todos os bits 0 em 1.
Gostou do conteúdo?
Curta, comente e compartilhe
Prof. Eng. Luiz Gustavo
Inscreva-se em nosso canal
Email: LGUSTAVOSDP@[Link]
CANAL YOUTUBE: L GUSTAVO
PROJETO 20
0 1 0
1
1 0
0 1
ROTAÇÃO BIT A BIT
Prof. Eng. Luiz Gustavo
PROJETO 20
DISPLAY DE MATRIZ DE PONTOS
SPRITE COM ROLAGEM HORIZONTAL
Objetivo: Criar uma animação com vários quadros (frames), que se
movimentará da direita para a esquerda. Será apresentado o conceito de arrays
multidimensionais
LISTA DE COMPONENTES
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 20
Protoboard 400 furos 1
Display de Matriz de pontos (8x8) (C+) 1
C+ :Catodo comum
(Veja o datasheet)
CI – Registrador de deslocamento 74HC595 2
Resistor 220 Ω 8
ANÁLISE DO HARDWARE /
ESQUEMÁTICO DE MONTAGEM
ALGORITMO OU PASSO-A-PASSO
Lógica de
Início programação
Configurar parâmetros:
Inserir os quadros de uma animação
Exibiu 8 Não
Configurar parâmetros: quadros?
Inicializar Timer e configurar função timer
Sim
Rotaciona cada palavra binária nas Volta ao
linhas e colunas para dar a ideia de quadro(frame) inicial
movimento
Função de exibição da imagem
Vai para o próximo
quadro de animação
8 Frames
Frame 1
2ª Linha
00111000 = 56
ANÁISE DO CÓDIGO
Este é um array bidimensional.
Ele possui dois conjuntos de
índices: linhas e colunas para
acessar qualquer um dos seus
64 elementos (8x8)
Para acessar o número 158 na
linha 6 e coluna 4, você usaria:
byte led [6] [4]
Análise do código
Este é o truque para a imagem
“correr” no display, chamado:
ROTAÇÃO BIT A BIT
Precisamos deslocar para esquerda
todos os bits de cada elemento do
array sem perder informação
Com o comando << 1 , você desloca
os bits para a esquerda, e com >>7,
em seguida somando “OU”, você
consegue recuperar o bit perdido.
Veja a seguir:
ANÁLISE DO CÓDIGO
Rotacionar bit a bit: 156 - 10011100
Deslocar um bit para a esquerda
00111000
Deslocar 7 bits para a direita
0000001
00111001
Somar “OU” lógico
ANÁLISE DO CÓDIGO
Esta técnica é conhecida como
rotação bit a bit ou deslocamento
circular!
Técnica bastante utilizada em
Criptografia digital
Gostou do conteúdo?
Curta, comente e compartilhe
Prof. Eng. Luiz Gustavo
Inscreva-se em nosso canal
Email: LGUSTAVOSDP@[Link]
CANAL YOUTUBE: L GUSTAVO
PROJETO 21
Prof. Eng. Luiz Gustavo
PROJETO 21
DISPLAY DE MATRIZ DE PONTOS
MENSAGEM COM ROLAGEM HORIZONTAL
Objetivo: Controlar o display com o uso do chip MAX7219 sem o uso de
biblioteca para aprender exatamente como este chip funciona.
LISTA DE COMPONENTES
Componente Quantidade
Arduino uno 1
Jumpers macho-macho 20
Protoboard 400 furos 1
Display de Matriz de pontos (8x8) (C-) 1
C- :Catodo comum
(Veja o datasheet)
CI – MAX7219 OU AS1107 1
Resistor 220 Ω 1
Esquemático de Montagem
Mapeamento de pinos
CIMAX7219 (1)
CI MAX7219 CIRCUITO CI MAX7219 Circuito
DIG1 PINO MATRIZ: 3 + 5V Arduino
DIG2 PINO MATRIZ: 4 DIG0 PINO MATRIZ: 13
DIG3 PINO MATRIZ: 10 DIN Pino 2 Arduino
DIG4 PINO MATRIZ: 6 OE GND Arduino
DIG5 PINO MATRIZ: 11 LOAD Pino 3 Arduino
DIG6 PINO MATRIZ: 15 CLK Pino 4 Arduino
DIG7 PINO MATRIZ: 16 SET RESISTOR 20K (se display
não acender tente outro
maior) EM 5V Arduino
GND GND Arduino
(PINOS)
Mapeamento de pinos
CIMAX7219 (2)
CI MAX7219 CIRCUITO CI MAX7219 Circuito
SEG A PINO MATRIZ: 14
SEG B PINO MATRIZ: 8 SEG DP PINO MATRIZ: 9
SEG C PINO MATRIZ: 12
SEG D PINO MATRIZ: 1
SEG E PINO MATRIZ: 7
SEG F PINO MATRIZ: 2
SEG G PINO MATRIZ: 5
ANÁLISE DO HARDWARE
Este chip MAX7219 funciona de mofo
semelhante aos registradores de
deslocamento. Recebe dados seriais
(bit a bit) e fornece saída paralela.
A IDE Arduino possui uma biblioteca
própria para ele para facilitar o controle
de display’s. A biblioteca é Matrix
ANÁLISE DO HARDWARE
Ele recebe os dados de forma serial pelo
pino DIN, e coloca na saída de forma
paralela pelos pinos DIG0. a DIG15.
O chip aceita dados de 16 bits enviado na
ordem do mais significativo (MSB) para o
menos significativo (LSB).
ANÁLISE DO HARDWARE
O controle de envio dos bits, do
armazenamento de dados e saída é
semelhante aos projetos anteriores com
contadores de deslocamento!
ANÁLISE DO HARDWARE
É possível ativar ,desativar ou ajustar alguma
função deste chip por acessando o endereço
dos seus registradores e enviando o comando
desejado
Sem importância Endereço do Dados
(don’t care) registrador
ANÁLISE DO HARDWARE
Veja os endereços dos
registradores:
D11-D10-D09-D08
1001: Modo de decodificação
1010: Intensidade do brilho
1011: Limite de varredura(scan)
1100:: Desligamento
1111: Teste do display
Exemplo: Acessar o resgistrador de
intensidade colocando brilho
máximo (valor 15):
0000101000001111
Conforme falamos, devemos enviar
primeiro o bit mais significativo, ou
seja, na ordem inversa:
B1111000001010000
ANÁLISE DO HARDWARE
Decide quanto dos 8 dígitos devem ser acesos
(vale para display de 7 segmentos). Os dígitos
correspondem às colunas no display de matriz.
Vale apenas para display de 7 segmentos
Operação normal ou desligamento
(display em branco).
ALGORITMO OU PASSO-A-PASSO
Início
Lógica de
Inserir bibliotecas programação
Configurar parâmetros:
Inserir um array bidimensional
Interrupção Não
Configurar parâmetros: acionada?
Inicializar Timer e configurar função timer
Sim
Inicializar o chip MAX7219 Executar função de
Configura Intensidade do brilho exibição
Limpar display Escrever as mensagens
de saída
Configurar as mensagens
ANÁLISE DO CÓDIGO
Biblioteca : pgmspace
Biblioteca dos utilitários do Progam Space, cuja
funções permitem ao seu programa
acessar dados armazenados em espaço de
programa ou memória flash.
O Arduino UNO tem 32 Kb de memória flash,
onde 2Kb são utizados pelo bootloader
(software programado no chip para habilitá-lo a utilizá-lo a IDE do Arduino)
Bootloader
Espaço de programa (utiliza a memória flash) é
exatamente o lugar onde seu programa vai ser
armazenado.
ANÁLISE DO CÓDIGO
Comando : PROGMEN
Esta função dos utilitários do Progam Space, diz ao
programa para armazenar este extenso array na
memória flash em vez de armazenar na
SRAM( Static Random Acess Memory).
ANÁLISE DO CÓDIGO
É o espaço de memória do chip Atmega
normalmente utilizado para armazenar variáveis e
strings de caracteres de seu sketch.
Memória: SRAM
O array que nós utilizamos possui 96 caracteres,
compostos de 8 bits cada. O espaço de memória
para variáveis é de aproximadamente 2 Kb.
Se a memória ficar pequena, o Arduino pode parar de
funcionar ou rodar o programa lentamente. Por isso, é
aconselhável utilizar a memória Flash.
ANÁLISE DO CÓDIGO
ASCII
Estas variáveis terão a função de armazenar o valor
ASCII (American Standart Code for Information) do
caractere atual, a ser exibido, e do próximo.
Todas as letras, números, símbolos e demais coisas
que aparecem na tela do computador ou enviados
via linha serial, têm um código ASCII.
Este código é um número de índice que corresponde a
um caractere na tabela ASCII, que aparecerá na tela do
display.
ANÁLISE DO CÓDIGO
CARACTERES
IMPRIMÍVEIS
PRESTE ATENÇÃO!!!
ASCII Os caracteres de 0 a 31, são apenas códigos de
controle, e não serão utilizados. Eles não aparecem
no display de matriz de pontos.
Os caracteres que podem ser impressos (32 a 126)
neste display são mostrados ao lado.
TABELA ASCII
ANÁLISE DO CÓDIGO
pgm_read_byte
Para imprimir estes caracteres é
necessário acessar a fonte de texto, e
saber qual padrão de bits enviar.
Este padrão se encontra no espaço de
memória, e não na SRAM.
“pgm_read_byte”, sabe o endereço na
memória flash dos dados que você
deseja recuperar.
Gostou do conteúdo?
Curta, comente e compartilhe
Prof. Eng. Luiz Gustavo
Inscreva-se em nosso canal
Email: LGUSTAVOSDP@[Link]
CANAL YOUTUBE: L GUSTAVO