Hook Up Your Servos
The first step is to hook up your servos to your UNO. If you purchased the same servos I used from Amazon the wires are as follows:

The Uno has issues powering servos consistently at 5V and you'll be hooking up multiple servos to 5V, so I recommend using an 5V power supply.
The signal wires will connect to Uno Pins 9, 10, and 11 and the servo power and ground will connect to the power supply. ** Make sure you connect your power supply's ground to your Uno's ground**

Write Sketch and Upload the Code
Plug your Uno into your computer and open a new sketch in Arduino IDE. Copy and paste the code from below and upload to your Uno:
#include <servo.h>
//original code transcribed from Mike Theevil's video: https://www.youtube.com/watch?v=1doy5nNS-cg
//modified by Smalls on Nov 8 2023
Servo tail; //create servo object to control a servo
Servo head; //create servo object to control a servo
Servo eyes; //create servo object to control a servo
// twelve servo objects can be created on most boards
void loop_tail() {
int t1 = random(0, 170); //defines variable and sets servo step amount between 0 and 170 degrees
int t2 = random(500, 800); //defines variable and sets random delay
int t3 = random(400, 1000); //defines variable and sets neutral random delay
tail.write(t1); //makes servo position random
delay(t2); //triggers random relay
tail.write(0); //resets servo to neutral position
delay(t3); //triggers neutral random delay
}
void loop_head() {
int h1 = random(0, 170); //defines variable and sets servo step amount between 0 and 170 degrees
int h2 = random(500, 800); //defines variable and sets random delay
int h3 = random(400, 1000); //defines variable and sets neutral random delay
head.write(h1); //makes servo position random
delay(h2); //triggers random relay
head.write(0); //resets servo to neutral position
delay(h3); //triggers neutral random delay
}
void loop_eyes() {
int e1 = random(0, 170); //defines variable and sets servo step amount between 0 and 170 degrees
int e2 = random(500, 800); //defines variable and sets random delay
int e3 = random(400, 1000); //defines variable and sets neutral random delay
eyes.write(e1); //makes servo position random
delay(e2); //triggers random relay
eyes.write(0); //resets servo to neutral position
delay(e3); //triggers neutral random delay
}
void setup() {
tail.attach(9); //attaches the servo on pin 9 to the servo object
head.attach(10); //attaches the servo on pin 9 to the servo object
eyes.attach(11); //attaches the servo on pin 9 to the servo object
}
void loop() {
byte randNum = random(3); //max range of numbers
switch (randNum) //switches between the random numbers assigned in this loop
{
case 0:
loop_tail();
break;
case 1:
loop_head();
break;
case 2:
loop_eyes();
break;
}
}
Understanding the Code
- Servo tail; //create servo object to control a servo Create one of these for each servo you have, you can replace "tail" with a unique name of your choosing
- void loop_tail() create a loop for each servo, make sure to name it the same thing as your servo so you don't forget which loop controls which servo
- int t1 = random(0, 170); defines variable and sets servo step amount between 0 and 170 degrees
- int t2 = random(500, 800); defines variable and sets random delay in microseconds
- int t3 = random(400, 1000); defines variable and sets neutral random delay in microseconds
- tail.write(t1); sets the servo to a random position according to the range defined in int t1
- delay(t2); pauses movement for a random amount of time according to the range defined in int 2
- tail.write(0); resets the servo to its neutral starting position
- delay(t3); pauses movement for a random amount of time according to the range defined in int 3
- void setup() is run one to...
Smalls
ProgressTH
theschlem
Sylvain