Go Down

Topic: Ayuda robot arduino (Read 172 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