#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <ESP32Servo.h>
const int trigPin1 = 4;
const int echoPin1 = 23;
const int trigPin2 = 5;
const int echoPin2 = 18;
const int servoPin = 19;
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define LED1 2
#define LED2 15
//define sound speed in cm/uS
#define SOUND_SPEED 0.034
#define OLED_RESET -1
#define SCREEN_ADDRESS 0x3c
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
long duration1;
long duration2;
float distanceCm1;
float distanceCm2;
int i = 0;
int pos = 0;
Servo servo;
void setup() {
Serial.begin(115200);
pinMode(trigPin1, OUTPUT);
pinMode(echoPin1, INPUT);
pinMode(trigPin2, OUTPUT);
pinMode(echoPin2, INPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
servo.attach(servoPin, 500, 2400);
}
void loop() {
{for (pos = 0; pos <= 90; pos += 1) {
servo.write(pos);
delay(15);
}
delay(1000);
for (pos = 90; pos >= 0; pos -= 1) {
servo.write(pos);
delay(15);
}
delay(1000);
}
digitalWrite(trigPin1, LOW);
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
/*digitalWrite(trigPin2, LOW);
delayMicroseconds(2);
digitalWrite(trigPin2, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin2, LOW);*/
duration1 = pulseIn(echoPin1, HIGH);
distanceCm1 = duration1 * SOUND_SPEED/2;
Serial.print("Distance1 (cm): ");
Serial.println(distanceCm1);
digitalWrite(trigPin2, LOW);
delayMicroseconds(2);
digitalWrite(trigPin2, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin2, LOW);
duration2 = pulseIn(echoPin2, HIGH);
distanceCm2 = duration2 * SOUND_SPEED/2;
Serial.print("Distance2 (cm): ");
Serial.println(distanceCm2);
/*for (pos = 0; pos <= 90; pos += 1) {
servo.write(pos);
delay(15);
}
delay(1000);
for (pos = 90; pos >= 0; pos -= 1) {
servo.write(pos);
delay(15);
}
delay(1000); */
if (distanceCm1 >= 100)
{
i = 1;
}
if(distanceCm1 <= 30 )
{
i = 2;
}
if(i == 2)
{
digitalWrite(LED1, HIGH);//LED1 คือปั๊ม1 ทำงาน
digitalWrite(LED2, LOW);
/*oled.setCursor(5,35);
oled.print("P2 OFF");
oled.setCursor(5,25);
oled.print("P1 ON");
oled.display();
delay(100);*/
}
if(i == 1)
{
digitalWrite(LED1, LOW);
digitalWrite(LED2, HIGH);//ปั๊มน้ำ2ทำงาน
/*oled.setCursor(5,35);
oled.print("P2 ON");
oled.setCursor(5,25);
oled.print("P1 OFF");
oled.display();
delay(100);*/
}
else
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
/* oled.setCursor(5,35);
oled.print("P2 OFF");
oled.setCursor(5,25);
oled.print("P1 OFF");
oled.display();
delay(100);*/
}
delay(100);
if(!oled.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
delay(100);
oled.clearDisplay();
oled.setTextSize(1);
oled.setTextColor(1);
oled.setCursor(5,5);
oled.print("Distance1 (cm):");//เเสดงคำ ใน OLED
oled.println(distanceCm1);//เเสดงค่าระยะน้ำ ใน OLED
oled.setCursor(5,15);
oled.print("Distance2 (cm):");//เเสดงคำ ใน OLED
oled.println(distanceCm2);//เเสดงค่าระยะน้ำ ใน OLED
oled.display();
delay(100);
}