lunes, 26 de noviembre de 2018

BRAZO ROBOTICO - PARTE Nº 4: PROGRAMACION

La programación de la placa Arduino que gobierna el brazo robótico es bastante sencilla.



Se compone de:



1.- Una librería de comunicación SoftwareSerial.h Utilizamos habitualmente esta librería para dejar libres los pines 0 y 1 para la comunicación "serial".



2.- Una rutina que analiza la señal recibida por Bluetooth. Discrimina que la señal sea mas grande que de un dígito, y si es cierta, la descompone para mover los diferentes servos. Por ejemplo: desde el Smartophone, utilizando cualquiera de las dos app que hemos desarrollado (KuriArm1 y KuriArm2), se envía la orden de mover la base del brazo a la posición de 45 grados, realmente la orden que se envía es el número 1045, este número lo recibe la placa Arduino a través del Bluetooth, el programa descompone el número y mueve el servo nº 1 a la posición de 45º.   



PROGRAMA 

/*KURIARM
 * Control de un brazo robotico de 4 ejes
 * Controlado mediante la aplicación creada con AppInventor: KuriArm1 y KuriArm2
 */


#include <SoftwareSerial.h>

#include <Servo.h> 
Servo myservo1, myservo2, myservo3, myservo4;

int bluetoothTx = 10;
int bluetoothRx = 11;

SoftwareSerial bluetooth(bluetoothTx, bluetoothRx);

void setup()
{
  myservo1.attach(3);
  myservo2.attach(5);
  myservo3.attach(6);
  myservo4.attach(9);

  //Se ponen los servos en posición de reposo o neutra
  myservo1.write(90);
  myservo2.write(90);
  myservo3.write(90);
  myservo4.write(90);

  //Configura la conexión serial usb con el ordenador
  Serial.begin(9600);

  //Configurar la conexión serie de Bluetooth con Android
  bluetooth.begin(9600);
}

void loop()
{
  //Recepcion de la orden por Bluetooth
  if(bluetooth.available()>= 2 )
  {
    unsigned int servopos = bluetooth.read();
    unsigned int servopos1 = bluetooth.read();
    unsigned int realservo = (servopos1 *256) + servopos; 
    Serial.println(realservo); 
    
    if (realservo >= 1000 && realservo <1180){
    int servo1 = realservo;
    servo1 = map(servo1, 1000,1180,0,180);
    myservo1.write(servo1);
    Serial.println("servo 1 ON");
    delay(10);

    }
    
    if (realservo >=2000 && realservo <2180){
      int servo2 = realservo;
      servo2 = map(servo2,2000,2180,0,180);
      myservo2.write(servo2);
      Serial.println("servo 2 On");
      delay(10);
      
    }
    
    if (realservo >=3000 && realservo < 3180){
      int servo3 = realservo;
      servo3 = map(servo3, 3000, 3180,0,180);
      myservo3.write(servo3);
      Serial.println("servo 3 On");
      delay(10);
    }
    if (realservo >=4000 && realservo < 4180){
      int servo4 = realservo;
      servo4 = map(servo4, 4000, 4180,0,180);
      myservo4.write(servo4);
      Serial.println("servo 4 On");
      delay(10);
    }
    
  }

}



Descarga la aplicación para el control
del brazo robótico
AQUI

¿Te ha gustado este tutorial?
Colabora con nosotros y haz una donación: