Go Down

Topic: Ayuda robot arduino (Read 209 times) previous topic - next topic

isis_

Jul 16, 2014, 08:44 pm Last Edit: Jul 20, 2014, 04:23 pm by isis_ Reason: 1
Hola, estoy empezando en esto de arduino y estoy intentado hacer un robot para controlarlo a traves del movil por bluetooth.
El problema es que parece que le llega la orden, pero no anda y no se por que sera. Espero que me podais ayudar
Esto es lo que tengo hecho:  



Este es el sketch

Code: [Select]
#include <SoftwareSerial.h>

char rec;
int Tx=1;
int Rx=0;
int IN1=7;
int IN2=8;
int IN3=9;
int IN4=10;
int ENA=5;
int ENB=6;
int vel_der=200;
int vel_izq=200;
char buffer;
int sentido=0; // 0=parado, 1=adelante, -1=atras


SoftwareSerial blue(Tx, Rx);

void setup()
{
 blue.begin(9600);
 pinMode(IN1, OUTPUT);
 pinMode(IN2, OUTPUT);
 pinMode(IN3, OUTPUT);
 pinMode(IN4, OUTPUT);
}

void loop()
{
 if(blue.available())
 {
   buffer=blue.read();
   
   switch(buffer)
   {
     case 'A' :
       adelante();
       break;
     case 'a' :
       noadelante();
       break;
     case 'T' :
       atras();
       break;
     case 't' :
       noatras();
       break;
     case 'D' :
       derecha();
       break;
     case 'I' :
       izquierda();
       break;
     case 's' :
       noGiro();
       break;
     
   }
 }
 
}

// Ir adelante
void adelante()
{
 
 analogWrite(ENA, vel_der);
 analogWrite(ENB, vel_izq);
 digitalWrite(IN1,LOW);
 digitalWrite(IN2,HIGH);
 digitalWrite(IN3,LOW);
 digitalWrite(IN4,HIGH);
 sentido = 1;
}

// Parar adelante
void noadelante()
{

 analogWrite(ENA, vel_der);
 analogWrite(ENB, vel_izq);
 digitalWrite(IN1,LOW);
 digitalWrite(IN2,LOW);
 digitalWrite(IN3,LOW);
 digitalWrite(IN4,LOW);
 sentido =0;
}

// Ir atras
void atras()
{

 analogWrite(ENA, vel_der);
 analogWrite(ENB, vel_izq);
 digitalWrite(IN1,HIGH);
 digitalWrite(IN2,LOW);
 digitalWrite(IN3,HIGH);
 digitalWrite(IN4,LOW);
 sentido =-1;
}

// Parar adelante
void noatras()
{

 analogWrite(ENA, vel_der);
 analogWrite(ENB, vel_izq);
 digitalWrite(IN1,LOW);
 digitalWrite(IN2,LOW);
 digitalWrite(IN3,LOW);
 digitalWrite(IN4,LOW);
 sentido =0;
}

// Girar derecha
void derecha()
{
 vel_der = vel_der / 2;
 
 if(sentido == 1)
 {
   adelante();
 }  
 else if (sentido == -1)
 {
   atras();
 }
 
 vel_der=vel_der*2;
}

// Girar izquierda
void izquierda()
{
 vel_izq = vel_izq / 2;
 
 if(sentido == 1)
 {
   adelante();
 }  
 else if (sentido == -1)
 {
   atras();
 }
 
 vel_izq =vel_izq*2;
}

// Fin giro
void noGiro()
{
 if(sentido == 1)
 {
   adelante();
 }  
 else if (sentido == -1)
 {
   atras();
 }
}



carmeloco

Con tan solo la foto, no somos capaces de ver el problema. Pon el código del sketch al menos...

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy