Hola, justo acabo de terminar un proyecto asi (hecho con reciclados) y creo que no estoy haciendo mal en pasarte el sketch pues vas a tener que estudiarlo si es que te interesa, Saludos.
imagen: auto hosted at ImgBB — ImgBB
#include <SoftwareSerial.h> //Librería que permite establecer comunicación serie en otros pins
//Aquí conectamos los pins RXD,TDX del módulo Bluetooth.
SoftwareSerial BT(10,11); //PIN TXD DEL MODULO VA A DIGITAL 10 Y PIN RXD DEL MODULO VA A DIGITAL 11 DEL ARDUINO UNO
int spk=9; // altavoz a GND y pin 9
int c[5]={131,262,523,1046,2093}; // frecuencias 4 octavas de Do
int cs[5]={139,277,554,1108,2217}; // Do#
int d[5]={147,294,587,1175,2349}; // Re
int ds[5]={156,311,622,1244,2489}; // Re#
int e[5]={165,330,659,1319,2637}; // Mi
int f[5]={175,349,698,1397,2794}; // Fa
int fs[5]={185,370,740,1480,2960}; // Fa#
int g[5]={196,392,784,1568,3136}; // Sol
int gs[5]={208,415,831,1661,3322}; // Sol#
int a[5]={220,440,880,1760,3520}; // La
int as[5]={233,466,932,1866,3729}; // La#
int b[5]={247,494,988,1976,3951}; // Si
void nota(int a, int b); // declaración de la función auxiliar. Recibe dos números enteros.
int in3=5;
int in4=4;
int enb=3;
int in1=7;
int in2=8;
int ena=6;
int ledr=12;
int ledb=13;
int q;
int n,nn;
char dato;
void setup() {
Serial.begin(9600);
BT.begin(9600);
pinMode(in1,OUTPUT);
pinMode(in2,OUTPUT);
pinMode(ena,OUTPUT);
pinMode(in3,OUTPUT);
pinMode(in4,OUTPUT);
pinMode(enb,OUTPUT);
pinMode(ledr,OUTPUT);
pinMode(ledb,OUTPUT);
}
void nota(int frec, int t) //funcion musical
{
tone(spk,frec); // suena la nota frec recibida
delay(t); // para despues de un tiempo t
}
void loop() {
if(BT.available()) {
dato=BT.read(); //Guarda UN carácter en la variable "dato"
if(dato=='A') { // velocidad 1
//Preparamos la salida para que los motores giren en un sentido
digitalWrite (in3, HIGH); //adelante
digitalWrite (in4, LOW);
digitalWrite (in2, LOW); //adelante
digitalWrite (in1, HIGH);
// Aplicamos PWM al pin ENB y ENA, haciendo girar el motor a una velocidad que le indicamos en analogWrite
analogWrite(enb,200); //5.05v a 220 5.30v a 240
analogWrite(ena,205); //4.16v a 220 5.08v a 240
}
if(dato=='B') { // velocidad 2
//Preparamos la salida para que los motores giren en un sentido
digitalWrite (in3, HIGH); //adelante
digitalWrite (in4, LOW);
digitalWrite (in2, LOW); //adelante
digitalWrite (in1, HIGH);
// Aplicamos PWM al pin ENB y ENA, haciendo girar el motor a una velocidad que le indicamos en analogWrite
analogWrite(enb,255); //5.05v a 220 5.30v a 240
analogWrite(ena,250); //4.16v a 220 5.08v a 240
}
if(dato=='C') { // parar motores
analogWrite(enb,0);
analogWrite(ena,0);
}
if(dato=='D') { // marcha atras
//Preparamos la salida para que los motores giren en un sentido
digitalWrite (in3, LOW); //atras
digitalWrite (in4, HIGH);
digitalWrite (in2, HIGH); //atras
digitalWrite (in1, LOW);
// Aplicamos PWM al pin ENB y ENA, haciendo girar el motor a una velocidad que le indicamos en analogWrite
analogWrite(enb,230); //5.05v a 220 5.30v a 240
analogWrite(ena,230); //4.16v a 220 5.08v a 240
}
if(dato=='E') { // doblar derecha rueda derecha (enb) gira hacia atras y rueda izq (ena) gira haica adelante
//Preparamos la salida para que los motores giren en un sentido
digitalWrite (in3, LOW); //atras
digitalWrite (in4, HIGH);
digitalWrite (in2, LOW); //adelante
digitalWrite (in1, HIGH);
// Aplicamos PWM al pin ENB y ENA, haciendo girar el motor a una velocidad que le indicamos en analogWrite
analogWrite(enb,240); //5.05v a 220 5.30v a 240
analogWrite(ena,240); //4.16v a 220 5.08v a 240
}
if(dato=='F') { // doblar izquierda rueda derecha (enb) gira hacia adelante y rueda izq (ena) gira haica atras
//Preparamos la salida para que los motores giren en un sentido
digitalWrite (in3, HIGH); //adelante
digitalWrite (in4, LOW);
digitalWrite (in2, HIGH); //atras
digitalWrite (in1, LOW);
// Aplicamos PWM al pin ENB y ENA, haciendo girar el motor a una velocidad que le indicamos en analogWrite
analogWrite(enb,240); //5.05v a 220 5.30v a 240
analogWrite(ena,240); //4.16v a 220 5.08v a 240
}
if(dato=='G' and n!= 1) { // luces rosas prende
digitalWrite (ledr, HIGH);
dato='y';
n=1;
}
if(dato=='G' and n!= 0) { // luces rosas apaga
digitalWrite (ledr, LOW);
dato='w';
n=0;
}
if(dato=='H' and nn!= 1) { // luces blancas prende
digitalWrite (ledb, HIGH);
dato='x';
nn=1;
}
if(dato=='H' and nn!= 0) { // luces blancas apaga
digitalWrite (ledb, LOW);
dato='z';
nn=0;
}
if (dato=='I') {
nota(d[1],120);noTone(spk);delay(10);
nota(d[1],120);noTone(spk);delay(10);
nota(d[1],120);noTone(spk);delay(10);
nota(g[1],675);noTone(spk);delay(35);
nota(d[2],675);noTone(spk);delay(10);
nota(c[2],120);noTone(spk);delay(10);
nota(b[1],120);noTone(spk);delay(10);
nota(a[1],120);noTone(spk);delay(10);
nota(g[2],675);noTone(spk);delay(35);
nota(d[2],675);noTone(spk);delay(20);
dato='r';
}
}
}