Recently, I have been working on a project involving 8 Tower Pro sg90SG90 servos and an Arduino Uno. The issue I am running into is that the servos will randomly move when connected, without even receiving a signal from the Arduino.
I don't think power is the problem because I am powering the servos externally with a 5.5v5 V power supply which can provide 2.5 ampsA. I also made sure to have a common ground between the Arduino and the power supply. Additionally, I don't think this is an issue of a broken servo because I have this problem with all eight. In my code, I have input pins to control the servos which are just buttons. These buttons also have pull-down resistors, so I don't think the input is the problem either. I am using the Arduino servo library.
#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
Servo servo7;
Servo servo8;
void setup(){
pinMode(5, INPUT);
pinMode(4, INPUT);
pinMode(3, INPUT);
pinMode(2, INPUT);
pinMode(1, INPUT);
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
servo1.attach(13);
servo2.attach(12);
servo3.attach(11);
servo4.attach(10);
servo5.attach(9);
servo6.attach(8);
servo7.attach(7);
servo8.attach(6);
}
void loop(){
if (digitalRead(5)==LOW == LOW) {
servo1.write(120);
delay(20);
}
else {
servo1.write(50);
delay(20);
}
if (digitalRead(4)==LOW == LOW) {
servo2.write(110);
delay(20);
}
else {
servo2.write(200);
delay(20);
}
if (digitalRead(3)==LOW == LOW) {
servo3.write(120);
delay(20);
}
else {
servo3.write(50);
delay(20);
}
if (digitalRead(2)==LOW == LOW) {
servo4.write(110);
delay(20);
}
else {
servo4.write(200);
delay(20);
}
if (digitalRead(1)==LOW == LOW) {
servo5.write(120);
delay(20);
}
else {
servo5.write(50);
delay(20);
}
if (digitalRead(A3)==LOW == LOW) {
servo6.write(110);
delay(20);
}
else {
servo6.write(200);
delay(20);
}
if (digitalRead(A2)==LOW == LOW) {
servo7.write(120);
delay(20);
}
else {
servo7.write(50);
delay(20);
}
if (digitalRead(A1)==LOW == LOW) {
servo8.write(110);
delay(20);
}
else {
servo8.write(200);
delay(20);
}
}