I am building a prop for a friend that is detailed pretty well here: https://www.instructables.com/Dead-Space-Schofield-Tools-211-V-Plasma-Cutter/
Edit
Updated the new code that @runaway_pancake was kind enough to provide. Now both servos properly cycle when power is applied, so that is working like it should. The current snag I have is that in changing the code it also changed the rotate and extend buttons. When pressing the button to extend, both servos engage. Pressing the button again makes the servos rotate/extend and then rotate/extend back to their starting point without releasing the button. No wires were changed, only the code. The button for rotating does not do anything.
Origional issue
I have followed all the steps and wiring 3 times now and still the same issue, even using 2 other arduino Nano boards for testing. I have two servos that are supposed to reset themselves as soon as the model gets power. Then pressing a button will rotate one servo, or both depending on the way the buttons are pressed. The issue is that when the model gets power only the servo on pin 10 works. The servo on pin 8 does not do anything. I swapped the servos to make sure they were both good and the previously unworking servo does work fine when swapped, but the previously working servo does not. When I continue testing hitting the switch that should make servo 10 move does work fine too, nothing happens when hitting the button to make servo 8 spin though the servo does not respond when the power is plugged in anyway. I have been able to fully rule out hardware and I have adjusted and readjusted the wires over and over. I am out of ideas to test for the issue. Any advise would be very helpful
#include <Servo.h>
Servo rotator; // create rotator servo
Servo extender; // create extender servo
int rotpin = 8; // rotator servo on pin 8
int extpin = 10; // extender servo on pin 10
int buttonpin = 2; // rotate button on pin 2
int triggerpin = 3; // trigger on pin 3
int pos = 0; // servo position variable
int rotflag = 0; // rotation flag, 0 vertical, 1 horizontal
int extflag = 0; // extension flag, 0 retracted, 1 extended
int extupper = 125; // upper travel limit for extender servo
int extlower = 0; // lower travel limit for extender servo
int rotupper = 126; // upper travel limit for rotator servo
int rotlower = 36; // lower travel limit for extender servo
void setup()
{
extender.attach(extpin); // attach extender servo
rotator.attach(rotpin); // attach rotator servo
extender.write(extlower); // ensure fins are extended in case the rotator needs to move
delay(300); // wait for servo to get there
rotator.write(rotupper); // move rotator to vertical
delay(300); // wait for servo to get there
extender.write(extupper); // retract fins
delay(300); // wait for servo to get there
pinMode(buttonpin, INPUT_PULLUP); // set up rotation button with internal pull-up enabled
pinMode(triggerpin, INPUT); // set up trigger, uses external pull-down
}
void loop()
{
if (digitalRead(triggerpin) == HIGH) { // if trigger is released
if (extflag == 1) { // and if fins are extended
for(pos = (extlower); pos < (extupper); pos += 1) // retract fins
{
extender.write(pos);
delay(0);
}
extflag = 0; // set flag to retracted
}
} else { // otherwise if trigger is pulled
if (extflag == 0) { // and if fins not already extended
for(pos = (extupper); pos >= (extlower); pos -= 1) // extend fins
{
extender.write(pos);
delay(0);
}
extflag = 1; // set flag to extended
}
if (digitalRead(buttonpin) == LOW) { // then check if rotate button is pressed
if (rotflag == 0) { // if blade is vertical
for(pos = (rotupper); pos >= (rotlower); pos -= 1)// rotate to horizontal
{
rotator.write(pos);
delay(2);
}
rotflag = 1; // set flag to horizontal
} else {
for(pos = (rotlower); pos < (rotupper); pos += 1) // otherwise rotate to vertical
{
rotator.write(pos);
delay(2);
}
rotflag = 0; // set flag to vertical
}
while (digitalRead(buttonpin) == LOW)
{
delay(1); // wait until rotate button is released
}
delay(200); // mitigate accidental double presses
}
}
}