#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <Wire.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 7
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
#define STEP_PIN 2
#define DIR_PIN 3
#define ENABLE_PIN 4
#define STEPS 10
int PS,P=10,M,S,A,F;
int T1=20,T2=10;
void setup()
{
pinMode(STEP_PIN, OUTPUT);
pinMode(DIR_PIN, OUTPUT);
pinMode(ENABLE_PIN, OUTPUT);
pinMode(A3,INPUT);
// digitalWrite(ENABLE_PIN, LOW); // Enable the driver (set low to enable)
//Display
Wire.begin();
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) // Initialize the OLED display with the I2C address 0x3C
{
Serial.println(F("SSD1306 allocation failed"));
for (;;);
}
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(23,10);
display.println(F("PROJECT"));
display.display();
delay(50);
display.setTextSize(3);
display.setCursor(36,32);
display.println(F("AOR"));
display.display();
delay(50);
display.clearDisplay();
display.setTextSize(2);
display.setCursor(52, 13);
display.println(F("BY"));
display.setTextSize(2);
display.setCursor(40, 35);
display.println(F("MSAF"));
display.display();
delay(50);
display.clearDisplay();
display.display();
display.setTextSize(1);
display.setTextColor(WHITE);
}
void loop()
{
PS=analogRead(A3);
PS=map(PS, 0, 1023, 0, 100);
//Display
display.setCursor(10,10);
display.print(F("SPO2: "));
display.print(PS);
display.display();
display.clearDisplay();
//*********************************************
if(PS<99)//TO INCREASE
{
P=0;
if(PS<90)
ClockV(100);
else if(PS<95)
ClockV(50);
else if(PS<99)
ClockV();
}
//*********************************************
CClockV(P);//TO DECREASE
if(PS>=99)//TO DECREASE
{
P++;
delay(1000);
CClockV(P);
}
//*********************************************
}
void ClockV()
{
digitalWrite(DIR_PIN, HIGH); // Set the direction (HIGH for clockwise, LOW for counterclockwise)
for (int i = 0; i < STEPS; i++)
{
digitalWrite(STEP_PIN, HIGH);
delay(T1);
digitalWrite(STEP_PIN, LOW);
delay(T1);
}
}
void ClockV(int S)
{
digitalWrite(DIR_PIN, HIGH);
for (int i = 0; i < S; i++)
{
digitalWrite(STEP_PIN, HIGH);
delay(T2);
digitalWrite(STEP_PIN, LOW);
delay(T2);
}
}
void CClockV(int P)
{
if(P==10)
{
digitalWrite(DIR_PIN, LOW);
for (int i = 0; i < STEPS; i++)
{
digitalWrite(STEP_PIN, HIGH);
delay(T1);
digitalWrite(STEP_PIN, LOW);
delay(T1);
}
}
}
/*
*/