Skip to content

Commit

Permalink
Merge pull request #3 from gh-johnny/development
Browse files Browse the repository at this point in the history
development
  • Loading branch information
gh-johnny authored May 11, 2024
2 parents 2b3eaed + b3966ff commit 77b0cfd
Show file tree
Hide file tree
Showing 5 changed files with 124 additions and 70 deletions.
155 changes: 85 additions & 70 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# LCD Display + sensors 💡💧🔆

# LCD Display + sensors 💡💧🔆
## Integrantes 👋
<ul>
<li>Gabriel Barros Cisoto (RM556309)</li>
Expand All @@ -8,56 +8,62 @@
<li>João Marcelo Furtado Romero (RM555199)</li>
<li>Kayky Silva Stiliano (RM555148)</li>
</ul>

<img src="https://raw.githubusercontent.com/gh-johnny/iot-display-lcd-sensors/main/docs/assets/project-printscreen.png" alt="print do circuito Arduino/printscreen Arduino circuit"/>

<img src="https://raw.githubusercontent.com/gh-johnny/iot-display-lcd-sensors/main/docs/assets/project-printscreen.png" alt="print do circuito Arduino/printscreen Arduino circuit"/>
Link da simulação no <a href="https://wokwi.com/projects/396863714056398849">Wokwi</a>
Link do vídeo de explicação no <a href="https://youtu.be/65e72CsH1QI">Youtube</a>
<br />
<br />
## Explicação do Projeto 📖
Um programa que mede:

O nível de luminosidade através de um LDR

O nível de luminosidade através de um LDR 🔆

<ul>
<li>
Baixa luminosidade: LED verde + mensagem no LCD
</li>
<li>
Média luminosidade: LED amarelo + mensagem no LCD

</li>
<li>
Alta luminosidade: LED vermelho + beep + mensagem no LCD
</li>
</ul>
<br>
O nível de umidade através do DHT

O nível de umidade através do DHT 💦

<ul>
<li>
Baixa umidade: LED vermelho + mensagem no LCD + beep
</li>
<li>
Umidade ideal: LED verde + mensagem no LCD
Umidade ideal: LED verde + mensagem no LCD
</li>
<li>
Alta umidade: LED vermelho + mensagem no LCD + beep
</li>
</ul>
<br>
E temperatura (em °C), também através do DHT

E temperatura (em °C), também através do DHT 🌡

<ul>
<li>
Baixa temperatura: LED amarelo + mensagem no LCD + beep
</li>
<li>
temperatura ideal: LED verde + mensagem no LCD
temperatura ideal: LED verde + mensagem no LCD
</li>
<li>
Alta temperatura: LED amarelo + mensagem no LCD + beep
</li>
</ul>

## Componentes do projeto 🛠️
## Componentes 🛠️
<ul>
<li>1x Placa Arduino Uno</li>
<li>1x Breadboard</li>
Expand All @@ -69,49 +75,50 @@ Um programa que mede:
<li>3x LEDs</li>
<li>6x Resistores</li>
</ul>

<br>

## Dependências do projeto 📦
## Dependências 📦
<ul>
<li>LiquidCrystal</li>
<li>DHT Sensor library</li>
</ul>

<br>

## Explicando o <a href="https://github.com/gh-johnny/iot-display-lcd-sensors/blob/main/arduino.c">Código</a> 🧑‍💻

Precisamos incluir as bibliotecas para podermos ter acesso a métodos dos quais vamos precisar para interagir com o DHT.

Assim como também é preciso declarar, iniciando tais valores para podermos usá-los depois na aplicação.

```c
#include <LiquidCrystal.h>
#include <DHT.h>

const int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

#define DHTPIN A0
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

int valor_ldr;
```
<hr>
A função <span style="font-style: italic;">testaLuminozidade</span> que retorna void, ou seja, não retorna nada, é declarada.
A função `testaLuminozidade()` que retorna void, ou seja, não retorna nada, é declarada.
Fazemos a leitura analógica do nosso LDR, coloamos dentro da função map, para que possamos controlar os valores de forma relativa.
Logo, precisamos da lógica, na qual se o valor se encontra abaixo ou igual a 33
o led verde é aceso e então escrevemos no display que o ambiente está escuro
se está com uma quantidade média de luminosidade (33 < valor analógico do ldr <= 66) o led amarelo é aceso e o beep (piezo/campainha) é tocado além de mostrar no display que o ambiente se encontra em meia luz
caso não entre en nenhum desses casos, significa que a luminosidade está alta, então o led vermelho se acende assim como continua a tocar o beep e escreve no display ambiente muito claro
```c
void testaLuminozidade() {
lcd.clear();
Expand All @@ -122,7 +129,7 @@ void testaLuminozidade() {
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Ambiente esta");
Expand All @@ -133,7 +140,7 @@ void testaLuminozidade() {
digitalWrite(13, LOW);
digitalWrite(12, HIGH);
digitalWrite(11, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Ambiente a meia");
Expand All @@ -146,9 +153,9 @@ void testaLuminozidade() {
digitalWrite(11, LOW);
for (int i = 0; i < 5; i++){
tone(8, 500);
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Ambiente muito");
Expand All @@ -158,24 +165,29 @@ void testaLuminozidade() {
}
```
<hr>

A função <span style="font-style: italic;">montaTelaHumidade</span> que retorna void irá ler valores analógicos do DHT, em específico, a humidade



A função `montaTelaHumidade()` que retorna void irá ler valores analógicos do DHT, em específico, a humidade

Verifica o valor da umidade lida e executa diferentes ações com base em intervalos de valor. Se a umidade for inferior a 50%, será exibida uma mensagem indicando que a umidade está baixa. Se estiver entre 50% e 70%, será exibida uma mensagem indicando que a umidade está ok. Se for superior a 70%, será exibida uma mensagem indicando que a umidade está alta.

Atualiza o display LCD com a mensagem correspondente ao nível de umidade detectado.

Controla os LEDs conectados aos pinos 13, 12 e 11, e um buzzer conectado ao pino 8, para indicar visual e auditivamente o nível de umidade. Os LEDs e o buzzer são acionados de acordo com as condições de umidade detectadas.

```c
void montaTelaHumidade() {
String string1 = "Humidade: ";
float humidade = dht.readHumidity();
String string2 = "%";
String exibirHum = string1 + humidade + string2;

if (humidade < 50){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Humidade BAIXA");
lcd.setCursor(0,1);
lcd.print(exibirHum);

digitalWrite(13, HIGH);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
Expand All @@ -187,7 +199,7 @@ void montaTelaHumidade() {
lcd.print("Humidade OK");
lcd.setCursor(0,1);
lcd.print(exibirHum);

digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
Expand All @@ -199,33 +211,37 @@ void montaTelaHumidade() {
lcd.print("Humidade ALTA");
lcd.setCursor(0,1);
lcd.print(exibirHum);

digitalWrite(13, HIGH);
digitalWrite(12, LOW);
digitalWrite(11, LOW);
tone(8, 500);
}

}
```
<hr>

A função `montaTelaTemp()` que retorna void irá ler valores analógicos do DHT, em específico, a temperatura

A função <span style="font-style: italic;">montaTelaTemp</span> que retorna void irá ler valores analógicos do DHT, em específico, a temperatura

Verifica o valor da temperatura lida e executa diferentes ações com base em intervalos de valor. Se a temperatura for inferior a 10°C, será exibida uma mensagem indicando que a temperatura está baixa. Se estiver entre 10°C e 15°C, será exibida uma mensagem indicando que a temperatura está ok. Se for superior a 15°C, será exibida uma mensagem indicando que a temperatura está alta.

Controla os LEDs conectados aos pinos 13, 12 e 11, e um buzzer conectado ao pino 8, para indicar visual e auditivamente o nível de temperatura. Os LEDs e o buzzer são acionados de acordo com as condições de temperatura detectadas.

```c
void montaTelaTemp(){
String string1 = "Temp: ";
float temperatura = dht.readTemperature();
String string2 = "C";
String exibeTemp = string1 + temperatura + string2;

if (temperatura < 10){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp. BAIXA");
lcd.setCursor(0, 1);
lcd.print(exibeTemp);

digitalWrite(13, LOW);
digitalWrite(12, HIGH);
digitalWrite(11, LOW);
Expand All @@ -237,7 +253,7 @@ void montaTelaTemp(){
lcd.print("Temperatura OK");
lcd.setCursor(0, 1);
lcd.print(exibeTemp);

digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite(11, HIGH);
Expand All @@ -249,20 +265,19 @@ void montaTelaTemp(){
lcd.print("Temp. ALTA");
lcd.setCursor(0, 1);
lcd.print(exibeTemp);

digitalWrite(13, LOW);
digitalWrite(12, HIGH);
digitalWrite(11, LOW);
tone(8, 500);
}
}



```
<hr>

A função <span style="font-style: italic;">montaTelaBlank</span> que retorna void, servirá como uma "helper" funciton para que possamos causar delays entre as diferentes funções, limpando o display e silenciando o beep

A função `montaTelaBlank()` que retorna void, servirá como uma "helper" funciton para que possamos causar delays entre as diferentes funções, limpando o display e silenciando o beep
```c
void montaTelaBlank() {
delay(4000);
Expand All @@ -272,17 +287,17 @@ void montaTelaBlank() {
}
```
<hr>

A função <span style="font-style: italic;">setup</span> que retorna void, no Arduíno serve para fazermos o setup da nosso projeto, dizendo para o programa quais pinos utilizaremos e em qual modo, iniciar o DHT e o display LCD, o código extra com diferentes passos para já escrever no display serve para melhorar a experiência de usuário indicando-o que o programa está sendo inicializado

A função `setup()` que retorna void, no Arduíno serve para fazermos o setup da nosso projeto, dizendo para o programa quais pinos utilizaremos e em qual modo, iniciar o DHT e o display LCD, o código extra com diferentes passos para já escrever no display serve para melhorar a experiência de usuário indicando-o que o programa está sendo inicializado
```c
void setup() {
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11,OUTPUT);
pinMode(8, OUTPUT);
pinMode(A1, INPUT);

dht.begin();

lcd.begin(16, 2);
Expand All @@ -294,15 +309,15 @@ void setup() {
lcd.print("SETUP...");
delay (2000);
lcd.clear();

lcd.setCursor(0, 0);
lcd.print("CP2 - Edge");
delay (1000);
lcd.setCursor(0, 1);
lcd.print("Computing");
delay (2000);
lcd.clear();

for (int i = 0; i <= 15; i++) {
lcd.setCursor(0, 0);
lcd.print("Carregando...");
Expand All @@ -314,26 +329,26 @@ void setup() {
}
```
<hr>

A função <span style="font-style: italic;">loop</span> que retorna void, no Arduíno, servirá como o ciclo de vida inteiro do projeto, é uma função que por padrão roda infinitamente até algo dentro ou fora do códgio pará-lo.
Aqui, vamos chamar nossas funções principais já declaradas para termos uma melhor leitura e manutenção do código, assim como chamar também a função
<span style="font-style: italic;">montaTelaBlank</span> entre essas funções para termos um "reset" entre os passos da nossa aplicação

A função `loop()` que retorna void, no Arduíno, servirá como o ciclo de vida inteiro do projeto, é uma função que por padrão roda infinitamente até algo dentro ou fora do códgio pará-lo.
Aqui, vamos chamar nossas funções principais já declaradas para termos uma melhor leitura e manutenção do código, assim como chamar também a função
`montaTelaBlank()` entre essas funções para termos um "reset" entre os passos da nossa aplicação
```c
void loop() {
testaLuminozidade();
montaTelaBlank();

montaTelaHumidade();
montaTelaBlank();

montaTelaTemp();
montaTelaBlank();
}
```

<section style="display: flex; justify-content: center; width: 100%"><img width="200px" heigth="200px" src="https://raw.githubusercontent.com/gh-johnny/iot-display-lcd-sensors/main/docs/assets/arduino-icon.png" alt="Placa Arduino/Arduino board"></section>

<center><img width="120px" src="https://raw.githubusercontent.com/gh-johnny/iot-display-lcd-sensors/main/docs/assets/arudino-icon.png" alt="Placa Arduino/Arduino board"></center>
<hr>

<p style="text-align: center;">Se encontra sob a <a href="https://github.com/gh-johnny/iot-display-lcd-sensors/blob/main/LICENSE">MIT License.</a></p>
<center>Este projeto encontra sob a <a href="https://github.com/gh-johnny/iot-display-lcd-sensors/blob/main/LICENSE">MIT License.</a></center>
Binary file added docs/Checkpoint 2 - Edge.mp4
Binary file not shown.
Loading

0 comments on commit 77b0cfd

Please sign in to comment.