Hola!
Estoy haciendo un carro controlado por bluetooth con la placa arduino UNO, el problema es que estoy usando un dfplayer mini mp3, dos motores dc controlados por el chip l293d, modulo bluetooth y un servo motor, por lo que estoy utilizando todos los pines PWM , excepto en el servo motor, que lo conecte a un pin 7, por lo que he investigado la librea servo y dfplayer usan el mismo timer, ademas el timer 0 usa los pines 5y6, el timer1 9 y 10, mientras que el timer2 11 y 3. Sin embargo ya tengo esos pines ocupados, como ya dije ene el servo utilizo el pin 7, pues al usar la librería servo timer2 el arduino ya no hace funcionar el dfplayer. Obviamente quiere que gire el servo de 0 a 180.
¿Abra alguna forma de hacerlo funcionar?
Mi codigo:
#include <DFRobotDFPlayerMini.h>
#include <SoftwareSerial.h>
#include <ServoTimer2.h>
SoftwareSerial mySoftwareSerial(11, 3);
DFRobotDFPlayerMini myDFPlayer;
ServoTimer2 servoMotor;
char a;
int grados;
//LEFT MOTOR
int leftA = 9;
int leftB = 10;
//RIGHT MOTOR
int rightA = 5;
int rightB = 6;
int vel=255;
void setup() {
Serial.begin(9600);
mySoftwareSerial.begin(9600);
myDFPlayer.begin(mySoftwareSerial);
myDFPlayer.volume(5);
pinMode(rightA, OUTPUT);
pinMode(rightB, OUTPUT);
pinMode(leftA, OUTPUT);
pinMode(leftB, OUTPUT);
analogWrite(rightA, 0);
analogWrite(rightB, 0);
analogWrite(leftA, 0);
analogWrite(leftB, 0);
servoMotor.attach(7);
}
void loop() {
if(Serial.available()>0){
a = Serial.read();
grados = Serial.parseInt();
}
if(a=='X' || a=='x'){
//Serial.println("Para");
analogWrite(rightA, 0);
analogWrite(rightB, 0);
analogWrite(leftA, 0);
analogWrite(leftB, 0);
}
if(a=='W' || a=='w'){
//Serial.println("Delante");
analogWrite(rightA,vel);
analogWrite(leftA, vel);
//mp3_play(1);
}
if(a=='S' || a=='s'){
//Serial.println("Atras");
analogWrite(rightB, vel);
analogWrite(leftB, vel);
}
if(a=='D' || a=='d'){
//Serial.println("Derecha");
analogWrite(rightA, vel);
analogWrite(leftA, 0);
}
if(a=='A' || a=='a'){
//Serial.println("Izquierda");
analogWrite(rightA, 0);
analogWrite(leftA, vel);
}
if(a=='m'){
servoMotor.write(grados);
}
if(a=='r'){
myDFPlayer.play(1);
}