// 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();
}