#define BLYNK_PRINT Serial
#include <MCP3008.h>
#include <ESP8266WiFi.h> //เรียกใช้ไลเบอรี่
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <DHT.h>
#define DHTPIN 0 // กำหนดช่องพินของเซนเชอร์ ขาD3
#define DHTTYPE DHT22 // DHT 11 ชื่อ ของเซ็นเชอร์ที่ใช้
#define BLYNK_PRINT DebugSerial
#define CS_PIN 15
#define CLOCK_PIN 14
#define MOSI_PIN 13
#define MISO_PIN 12
MCP3008 adc(CLOCK_PIN, MOSI_PIN, MISO_PIN, CS_PIN);
int sensorValue = 0;
int sensorPin = A0;
char RelayPin = 12; //ขาD4 ปั๊มน้ำรดน้ำ ในถังผสม
char Relay1 = 16; //ขาD2 ปั๊มน้ำถัง A
char Relay2 = 5; //ขาD0 ปั๊มน้ำถัง B
char Relay3 = 4; //ขาD0 ปั๊มน้ำถังผสม
char auth[] = "34r2TCne4O8RuuWxkohVrv_sQwKHEDbe";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Sermphan_2.4GHz";
char pass[] = "0987297146";
BlynkTimer timer;
BlynkTimer sensor; // Timer object for the DHT sensor
BlynkTimer charger; // Timer object for the charger
DHT dht(DHTPIN, DHTTYPE);
int x_time = 0;
bool _x_time = false;
int chargeCounter = 0;
int chargeTime = 1;
int x_time1 = 0;
bool _x_time1 = false;
int chargeCounter1 = 0;
int chargeTime1 = 1;
int x_time2 = 0;
bool _x_time2 = false;
int chargeCounter2 = 0;
int chargeTime2 = 2;
void myTimerEvent()
{
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t))
{
Serial.println("Failed to read from DHT sensor!");
return;
}
else
{
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.println(t);
Blynk.virtualWrite(V5, h);
Blynk.virtualWrite(V4, t);
}
}
void setup()
{
Serial.begin(115200);
pinMode(sensorPin, INPUT);
pinMode(RelayPin, OUTPUT);
digitalWrite(RelayPin, HIGH);
pinMode(Relay1, OUTPUT);
pinMode(Relay2, OUTPUT);
pinMode(Relay3, OUTPUT);
digitalWrite(Relay1, HIGH);
digitalWrite(Relay2, HIGH);
digitalWrite(Relay3, HIGH);
Serial.println("กำลังเชื่อมต่อไปที่ Blynk Server");
Blynk.connect();
dht.begin();
Blynk.begin(auth, ssid, pass, "blynk.iot-cm.com", 8080);
timer.setInterval(2000L, myTimerEvent);
timer.setInterval(1000L, countCharger);
timer.setInterval(1000L, countCharger1);
timer.setInterval(1000L, countCharger2);
timer.setInterval(1000L, SendMCP3008);
}
void countCharger()
{
if(_x_time == true){ // ถ้ามีการกดปุ่มปั๊ม 1 ครั้ง
x_time++; // นับไปครั้งละ 1 วิ แต่ยังจะไม่เข้า loop 5 วิ เพราะยังนับไม่ถึง
if (x_time > 1) { //นับไปจนกว่า x_time มากกว่า 5
digitalWrite(Relay1, LOW);
Blynk.virtualWrite(V1, LOW); // คืนค่าปุ๊มกดปั๊มให้ Off
Blynk.virtualWrite(V10,chargeCounter);
_x_time = false;
}
}
}
void countCharger1()
{
if(_x_time1 == true){ // ถ้ามีการกดปุ่มปั๊ม 1 ครั้ง
x_time1++; // นับไปครั้งละ 1 วิ แต่ยังจะไม่เข้า loop 5 วิ เพราะยังนับไม่ถึง
if (x_time1 > 1) { //นับไปจนกว่า x_time มากกว่า 5
digitalWrite(Relay2, LOW);
Blynk.virtualWrite(V3, LOW); // คืนค่าปุ๊มกดปั๊มให้ Off
Blynk.virtualWrite(V11,chargeCounter1);
_x_time1 = false;
}
}
}
void countCharger2()
{
if(_x_time2 == true){ // ถ้ามีการกดปุ่มปั๊ม 1 ครั้ง
x_time2++; // นับไปครั้งละ 1 วิ แต่ยังจะไม่เข้า loop 5 วิ เพราะยังนับไม่ถึง
if (x_time2 > 2) { //นับไปจนกว่า x_time มากกว่า 5
digitalWrite(Relay3, LOW);
Blynk.virtualWrite(V6, LOW); // คืนค่าปุ๊มกดปั๊มให้ Off
Blynk.virtualWrite(V12,chargeCounter2);
_x_time2 = false;
}
}
}
BLYNK_WRITE(V1)
{
int pinValue = param.asInt();
if ( pinValue == 1){
x_time = 0;
_x_time = true;
digitalWrite(Relay1, HIGH);
}else{
_x_time = false;
// Set the internal counter value in second
chargeCounter = chargeTime;
digitalWrite(Relay1, LOW);
Blynk.virtualWrite(V10,chargeCounter);
}
}
BLYNK_WRITE(V3)
{
int pinValue = param.asInt();
if ( pinValue == 1){
x_time1 = 0;
_x_time1 = true;
digitalWrite(Relay2, HIGH);
}else{
_x_time1 = false;
// Set the internal counter value in second
chargeCounter1 = chargeTime1;
digitalWrite(Relay2, LOW);
Blynk.virtualWrite(V11,chargeCounter1);
}
}
BLYNK_WRITE(V6)
{
int pinValue = param.asInt();
if ( pinValue == 1){
x_time2 = 0;
_x_time2 = true;
digitalWrite(Relay3, HIGH);
}else{
_x_time2 = false;
// Set the internal counter value in second
chargeCounter2 = chargeTime2;
digitalWrite(Relay3, LOW);
Blynk.virtualWrite(V12,chargeCounter2);
}
}
void loop()
{
{
sensorValue = analogRead(A0);
if (sensorValue >= 640 && sensorValue <= 1024)
{
Serial.println(sensorValue);
digitalWrite(RelayPin, HIGH);
delay(1500);
}
else {
Serial.println(sensorValue);
digitalWrite(RelayPin, LOW);
delay(1000);
}
delay(1000);
Serial.print("Sensor = " );
Serial.println(sensorValue);
}
Blynk.run();
timer.run(); // Initiates BlynkTimer
}
void SendMCP3008 () {
// float val = adc.readADC(0);
int val1 = adc.readADC(0); // read Channel 0 from MCP3008 ADC (pin 1)
Blynk.virtualWrite(V2, val1);
delay(1000);
Serial.print("EC = " ); //
Serial.println(val1);
}
ขา12ผมประกาศซ้ำน่ะครับ