viernes, 1 de abril de 2016

Programa Ejemplo para control de 4 Servos por Comunicación Serial

#include <Servo.h>

String trama = "";
String aux = "";
int procesar = 0;
int vs1 = 1500;
int vs2 = 1500;
int vs3 = 1500;
int vs4 = 1500;

int pins1 = 9;
int pins2 = 10;
int pins3 = 11;
int pins4 = 12;

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;

void setup() {
  servo1.attach(pins1);
  servo2.attach(pins2);
  servo3.attach(pins3);
  servo4.attach(pins4);

  Serial.begin(9600);
  Serial.println("Control del Brazo Robot");
}

void loop() {
  if (Serial.available() > 0) {       //recolecta los datos del puerto serial
    char dato=Serial.read();
    if(((dato >= '0')&&(dato <= '9')) || (dato == '<') || (dato == '>')){
        trama = String(trama + dato);
    }
    if (dato == '>'){                 //reconoce si es el fin de trama
      procesar = 1;
      Serial.print("Trama Total: ");  // se envia la trama complet para visualizarla
      Serial.println(trama);
    }
  }
  if (procesar == 1){
    aux = trama.substring(1,5);
    Serial.print("SubTrama 1: ");     //se envia el valor del primer servo
    vs1 = aux.toInt();
    Serial.println(vs1);
    aux = trama.substring(5,9);
    Serial.print("SubTrama 2: ");     //se envia el valor del segundo servo
    vs2 = aux.toInt();
    Serial.println(vs2);
    aux = trama.substring(9,13);
    Serial.print("SubTrama 3: ");     //se envia el valor del tercer servo
    vs3 = aux.toInt();
    Serial.println(vs3);
    aux = trama.substring(13,17);
    Serial.print("SubTrama 4: ");     //se envia el valor del cuarto servo
    vs4 = aux.toInt();
    Serial.println(vs4);
    procesar = 0;
    trama = "";
  }
  servo1.writeMicroseconds(vs1);
  delay(15);
  servo2.writeMicroseconds(vs2);
  delay(15);
  servo3.writeMicroseconds(vs3);
  delay(15);
  servo4.writeMicroseconds(vs4);
  delay(15);
}

No hay comentarios.:

Publicar un comentario