#include <WiFi.h>
#include <ThingSpeak.h>
const char* ssid = "seu_ssid"; // your network SSID (name of wifi network)
const char* password = "sua_senha"; // your network password
const char* server = "api.thingspeak.com";
const int writeAPIKey = 12345678; // sua chave de API do ThingSpeak
WiFiClient client;
//////////////////////////////////////DECLARAÇÕES//////////////////////////////////////////////
// Semáforo de pedestres
const int botaopin = 3; // Botão para ativar o semáforo de pedestres
volatile bool SolicitacaoPedestre = false; // Variável para sinalizar a solicitação de pedestre
/////////////////////////////////////DISPOSIÇÃO////////////////////////////////////////
void setup()
{
// Configurando os pinos como saídas
DDRD = B0001110;
// Configurando os pinos do semáforo de pedestres e o botão
pinMode(botaopin, INPUT_PULLUP); // Botão com resistor pull-up interno
// Configurando a interrupção para o botão
attachInterrupt(digitalPinToInterrupt(botaopin), SolicitacaoBotaoPedestre, FALLING);
// Conectando à rede WiFi
Serial.begin(9600);
Serial.println();
Serial.print("Conectando a ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi conectado");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
// Inicializando o ThingSpeak
ThingSpeak.begin(client);
}
/////////////////////////////////////OPERAÇÃO DO SEMÁFORO//////////////////////////////////
void loop()
{
if (SolicitacaoPedestre)
{
// Se a solicitação de pedestre foi detectada, ativa o semáforo de pedestres
AtivaSinalPedestre();
SolicitacaoPedestre = false; // Limpa a solicitação após atendê-la
// Enviando dados para o ThingSpeak
int sensorValue = analogRead(A0); // Leitura do sensor
ThingSpeak.writeField(myChannelNumber, 1, sensorValue, myWriteAPIKey);
delay(1500); // Aguarda antes de enviar o próximo dado
}
else
{
// Sem solicitação de pedestre, o semáforo de pedestres permanece apagado
PORTD = B00010000; // Sinal vm do pedestre aceso e vd apagado
}
}
/////////////////////////////////////FUNÇÕES DE SEMÁFORO///////////////////////////////////
void AtivaSinalPedestre()
{
PORTD = B00011000; // Sinal vp do pedestre aceso e vm e vd apagados
delay(3000);
PORTD = B00010000; // Sinal vm do pedestre aceso e vd apagado
}
void SolicitacaoBotaoPedestre()
{
// Sinaliza a solicitação de pedestre quando o botão é pressionado
SolicitacaoPedestre = true;
}