#include <Servo.h>
Servo myservo;
const int pinBottone = 2;
const int pinFine = 3; //pin input switch for "Fine" mode
const int pinLed = 4;
const int pin20 = 13;
const int pin40 = 12;
const int pin60 = 11;
const int pin80 = 10;
const int pin100 = 8;
int presBottone = 0;
int fineOn = 0; //flag "Fine" On/Off
int pos = 0;
//SETTABLE STEPS INTERVALS FOR FINE AND COARSE//
int dCoarse = 5000; //
int dFine = 1000; //
/////////////////////////////////////////////
void setup() {
pinMode(pinLed, OUTPUT);
pinMode(pin20, OUTPUT);
pinMode(pin40, OUTPUT);
pinMode(pin60, OUTPUT);
pinMode(pin80, OUTPUT);
pinMode(pin100, OUTPUT);
pinMode(pinBottone, INPUT_PULLUP);
pinMode(pinFine, INPUT_PULLUP);
myservo.attach(9);
digitalWrite(presBottone, HIGH);
digitalWrite(fineOn, HIGH);
delay(200);
digitalWrite(pin20, HIGH);
delay(200);
digitalWrite(pin40, HIGH);
delay(200);
digitalWrite(pin60, HIGH);
delay(200);
digitalWrite(pin80, HIGH);
delay(200);
digitalWrite(pin100, HIGH);
delay(200);
digitalWrite(pin20, LOW);
delay(200);
digitalWrite(pin40, LOW);
delay(200);
digitalWrite(pin60, LOW);
delay(200);
digitalWrite(pin80, LOW);
delay(200);
digitalWrite(pin100, LOW);
}
void loop() {
presBottone = digitalRead(pinBottone);
fineOn = digitalRead(pinFine);
if (presBottone == LOW) {
digitalWrite(pinLed, HIGH);
if (fineOn == LOW) {
for (pos = 0; pos <= 60; pos += 1) { // Fine Mode
presBottone = digitalRead(pinBottone);
while (presBottone == LOW) {
presBottone = digitalRead(pinBottone);
}
digitalWrite(pin20, LOW);
digitalWrite(pin40, LOW);
digitalWrite(pin60, LOW);
digitalWrite(pin80, LOW);
digitalWrite(pin100, LOW);
if (((pos<=12)&&(pos>0))){}
if (((pos<=24)&&(pos>12))){digitalWrite(pin20,HIGH);}
if (((pos<=36)&&(pos>24))){digitalWrite(pin20,HIGH);digitalWrite(pin40,HIGH);;}
if (((pos<=48)&&(pos>36))){digitalWrite(pin20,HIGH);digitalWrite(pin40,HIGH);digitalWrite(pin60,HIGH);}
if (((pos<=59)&&(pos>48))){digitalWrite(pin20,HIGH);digitalWrite(pin40,HIGH);digitalWrite(pin60,HIGH);digitalWrite(pin80,HIGH);}
if (pos==60){digitalWrite(pin20,HIGH);digitalWrite(pin40,HIGH);digitalWrite(pin60,HIGH);digitalWrite(pin80,HIGH);digitalWrite(pin100,HIGH);}
myservo.writeMicroseconds(1760);
delay(20);
myservo.writeMicroseconds(1500);
delay(dFine);
presBottone = LOW;
}
} else {
for (pos = 0; pos <= 24; pos += 1) { // Coarse Mode
presBottone = digitalRead(pinBottone);
while (presBottone == LOW) {
presBottone = digitalRead(pinBottone);
}
digitalWrite(pin20, LOW);
digitalWrite(pin40, LOW);
digitalWrite(pin60, LOW);
digitalWrite(pin80, LOW);
digitalWrite(pin100, LOW);
if (((pos<=3)&&(pos>0))){}
if (((pos<=7)&&(pos>3))){digitalWrite(pin20,HIGH);}
if (((pos<=12)&&(pos>7))){digitalWrite(pin20,HIGH);digitalWrite(pin40,HIGH);;}
if (((pos<=17)&&(pos>12))){digitalWrite(pin20,HIGH);digitalWrite(pin40,HIGH);digitalWrite(pin60,HIGH);}
if (((pos<=23)&&(pos>17))){digitalWrite(pin20,HIGH);digitalWrite(pin40,HIGH);digitalWrite(pin60,HIGH);digitalWrite(pin80,HIGH);}
if (pos==24){digitalWrite(pin20,HIGH);digitalWrite(pin40,HIGH);digitalWrite(pin60,HIGH);digitalWrite(pin80,HIGH);digitalWrite(pin100,HIGH);}
myservo.writeMicroseconds(2060);
delay(60);
myservo.writeMicroseconds(1500);
delay(dCoarse);
presBottone = LOW;
}
}
}
else {
digitalWrite(pinLed, HIGH);
delay (500);
digitalWrite(pinLed, LOW);
delay (500);
}
}
Comments