0% acharam este documento útil (0 voto)
35 visualizações8 páginas

Projeto 1 Arduino

O projeto visa desenvolver um sistema que monitora em tempo real as tensões de quatro potenciômetros usando um Arduino Uno e um display LCD I2C 20x4. O sistema indica qual potenciômetro tem a maior tensão com LEDs e aciona um buzzer em caso de variação na maior tensão. O circuito e o código para implementação são detalhados, incluindo conexões e funcionalidades específicas.

Enviado por

guilunazac1
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
35 visualizações8 páginas

Projeto 1 Arduino

O projeto visa desenvolver um sistema que monitora em tempo real as tensões de quatro potenciômetros usando um Arduino Uno e um display LCD I2C 20x4. O sistema indica qual potenciômetro tem a maior tensão com LEDs e aciona um buzzer em caso de variação na maior tensão. O circuito e o código para implementação são detalhados, incluindo conexões e funcionalidades específicas.

Enviado por

guilunazac1
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

UNIVERSIDADE ESTADUAL PAULISTA

Faculdade de Engenharia de Ilha Solteira


Departamento de Engenharia Elétrica

MEC 638 - Laboratório de Eletrônica

Projeto 1 - Display multissensores

Data da Experiência: 17/11/2024

Alunos:
Guilherme Luna Zacarias RA.: 212051806

Professor:
Prof. Dr. Carlos Antônio Alves

Ilha Solteira - SP
Novembro de 2024
Sumário
1 Enunciado 3

2 Circuito 5

3 Código feito no WOKWI 6


3

1 Enunciado
O objetivo deste projeto é desenvolver um sistema integrado que monitore, em
tempo real, as tensões analógicas de quatro potenciômetros conectados ao Arduino
Uno. O sistema utiliza um display LCD I2C 20x4 para exibir as leituras de tensão e o
tempo de execução do programa. LEDs são usados para indicar qual potenciômetro
apresenta a maior tensão, enquanto um buzzer é ativado em caso de variação na maior
tensão detectada, mesmo que no mesmo potenciômetro.

Requisitos do Projeto
1. Componentes:

• Arduino Uno;
• Display LCD I2C 20x4;
• 4 potenciômetros;
• 1 buzzer;
• 4 conjuntos de LEDs com resistores.

2. Funcionalidades:

• Medir continuamente as tensões nos potenciômetros conectados às entradas


analógicas A0, A1, A2 e A3.
• Exibir, em tempo real, no LCD:
– O tempo de execução desde o início do programa.
– As tensões medidas em cada potenciômetro com precisão de três casas
decimais.
• Indicar o potenciômetro com a maior tensão por meio de LEDs.
• Acionar o buzzer por 500 ms sempre que houver uma mudança na maior
tensão registrada, mesmo que no mesmo potenciômetro.

3. Atividade:

• As tensões são calculadas a partir da conversão da leitura ADC do Arduino,


mapeando os valores de 0 a 5 V.
• Os LEDs próximos aos potenciômetros indicam visualmente qual possui a
maior tensão.
• Um alerta sonoro (buzzer) é acionado caso haja variação no valor da maior
tensão.
4

4. Exibição:

• O sistema atualiza as informações exibidas no LCD a cada 500 ms.

Construção do Circuito
1. Conexões principais:

• Os potenciômetros são conectados às entradas analógicas A0 a A3.


• Os LEDs são conectados aos pinos digitais 2, 3, 4 e 5 (via resistores limitadores
de corrente).
• O buzzer é conectado ao pino digital 8.
• O display LCD é conectado à interface I2C (pinos SDA e SCL do Arduino).
5

2 Circuito

Figura 1: Circuito simulado no WOKWI


6

3 Código feito no WOKWI


Clique aqui para acessar o link do projeto
1

2 # include <LiquidCrystal_I2C .h>


3

4 # define I2C_ADDR 0x27


5 # define LCD_COLUMNS 20
6 # define LCD_LINES 4
7

8 LiquidCrystal_I2C lcd(I2C_ADDR , LCD_COLUMNS , LCD_LINES );


9

10 const int potPins [] = {A0 , A1 , A2 , A3 }; // Pinos analogicos dos


potenciometros
11 const int ledPins [] = {2, 3, 4, 5}; // Entradas dos LEDs
correspondentes aos potenciometros
12 const int buzzerPin = 8; // entrada do buzzer
13 // ---------------------------------//
14 // ---------------------------------////---------------------------------//
15 // ---------------------------------//
16 int maxVoltagePin = -1; // Variavel de armazenamento do
sinal do pino com maior tensao
17 float lastMaxVoltage = 0; // maxima tensao registrada por
ultimo instante (t)
18 unsigned long startTime ; // Define tempo de inicializacao
19 // ---------------------------------//
20 // ---------------------------------//
21 // ---------------------------------//
22 // ---------------------------------//
23 void setup () {
24 Serial . begin (115200) ;
25 lcd.init ();
26 lcd. backlight ();
27

28 // Inicializa os LEDs e o buzzer


29 for (int i = 0; i < 4; i++) {
30 pinMode ( ledPins [i], OUTPUT );
31 digitalWrite ( ledPins [i], HIGH);} // Mantem os leds apagados no inicio (t
=0)
32

33

34 pinMode (buzzerPin , OUTPUT );


35 digitalWrite (buzzerPin , LOW); // Mantem o buzzer desligado no inicio (t
=0)
36

37 startTime = millis () ;} // " Start " do contador de tempo


38
7

39 // ---------------------------------//
40 // ---------------------------------////---------------------------------//
41 // ---------------------------------////---------------------------------//
42 // ---------------------------------//
43 void loop () {
44 float voltages [4]; // Array que guarda as leituras de tensao
45 int maxIndex = 0; // mostrar o indice do potenciometro com a maior
tensao
46 float maxVoltage = 0;
47

48 // Leitura das tensoes dos potenciometros


49 for (int i = 0; i < 4; i++) {
50 voltages [i] = analogRead ( potPins [i]) * (5.0 / 1023.0) ; // Faz a
conversao da leitura para volts
51 if ( voltages [i] > maxVoltage ) {
52 maxVoltage = voltages [i];
53 maxIndex = i;}}
54

55

56

57 // Parte que vai Verificar se houve mudanca na maior tensao


58 if ( maxVoltage != lastMaxVoltage ) {
59 if ( maxVoltagePin == maxIndex ) {
60 // Toca o buzzer se a maior tensao mudou no mesmo potenciometro
61 tone(buzzerPin , 1000) ; // Frequencia no vaelor de 1 kHz
62 delay (500) ; // Toca o alarme durante os 500 ms
63 noTone ( buzzerPin );
64 }
65 // ---------------------------------//
66 lastMaxVoltage = maxVoltage ;
67 maxVoltagePin = maxIndex ;
68 }
69

70 // Atualiza LEDs indicando o potenciometro com a maior tensao


71 for (int i = 0; i < 4; i++) {
72 digitalWrite ( ledPins [i], (i == maxIndex ) ? HIGH : LOW);
73 }
74 // ---------------------------------//
75 // ---------------------------------//
76 // ---------------------------------//
77 // ---------------------------------//
78 // Exibe o tempo de execucao e as tensoes no LCD
79 lcd. clear ();
80 lcd. setCursor (0, 0);
81 lcd. print (" Tempo : ");
82 lcd. print (( millis () - startTime ) / 1000.0 , 1); // Tempo em segundos
83 lcd. print ("s");
8

84 // ---------------------------------//
85 // ---------------------------------//
86 lcd. setCursor (0, 1);
87 lcd. print ("S1:");
88 lcd. print ( voltages [0] , 3);
89 lcd. print ("V ");
90 // ---------------------------------//
91 // ---------------------------------//
92 lcd. setCursor (0, 2);
93 lcd. print ("S2:");
94 lcd. print ( voltages [1] , 3);
95 lcd. print ("V ");
96 // ---------------------------------//
97 // ---------------------------------//
98 lcd. setCursor (10 , 1);
99 lcd. print ("S3:");
100 lcd. print ( voltages [2] , 3);
101 lcd. print ("V ");
102 // ---------------------------------//
103 // ---------------------------------//
104 lcd. setCursor (10 , 2);
105 lcd. print ("S4:");
106 lcd. print ( voltages [3] , 3);
107 lcd. print ("V ");
108 // ---------------------------------//
109 // ---------------------------------//
110 delay (500) ; // Atualiza a cada 500 ms
111 }

Você também pode gostar