#include <stdio.h>
#include "pico/stdlib.h"
#include "string.h"
#include "hardware/gpio.h"
#include "dht22-pico.h"
#include "ss_oled.h"
// RPI Pico
#define SDA_PIN 20
#define SCL_PIN 21
#define RESET_PIN -1
int rc;
SSOLED oled;
static uint8_t ucBuffer[1024];
#define OLED_WIDTH 128
#define OLED_HEIGHT 64
const uint LED_PIN = PICO_DEFAULT_LED_PIN;
const uint DHT_PIN = 15;
void blink() {
sleep_ms(50);
gpio_put(LED_PIN, 1);
sleep_ms(50);
gpio_put(LED_PIN, 0);
}
int main() {
stdio_init_all();
gpio_init(LED_PIN);
gpio_set_dir(LED_PIN, GPIO_OUT);
dht_reading dht = dht_init(DHT_PIN);
uint8_t uc[8];
int i, j;
char szTemp[32];
rc = oledInit(&oled, OLED_128x64, 0x3c, 0, 0, 1, SDA_PIN, SCL_PIN, RESET_PIN, 1000000L);
if (rc != OLED_NOT_FOUND)
{
oledFill(&oled, 0,1);
oledSetContrast(&oled, 127);
oledWriteString(&oled, 0,0,2,(char *)"Nivel de ruido:", FONT_NORMAL,0,1); // Adicionando a mensagem "nivel de ruido::"
sleep_ms(4000);
}
oledSetBackBuffer(&oled, ucBuffer);
while (1) {
sleep_ms(2000);
uint8_t status = dht_read(&dht);
if (status == DHT_OK) {
printf("RH: %.1f%%\tTemp: %.1fC\n", dht.humidity, dht.temp_celsius);
sprintf(szTemp,"RH: %.1f%%\tTemp: %.1fC\n", dht.humidity, dht.temp_celsius );
oledWriteString(&oled, 0,0,2,(char *)"Nivel de ruido:", FONT_NORMAL,0,1);
blink();
} else if (status == DHT_ERR_CHECKSUM) {
printf("Bad data (checksum)\n");
blink();
blink();
} else {
printf("Bad data (NaN)\n");
blink();
blink();
}
}
return 0;
}