#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <Wire.h>
#include <Q2HX711.h>
// Connections to OLED
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 7
#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
// Motor A connections
int in1 = 13;
int in2 = 12;
// Motor B connections
int in3 = 11;
int in4 = 10;
float P1,P2;
int AP1D=92,AP2D=92;
//_____________________________________________________________________________________________________________
void setup()
{
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
pinMode(A0,INPUT);
pinMode(A1,INPUT);
pinMode(A2,INPUT);
pinMode(A3,INPUT);
pinMode(5,INPUT);
pinMode(6,INPUT);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
Serial.begin(9600);
//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(3);
display.setTextColor(SSD1306_WHITE);
display.setCursor(42,5);
display.println(F("DVT"));
display.display();
delay(100);
display.setTextSize(3);
display.setCursor(33,45);
display.println(F("PUMP"));
display.display();
delay(2000);
display.clearDisplay();
display.display();
}
//_____________________________________________________________________________________________________________
void loop()
{
display.setTextSize(1);
display.setCursor(16,1);
display.println(F("Adjust Pressures"));
display.setCursor(1,30);
display.println(F("Upper Pressure: "));
display.setCursor(95,30);
display.println(AP1D);
display.setCursor(1,50);
display.println(F("Lower Pressure: "));
display.setCursor(95,50);
display.println(AP2D);
display.display();
if(digitalRead(6)==HIGH)
{
Increase ();
}
if(digitalRead(5)==HIGH)
{
Decrease ();
}
byte hx711_data_pin = A0;
byte hx711_clock_pin = A1;
Q2HX711 hx711(hx711_data_pin, hx711_clock_pin);
while((hx711.read()/100000.0)<(AP1D))
{
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
}
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
hx711_data_pin = A2;
hx711_clock_pin = A3;
while((hx711.read()/100000.0)<(AP2D))
{
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
}
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void Increase ()
{
AP1D=AP1D+1;
AP2D=AP2D+1;
}
void Decrease ()
{
AP1D=AP1D-1;
AP2D=AP2D-1;
}
/*
#include <Q2HX711.h>
const byte hx711_data_pin = A2;
const byte hx711_clock_pin = A3;
Q2HX711 hx711(hx711_data_pin, hx711_clock_pin);
void setup() {
Serial.begin(9600);
}
void loop() {
P(hx711.read()/100000.0);
delay(500);
}
-------------------------------------------------------------------
if(digitalRead(A0)==HIGH) //For Syringe Pump
{
while(digitalRead(A0)==HIGH)
{
for(D;D==0;D++)
{
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(23,10);
display.println(F("Syringe"));
display.setCursor(42,30);
display.println(F("Pump"));
display.setTextSize(1);
display.setCursor(41,53);
display.println(F("Detected"));
display.display();
delay(1000);
display.clearDisplay();
display.display();
}
display.setTextSize(1);
display.setCursor(6,20);
display.println(F("Select Syringe Size"));
display.display();
if(digitalRead(9)==HIGH)
{
Size = Size + 1;
SyringeSize(Size);
}
if(digitalRead(10)==HIGH)
{
while(digitalRead(A0)==HIGH)
{
display.clearDisplay();
display.setTextSize(1);
display.setCursor(6,20);
display.println(F("Select ml/hour"));
display.setCursor(50,40);
display.print(Speed/1000);
//display.print(F(" ml/h"));
display.display();
if(digitalRead(A2)==HIGH)
{
Speed=Speed+200;
}
if(digitalRead(A3)==LOW)
{
Speed=Speed-200;
}
Forward(Speed);
}
}
} // SringePump while ends
}
else if(digitalRead(A1)==HIGH) //For Infusion Pump
{
for(D;D==0;D++)
{
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(16,10);
display.println(F("Infusion"));
display.setCursor(42,30);
display.println(F("Pump"));
display.setTextSize(1);
display.setCursor(41,53);
display.println(F("Detected"));
display.display();
delay(1000);
display.clearDisplay();
display.display();
}
}
else// When nothing is attatched
{
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(15,30);
display.println(F("Attach the module"));
display.display();
}
} // void loop ends
void SyringeSize(int s)
{
// 2 3 5 10 20 30 50 60 100
if(s=1)
{
a=2;
display.clearDisplay();
display.setTextSize(1);
display.setCursor(6,20);
display.println(F("Select Syringe Size"));
display.setCursor(50,40);
display.print(a);
display.print(F(" ml"));
display.display();
}
else if(s=2)
{
a=3;
display.clearDisplay();
display.setTextSize(1);
display.setCursor(6,20);
display.println(F("Select Syringe Size"));
display.setCursor(50,40);
display.print(a);
display.print(F(" ml"));
display.display();
}
else if(s=3)
{
a=5;
display.clearDisplay();
display.setTextSize(1);
display.setCursor(6,20);
display.println(F("Select Syringe Size"));
display.setCursor(50,40);
display.print(a);
display.print(F(" ml"));
display.display();
}
else if(s=4)
{
a=10;
display.clearDisplay();
display.setTextSize(1);
display.setCursor(6,20);
display.println(F("Select Syringe Size"));
display.setCursor(50,40);
display.print(a);
display.print(F(" ml"));
display.display();
}
else if(s=5)
{
a=20;
display.clearDisplay();
display.setTextSize(1);
display.setCursor(6,20);
display.println(F("Select Syringe Size"));
display.setCursor(50,40);
display.print(a);
display.print(F(" ml"));
display.display();
}
else if(s=6)
{
a=30;
display.clearDisplay();
display.setTextSize(1);
display.setCursor(6,20);
display.println(F("Select Syringe Size"));
display.setCursor(50,40);
display.print(a);
display.print(F(" ml"));
display.display();
}
else if(s=7)
{
a=50;
display.clearDisplay();
display.setTextSize(1);
display.setCursor(6,20);
display.println(F("Select Syringe Size"));
display.setCursor(50,40);
display.print(a);
display.print(F(" ml"));
display.display();
}
else if(s=8)
{
a=60;
display.clearDisplay();
display.setTextSize(1);
display.setCursor(6,20);
display.println(F("Select Syringe Size"));
display.setCursor(50,40);
display.print(a);
display.print(F(" ml"));
display.display();
}
else if(s=9)
{
a=100;
display.clearDisplay();
display.setTextSize(1);
display.setCursor(6,20);
display.println(F("Select Syringe Size"));
display.setCursor(50,40);
display.print(a);
display.print(F(" ml"));
display.display();
}
}
void Forward(int p)
{
digitalWrite(dirPin,HIGH);
for(int x = 0; x < STEPS_PER_REV; x++)
{
digitalWrite(stepPin,HIGH);
delayMicroseconds(p);
digitalWrite(stepPin,LOW);
delayMicroseconds(p);
}
}
// Set motor direction clockwise
digitalWrite(dirPin,HIGH);
for(int x = 0; x < STEPS_PER_REV; x++)
{
digitalWrite(stepPin,HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin,LOW);
delayMicroseconds(2000);
}
// Set motor direction counterclockwise
digitalWrite(dirPin,LOW);
for(int x = 0; x < (STEPS_PER_REV * 2); x++)
{
digitalWrite(stepPin,HIGH);
delayMicroseconds(1000);
digitalWrite(stepPin,LOW);
delayMicroseconds(1000);
}
*/