#ifdef ESP8266
#include <ESP8266WiFi.h>
#else
#include <WiFi.h>
#endif
const char* ssid = "Wokwi-GUEST";
const char *pass = "";
WiFiClient client;
#include <ModbusIP_ESP8266.h>
const int REG = 0;
IPAddress remote(192, 168, 2, 100);
const int LOOP_COUNT = 10;
ModbusIP mb;
#include <ThingSpeak.h>
unsigned long Channel_ID = 2123831;
const char* WriteApiKey = "I4IUL20G0DR4310Z";
const char* ReadApiKey = "V7PCX26L1YBC4YSI";
const char *server = "api.thingspeak.com";
int botao = 2;
int potenciometro = 35;
int esteira = 5;
int atuadores_laterais = 18;
int atuador_superior = 19;
void setup() {
Serial.begin(115200);
Serial.print("Conectando-se a rede Wifi");
WiFi.begin(ssid, pass);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("WiFi Conectado");
WiFi.mode(WIFI_STA);
ThingSpeak.begin(client);
mb.client();
pinMode(botao,INPUT_PULLUP);
pinMode(esteira, OUTPUT);
pinMode(atuadores_laterais, OUTPUT);
pinMode(atuador_superior, OUTPUT);
int estado = digitalRead(botao);
delay(100);
int potencia = analogRead(potenciometro);
delay(100);
}
uint16_t res = 0;
uint8_t show = LOOP_COUNT;
void loop() {
if (mb.isConnected(remote)) { // Check if connection to Modbus Slave is established
mb.readHreg(remote, REG, &res); // Initiate Read Coil from Modbus Slave
} else {
mb.connect(remote); // Try to connect if no connection
}
mb.task(); // Common local Modbus task
delay(100); // Pulling interval
if (!show--) { // Display Slave register value one time per second (with default settings)
Serial.println(res);
show = LOOP_COUNT;
}
int estado = digitalRead(botao);
delay(100);
int potencia = analogRead(potenciometro);
delay(100);
if(potencia < 2048 && estado == LOW){
digitalWrite(esteira, HIGH);
delay(4000);
digitalWrite(esteira, LOW);
digitalWrite(atuadores_laterais, HIGH);
delay(1000);
digitalWrite(atuadores_laterais, LOW);
digitalWrite(atuador_superior, HIGH);
delay(1000);
digitalWrite(atuador_superior, LOW);}
ThingSpeak.setField(1, potencia);
int x = ThingSpeak.writeFields (Channel_ID, WriteApiKey);
delay(20000);
if (x == 200) { Serial.println("Update (P) realizado com sucesso"); }
else { Serial.println("Ouve um problema ao realizar o Update"); }
int y = ThingSpeak.readIntField (Channel_ID, 1, ReadApiKey);
Serial.print("Valor no ThingSpeak:");
Serial.println( y);
ThingSpeak.setField(2, estado);
int z = ThingSpeak.writeFields (Channel_ID, WriteApiKey);
delay(20000);
if (z == 200) { Serial.println("Update (B) realizado com sucesso"); }
else { Serial.println("Ouve um problema ao realizar o Update"); }
}