Hello everyone,
I'm trying to make a basic "useless machine", using a Nano V3 clone and 2 "MG996" servos.
Here is the schematic:
And the sketch:
#define LEDPIN 13
#define BUTTONPIN 2
#define TRANSPIN 6
#include <Servo.h>
Servo doorServo;
#define doorServoPin 3
#define doorServoUp 110 // lid open
#define doorServoDn 160 // lid closed
Servo gripServo;
#define gripServoPin 4
#define gripServoUp 45 // push on button
#define gripServoDn 185 // on back position
void servoStatus(boolean newStat) {
if (newStat) { digitalWrite(TRANSPIN, HIGH); delay(50);
doorServo.attach(doorServoPin);
gripServo.attach(gripServoPin); }
else { delay(50); doorServo.detach();
gripServo.detach();
digitalWrite(TRANSPIN, LOW); delay(50); }
}
void doorSweepTo(byte targetPos) { doorServo.write(targetPos); delay(500); }
void gripSweepTo(byte targetPos) { gripServo.write(targetPos); delay(500);}
void closeButton() {
delay(500);
servoStatus(HIGH);
doorSweepTo(doorServoUp); gripSweepTo(gripServoUp);
gripSweepTo(gripServoDn); doorSweepTo(doorServoDn);
servoStatus(LOW);
}
void setup() {
pinMode(LEDPIN, OUTPUT); pinMode(BUTTONPIN, INPUT); pinMode(TRANSPIN, OUTPUT);
}
void loop() {
if (digitalRead(BUTTONPIN)) { closeButton(); }
}
It works perfect only while it is connected to PC via USB.
When disconnected and left on batteries, the servos are moving erratic - generally they're following the course, but with lots of random moves.
On batteries, Vin = ~7.2 V, and the 5V and 3V pins have the correct values (measured while the servos are moving).
Any ideas where am I wrong ?
Regards
Ciprian