Un proyecto sencillo. Un robot para de trasportar algunas cosas. Parece una tonteria, pero si alguien tiene movilidad reducida puede ser una pequeña ayuda
Controlado con teléfono Android a través de Bluetooth. Comandos por botones en pantalla o por medio del acelerómetro del teléfono.
Lleva una cámara IP wifi que a través del modem de la vivienda, nos permite ver por donde anda el "bicho".
Todo puede verse en las fotografias.
-Dos motores de CC instalados en tabla de cocina.

-Control de motores con circuito basado en L298N.

-Arduino mini con módulo Bluetooth.

-Cámara IP Wifi Edimax (opcional)

-Bateria Lipo 2S de 1500mA. 
 

Robot camarero

//RobotCamarero
//www.jopapa.me
//2015

int d1A=2; //IN1
int d2A=3; //IN2
int speedA=9; //ENA
int d1B=4; //IN3
int d2B=5; //IN4
int speedB=10; //ENB
int speed;
int f=0;     //para aumentar fuerza en giros al ir cargado


void setup(){
  Serial.begin(9600);
  pinMode(d1A, OUTPUT); pinMode(d2A, OUTPUT); pinMode(speedA, OUTPUT);
  pinMode(d1B, OUTPUT); pinMode(d2B, OUTPUT); pinMode(speedB, OUTPUT); 
  speed=0;
  pinMode(6, OUTPUT); //activación del pin 6 como salida: para el pulso ultrasónico
  pinMode(7, INPUT); //activación del pin 7 como entrada: tiempo del rebote
}

void loop(){
  char dato= Serial.read();
//  if (Serial.available()>0){input=Serial.read();}

  if (dato == 'v') {                         //+ potencia (util en giros si el robot va cargado)
   if (f<240){ f=f+10;} }
  if (dato == 'b') {                        // - potencia
   if (f>=10){f=f-10;}  }
  
//-------------------------------------------------
  if (dato == 'p') {                         //PARAR
    digitalWrite(d1A,LOW);digitalWrite(d2A,LOW);
    digitalWrite(d1B,LOW);digitalWrite(d2B,LOW);
  }
 
//----------------------------------- 
  if (dato == '1') {                         //Adelante vel. baja
   digitalWrite(d1A,HIGH);digitalWrite(d2A,LOW);
   digitalWrite(d1B,HIGH);digitalWrite(d2B,LOW);
   analogWrite(speedA, 60); analogWrite(speedB, 60);  
  }
  if (dato == '2') {                         //Adelante vel. media
   digitalWrite(d1A,HIGH);digitalWrite(d2A,LOW);
   digitalWrite(d1B,HIGH);digitalWrite(d2B,LOW);
   analogWrite(speedA, 160); analogWrite(speedB, 100);  
  }  
  if (dato == '3') {                         //Adelante vel. alta
   digitalWrite(d1A,HIGH);digitalWrite(d2A,LOW);
   digitalWrite(d1B,HIGH);digitalWrite(d2B,LOW);
   analogWrite(speedA, 240); analogWrite(speedB, 200);  
  }  
//----------------------------------- 
  if (dato == 'r') {                         //Retrocede vel. baja
   digitalWrite(d1A,LOW);digitalWrite(d2A,HIGH);
   digitalWrite(d1B,LOW);digitalWrite(d2B,HIGH);
   analogWrite(speedA, 60); analogWrite(speedB, 60);  
  }  
//--------------------------------------------- 
  if (dato == 'j') {                         //Derecha giro lento
   digitalWrite(d1A,HIGH);digitalWrite(d2A,LOW);
   digitalWrite(d1B,HIGH);digitalWrite(d2B,LOW);
   analogWrite(speedA, 90+(f/2)); analogWrite(speedB, 50);  
  }  
  if (dato == 'k') {                         //Derecha giro rapido
   digitalWrite(d1A,HIGH);digitalWrite(d2A,LOW);
   digitalWrite(d1B,HIGH);digitalWrite(d2B,LOW);
   analogWrite(speedA, 100+(f/2)); analogWrite(speedB, 40);  
  }
  if (dato == 'l') {                         //Derecha giro muy rapido
   digitalWrite(d1A,HIGH);digitalWrite(d2A,LOW);
   digitalWrite(d1B,LOW);digitalWrite(d2B,HIGH);
   analogWrite(speedA, 70+f); analogWrite(speedB, 40);  
  }

//--------------------------------------------- 
  if (dato == 'a') {                         //Izquierdo giro lento
   digitalWrite(d1A,HIGH);digitalWrite(d2A,LOW);
   digitalWrite(d1B,HIGH);digitalWrite(d2B,LOW);
   analogWrite(speedA, 50); analogWrite(speedB, 90+(f/2));  
  }  
  if (dato == 's') {                         //Izquierdo giro rapido
   digitalWrite(d1A,HIGH);digitalWrite(d2A,LOW);
   digitalWrite(d1B,HIGH);digitalWrite(d2B,LOW);
   analogWrite(speedA, 40); analogWrite(speedB, 100+(f/2));  
  }
  if (dato == 'd') {                         //Izquierdo giro muy rapido
   digitalWrite(d1A,LOW);digitalWrite(d2A,HIGH);
   digitalWrite(d1B,HIGH);digitalWrite(d2B,LOW);
   analogWrite(speedA, 40); analogWrite(speedB, 70+f);  
  }
}




 

Menu