/*
 * *****************************************************************************************************
 * *    ESTE PROGRAMA NOS VA A ENSEÑAR COMO MANEJAR UN SERVO DESDE ARDUINO USANDO UNA                  *
 * *    BIBLIOTECA DEL IDE LLAMADA Servo.                                                              *
 * *                                                                                                   *
 * *    ¿QUE HACE?                                                                                     *
 * *    ESTE PROGRAMA MUEVE EL SERVO A LA POSICION 0º, ESPERA 3 seg. VA A LA POSICION 90º ESPERA       *
 * *    3 SEG Y VA A LA POSICION 180º                                                                  *
 * *                                                                                                   *
 * *    ¿QUE DEBEMOS SABER?                                                                            *
 * *        UN SERVO ES: Un dispositivo que puede ponerse en una posicion de 0 a 180º, esta posicion   *
 * *                     depende de la duracion de un pulso (entre 1ms y 2 ms) asi:                    *
 * *                      ____                          _______                                        *
 * *                     |    |                        |       |                                       *
 * *                    _|    |________________________|       |_______                                *
 * *                      Pulso                                                                        *
 * *                      de 1 ms(0º)                                                                  *
 * *                      a 2 ms (180º)                                                                *
 * *                     |--------------20 ms---------|                                                *
 * *            Como podemos ver, esto es muy complicado, asi que usamos una Funcion de la biblioteca, *          
 * *            que nos facilita el trabajo. esta función se llama Servo.h. Con esta función, solo     *
 * *            tendremos que llamarla y decirle a cuantos grados queremos poner el servo.             *
 * *                                                                                                   *
 * *    ¿COMO SE USA ESTA BIBLIOTECA?                                                                  *
 * *            1º Debemos incluir la biblioteca Servo con la orden #include.                          *
 * *                  #include <Servo.h>                                                               *
 * *            2º Tenemos que poner nombre al servo, ya que si tenemos varios Servos tendremos que    *
 * *               distinguirlos.                                                                      *
 * *                  Servo Nombre-del-Servo;                                                          *
 * *            3º Tenemos que decirle en que patilla vamos a poner el Servo,                          *
 * *                  Nombre-del-servo.attach(Pin);                                                    *
 * *            4º Ya podemos mover el servo con la orden                                              *
 * *                  Nombre-del-servo.write(Posicion del servo en º);                                 *
 * *            5º Las ordenes anteriores, son las básicas para hacer funcionar el Servo, y            *
 * *               prácticamente lo que vamos a utilizar, pero esta biblioteca, reconoce las           *
 * *               siguientes ordenes:                                                                 *
 * *                    attach (pin): conecta un servomotor a un pin de E / S.                         *
 * *          attach (pin, min, max): Se conecta a un pin estableciendo valores mínimos                *
 * *                                y máximos en microsegundos min predeterminado es 544, max es 2400  *
 * *                  write () : Establece el ángulo del servo en grados.                              *
 * *                             (El ángulo inválido que es válido como pulso en microsegundos se      *
 * *                             trata como microsegundos).                                            *
 * *      writeMicroseconds () : Establece el ancho del pulso del servo en microsegundos.              *
 * *                    read (): obtiene el último ancho de pulso del servo escrito como               *
 * *                              un ángulo entre 0 y 180.                                             *
 * *        readMicroseconds (): Obtiene el último ancho de pulso de servo escrito en microsegundos.   *
 * *                attached (): Devuelve verdadero si hay un servo conectado.                         *
 * *                  detach (): Detiene a los servos conectados para que no manden pulso              *
 * *    MONTAJE:                                                                                       *
 * *            El Servo trae 3 cables, uno positivo Rojo, otro negativo Negro y otro de otro color    *
 * *            que es la señal. En nuestro programa conectamos el servo a la patilla digital 9        *
 * *****************************************************************************************************
 */

#include <Servo.h> // Incluimos la libreria que controla el servo viene en el IDE (Punto 1)

Servo miServo; // Le ponemos nombre al servo que vamos a utilizar (Punto 2)

void setup() {
  
  miServo.attach(9); // patilla donde vamos a conectar el servo, en este caso el pin 9 (Punto 3)
}

void loop() {
  
  miServo.write(0); // Situamos el servo en la posición 0º (Punto 4)
  delay(3000);
  
  miServo.write(90); // Situamos el servo en la posición 90º (Punto 4)
  delay(3000);
  
  miServo.write(180); // Situamos el servo en la posición 180º (Punto 4)
  delay(3000);
  
}