Hola a todos, primero quiero aclarar que soy nuevo en esto de la robótica.
Ahora bien; estoy teniendo problemas para programar un proyecto en el que estoy (ver código). Uno de los problemas que tengo es que cuando activo la luz conectada al pin 8 se detiene y no puedo hacer mas nada. El otro inconveniente es que cuando se activa algún servo la luz no funciona, solo funciona si alimento los servos con una fuente externa (GRN,5V), aclaro que estoy alimentando la placa (Arduino UNO) con usb. y el L298n con una fuente de 12v 1,5 a.
De todas maneras los servos no funcionan o no responden al código, (el mismo código para los servos fuera de este Sketch funciona bien), no se si es por que la placa no esta alimentada de forma externa o por algún conflicto en el código.
Aclaro que de un día para otro los servos que tenía dejaron de funcionar o si mi hijo que estuvo jugando con cables, la protoboard y algún transfo, los rompió (estoy esperando unos que compré).
Necesito saber si el código está bien, si la placa aguanta todas las conexiones que le hice y si la puedo alimentar con una fuente de 12v 1,5a.
Además quiero saber como encender y apagar la luz con el control Bluetooth, ya que solo logro encender y que se desactive solo mediante este código.
El cogigo es el siguiente:
// MOTORES RUEDAS
#include <Servo.h>
//puente h
const int motor1Pin1 = 5;
const int motor1Pin2 = 7;
const int enablem1Pin3 = 6;
const int motor2Pin1 = 4;
const int motor2Pin2 = 2;
const int enablem2Pin3 = 3;
// Modulo mp3
const int luz= 8;
byte serialA;
//servos
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
void setup() {
Serial.begin(9600);
Serial.println(serialA);
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enablem1Pin3, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
pinMode(enablem2Pin3, OUTPUT);
pinMode(luz, OUTPUT);
servo1.attach(9);
servo2.attach(10);
servo3.attach(11);
servo4.attach(12);
servo1.write(0);
servo2.write(0);
servo3.write(0);
servo4.write(90);
servo1.write(0); //posicion inicial 0 grados:
servo2.write(90); //posicion inicial 90 grados:
delay(1000);
servo1.write(90); //posicion final 90 grados:
servo2.write(0); //posicion final 0 grados:
delay(1000);
servo3.write(0);
delay(3000);
servo3.write(180);
delay(6000);
servo4.write(90);
delay(2000);
servo4.write(45);
delay(1000);
servo4.write(90);
delay(2000);
servo4.write(135);
delay(1000);
servo4.write(90);
delay(1000);
}
void loop() {
if (Serial.available() > 0) {serialA = Serial.read();
Serial.println(serialA);}
switch (serialA) {
// luces
case 'V':
digitalWrite(luz, HIGH);
delay(12000);
digitalWrite(luz, LOW); // Turn off motor
Serial.println(serialA);
// forward
case 'F':
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
digitalWrite(enablem1Pin3, HIGH);
digitalWrite(enablem2Pin3, HIGH);
break;
// left
case 'L':
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
digitalWrite(enablem1Pin3, HIGH);
digitalWrite(enablem2Pin3, LOW);
break;
// right
case 'R':
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
digitalWrite(enablem1Pin3, LOW);
digitalWrite(enablem2Pin3, HIGH);
break;
// forward left
case 'G':
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
digitalWrite(enablem1Pin3, HIGH);
digitalWrite(enablem2Pin3, HIGH);
break;
// forward right
case 'I':
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
digitalWrite(enablem1Pin3, HIGH);
digitalWrite(enablem2Pin3, HIGH);
break;
// backward left
case 'H':
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
digitalWrite(enablem1Pin3, HIGH);
digitalWrite(enablem2Pin3, HIGH);
break;
// backward right
case 'J':
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, HIGH);
digitalWrite(enablem1Pin3, HIGH);
digitalWrite(enablem2Pin3, HIGH);
break;
// backward
case 'B':
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
digitalWrite(enablem1Pin3, HIGH);
digitalWrite(enablem2Pin3, HIGH);
break;
// Stop
case 'S':
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
digitalWrite(enablem1Pin3, LOW);
digitalWrite(enablem2Pin3, LOW);
break;
}
}