#include <Servo.h> // servo library
// insert start and stop angles for robot arm
// int angleStart = {0, 15, 180, 170, 0, 73};
// int angleStop = {180, 165, 0, 0, 180, 10 };
const int servoPin[] = {8, 7, 6, 5, 4, 3}; // PWM pins
const int servoNum = sizeof(servoPin) / sizeof(servoPin[0]); // number of servos/PWM pins
Servo servo[servoNum]; // declare number of Servo objects/instances
int servoRnd, servoAngle;
void setup() {
Serial.begin(115200); // for data display
randomSeed(analogRead(A0)); // for more-random random
for (int i = 0; i < servoNum; i++) {
servo[i].attach(servoPin[i]); // attach servos to pins
}
delay(500);
for (int i = 0; i < 6; i++) {
servo[i].write(0);
}
delay(500);
}
void loop() {
randomoes();
// dominoes();
}
void randomoes() {
servoRnd = (random(6)); // pick a servo pin
servoAngle = (random(180)); // pick an angle
servo[servoRnd].write(servoAngle); // put random servo at random angle
Serial.print("Servo ");
for (int i = 0; i < servoNum; i++) {
if (i == servoRnd)
Serial.print(servoRnd); // display the servo
else Serial.print("."); // format the display
}
Serial.print(" Angle ");
if (servoAngle < 100) Serial.print(" "); // pad two digit values with a space
if (servoAngle < 10) Serial.print(" "); // pad one digit values with a space
Serial.print(servoAngle); Serial.println("\xC2\xB0"); // degree symbol... for simulation
delay(250); // slow loop to four per second
}
void dominoes() {
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 180; j++) {
servo[i].write(j);
delay(1);
}
}
delay(100);
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 180; j++) {
servo[5 - i].write(180 - j);
delay(1);
}
}
delay(100);
}
BASE
SHOULDER
ELBOW
EXTEND
WRIST
GRIP