Utilizando una aplicación Android, Arduino, Módulo Bluetooth y un
puente H podemos controlar los motores de nuestro tanque, la App que nosotros
utilizamos se llama “Bluetooth RC”, la puedes encontrar en Google Play y es
gratuita. Su manejo es intuitivo, al abrir el menú de opciones puedes ver un
botón que dice “Info” allí viene la lista de caracteres que “manda” al
presionar los botones, estos caracteres son los que el Arduino interpretará
para realizar las funciones.
Material:
- Arduino Uno.
- Cable para proto.
- L293.
- Módulo bluetooth.
- Dos Motores DC bipolares.
- Batería (el voltaje depende de los motores que utilices).
Herramientas:
- Computadora.
- Dispositivo Android.
- Pinzas de corte y de punta.
- Protoboard.
Forward - F
Backward - B
Left - L
Right - R
Forward Left - G
Forward Right - I
Backward Left - H
Backward Right - JStop - S
El Puente H que utilizamos es el LN293, lo puedes conseguir en cualquier tienda de electrónica y cuesta aproximadamente $50 Mexicanos. Este es su diagrama de conexiones:
Para nuestro caso lo conectaremos al Arduino y a los motores
de la siguiente manera:
amigo como hago para meterle leds al carro ?
ResponderEliminara que te refieres, cuando quieres que enciendan? es que no te entendí
Eliminarsi quiero que prendan varios leds, estuve mirando el código de arduino y al verificar me tira un error 'c' was not declared in this scope
Eliminarestás usando el código "TanqueArduinoBluetooth" no?
Eliminarprueba con éste https://www.mediafire.com/?rdcwv1nndg4l4ci
si quierse prender LEDs sólo define más pines como salidas o conecta los más en paralelo
es que no se como resolver tu duda porque no la entiendo, cuando quieres que prendan esos LEDs? por ejemplo, si quieres que prendan cuando mandas la señal al arduino o que funcionen como luces para el carrito, dime :D
perdón por tardar en contestar, ando ocupado :P
amigo yo tengo un puente H L293D, mi pregunta seria que si funciona con este puente H o solo funciona con la referencia que esta en el plano? y/o que otra referencia puedo utilizar?
ResponderEliminarPuedes usar cualquier puente H, la diferencia entre el que tienes y el que está en el diagrama tal vez sea la corriente que puede manejar sin quemarse. El L293 te entrega como 600mA en cada salida.
EliminarCuando publiqué este post apenas estaba haciendo el carrito y no consideré la corriente que demandaba el motor, al final utilicé un puente H que yo hice con relevadores porque el LN293 no era suficiente y se calentaba mucho.
Te recomiendo que si vas a hacer un carrito como este uses el L298, te entrega 2A a la salida de cada motor y se conecta masomenos igual, te puedo pasar la oja de datos si quieres :D o puedes hacer un puente H con relevadores, la desventaja es que vas a agotar más rápido la batería pero ya te olvidas de si la corriente es suficiente y bla bla bla (Y)
https://www.mediafire.com/?401sybrq1pxhbuk
Eliminaresa es la hoja de datos del L298N
la cuestion con los LEDs es que quiero que funcionen como luces del carro
ResponderEliminarah pues sólo deja un pin del arduino como salida y conectale los LEDs en paralelo. Para controlar esos LEDs con la aplicación sólo fíjate que caracter le manda al arduino al pulsar el botón de las luces e igual que con las demás ordenes, le dices al arduino que cuando reciba ese caracter ponga en HIGH ese pin.
Eliminardentro del switch(c) pon estas dos condiciones, en vez de luces pon el pin que estés utilizando:
case 'W':
digitalWrite(luces, HIGH);
break;
case 'w':
digitalWrite(luces, LOW);
break;
cualquier duda me dices :D
Amigo, cuando voy a cargar el cdigo, me genra varios errores?
ResponderEliminarQué errores?
EliminarPásame el código que estás usando
estem me podrias ayudar en c=serial.read(); y switch (c)( me puedes ayudar !! ayi :/ porfas
ResponderEliminarQué duda tienes?
EliminarPerdón por la tardanza
Hola soy el de arriba estem pues mas bien nose como pornerle en esa parte de c=serial.read(); y switch (c)( me señala error ! y nose que ponerle !! :S casi nose usar el arduino si me pudieras ayudar por favor !!
ResponderEliminarpásame tu código para ver qué error tienes
EliminarEs el que publicaste yo el error que tengo es c=serial.read(); y switch (c)( ayi pero pues no lo quiero con luces coo le ago que show !!ocupo ayudaa ayi .
ResponderEliminarYa lo compilé y no tiene error sube una captura de pantalla con el error que te aparece
EliminarTal vez sea que estás cargando el programa con el módulo bluetooth conectado al Arduino, intenta desconectarlo antes de cargar :D
Si no quieres luces sólo borra esa parte del programa
Pero La borro de donde inicia el c=serial.read(); y switch (c) desde ayi ???
ResponderEliminarmira me sale un erroor cuando le doy VERIFICAR nose si sea por el bluetooth como me dicas tu no soy muy experto bea pero me suraya con anranjado donde empieza c = Serial.read();desde ayi copy error mensajes dice :s !
Eliminarnecesito que me pases tu código, así no te puedo ayudar
Eliminarpégalo todo en un comentario :D
int motorA1 = 2;
Eliminarint motorA2 = 3;
int motorR1 = 4;
int motorR2 = 5;
int luz = 11;
int led=13;
void adelante();
void reversa();
void parado();
void derecha();
void izquierda();
void encenderLuz();
void setup(){
Serial.begin(9600);
pinMode(led, OUTPUT);
pinMode(motorA1, OUTPUT);
pinMode(motorA2, OUTPUT);
pinMode(motorR1, OUTPUT);
pinMode(motorR2, OUTPUT);
pinMode(luz, OUTPUT);
}
void loop(){
while (Serial.available()) {
if (Serial.available() >0) {
c = Serial.read();
}
}
switch(c){
case 'F':
adelante();
break;
case 'B':
reversa();
break;
case 'S':
parado();
break;
case 'L':
izquierda();
break;
case 'R':
derecha();
break;
case 'G':
adelanteIzquierda();
break;
case 'I':
adelanteDerecha();
break;
case 'H':
atrasIzquierda();
break;
case 'J':
atrasDerecha();
break;
case 'W':
encenderLuz();
break;
case 'w':
apagarLuz();
break;
}
}
void adelante(){
digitalWrite(motorA1,HIGH);
digitalWrite(motorA2,HIGH);
digitalWrite(led,HIGH);
}
void reversa(){
digitalWrite(motorR2,HIGH);
digitalWrite(motorR1,HIGH);
digitalWrite(led,HIGH);
}
void parado(){
digitalWrite(motorR2,LOW);
digitalWrite(motorR1,LOW);
digitalWrite(motorA2,LOW);
digitalWrite(motorA1,LOW);
digitalWrite(led,LOW);
}
void parado2(){
digitalWrite(motorR2,LOW);
digitalWrite(motorR1,LOW);
digitalWrite(motorA2,LOW);
digitalWrite(motorA1,LOW);
digitalWrite(led,LOW);
}
void izquierda(){
digitalWrite(motorA1,HIGH);
digitalWrite(motorR2,HIGH);
digitalWrite(led,HIGH);
}
void derecha(){
digitalWrite(motorA2,HIGH);
digitalWrite(motorR1,HIGH);
digitalWrite(led,HIGH);
}
void encenderLuz(){
digitalWrite(luz,HIGH);
}
void apagarLuz(){
digitalWrite(luz,LOW);
}
como le arias pero sin luces por que ya le hice como me dijiste y aun asii salee erros si podrias mandarloo sin luces porfass :S
ok
Eliminarya lo estoy checando
lo que pasa es que mandas llamar métodos que no están declarados en el programa
estás haciéndolo justamente con el circuito de arriba?
éste es por si tienes un carro con dos motores y dependiendo hacia donde giren pues el auto da vuelta, igual que un tanque
cómo tienes el hardware?
int motorA1 = 2;
Eliminarint motorA2 = 3;
int motorR1 = 4;
int motorR2 = 5;
int luz = 11;
int led=13;
char c = 0;
void setup(){
Serial.begin(9600);
pinMode(led, OUTPUT);
pinMode(motorA1, OUTPUT);
pinMode(motorA2, OUTPUT);
pinMode(motorR1, OUTPUT);
pinMode(motorR2, OUTPUT);
pinMode(luz, OUTPUT);
}
void loop(){
while (Serial.available()) {
if (Serial.available() >0) {
c = Serial.read();
}
}
switch(c){
case 'F':
adelante();
break;
case 'B':
reversa();
break;
case 'S':
parado();
break;
case 'L':
izquierda();
break;
case 'R':
derecha();
break;
case 'W':
encenderLuz();
break;
case 'w':
apagarLuz();
break;
}
}
void adelante(){
digitalWrite(motorA1,HIGH);
digitalWrite(motorA2,HIGH);
digitalWrite(led,HIGH);
}
void reversa(){
digitalWrite(motorR2,HIGH);
digitalWrite(motorR1,HIGH);
digitalWrite(led,HIGH);
}
void parado(){
digitalWrite(motorR2,LOW);
digitalWrite(motorR1,LOW);
digitalWrite(motorA2,LOW);
digitalWrite(motorA1,LOW);
digitalWrite(led,LOW);
}
void parado2(){
digitalWrite(motorR2,LOW);
digitalWrite(motorR1,LOW);
digitalWrite(motorA2,LOW);
digitalWrite(motorA1,LOW);
digitalWrite(led,LOW);
}
void izquierda(){
digitalWrite(motorA1,HIGH);
digitalWrite(motorR2,HIGH);
digitalWrite(led,HIGH);
}
void derecha(){
digitalWrite(motorA2,HIGH);
digitalWrite(motorR1,HIGH);
digitalWrite(led,HIGH);
}
void encenderLuz(){
digitalWrite(luz,HIGH);
}
void apagarLuz(){
digitalWrite(luz,LOW);
}
ese está bien, chécalo
Eliminarespero que te sirva (Y)
Con el código arduino _ good y conectando el circuito igual, no me funciona y uno de los motores reproduce una canción
ResponderEliminarAyuda?
estás usando el mismo integrado y se calienta?
Eliminarlos motores tienen poca potencia o ni se mueven?
hahahaha wtf!? cómo que una canción?
buenas, esta programacion la puedo usar para un auto normal? que avance, retroceda, doble hacia la izq, derecha, etc.... lo digo porque hice todo tal cual y al momento de usarlo los botone no funcionan bien :/
ResponderEliminar¿cómo que un auto normal?
Eliminarlo que importa es que las salidas del arduino manden los pulsos necesarios para activar el puente H
¿por qué no funciona bien, qué hace o qué no hace?
me van a comer la pinche verga
ResponderEliminarno funsiona esta chevere verga
Eliminaren serio nesesito ayudita para un trabajito de computadoras en la pinche escuela
ResponderEliminarcomo no lo consiga mi profesor me reventara el recto con su enorme verga igual que a mi mamasita
ayudita :(
PD:vayan con la virgensita de guadalupe i con san antonio patron de la pedofilia
NO MAMEEEEEEEEEEEEESSS
ayuda con programación en arduino y sugerencia
ResponderEliminarhttps://espanol.answers.yahoo.com/question/index?qid=20150508193352AAroK09
hola, estoy utilizando un modulo l293n no logro mover el motor reviso voltage en la salida del modulo y lo muestra cuando conecto el motor se cae total , ayuda..
ResponderEliminarquisiera saber si se podria hacer lo mismo pero con un receptor rc?
ResponderEliminarquisiera saber si se podria hacer lo mismo pero con un receptor rc?
ResponderEliminarOye amigo es lo mismo usar un sensor bluetooth que un ultrasonico ?
ResponderEliminarComo puedo agregar LEDs al carro
ResponderEliminar