Hola a todos, soy nuevo en este mundo de Arduino y tengo un problema con dos servos futaba S3003.
Les explico lo que me sucede. He realizado el circuito que les muestro en la imagen y he programado la placa de arduino Nano con el programa que les muestro al final del post. Cuando conecto la placa al ordenador portatil todo funciona perfectamente pero si conecto la placa a una bateria externa de 6v-12v (pilas CR2032 de 3v) no funciona nada. Bueno, el led de la placa parpadea constantemente y parece como si no se activara el programa que tiene instalado.
He medido (con un voltímetro) el voltaje de salida del USB del ordenador portatil y son 5.15V y la bateria externa oscila entre los 5.75v-11.05v.
El programa sirve para abrir el casco de Ironman y lo que hace el programa es que cuando se presiona el interruptor los servos giran 180º y se apagan los leds y cuando se vuelve a presionar el interruptor los servos vuelven a la posición inicial y las luces se encienden.
Quiero poner las baterias dentro del casco de Ironman pero sinó funcionan los servos ni la placa sin estar conectados al ordenador portatil , no tengo ni idea como solucionarlo.
Espero que me puedan ayudar con este problema.
Muchas gracias por vuestra atención.
#include <Servo.h>
//servo 1
Servo myservo;
Servo myservo1;
int val; // variable for reading the pin status
int val2; // variable for reading the delayed/debounced status
int buttonState;
int pos = 0;
int pos1 = 180;
int servostatus = 0;
int switchPin =2; // Switch connected to digital pin 2
int ledPin = 5;
int ledPin2 = 18;
void setup() // run once, when the sketch starts
{
//servo 1
myservo.attach(9);
myservo1.attach(10);
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
buttonState = digitalRead(switchPin);
myservo.write(0);
myservo1.write(175);
pinMode(ledPin2, OUTPUT);
}
void loop() // run over and over again
//servo 1
{
val = digitalRead(switchPin); // read input value and store it in val
delay(10); // 10 milliseconds is a good amount of time
val2 = digitalRead(switchPin); // read the input again to check for bounces
if (val == val2) { // make sure we got 2 consistant readings!
if (val != buttonState) { // the button state has changed!
if (val == LOW) { // check if the button is pressed
if (servostatus == 0) { // is the light off?
servostatus = 1; // turn light on!
myservo.write(0);
myservo1.write(180);
delay(1000);
digitalWrite(ledPin, HIGH);
delay(50);
digitalWrite(ledPin, LOW);
delay(00);
digitalWrite(ledPin, HIGH);
delay(50);
digitalWrite(ledPin, LOW);
delay(00);
// fading
for(int fadeValue = 0 ; fadeValue <= 255; fadeValue +=5) {
// sets the value (range from 0 to 255):
analogWrite(ledPin, fadeValue);
delay(30);
}
} else {
servostatus = 0; // turn light off!
digitalWrite(ledPin, LOW);
delay(15);
digitalWrite(ledPin2, LOW);
myservo.write(180);
myservo1.write(0);
}
}
}
buttonState = val; // save the new state in our variable
}
}