2019/02/17

Arduino Robot v09 Tupperbot (V)

Código básico para  controlar el movimiento del robot desde el mando a distancia:

Código del transmisor (mando a distancia)
//Arduino Robot v09_04 2019/02/17
//Diseño y programación: Antonio Vallecillos, @a_vallecillos
//Código del transmisor (mando a distancia)

#include <VirtualWire.h>

boolean running = true;
char *controller;
int xPin = A5;
int yPin = A0;
int buttonPin = 2;

int xPosition = 0;
int yPosition = 0;
int buttonState = 1;

void setup(){
  Serial.begin(9600);
  pinMode(xPin, INPUT);
  pinMode(yPin, INPUT);
  pinMode(13, OUTPUT);

  vw_set_ptt_inverted(true); //
  vw_set_tx_pin(12); //Transmisor conectado al pin 12
  vw_setup(4000); //Velocidad de transmisión en bits por segundo
}

void loop(){
  xPosition = analogRead(xPin);
  yPosition = analogRead(yPin);
  buttonState = digitalRead(buttonPin);
  
  Serial.print("X: ");
  Serial.print(xPosition);
  Serial.print(" | Y: ");
  Serial.print(yPosition);
  Serial.print(" | Emitiendo: ");
  Serial.println(controller);
  
  if (xPosition <= 300 && 300 > yPosition <  700){
    controller="l";
    vw_send((uint8_t *)controller, strlen(controller));
    vw_wait_tx(); //Espera hasta que el mensaje completo ha salido
    digitalWrite(13,1);
  }else  if ( 300 > yPosition <  700 && xPosition >  700){
    controller="r";
    vw_send((uint8_t *)controller, strlen(controller));
    vw_wait_tx(); //Espera hasta que el mensaje completo ha salido
    digitalWrite(13,1);
  }else  if (300 > xPosition <  700 && yPosition <= 300){
    controller="u";
    vw_send((uint8_t *)controller, strlen(controller));
    vw_wait_tx(); //Espera hasta que el mensaje completo ha salido
    digitalWrite(13,1);
  }else   if (300 > xPosition <  700 && yPosition >  700){
    controller="d";
    vw_send((uint8_t *)controller, strlen(controller));
    vw_wait_tx(); //Espera hasta que el mensaje completo ha salido
    digitalWrite(13,1);
  }else if (300 > xPosition <  700 && 300 > yPosition <  700){
    controller="0";
    vw_send((uint8_t *)controller, strlen(controller));
    vw_wait_tx(); //Espera hasta que el mensaje completo ha salido
    digitalWrite(13,0);
  }
}

Código del receptor (vehículo)
//Arduino Robot v09_04 2019/02/17
//Diseño y programación: Antonio Vallecillos, @a_vallecillos
//Código del receptor (vehículo)

#include <VirtualWire.h>

void setup(){
  vw_set_ptt_inverted(true);
  vw_set_rx_pin(12); //Receptor conectado al pin 12
  vw_setup(4000); //Velocidad de recepción en bits por segundo
  pinMode(13,OUTPUT);

  pinMode(10, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  
  analogWrite(10, 0);
  analogWrite(11, 0);
  
  vw_rx_start(); //Inicia el receptor
}

void loop(){
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;
  
  if (vw_get_message(buf, &buflen)){
    if(buf[0]=='0'){
    digitalWrite(13,LOW);
    analogWrite(10,0);
    analogWrite(11,0);
    }
    if(buf[0]=='l'){
    digitalWrite(13,HIGH);
    analogWrite(10,255);
    digitalWrite(4,HIGH);
    digitalWrite(5,LOW);
    analogWrite(11,255);
    digitalWrite(6,HIGH);
    digitalWrite(7,LOW);
    }
    if(buf[0]=='r'){
    digitalWrite(13,HIGH);
    analogWrite(10,255);
    digitalWrite(4,LOW);
    digitalWrite(5,HIGH);
    analogWrite(11,255);
    digitalWrite(6,LOW);
    digitalWrite(7,HIGH);
    }
    if(buf[0]=='u'){
    digitalWrite(13,HIGH);
    analogWrite(10,255);
    digitalWrite(4,HIGH);
    digitalWrite(5,LOW);
    analogWrite(11,255);
    digitalWrite(6,LOW);
    digitalWrite(7,HIGH);
    }
    if(buf[0]=='d'){
    digitalWrite(13,HIGH);
    analogWrite(10,255);
    digitalWrite(4,LOW);
    digitalWrite(5,HIGH);
    analogWrite(11,255);
    digitalWrite(6,HIGH);
    digitalWrite(7,LOW);
    }
  }
}

Abrazadera para cable

Abrazadera para cables dibujada con FreeCAD e impresa en ABS blanco.





Cuando imprimimos piezas que van a tener una función estructural es muy importante tener en cuenta en qué sentido debemos colocarlas en la cama para que alcancen la máxima resistencia. En este caso, la pieza de la izquierda ha sido impresa en el sentido en que está colacada en la foto, pero la de la derecha se imprimió tumbada en la cama, mejorando la resistencia.

2019/02/15

Arduino Robot v09 Tupperbot (IV)

Seguimos con la serie de tutoriales dedicados a la versión nueve del robot Arduino. Esta entrada la vamos a dedicar a la lista de materiales y herramientas que necesitaremos para construir el robot.

LISTA DE MATERIALES:

HERRAMIENTAS:
  • TALADRO + BROCA DE 3MM 
  • CUTTER 
  • ALICATES DE PUNTA FINA 
  • CORTACABLES 
  • SOLDADOR + ESTAÑO 
  • DESTORNILLADOR PLANO 
  • DESTORNILLADOR DE CRUZ 
  • LIMAS 
  • CINTA AISLATE