// ------------------------------- Definições / Bibliotecas ------------------------------------
#define VIBRA 12 //define D12 como o Vibra
#define BUZINA 14 //define D14 como a Buzina
#define BUTTON 13 //define D13 como o Botão
int counter; //declara "counter"
#include <WiFi.h> //inclui funções do Wi-Fi
#include <LiquidCrystal.h> //inclui biblioteca do display
//#include <SPI.h>
LiquidCrystal lcd (19, 23, 18, 4, 2, 15);
// -------------------------------------- Wi-Fi -----------------------------------------
char ssid[] = "SUA REDE"; //nome da rede Wi-Fi
char pass[] = "SUA SENHA"; //senha da rede Wi-Fi
//WifiServer server(80);
// ------------------------------ Configurações do Server -----------------------------------------
//IPAdress ip (192, 168, 25, 0); //endereço IP do servidor
//IPAdress gateway (192, 168, 25, 0); //gateway da rede
//IPAdress subnet (255, 255, 255, 0); //mascara de seb-rede
// --------------------------------- Caracteres Especiais -----------------------------------------
//CARACTERE DE CORRETO
byte correto[8] = {
B00000, B00000,
B00001, B00010,
B10100, B01000,
B00000, B00000
};
//ANIMAÇÂO DE BOLINHA
void bolinha() {
static int8_t counter = 0;
const char* glyphs = "\xa1\xa5\xdb";
lcd.setCursor(19, 1);
lcd.print(glyphs[counter++]);
if (counter == strlen(glyphs)) {
counter = 0;
} //FIM DO IF
} //FIM DO VOID BOLINHA
void setup() {
lcd.createChar(1, correto); //define caractere de "correto"" como "1"
// Inicialize o display
lcd.begin(20,4); //inicia o display
// ------------------------------- Conectando ao Wi-Fi ----------------------------------
lcd.setCursor(0, 1); //escreve "Conectando ao WiFi" no display
lcd.print("Conectando ao WiFi"); //^
//Wifi.config (ip, gateway, subnet);
WiFi.begin (ssid, pass); //conecta sistema ao Wi-Fi
while (WiFi.status() != WL_CONNECTED) {
delay(1000); //delay de 1 segundo
lcd.setCursor(0, 1);
bolinha(); //manda animação da bolinha para display
//delay(7000); //pula conexão com
//break; //wifi para teste
} //FIM DO WHILE
// ---------------------------------- Wi-Fi Conectado -----------------------------------
lcd.clear(); //limpa display
lcd.setCursor(1, 1); //manda "Wi-Fi conectado" para Display quando conectado
lcd.print("Wi-Fi conectado"); //^
lcd.setCursor(17, 1); //manda o "correto" para Display quando conectado
lcd.write(1); //^
//lcd.setCursor(0, 1);
//lcd.print("Endereco IP:");
//lcd.setCursor(0, 2);
//lcd.print(WiFi.localIP());
delay(7000); //delay de 7 segundos
lcd.clear(); //limpa display
//DEFINE ENTRADAS
pinMode (BUTTON, INPUT); //define Botão como entrada
//DEFINE SAÍDAS
pinMode (VIBRA, OUTPUT); //define o Vibra como saída
pinMode (BUZINA, OUTPUT); //define a Buzina como saída
lcd.setCursor(6,2);
lcd.print("TUDO OK!");
// ------------------------------------ EMITINDO ALERTA ---------------------------------------------
while(1) {
if(digitalRead (BUTTON) == HIGH ) { //caso RISCO DE TEMPESTADE seja 1, alerta inicia
lcd.clear(); //limpa display
lcd.setCursor(6,0); //manda "ALERTA!" fixamente para o display
lcd.print("ALERTA!"); //^
for(counter = 0; counter <= 5; ++counter) { //faz "ALTO RISCO DE TEMPESTADE" piscar no display
lcd.setCursor(3,2); //manda "ALTO RISCO DE TEMPESTADE!" para o display
lcd.print("ALTO RISCO DE"); //^
lcd.setCursor(4,3); //^
lcd.print("TEMPESTADE!"); //^
digitalWrite (VIBRA, HIGH); //liga o Vibra
digitalWrite (BUZINA, HIGH); //liga a Buzina
delay(3000); //delay de 3 segundos
lcd.setCursor(0,2); //apaga "ALTO RISCO DE TEMPESTADE!" do display
lcd.print(" "); //^
lcd.setCursor(0,3); //^
lcd.print(" "); //^
digitalWrite (VIBRA, LOW); //desliga o Vibra
digitalWrite (BUZINA, LOW); //desliga a Buzina
delay(500); //delay de 500 ms
counter = 0; //reinicia o loop
} //FIM DO FOR
} //FIM DO IF
} //FIM DO WHILE
} //FIM DO VOID SETUP
void loop() {
} //FIM DO VOID LOOP