Você está na página 1de 14

Relatório da disciplina de Sistemas

Microcontrolados

Discente: Leonardo Serrano Rodrigues RA: D6885F-0


Docente: Gustavo Lahr
Curso: Engenharia Elétrica (Eletrônica)
Turma: 08/EE8P18

Ribeirão Preto/SP
2º semestre 2021
Projeto 1 – Etapa 1

 Programe no Arduino uma maneira de acender um led por vez na


matriz, sendo que você tem um botão contador que vai até 36 como
input

No início do código, são importadas as bibliotecas necessárias para


manipular a matriz de LED e também é nesta etapa onde se declara as variáveis
do código. A biblioteca “Arduino.h”, na verdade se trata de um framework para
que o Arduino possa ser programado na IDE Visual Code, a qual foi utilizada nos
projetos. Na declaração de variáveis o pino 5 foi nomeado como “botao” para
melhor manipulação, as variáveis “botao_pressionado”, “botao_estado” e
“botao_estado_anterior” armazenam os estados do pino 5 (botao).
A classe LedControl foi nomeada para “lc”, assim podemos usar “lc” como
um manipulador para o construtor LedControl, o qual corresponde a lista de
argumentos do tipo inteiro (12,11,10,1).

Em void setup, é onde ocorre as definições dos pinos utilizados do


Arduino, Serial.begin define a taxa de bits por segundo para comunicação serial
entre Arduino e computador. A função pinMode define “botao” como uma entrada
pullup, o pino 13 como saída e inicia o estado do pino 13 em LOW.
Função para interagir com a Matriz de LED, o manipulador “lc” seta os
LEDs através da seguinte estrutura (endereço, linha, coluna, estado boleano).
A função void loop é um laço de repetição, neste caso, a função verifica
inúmeras vezes qual o estado da variável “botao’. Se o estado for diferente do
anterior, ou seja, o botão foi pressionado, ocorre uma verificação para ler se o
“botao” está em HIGH ou LOW, para HIGH o Arduino desliga o pino 13, para
LOW o Arduino liga o pino 13 e incrementa o contador “botao_pressionado”,
“botao_estado_anterior” armazena “botao_estado”.

Link para assistir o funcionamento desta etapa:

https://youtu.be/PFUsjmXJy1I
Projeto 1 – Etapa 2 Final A

 Crie uma rotina em Arduino que acenda automaticamente os LEDs, um


por vez, permanecendo aceso por 1 segundo

O início deste código é o mesmo da etapa anterior, apenas com a adição


de um delay e remoção de variáveis que não serão mais utilizadas.

Neste void setup foram feitas algumas definições básicas para matriz de
LED, como definir que os LEDs iniciarão desligados usando o comando
“lc.shutdown(0,false);”, esta linha de código é composta pelo endereço “0” e o
status “false”, a linha de comando “lc.setIntensity(0,8);” é composta pelo
endereço “0” e intensidade “8”, por fim a linha “lc.clearDisplay(0);” limpa o display
usando o endereço “0”.

A função single usa um operador lógico “for” para executar uma animação
nas linhas e colunas com incremento, enquanto as linhas e colunas forem < 8 o
contador continua incrementando, ou seja, o LED da primeira linha será ligado e
manterá assim por 1 segundo, em seguida ele passa para o próximo LED e
assim por diante até atingir o último LED da última linha e coluna.
O void loop executa uma repetição contínua da função “single”, assim a
animação não tem fim, ela sempre executa a função single com o delay definido
e a função loop executa tudo novamente.

Link para assistir o funcionamento desta etapa:

https://youtu.be/8CSw3XyxNFA
Projeto 1 – Etapa 2 Final B

 Modifique seu código e garanta que os LEDs que acenderam agora


permanecem acesos até atingir o final

Esta etapa contém o mesmo início de código da etapa anterior até o void
setup.

Porém o delay foi removido após “lc.setLed”, com isso a animação da


matriz não terá mais o atraso de 1 segundo para ligar o próximo LED, e também
o LED anterior não apagará, com isso todos os LEDs serão ligados de forma
sequencial, sempre mantendo o anterior ligado, a função ficará em repetição no
void loop.

Link para assistir o funcionamento desta etapa:


https://youtu.be/7WqglQEaOWM
Projeto 1 – Etapa 3 A

 Modifique seu código para que ele agora gere um número aleatório e
acenda o LED aleatoriamente

Para esta etapa foram criadas duas variáveis do tipo “long” que serão
utilizadas para gerar animações aleatórias na matriz.

Em void setup foi definido que a matriz iniciará desligada, foi definida a
intensidade, a taxa de taxa de bits por segundo para comunicação serial e
também foi criada uma rotina randômica para gerar valores aleatórios.

Em void loop será executada a animação repetidas vezes para ligar e


desligar de forma aleatória as linhas e colunas da matriz com delay de 1
segundo.

Link para assistir o funcionamento desta etapa:


https://youtu.be/L66qyxp6sSk
Projeto 1 – Etapa 3 B

 Agora, atualize para que 2 ou mais LEDs, aleatoriamente, sejam


acesos

O início desta etapa mantém o mesmo conceito da etapa anterior, a


variável “randNumber” do tipo “long” será utilizada para gerar animações
aleatórias na matriz.

Função para interagir com a Matriz de LED, o manipulador “lc” seta os


LEDs através da seguinte estrutura (endereço, linha, coluna, estado boleano).
A animação será executada de forma pseudorrandômica, o número de
LEDs ligados, correspondem ao número que foi sorteado na lógica, a animação
dura 10 segundos e depois o número é sorteado novamente em repetição no
void loop.

Link para assistir o funcionamento desta etapa:


https://youtu.be/4vhTR5TdEeA
Projeto 1 – Etapa 4

 Agora modifique seu código para que ele acenda os LEDs em linhas
de maneira aleatória

Para este código serão utilizadas duas variáveis, uma para definir o delay
e outra para gerar valores aleatórios para as linhas da matriz.

O void setup segue com as mesmas definições das etapas anteriores.

A função “rows” usará endereçamento e valores binários para interagir


com as linhas de LED da matriz, neste caso “B11111111” é o mesmo que 255,
isso significa que serão sorteadas linhas inteiras de LED de forma aleatória.

Repetição da função “rows”.

Link para assistir o funcionamento desta etapa:


https://youtu.be/vM8lidh-qaM
Projeto 1 – Etapa 5

 Adicione um ultrassom ao sistema. Verifique a intensidade lida pelo


sensor e acenda um número N proporcional à intensidade do sensor.

 Modifique a maneira como seu algoritmo acende os LEDs baseado no


input do sensor.

Para esta etapa foi adicionado um sensor ultrassônico HC-SR04, as


variáveis “trigPin” e “echoPin” foram criadas para acionar os pulsos do sensor
ultrassônico e produzir um pulso quando o sinal refletido é recebido
respectivamente. As variáveis “duration” e “distance” serão utilizadas para
mensurar a distância do obstáculo. “DIN”, “CS” e “CLK” são variáveis de controle
para a Matriz de LED. A Matriz de LED é iniciada com o manipulador “lc”.

Em void setup foi definido que a variável “trigPin” que se refere ao pino 7
será uma saída e iniciará em nível logico baixo, “echoPin” que se refere ao pino
8 será uma entrada e o baudrate foi definido para 9600.

depois da declaração de todas variáveis, foi criado endereçamentos para cada


conjunto de LED, formando linhas que posteriormente indicarão a distância do
sensor ultrassônico do obstáculo.
No void loop é verificado e impresso no console serial, qual a distância do
sensor ao obstáculo, para cada dada distância em cm, uma linha da matriz é
ligada para indicar a proximidade.
A função “printByte” foi criada para imprimir caracteres especiais, ela
imprime os caracteres a partir de um endereço, a linha que será afetada e o valor
do byte. A função “lc.setRow” se trata de uma instância para classe “void
LedControl” com a seguinte estrutura :

void LedControl::setRow(int addr, int row, byte value)


Com isso “setRow” define todos os 8 LED’s de uma linha para um novo
estado. Para cada valor de cada bit definido como 1, ligará o LED
correspondente.

Link para assistir o funcionamento desta etapa:


https://youtu.be/O-CEOUMZoDo

Você também pode gostar