Release / Plano (reaproveitar a imagem?) (push) Successful in 7s
CI / Lint e auditorias (push) Successful in 1m48s
CI / Trivy (dependências e segredos) (push) Successful in 12s
CI / Imagem Docker (linux/arm64) (push) Failing after 2m27s
Release / ci (push) Failing after 4m31s
Release / Publica a imagem (linux/arm64) (push) Skipped
Release / Cria a release no Gitea (push) Skipped
- Formação 2 da LASER: slides visuais, apostila, projeto do Wokwi e scanner I2C, validados no simulador (leitura normal, temperatura negativa e sensor desconectado). Circuito com pull-ups de 10 kΩ e 4,7 kΩ para 3V3 e aviso sobre os pull-ups de 5 V da plaquinha PCF8574. - PDFs prontos dos slides e das apostilas dos módulos 1 e 2; slides-pdf agora também exporta a apostila. - Página de entrada em /formacoes e /formacoes/N, gerada por scripts/formacoes-viewer.mjs a partir do formacao.json de cada pasta. - A apostila passou de index.html para apostila.html. - Corrige o link do Fritzing da apostila 1 (/apostilas/1 não existe). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
60 lines
1.6 KiB
Arduino
60 lines
1.6 KiB
Arduino
// Formação em ESP32 · LASER · Módulo 2
|
|
// Estação de temperatura e umidade: DHT22 + LCD 16x2 I2C + ESP32-S3
|
|
|
|
#include <Wire.h>
|
|
#include <DHT.h>
|
|
#include <LiquidCrystal_I2C.h>
|
|
|
|
#define PINO_DHT 12 // fio amarelo
|
|
#define TIPO_DHT DHT22
|
|
#define PINO_SDA 8 // I2C padrão do ESP32-S3
|
|
#define PINO_SCL 9
|
|
|
|
DHT dht(PINO_DHT, TIPO_DHT);
|
|
LiquidCrystal_I2C lcd(0x27, 16, 2); // endereço, colunas, linhas
|
|
|
|
// Símbolo de grau: 8 linhas de 5 pixels
|
|
byte grau[8] = { 0b01100, 0b10010, 0b10010, 0b01100, 0, 0, 0, 0 };
|
|
|
|
void setup() {
|
|
Serial.begin(115200);
|
|
Wire.begin(PINO_SDA, PINO_SCL);
|
|
dht.begin();
|
|
|
|
lcd.init();
|
|
lcd.backlight();
|
|
lcd.createChar(0, grau);
|
|
lcd.setCursor(0, 0);
|
|
lcd.print("LASER ESP32-S3");
|
|
lcd.setCursor(0, 1);
|
|
lcd.print("Iniciando...");
|
|
delay(2000); // o DHT22 precisa de ~2 s para a primeira leitura
|
|
lcd.clear();
|
|
}
|
|
|
|
void loop() {
|
|
float umidade = dht.readHumidity();
|
|
float temperatura = dht.readTemperature();
|
|
|
|
if (isnan(umidade) || isnan(temperatura)) {
|
|
lcd.setCursor(0, 0);
|
|
lcd.print("Falha no sensor ");
|
|
Serial.println("Falha na leitura do DHT22");
|
|
} else {
|
|
lcd.setCursor(0, 0);
|
|
lcd.print("Temp: ");
|
|
lcd.print(temperatura, 1);
|
|
lcd.write(0); // o caractere de grau criado acima
|
|
lcd.print("C ");
|
|
|
|
lcd.setCursor(0, 1);
|
|
lcd.print("Umid: ");
|
|
lcd.print(umidade, 1);
|
|
lcd.print(" % ");
|
|
|
|
Serial.printf("Temperatura: %.1f C | Umidade: %.1f %%\n", temperatura, umidade);
|
|
}
|
|
|
|
delay(2000); // o DHT22 aceita no máximo uma leitura a cada 2 s
|
|
}
|