#include <Servo.h>
// Main Servos
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
// Special Servos
Servo servo6;
Servo servo7; // inverted, pin 2
Servo servo9;
Servo servo10; // inverted, pin 11
// Pins
const int servo1Pin = 3;
const int servo2Pin = 5;
const int servo3Pin = 6;
const int servo4Pin = 9;
const int servo5Pin = 10;
const int servo6Pin = A0;
const int servo7Pin = 2; // was A1
const int servo9Pin = A3;
const int servo10Pin = 11; // it was A4
// Buttons
const int button1Pin = 7;
const int button2Pin = 8;
const int button3Pin = 12;
const int button4Pin = 4; // Special sequence
// States
bool stateServo2 = false;
bool stateServo3 = false;
bool stateServo4 = false;
bool stateSpecial = false;
// Previous states
bool lastStateButton1 = HIGH;
bool lastStateButton2 = HIGH;
bool lastStateButton3 = HIGH;
bool lastStateButton4 = HIGH;
void servowrite(int s,int p){
Serial.print("Servo ");Serial.print(s);
Serial.print(" -> ");Serial.println(p);
}
void servo1write(int p) {
servowrite (1,p);
//servo1.write(p);
}
void servo2write(int p) {
servowrite (2,p) ;
//servo2.write(p);
}
void servo3write(int p) {
servowrite (3,p);
//servo3.write(p);
}
void servo4write(int p) {
servowrite (4,p);
//servo4.write(p);
}
void servo5write(int p) {
servowrite (5,p);
//servo5.write(p);
}
void servo6write(int p) {
servowrite (6,p);
//servo6.write(p);
}
void servo7write(int p) {
servowrite (7,p);
//servo7.write(p);
}
void servo9write(int p) {
servowrite (9,p);
//servo9.write(p);
}
void servo10write(int p) {
servowrite (10,p);
//servo10.write(p);
}
void setup() {
Serial.begin(115200);
delay(500);
Serial.println("Setup");
servo1.attach(servo1Pin);
servo2.attach(servo2Pin);
servo3.attach(servo3Pin);
servo4.attach(servo4Pin);
servo5.attach(servo5Pin);
servo6.attach(servo6Pin);
servo7.attach(servo7Pin);
servo9.attach(servo9Pin);
servo10.attach(servo10Pin);
// Starting positions
servo1write(180);
servo2write(0);
servo3write(0);
servo4write(0);
servo5write(0);
servo6write(0);
servo7write(90); // inverted
servo9write(0);
servo10write(90); // inverted
pinMode(button1Pin, INPUT_PULLUP);
pinMode(button2Pin, INPUT_PULLUP);
pinMode(button3Pin, INPUT_PULLUP);
pinMode(button4Pin, INPUT_PULLUP);
Serial.println("Setup complete");
}
void loop() {
//Serial.println("Loop");
bool readingButton1 = digitalRead(button1Pin);
bool readingButton2 = digitalRead(button2Pin);
bool readingButton3 = digitalRead(button3Pin);
bool readingButton4 = digitalRead(button4Pin);
// Button 1: Servo1 and Servo2
if (readingButton1 == LOW && lastStateButton1 == HIGH) {
Serial.println("Button 1 Pressed " ) ;
stateServo2 = !stateServo2;
servo1write(stateServo2 ? 90 : 180);
servo2write(stateServo2 ? 90 : 0);
}
// Button 2: Servo3 and Servo5
if (readingButton2 == LOW && lastStateButton2 == HIGH) {
Serial.println("Button 2 Pressed " ) ;
stateServo3 = !stateServo3;
servo3write(stateServo3 ? 50 : 0);
servo5write(stateServo3 ? 90 : 0);
}
// Button 3: Servo4
if (readingButton3 == LOW && lastStateButton3 == HIGH) {
Serial.println("Button 3 Pressed " ) ;
stateServo4 = !stateServo4;
servo4write(stateServo4 ? 90 : 0);
}
// Button 4: Special sequence (Servo6,7,9,10)
if (readingButton4 == LOW && lastStateButton4 == HIGH) {
Serial.println("Button 4 pressed");
stateSpecial = !stateSpecial;
if (stateSpecial) {
// OPEN
Serial.println("Open");
servo6write(90);
servo7write(0); // inverted
delay(250);
servo9write(90);
servo10write(0); // inverted
} else {
// TO CLOSE
Serial.println("Close");
servo6write(0);
servo7write(90); // inverted
delay(250);
servo9write(0);
servo10write(90); // inverted
}
}
lastStateButton1 = readingButton1;
lastStateButton2 = readingButton2;
lastStateButton3 = readingButton3;
lastStateButton4 = readingButton4;
delay(50); // debounce
}