int sensor; //proxy sensor variable
int inPin=23; //input pin for proxy (slide switch stand in)
int hazPin=12;//hazzard output pin
int motPin=13;//motor control output pin variable
//int gatePin=2;//safety gate input pin var
//int gate;//gate switch variable
//setup timer
unsigned long time_ms; // actual time (millis)
int waittime=14000; //rotate function interval in ms
long stamptime=0;// timer reference stamp time
//long trigtime=0;
void setup() {
//setup serial monitor
Serial.begin(115200);
//welcome message
Serial.println("GOBIO");
Serial.println("Auto Rotate Active");
pinMode(13, OUTPUT); // sets the digital pin 13 as motor output
pinMode(23, INPUT); // sets pin 23 as proximity sensor input signal
pinMode(12, OUTPUT); // pin 12 to output - might need relay switch for hazzard signal beacon
//pinMode(2, INPUT); //pin 22 to input for safety switch
//attachInterrupt(digitalPinToInterrupt(2),gateopen,RISING); // function for creating external interrupts at pin2 on Rising (LOW to HIGH)
//startup drum rotation
Rotate();
time_ms = millis();
stamptime=time_ms; // reset the counter
}
void loop() {
time_ms = millis();
//Serial.print("Time: ");
//Serial.println(time_ms);
if(time_ms-stamptime>=waittime){//test if waittime has passed
Rotate(); //call the rotate function
stamptime=time_ms; // reset the counter
}
//else {
// }
//}
// put your main code here, to run repeatedly:
delay(10); // this speeds up the simulation
}
void Rotate(){ //rotate function
digitalWrite(hazPin,HIGH);
Serial.println("Movement warning");
delay(3000);
//gate = digitalRead(gatePin);
//Serial.println(gate);
//if(gate==0){
digitalWrite(motPin,HIGH);
Serial.println("Drum rotating");
delay(2000);
sensor = digitalRead(inPin); // read the proxy input pin assign to sensor
//Serial.println(sensor); //print sensor value
if(sensor==1){//check if input is high (proxy input is normally high)
//Serial.println("Drum rotating");
while(sensor==1){
// Serial.println(sensor);
digitalWrite(motPin,HIGH);
sensor = digitalRead(inPin);
//gate = digitalRead(gatePin); //potentially redundant
//Serial.println("Drum Rotating");
}
}
digitalWrite(13,LOW);
Serial.println("Drum Stationary");
digitalWrite(hazPin,LOW);
return;
}
//Serial.println("Gate hazzard switch");
//void gateopen() //ISR function excutes when gate microswitch is open