#include <Servo.h>
#include <Stepper.h>
// https://www.instructables.com/Arduino-Multiple-Servo-Control-With-Arduino/
// https://wokwi.com/projects/327324886912467538
// create servo object to control a servo
// twelve servo objects can be created on most boards
Servo servoEyes;
Servo servoArm;
const int stepsPerRevolution = 200;
Stepper stepperOne(stepsPerRevolution, 10, 11, 12, 13);
Stepper stepperTwo(stepsPerRevolution, 6, 7, 8, 9);
int pos = 0; // variable to store the servo position
void setup() {
servoEyes.attach(3); // attaches the servo on pin 9 to the servo object
servoArm.attach(2);
stepperOne.setSpeed(45); // sets rpm to 45
stepperTwo.setSpeed(45);
Serial.begin(9600); // initializes serial monitor
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
servoEyes.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
servoEyes.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
delay(1000);
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
servoArm.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
servoArm.write(pos); // tell servo to go to position in variable 'pos'
delay(15); // waits 15ms for the servo to reach the position
}
delay(1000);
stepperOne.step(stepsPerRevolution); // clockwise
stepperTwo.step(stepsPerRevolution);
delay(500);
stepperOne.step(-stepsPerRevolution); // counterclockwise
stepperTwo.step(-stepsPerRevolution);
delay(500);
}