#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Servo.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define PRESSURE_SENSOR_PIN A0
#define BUTTON_1_PIN 2
#define BUTTON_2_PIN 3
#define SERVO_PIN 9
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); // Address 0x3C
Servo myservo;
int pressureValue = 0;
int servoAngle = 0;
bool isOnlineMode = true;
bool isModeSelected = false;
bool flag=true;
bool flag2=true;
int cmh20;
void setup() {
Serial.begin(9600);
Wire.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Address 0x3C
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(0,0);
display.println("Select Mode:");
display.println("Button 1: Online Mode");
display.println("Button 2: Offline Mode");
display.display();
pinMode(BUTTON_1_PIN, INPUT_PULLUP);
pinMode(BUTTON_2_PIN, INPUT_PULLUP);
myservo.attach(SERVO_PIN);
}
void loop() {
if(!isModeSelected) {
if(digitalRead(BUTTON_1_PIN) == LOW) {
isOnlineMode = true;
isModeSelected = true;
display.clearDisplay();
display.setCursor(0,0);
display.println("Online Mode Selected");
display.display();
delay(1000);
}
else if(digitalRead(BUTTON_2_PIN) == LOW) {
isOnlineMode = false;
isModeSelected = true;
display.clearDisplay();
display.setCursor(0,0);
display.println("Offline Mode Selected");
display.display();
delay(1000);
}
}
else {
if(!isOnlineMode) {
display.clearDisplay();
display.setCursor(0,0);
display.println("Offline Mode");
display.println("Select Button:");
display.println("Button 1: Increase Angle");
display.println("Button 2: Decrease Angle");
display.display();
if(digitalRead(BUTTON_1_PIN) == LOW && digitalRead(BUTTON_2_PIN) == LOW) {
isModeSelected = false;
display.clearDisplay();
display.setCursor(0,0);
display.println("Select Mode:");
display.println("Button 1: Online Mode");
display.println("Button 2: Offline Mode");
display.display();
delay(1000);
}
else if(digitalRead(BUTTON_1_PIN) == LOW ) {
flag=true;
Serial.println(servoAngle);
if(servoAngle>=0&&servoAngle<34 && flag==true){
servoAngle=35;
myservo.write(servoAngle);
display.clearDisplay();
display.setCursor(0,0);
display.println("Angle Increased");
display.display();
delay(1000);
flag=false;
}
if(servoAngle==35 && flag==true){
servoAngle=45;
myservo.write(servoAngle);
display.clearDisplay();
display.setCursor(0,0);
display.println("Angle Increased");
display.display();
delay(1000);
flag=false;
}
if(servoAngle==45 && flag==true){
servoAngle=60;
myservo.write(servoAngle);
display.clearDisplay();
display.setCursor(0,0);
display.println("Angle Increased");
display.display();
delay(1000);
flag=false;
}
if(servoAngle==60 && flag==true){
servoAngle=75;
myservo.write(servoAngle);
display.clearDisplay();
display.setCursor(0,0);
display.println("Angle Increased");
display.display();
delay(1000);
flag=false;
}
if(servoAngle==75 && flag==true){
servoAngle=85;
myservo.write(servoAngle);
display.clearDisplay();
display.setCursor(0,0);
display.println("Angle Increased");
display.display();
delay(1000);
flag=false;
}
}
else if(digitalRead(BUTTON_2_PIN) == LOW) {
flag2=true;
if(servoAngle==45 && flag2==true){
servoAngle=35;
myservo.write(servoAngle);
display.clearDisplay();
display.setCursor(0,0);
display.println("Angle Increased");
display.display();
delay(1000);
flag2=false;
}
if(servoAngle==60&& flag2==true){
servoAngle=45;
myservo.write(servoAngle);
display.clearDisplay();
display.setCursor(0,0);
display.println("Angle Increased");
display.display();
delay(1000);
flag2=false;
}
if(servoAngle==75 && flag2==true){
servoAngle=60;
myservo.write(servoAngle);
display.clearDisplay();
display.setCursor(0,0);
display.println("Angle Increased");
display.display();
delay(1000);
flag2=false;
}
if(servoAngle==85 && flag2==true){
servoAngle=75;
myservo.write(servoAngle);
display.clearDisplay();
display.setCursor(0,0);
display.println("Angle Increased");
display.display();
delay(1000);
flag2=false;
}
// myservo.write(servoAngle);
// display.clearDisplay();
// display.setCursor(0,0);
// display.println("Angle Decreased");
// display.display();
// delay(1000);
}
}
else {
if(digitalRead(BUTTON_1_PIN) == LOW && digitalRead(BUTTON_2_PIN) == LOW){
isModeSelected = false;
isOnlineMode= false;
display.clearDisplay();
display.setCursor(0,0);
display.println("Select Mode:");
display.println("Button 1: Online Mode");
display.println("Button 2: Offline Mode");
display.display();
delay(1000);
}
pressureValue = analogRead(PRESSURE_SENSOR_PIN)*10;
cmh20= pressureValue*0.01;
//Serial.println(cmh20);
if(isModeSelected == true && isOnlineMode== true){
if(cmh20>=5 &&cmh20<=7){
myservo.write(35);
display.clearDisplay();
display.setCursor(0,0);
display.print("Pressure: ");
display.print(pressureValue);
display.print(" Angle: ");
display.print(35);
display.display();
delay(50); // Add delay to reduce the flickering of the display
}
if(cmh20>=8 &&cmh20<=11){
myservo.write(45);
display.clearDisplay();
display.setCursor(0,0);
display.print("Pressure: ");
display.print(pressureValue);
display.print(" Angle: ");
display.print(45);
display.display();
delay(50); // Add delay to reduce the flickering of the display
}
if(cmh20>=12 &&cmh20<=14){
myservo.write(60);
display.clearDisplay();
display.setCursor(0,0);
display.print("Pressure: ");
display.print(pressureValue);
display.print(" Angle: ");
display.print(60);
display.display();
delay(50); // Add delay to reduce the flickering of the display
}
if(cmh20>=15 &&cmh20<=17){
myservo.write(75);
display.clearDisplay();
display.setCursor(0,0);
display.print("Pressure: ");
display.print(pressureValue);
display.print(" Angle: ");
display.print(75);
display.display();
delay(50); // Add delay to reduce the flickering of the display
}
if(cmh20>=18 &&cmh20<=20){
myservo.write(85);
display.clearDisplay();
display.setCursor(0,0);
display.print("Pressure: ");
display.print(pressureValue);
display.print(" Angle: ");
display.print(85);
display.display();
delay(50); // Add delay to reduce the flickering of the display
}
}
}
}
}
Loading
ssd1306
ssd1306