// Stepper motor on Wokwi!
#include <Stepper.h>
#define PIN_TRIG 6
#define PIN_ECHO 5
const int sPR1 = 100;
const int sPR2 = 1000;
// change this to fit the number of steps per revolution
// initialize the stepper library on pins 8 through 11:
// B- B+ A+ A-
Stepper myStepper(sPR1, 8, 9, 10, 11);
Stepper myStepper2(sPR2, A5, A4, A3, A2);
int ppterbuka = 0 ;
void setup() {
// initialize the serial port:
pinMode(12, OUTPUT);pinMode(2, OUTPUT);pinMode(3, OUTPUT);
//pin ultra
pinMode(PIN_TRIG, OUTPUT); pinMode(PIN_ECHO, INPUT);
Serial.begin(9600);
}
void ultra(){
digitalWrite(PIN_TRIG, HIGH);
delayMicroseconds(10);
digitalWrite(PIN_TRIG, LOW);
//jarak pakan
// Read the result:
int duration = pulseIn(PIN_ECHO, HIGH);
float jarak = (148 - (duration / 58));
//Serial.print("Distance in CM: ");
Serial.println(jarak);
if(jarak <= 2.00 && ppterbuka == 0 ){bpintu();ppterbuka = 1;}
if(jarak >= 146.00 && ppterbuka == 1 ){tpintu();ppterbuka = 0;}
//Lampu Indikator ketersedian pakan//1 m 2k 3 h
if(jarak >= 100.00 && jarak <= 152.00 ){digitalWrite(2, HIGH);digitalWrite(3, LOW);digitalWrite(12, LOW);}
else{digitalWrite(2, LOW);digitalWrite(3, LOW);digitalWrite(12, LOW);}
if(jarak >= 51.00 && jarak <= 99.00 ){digitalWrite(2,LOW);digitalWrite(3,HIGH);digitalWrite(12,LOW);}
else{digitalWrite(2, LOW);digitalWrite(3, LOW);digitalWrite(12, LOW);}
if(jarak >= 2.00 && jarak <=50.00 ){digitalWrite(2,LOW);digitalWrite(3,LOW);digitalWrite(12,HIGH);}
else{digitalWrite(2, LOW);digitalWrite(3, LOW);digitalWrite(12, LOW);}
}
void bpintu(){
ppterbuka = 0;
myStepper.setSpeed(10);
Serial.println("Pintu Buka");
myStepper.step(sPR1);
}
void tpintu(){
myStepper.setSpeed(10);
Serial.println("Pintu Tutup");
myStepper.step(-sPR1);
}
void mpakan(){
myStepper2.setSpeed(70);
//Serial.println("Pemberian pakan");
myStepper2.step(sPR2);
}
void loop() {
mpakan();
ultra();
}