Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução
Para a primeira prática, foi estabelecida a conexão de um LCD 16x2 à placa Arduino Uno. O
objetivo era exibir a temperatura no display a partir de um sensor interno do Arduino. O código utiliza
a biblioteca LiquidCrystal.h para manipulação do LCD.
Utilizamos um potenciômetro ligado ao pino V0 para ajustar o contraste do display. O código
implementado realizou a leitura da temperatura interna e exibiu o resultado de forma clara no LCD
16x2.
Código:
#include <LiquidCrystal.h>
int GetTemp();
void setup()
{
lcd.begin(16,2);
}
void loop()
{
lcd.clear();
temp_celsius = GetTemp();
lcd.print(temp_celsius);
lcd.print(" C");
delay(2000);
}
double GetTemp(void) {
unsigned int wADC;
double t;
// Configura a referência interna de tensão e o canal 8
ADMUX = (_BV(REFS1) | _BV(REFS0) | _BV(MUX3));
ADCSRA |= _BV(ADEN); // habilita o conversor ADC
delay(20); // espera a tensão se estabilizar.
ADCSRA |= _BV(ADSC); // inicia a conversão ADC
Tinkercad:
Foto da Prática:
Na segunda prática, um display de 7 segmentos foi conectado à placa Arduino Uno, sendo
controlado por dois botões - um para decrescimento e outro para acréscimo. O objetivo era criar um
contador. Foi necessário implementar uma lógica de anti-bouncing para detectar a pressão dos
botões e atualizar o display de acordo.
Os botões foram conectados a pinos digitais da placa e o display de 7 segmentos foi conectado
conforme as especificações do seu datasheet. O código desenvolvido realizou a contagem de forma
eficiente, garantindo a correta exibição no display.
Código
//Entradas
const int botao1 = 3; // Replace 2 with the actual pin number you're using
const int botao2 = 2;
const int entradaA = 6;
const int entradaB = 7;
const int entradaC = 10;
const int entradaD = 9;
const int entradaE = 8;
const int entradaF = 5;
const int entradaG = 4;
//Variaveis de controle
int cont = 0;
void setup() {
Serial.begin(9600);
pinMode(botao1, INPUT_PULLUP);
pinMode(botao2, INPUT_PULLUP);
pinMode(entradaA, OUTPUT); //A
pinMode(entradaB, OUTPUT); //B
pinMode(entradaC, OUTPUT); //C
pinMode(entradaD, OUTPUT); //D
pinMode(entradaE, OUTPUT); //E
pinMode(entradaF, OUTPUT); //F
pinMode(entradaG, OUTPUT); //G
attachInterrupt(digitalPinToInterrupt(botao1), acres, FALLING);
attachInterrupt(digitalPinToInterrupt(botao2), decres, FALLING);
atualizaDisplay(cont);
}
void loop() {
atualizaDisplay(cont);
}
void acres() {
cont++;
if (cont > 9) cont = 0;
}
void decres() {
cont--;
if (cont < 0) cont = 9;
}
Tinkercad:
Fotos:
➢ Decodificação do sinal de controle inframavelho
Na terceira prática, um controle infravermelho foi utilizado para enviar sinais à placa Arduino
Uno. O objetivo era decodificar esses sinais e exibir as informações correspondentes no monitor
serial. O sensor infravermelho foi conectado aos pinos adequados da placa.
O código desenvolvido utilizou uma biblioteca específica para a decodificação dos sinais
infravermelhos, a IrRemote.hpp. Os resultados hexadecimais foram mapeados, baseado nos sinais
emitidos pelo controle usado no laboratório, e impressos no monitor serial de maneira legível ao
usuário. Exemplificando, o botão 0 do controle imprimia “0” no console, ao invés do código
hexadecimal.
Código:
#define IR_RECEIVE_PIN 3
#include <IRremote.hpp>
void setup()
{
Serial.begin(9600);
delay(1000);
IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK); //configura o lcd
}
void loop() {
if (IrReceiver.decode()) {
//IrReceiver.printIRResultShort(&Serial); //imprime os sinais captados
}
}
Tinkercad:
Fotos:
Conclusão