/*PROGRAMA SERVO ANGULO Segun el dato enviado por entrada serie el servo gira en cierto angulo La orden (numero de 3 digitos puede llegar desde monitor serie o Bluetooth */ #include // incluye libreria de Servo Servo servo1; // crea objeto int PINSERVO = 2; // pin 2 conectado a señal del servo int PULSOMIN = 750; // pulso minimo en microsegundos int PULSOMAX = 2750; // pulso maximo en microsegundos int num; // variable para almacenar valor leido int ANGULO; // valor de angulo a cargar en el servo int trespservo =300;// tiempo de detencion en posicion del servor void setup() { Serial.begin(9600); servo1.attach(PINSERVO, PULSOMIN, PULSOMAX); // inicializacion de servo } void loop() { if(Serial.available()>=1) { //Delay para favorecer la lectura de caracteres delay(22); //Se crea una variable que servirá como buffer String bufferString = ""; /* * Se le indica a Arduino que mientras haya datos * disponibles para ser leídos en el puerto serie * se mantenga concatenando los caracteres en la * variable bufferString */ while (Serial.available()>0) { bufferString += (char)Serial.read(); } num = bufferString.toInt(); //Se carga lo leido en la variable entrada //Serial.println(num); //activar si se desea ver que llega analisisnum(); }// de Serial Available } //-----------Funcion girar servo------------------- void girarservo() { servo1.write(ANGULO); // envia al servo el valor del angulo delay(20); // demora para que el servo llegue a posicion } //------------------Funcion analisisnum-------------------- void analisisnum() { // Servo centro if (num==700)//servo centro { ANGULO =90; girarservo(); delay(trespservo); } if (num==750) //Servo derecha { ANGULO =60; girarservo(); delay(trespservo); } if (num==800) //Servo izquierda { ANGULO =120; girarservo(); delay(trespservo); } }//llave fina de funcion analisisnum--- //Fin funcion analisisnum---------------------------