/*
O esp32 possui um controlador led PWM com 16 canais
(0 a 15) independentes que podem ser configurados
para gerar canais PWM com propriedades diferentes.
Qualquer pino pode ser configurado como saída PWM.
O esp32 possui suporta uma resolução de 1 a 16 bits,
nesse exemplo usaremos a resolução de 8 bits, que
equivale a um valor de 0 a 255 (2ˆ8 = 255).
*/
#include <LiquidCrystal_I2C.h>
//Mapeamento de Hardware
#define LED 2
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
#include <ThingSpeak.h>
const char* ssid = "Wokwi-GUEST"; //Rede wifi
const char* pass = ""; //senha
const long CHANNEL = 2568646 ; //colocar o channel aqui!
const char *WRITE_API = "PACAWM3H216JCBIL" ; //colocar a write api key aqui!
long prevMillisThingSpeak = 0;
int intervalThingSpeak = 15000; // Intervalo minímo para escrever no ThingSpeak write é de 15 segundos
WiFiClient espClient;
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/
//Variáveis globais
int frequencia = 5000;
int canal = 0;
int resolucao = 8;
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
//Configurando o funcionamento do PWM
ledcSetup(canal, frequencia, resolucao);
//Associando a GPIO ao canal escolhido
ledcAttachPin(LED, canal);
Serial.begin(115200);
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
WiFi.begin(ssid, pass); //config wifi
while(WiFi.status() != WL_CONNECTED){ //conectando...
delay(100);
Serial.println(".");
}
Serial.println("WiFi Conectado!");
Serial.println(WiFi.localIP()); //informa endereço IP
ThingSpeak.begin(espClient); // Inicializa o ThingSpeak
}
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/
lcd.init();
lcd.backlight();
}
void loop() {
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
PWM data = LED.getPWM();
Serial.println("Temp: " + String(data.VALOR));
Serial.println("---");
if (millis() - prevMillisThingSpeak > intervalThingSpeak) {
// Configura os campos com os valores
ThingSpeak.setField(1,String(data.VALOR));
// Escreve no canal do ThingSpeak
int x = ThingSpeak.writeFields(CHANNEL, WRITE_API);
if (x == 200) {
Serial.println("Update realizado com sucesso");
}
else {
Serial.println("Problema no canal - erro HTTP " + String(x));
}
prevMillisThingSpeak = millis();
}
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/
//lcd.print(i+ String(data.PWM);
//Incrementando o brilho do led
for(int i=0; i<=255; i++){
//Mudando a intensidade do brilho do led com uso do PWM
ledcWrite(canal, i);
lcd.setCursor(0,0);
lcd.print(i);
Serial.println(i);
delay(100);
}
//Decrementando o brilho do led
for(int i=255; i>=0; i--){
//Mudando a intensidade do brilho do led com uso do PWM
ledcWrite(canal,i);
delay(15);
}
}