Prévia do material em texto
UNIVERSIDADE VEIGA DE ALMEIDA
ENGENHARIA DA COMPUTAÇÃO GRADUAÇÃO
LEONARDO GAMA DE OLIVEIRA
MICROCONTROLADORES E MICROPROCESSADORES
RIO DE JANEIRO- RJ
2023
LEONARDO GAMA DE OLIVEIRA
MICROCONTROLADORES E MICROPROCESSADORES
Trabalho apresentado a Universidade Veiga de
Almeida referente a disciplina Microcontroladores e
microprocessadores.
RIO DE JANEIRO- RJ
2023
Nome: Leonardo Gama de Oliveira.
Matrícula: 1200102379.
1. BLINK LED
Esse código em C++ é um exemplo de como fazer um LED piscar no pino 13 do
Arduino. Ele utiliza as funções setup() e loop().
Na função setup(), o código define o pino 13 (LED_BUILTIN) como uma saída usando
a função pinMode().
Na função loop(), o código alterna o estado do LED entre ligado e desligado usando
as funções digitalWrite(). Primeiro, o LED é aceso definindo o pino como HIGH, em
seguida, um atraso de 1 segundo (1000 milissegundos) é inserido usando a função
delay(). Depois disso, o LED é apagado definindo o pino como LOW, e outro atraso
de 1 segundo é inserido. Esse ciclo se repete continuamente enquanto o Arduino
estiver ligado.
Em resumo, o código pisca o LED conectado ao pino 13, alternando entre
ligado e desligado com intervalos de 1 segundo.
Sobre os componentes, o código pisca um LED conectado ao pino 13 do Arduino. O
LED é conectado através de uma resistência limitadora de corrente para evitar danos
ao LED.
Os demais componentes necessários para o funcionamento básico do Arduino,
como a placa Arduino em si, cabos de conexão e fonte de alimentação, não estão
mencionados diretamente no código, mas são essenciais para executar o programa
corretamente.
2. FADE LED
Esse código em C++ utiliza a função analogWrite() do Arduino para controlar a
intensidade luminosa de um LED conectado ao pino 9. O LED é controlado através de
modulação por largura de pulso (PWM), permitindo ajustar o brilho do LED.
Aqui está uma explicação do código linha por linha:
int brightness = 0; - Declara uma variável inteira chamada brightness e a inicializa com
o valor 0. Essa variável será usada para controlar o brilho do LED.
void setup() - É a função de configuração do Arduino, executada uma vez no início.
Aqui, define-se o pino 9 como uma saída usando pinMode().
void loop() - É a função principal que é executada continuamente após a função
setup(). Aqui está o loop principal do programa.
for(brightness = 0 ; brightnessacendendo os LEDs nas
cores corretas em sequência para controlar o fluxo de tráfego. O LED vermelho indica
para parar, o LED âmbar prepara a movimentação, o LED verde permite a passagem
e o LED âmbar novamente alerta sobre a parada iminente. O ciclo se repete
continuamente enquanto o Arduino estiver ligado.
5. POTENCIÔMETRO
Este código em C++ lê um valor analógico de um pino A0 e controla três LEDs
(conectados aos pinos 3, 4 e 5) com base nesse valor. Ele usa a função analogRead()
para ler o valor analógico e compara esse valor com limites pré-definidos para acender
ou apagar os LEDs.
Aqui está uma explicação do código linha por linha:
Serial.begin(9600); - Inicializa a comunicação serial com uma taxa de transmissão de
9600 bps. Isso permite que você envie dados do Arduino para o computador através
da porta serial para fins de depuração ou monitoramento.
pinMode(3, OUTPUT); - Configura o pino 3 como uma saída para controlar um LED.
pinMode(4, OUTPUT); - Configura o pino 4 como uma saída para controlar outro LED.
pinMode(5, OUTPUT); - Configura o pino 5 como uma saída para controlar um terceiro
LED.
Serial.println(analogRead(A0)); - Lê o valor analógico do pino A0 usando a função
analogRead() e imprime-o na porta serial. Isso permite monitorar o valor lido no
monitor serial.
As próximas linhas contêm várias condições if que comparam o valor lido no pino A0
com limites específicos.
if (analogRead(A0) 206.9 and analogRead(A0) 613.8 and analogRead(A0) 818.4 and analogRead(A0) 920.7) - Se o valor lido for maior que 920.7, todos os LEDs são
acesos por um período de tempo e, em seguida, todos os LEDs são apagados por um
período de tempo.
O código dentro do loop principal é executado continuamente. Ele lê o valor analógico,
verifica as condições e controla os LEDs de acordo com o valor lido.
Em resumo, esse código lê um valor analógico de um pino e utiliza diferentes
limites para controlar os LEDs conectados a três pinos diferentes. Dependendo do
valor lido, diferentes combinações de LEDs são acesos ou apagados.
6. HELLO WORLD SERIAL
Este código em C++ configura a comunicação serial e envia mensagens para o
monitor serial a cada intervalo de tempo.
Aqui está uma explicação linha por linha do código:
void setup(): Esta função é executada uma vez quando o Arduino é ligado ou resetado.
É usada para inicializar configurações iniciais.
Serial.begin(9600): Inicia a comunicação serial com uma taxa de transmissão de 9600
bps. Isso permite que o Arduino se comunique com o computador através da porta
serial.
void loop(): Esta função é executada continuamente após a conclusão da função
setup(). É onde o código principal do programa é colocado.
Serial.print("Hello world"): Envia a string "Hello world" para o monitor serial. A função
Serial.print() é usada para enviar dados para a porta serial sem adicionar uma nova
linha.
Serial.println(): Envia uma nova linha para o monitor serial. Isso é feito para que a
próxima mensagem seja exibida em uma nova linha no monitor.
delay(2000): Faz uma pausa de 2000 milissegundos (2 segundos). Isso significa que
o programa ficará em espera por 2 segundos antes de executar a próxima linha de
código.
delay(2000): Faz uma pausa de 2000 milissegundos novamente.
O código dentro do loop principal será executado repetidamente, enviando a
mensagem "Hello world" para o monitor serial a cada 2 segundos. Isso cria um loop
contínuo de exibição dessas mensagens no monitor serial.
7. LDR SERIAL
Este código em C++ lê o valor analógico de um sensor de luz (LDR) conectado ao
pino A0 e o envia para o monitor serial.
Aqui está uma explicação linha por linha do código:
int estado_pot = 0;: Declara uma variável inteira chamada estado_pot e a inicializa
com o valor 0. No entanto, essa variável não é usada posteriormente no código
fornecido.
int valor_LDR = 0;: Declara uma variável inteira chamada valor_LDR e a inicializa com
o valor 0. Essa variável será usada para armazenar o valor lido do sensor de luz.
void setup(): Esta função é executada uma vez quando o Arduino é ligado ou resetado.
É usada para inicializar configurações iniciais.
pinMode(A0, INPUT);: Configura o pino A0 como uma entrada, indicando que será
usado para ler um valor analógico do sensor de luz.
Serial.begin(9600);: Inicia a comunicação serial com uma taxa de transmissão de 9600
bps. Isso permite que o Arduino se comunique com o computador através da porta
serial para enviar dados.
void loop(): Esta função é executada continuamente após a conclusão da função
setup(). É onde o código principal do programa é colocado.
valor_LDR = analogRead(A0);: Lê o valor analógico do pino A0 usando a função
analogRead() e armazena esse valor na variável valor_LDR. Essa função converte a
tensão presente no pino A0 em um valor digital de 0 a 1023, representando a faixa de
0 a 5 volts.
Serial.println(valor_LDR);: Envia o valor lido do sensor de luz para o monitor serial
usando a função Serial.println(). Isso exibe o valor no monitor serial seguido de uma
nova linha.
delay(10);: Cria um atraso de 10 milissegundos antes de repetir o loop. Isso ajuda a
melhorar o desempenho da simulação.
O código dentro do loop principal será executado continuamente. Ele lê o valor
analógico do sensor de luz, envia esse valor para o monitor serial e aguarda por 10
milissegundos antes de repetir o processo. Isso permite monitorar e acompanhar os
valores lidos pelo sensor de luz no monitor serial.
8. INTERRUPÇÃO LED
Este código em C++ configura um botão externo para alterar o estado de um LED
conectado ao pino 10 do Arduino. O LED muda de estado (ligado ou desligado)
sempre que o botão é pressionado.
Aqui está uma explicação linha por linha do código:
bool on=false;: Declara uma variável booleana chamada on e a inicializa como false.
Essa variável será usada para controlar o estado do LED.
void setup(): Esta função é executada uma vez quando o Arduino é ligado ou resetado.
É usada para inicializar configurações iniciais.
pinMode(10, OUTPUT);: Configura o pino 10 como uma saída, indicando que será
usado para controlar o LED.
attachInterrupt(0,ledchange,FALLING);: Configura uma interrupção no pino digital 2
(interrupção 0) que será acionada quando houver uma queda de tensão no pino
(FALLING). Quando a interrupção ocorre, a função ledchange() é chamada.
void loop(): Esta função é executada continuamente após a conclusão da função
setup(). É onde o código principal do programa é colocado.
delay(5000000);: Faz uma pausa de 5 segundos (5000000 microssegundos). Durante
esse tempo, o Arduino está esperando por interrupções.
void ledchange(): Esta é a função que é chamada quando ocorre uma interrupção no
pino digital 2.
on=!on;: Inverte o valor da variável on, ou seja, se on for true, torna-se false, e se on
for false, torna-se true. Isso alterna o estado do LED.
if(on) digitalWrite(10,LOW); else digitalWrite(10, HIGH);: Se on for true, o LED é ligado
(LOW), casocontrário, o LED é desligado (HIGH). Isso controla o estado do LED com
base no valor atual da variável on.
Resumindo, o código configura um botão externo para alterar o estado de um
LED. Quando o botão é pressionado, a interrupção é acionada, chamando a função
ledchange(), que inverte o estado do LED. O LED permanece no estado atual por 5
segundos antes de verificar novamente a interrupção. Isso permite que o LED seja
alternado entre ligado e desligado sempre que o botão é pressionado.
9. PROJETO FREQUENCÍMETRO
Este código utiliza um display LCD, botões e um buzzer para controlar a frequência
de um som emitido. Aqui está uma explicação resumida do código:
Inclui a biblioteca "LiquidCrystal" para controlar o display LCD.
Declara variáveis para armazenar a frequência, o estado dos botões e o pino do
buzzer.
Inicializa o display LCD com 16 colunas e 2 linhas, e exibe uma mensagem inicial.
Configura os pinos dos botões e do buzzer como saídas.
No loop principal:
a) Lê o estado dos botões.
b) Se o botão 1 for pressionado, aumenta a frequência em 100 unidades.
c) Se o botão 2 for pressionado, diminui a frequência em 100 unidades.
d) Limita a frequência mínima a 0 e a frequência máxima a 20000.
e) Atualiza o display LCD com a frequência atual.
f) Emite um som com a frequência atual utilizando o buzzer.
g) Aguarda 100 milissegundos antes de repetir o loop.
Resumidamente, o código permite ajustar a frequência de um som emitido
usando botões. A frequência é exibida em um display LCD e o som correspondente é
reproduzido através de um buzzer. O usuário pode aumentar ou diminuir a frequência
usando os botões, e o display LCD mostra a frequência atualizada em tempo real.
10. BIBLIOTECA SERVO
Este código utiliza a biblioteca "Servo" para controlar um servo motor conectado ao
pino 9 do Arduino. Aqui está uma explicação resumida do código:
Inclui a biblioteca "Servo" para controlar o servo motor.
Declara variáveis para armazenar a posição do servo, bem como contadores
auxiliares.
No setup():
a) Anexa o objeto servo_9 ao pino 9 do Arduino, especificando uma faixa de pulsos
entre 500 e 2500 microssegundos.
No loop principal:
a) Define a posição inicial do servo como 0.
b) Inicia um loop que varia a posição do servo de 1 a 179 graus, incrementando 1 grau
a cada iteração.
A função servo_9.write(position) define a posição do servo.
Um pequeno atraso de 20 milissegundos é inserido após cada movimento para dar
tempo ao servo de alcançar a posição desejada.
c) Após o loop anterior, um segundo loop é iniciado para variar a posição do servo de
179 a 1 grau, decrementando 1 grau a cada iteração.
A função servo_9.write(position) é usada novamente para definir a posição do servo.
O loop principal se repete continuamente, fazendo com que o servo motor oscile entre
as posições de 0 a 179 graus e depois de 179 a 1 grau.
Resumidamente, o código controla um servo motor conectado ao pino 9 do
Arduino, fazendo-o mover-se de forma contínua entre as posições de 0 a 179 graus e
depois de 179 a 1 grau. O servo motor se move suavemente em ambas as direções
com um pequeno atraso entre cada movimento.
11. PROJETO A ESCOLHA
Este código utiliza a biblioteca "LiquidCrystal" para controlar um display LCD
alfanumérico e medir a temperatura usando um sensor analógico. Aqui está uma
explicação resumida do código:
Inclui a biblioteca "LiquidCrystal" para se comunicar com o display LCD.
Inicializa o objeto "lcd" especificando os pinos de interface do Arduino.
Declara variáveis para armazenar a entrada do sensor, a temperatura em graus, e os
pinos associados aos LEDs vermelho e verde.
No setup():
a) Define os pinos do LED vermelho e do LED verde como saída.
b) Inicializa o display LCD com 16 colunas e 2 linhas.
c) Inicia a comunicação serial a uma taxa de 9600 baud.
No loop principal:
a) Define o cursor do LCD para a coluna 0, linha 0.
b) Lê a entrada analógica do sensor e converte-a em volts.
c) Subtrai o offset e converte o resultado em temperatura em graus Celsius.
d) Imprime os valores de tensão e temperatura no monitor serial.
e) Imprime a palavra "Temperature" no LCD.
f) Define o cursor do LCD para a coluna 0, linha 1.
g) Imprime a temperatura no LCD, seguida de "Celsius".
h) Verifica se a temperatura é maior ou igual a 40 graus.
Se verdadeiro, acende o LED vermelho, apaga o LED verde e emite um tom na
pinagem 8.
Se false, acende o LED verde, apaga o LED vermelho e para de emitir o tom.
i) Aguarda um atraso de 1 segundo.
Resumidamente, o código utiliza um display LCD para mostrar a temperatura
medida por um sensor analógico. Além disso, ele controla os LEDs vermelho e verde
com base na leitura da temperatura. Se a temperatura for igual ou superior a 40 graus
Celsius, o LED vermelho é ligado e um tom é emitido. Caso contrário, o LED verde é
ligado e o tom é interrompido.