#include <LiquidCrystal_I2C.h>
#include<WiFi.h>
#define Sensor A0
const char* ssid = "Wokwi-GUEST"; //Coloque aqui o nome da rede WiFi
const char* password = ""; //Coloque aqui a senha da rede WiFi
const float BETA = 3950;
// configurando o servidor na porta 80
WiFiServer server(80);
// variavel para armazenar o HTTP request
String header;
// variavel auxilar que armazena o estado da porta
String output27State = "off";
// variavel para definir a porta 27
const int output27 = 27;
// tempo atual
unsigned long currentTime = millis();
// tempo anterior
unsigned long previousTime = 0;
// define timeoutpara 2s (example: 2000ms = 2s)
const long timeoutTime = 2000;
// Configuração da tela do lcd
LiquidCrystal_I2C lcd(0x27, 20, 4);
//----------------------------------------------------------------------------------------
void setup() {
Serial.begin(115200);
pinMode(output27, OUTPUT);
digitalWrite(output27, LOW);
// Conectando a Wi - fi
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
// Mostrando o IP no console
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
server.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(0,1);
lcd.print("Temperatura: ");
}
void loop() {
int analogValue = analogRead(Sensor);
float celsius = 1 / (log(1 / (4095. / analogValue - 1)) / BETA + 1.0 / 298.15) - 273.15;
lcd.setCursor(0,2);
lcd.print(celsius);
Serial.print(" Temperatura: ");
Serial.print(celsius);
Serial.println(" ºC");
WiFiClient client = server.available(); // buscando um client
if (client) { //se o cliente estiver conectado,
currentTime = millis();
previousTime = currentTime;
Serial.println("New Client."); //Novo cliente
String currentLine = "";
while (client.connected() && currentTime - previousTime <= timeoutTime) { //loop enquanto o cliente estiver conectado
currentTime = millis();
if (client.available()) {
char c = client.read();
Serial.write(c);
header += c;
if (c == '\n') {
if (currentLine.length() == 0) {
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();
if (header.indexOf("GET /27/on") >= 0) {
Serial.println("GPIO 27 on");
output27State = "on";
digitalWrite(output27, HIGH);
} else if (header.indexOf("GET /27/off") >= 0) {
Serial.println("GPIO 27 off");
output27State = "off";
digitalWrite(output27, LOW);
}
client.println("<!DOCTYPE html><html>");
client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
client.println("<link rel=\"icon\" href=\"data:,\">");
client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
client.println(".button { background-color: #4CAF50; border: none; color: white; padding: 16px 40px;");
client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
client.println(".button2 {background-color: #555555;}</style></head>");
client.println("<body><h1>LUCAS LEAL E JUREMA LIMA - SERVER</h1>");
client.println("<p>GPIO 27 - State " + output27State + "</p>");
if (output27State=="off") {
client.println("<p><a href=\"/27/on\"><button class=\"button\">ON</button></a></p>");
} else {
client.println("<p><a href=\"/27/off\"><button class=\"button button2\">OFF</button></a></p>");
}
client.println("</body></html>");
client.println();
break;
} else {
currentLine = "";
}
} else if (c != '\r') {
currentLine += c;
}
}
}
header = "";
client.stop();
Serial.println("Client disconnected.");
Serial.println("");
}
delay(1000);
}