#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <Stepper.h>
const byte ROWS = 4;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[4] = {12, 16, 17, 13};
byte colPins[4] = {14, 27, 26, 25};
Keypad myKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);
const int dir = 2;
const int step = 15;
const int stepsPerRevolution = 200;
int stepDelay = 500;
String verdi = "0";
float currentPosition1 = 0;
float currentPosition = 0;
int StepperValg = 0;
String value;
String value2;
float dosage,inject;
float speed = 0;
float rumus ;
char keypressed, keypressed2;
Stepper myStepper(stepsPerRevolution, step,dir);
LiquidCrystal_I2C lcd (0x27,20,4);
void setup() {
// put your setup code here, to run once:
lcd.init();
Serial.begin(115200);
Serial.println("Hello, ESP32!");
pinMode(step, OUTPUT);
pinMode(dir, OUTPUT);
currentPosition1 = -5;
StepperValg = 0;
float goalPosition1 = verdi.toFloat();
float stepsToMove1 = goalPosition1*currentPosition1;
if (stepsToMove1 < 0) {
digitalWrite(dir, LOW);
stepsToMove1 = -stepsToMove1;
} else {
digitalWrite(dir, HIGH);
}
for (int i = 0; i <= stepsToMove1; i++) {
digitalWrite(step, HIGH);
delayMicroseconds(stepDelay);
digitalWrite(step, LOW);
delayMicroseconds(stepDelay);
}
delay(1000);
}
void loop() {
readKeypad();
lcd.setCursor(4,0);
lcd.print("Syringe Pump");
lcd.setCursor(0,1);
lcd.print("Dosis Obat:");
lcd.setCursor(11,1);
lcd.print(value);
lcd.setCursor(0,2);
lcd.print("Speed:");
lcd.setCursor(6,2);
lcd.print(String(speed));
lcd.setCursor(13,2);
lcd.print("ml/h");
lcd.setCursor(0,3);
lcd.print("Injeksi:");
Serial.println("Value: ");
Serial.println(value);
float numberdosis = value.toFloat();
int sensorReading = analogRead(34);
float stepperSpeed = map(sensorReading, 0, 4095, 0, 180); // max180
// Serial.println("Nilai Speed: ");
// Serial.println(stepperSpeed);
speed = stepperSpeed;
if(numberdosis>0 && numberdosis < 50){
Serial.println("Number > 0");
if(keypressed == 'D'){
Serial.println("D Ditekan");
myStepper.setSpeed(speed);
// digitalWrite(dir, HIGH);
// Serial.println("Spinning Clockwise...");
// for(int i = 0; i<numberdosis*stepsPerRevolution; i++)
// {
// digitalWrite(step, HIGH);
// delayMicroseconds(2000);
// digitalWrite(step, LOW);
// delayMicroseconds(2000);
// Serial.println("Nilai i");
// }
// delay(1000);
// digitalWrite(dir, LOW);
// Serial.println("Spinning Anti-Clockwise...");
// for(int i = 0; i<numberdosis*stepsPerRevolution; i++)
// {
// digitalWrite(step, HIGH);
// delayMicroseconds(1000);
// digitalWrite(step, LOW);
// delayMicroseconds(1000);
// }
}
} else {
Serial.println("Number < 0");
}
}
void readKeypad(){
keypressed = myKeypad.getKey();
if(keypressed != 'D'){
String konv = String(keypressed);
value += konv;
}
}