Skip to content

Instantly share code, notes, and snippets.

@dakpluto
Created April 20, 2016 20:29
[2016-03-28] Challenge #260 [Easy] Garage Door Opener - Arduino
#include <Servo.h>
Servo garageDoor;
int pos = 1;
#define remotePin 6
#define sensorPin 7
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
garageDoor.attach(9);
pinMode(remotePin, INPUT);
pinMode(sensorPin, INPUT);
garageDoor.write(pos);
delay(15);
}
void loop() {
//states: 0 - closed, 2 - open, 1 - opening, -1 - closing
static int state = 0;
int remoteState, sensorState;
remoteState = digitalRead(remotePin);
sensorState = digitalRead(sensorPin);
switch (state) {
case -1:
if (remoteState == HIGH) {
state = 1;
delay(100);
break;
} else if(pos == 1) {
state = 0;
break;
} else if(sensorState == HIGH) {
break;
} else {
pos -= 1;
garageDoor.write(pos);
delay(100);
break;
}
break;
case 0:
if (remoteState == HIGH) {
state = 1;
delay(100);
break;
}
break;
case 1:
if (sensorState == HIGH){
if(pos == 90){
state = 2;
break;
} else {
pos += 1;
garageDoor.write(pos);
delay(100);
break;
}
} else if (remoteState == HIGH) {
state = -1;
delay(100);
break;
} else if(pos == 90) {
state = 2;
break;
} else {
pos += 1;
garageDoor.write(pos);
delay(100);
break;
}
break;
case 2:
if (remoteState == HIGH) {
state = -1;
delay(100);
break;
}
break;
default:
Serial.println ( "In Default, I shouldn't be here. State = " + String(state));
pos = 0;
state = 0;
break;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment