#include<Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "pitch.h"
#define RLED 15
#define OLED 16
#define YLED 17
#define LGLED 19
#define DGLED 18
#define LBLED 5
#define DBLED 4
#define LPLED 2
#define DPLED 13
const int buttonTones[] = {
NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4,
NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5
};
#define POTPIN 12 //input device
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
int buzzerPin = 26;
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(RLED, OUTPUT);
pinMode(OLED, OUTPUT);
pinMode(YLED, OUTPUT);
pinMode(LGLED, OUTPUT);
pinMode(DGLED, OUTPUT);
pinMode(LBLED, OUTPUT);
pinMode(DBLED, OUTPUT);
pinMode(LPLED, OUTPUT);
pinMode(DPLED, OUTPUT);
pinMode(POTPIN, INPUT);
pinMode(buzzerPin, OUTPUT);
if(!oled.begin(SSD1306_SWITCHCAPVCC, 0X3C)){
Serial.println(F("oled Faild"));
while(1);
}}
void loop() {
float pHValue = map(analogRead(POTPIN), 0, 4095, 0.0, 14.0); // Map analog reading to pH range 0-14
String ph;
if(pHValue == 0){
tone(buzzerPin, NOTE_C4);
ph= "Asam";
displayTemperature(pHValue,ph);
lampu(pHValue);
}else if(pHValue >= 1.0 && pHValue <= 2.0){
tone(buzzerPin, NOTE_D4);
ph= "Asam";
displayTemperature(pHValue,ph);
lampu(pHValue);
}else if(pHValue >= 3.0 && pHValue <= 4.0){
tone(buzzerPin, NOTE_E4);
ph= "Asam";
displayTemperature(pHValue,ph);
lampu(pHValue);
}else if(pHValue >= 5.0 && pHValue <= 6.0){
tone(buzzerPin, NOTE_F4);
ph= "Asam";
displayTemperature(pHValue,ph);
lampu(pHValue);
}else if(pHValue == 7.0){
noTone(buzzerPin);
// tone(buzzerPin, NOTE_G4);
ph= "Netral";
displayTemperature(pHValue,ph);
lampu(pHValue);
}else if(pHValue >= 8.0 && pHValue <= 9.0){
tone(buzzerPin, NOTE_A4);
ph= "Basa";
displayTemperature(pHValue,ph);
lampu(pHValue);
}else if(pHValue >= 10.0 && pHValue <= 11.0){
tone(buzzerPin, NOTE_B4);
ph= "Basa";
displayTemperature(pHValue,ph);
lampu(pHValue);
}else if(pHValue >= 12.0 && pHValue <= 13.0){
tone(buzzerPin, NOTE_C5);
ph= "Basa";
displayTemperature(pHValue,ph);
lampu(pHValue);
}else if(pHValue == 14.0){
tone(buzzerPin, NOTE_G4);
ph= "Basa";
displayTemperature(pHValue,ph);
lampu(pHValue);
}
//else{
// // displayTemperature(pHValue);
// lampu(pHValue);
// oled.clearDisplay();
// oled.setTextSize(1);
// oled.setTextColor(WHITE);
// oled.setCursor(0, 2);
// oled.println("Ada masalah");
// oled.display();
// }
}
void displayTemperature(float temp, String ph) {
oled.clearDisplay();
oled.setTextSize(1);
oled.setTextColor(WHITE);
oled.setCursor(0, 2);
oled.print("Ph value: ");
oled.println(temp);
oled.print(ph);
oled.display();
}
void lampu(float pHValue){
digitalWrite(RLED, pHValue == 0);
digitalWrite(OLED, pHValue >= 1.0 && pHValue <= 2.0);
digitalWrite(YLED, pHValue >= 3.0 && pHValue <= 4.0);
digitalWrite(LGLED, pHValue >= 5.0 && pHValue <= 6.0);
digitalWrite(DGLED, pHValue == 7.0);
digitalWrite(LBLED, pHValue >= 8.0 && pHValue <= 9.0);
digitalWrite(DBLED, pHValue >= 10.0 && pHValue <= 11.0);
digitalWrite(LPLED, pHValue >= 12.0 && pHValue <= 13.0);
digitalWrite(DPLED, pHValue == 14.0);
}