Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Servo.h>
- const int DC = 2;
- const int TS = A0;
- const int TSpin = 3;
- #define srclosed 0 //Define Servo Open position
- #define sropen 180 //Define Servo Closed position
- byte TSpos; //Variable to hold servo position
- unsigned long wait = 2000; //Delay a to let servo reach OPEN position before switching ON relay
- unsigned long waitTime = 0;
- unsigned long debounceDelay = 50; //debounce delay so you don't get a false positve with a contact bounce
- unsigned long debounceTime = 0;
- boolean runOnce = true; //This creates a run once for the delay
- Servo tsServo;
- void setup(){
- pinMode(TS, INPUT);
- pinMode(DC, OUTPUT);
- digitalWrite(DC, LOW); //Sets startup state for relay
- tsServo.attach(TSpin);
- TSpos = srclosed; //Sets startup state for servo
- tsServo.write(TSpos);
- }
- void loop(){
- int DCstate = digitalRead(DC);
- int TSstate = digitalRead(TS);
- if (TSstate == 1){
- if(millis() - debounceTime > debounceDelay){
- debounceTime = millis();
- if(TSpos == srclosed){
- waitTime = millis();
- TSpos = sropen;
- runOnce = false;
- }else{
- DCstate = LOW;
- TSpos = srclosed;
- }
- }
- }
- if(runOnce == false){
- if((millis() - waitTime) > wait){
- DCstate = HIGH;
- runOnce = true;
- waitTime = millis();
- }
- }
- digitalWrite(DC, DCstate);
- tsServo.write(TSpos);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement