Paso 11: Electrónica parte 3: flujo de la lógica y el control de componentes
CONTROL DE SERVO
Esto utiliza un servo de rotación continua común, conectado a Arduino en la siguiente configuración.
** Nota: El cable de control (generalmente amarillo o marrón) se puede conectar a cualquier Pin Digital, en esta situación que está conectado al Pin Digital 3.
Los interruptores de límite superior e inferior están conectados en esta configuración.
La línea "#include < servo.h >" importa la biblioteca de servo. Servos de rotación continua están conectados a Arduino en la misma configuración que los servos estándar, pero el código de control es ligeramente diferente. Servos estándar son controlados mediante el suministro de una posición absoluta (por ejemplo "posición = 124"), pero los servos de rotación continua interpretan los valores de posición como la velocidad y dirección. El servo de CR fue calibrado para interpretar 95 como paro, con 0 como máxima velocidad hacia la derecha y 180 como máxima velocidad en sentido antihorario. En realidad, cualquier valor mayor que 10 de paro en cualquier dirección es velocidad completa (es decir, valores de menos de 80 y más de 100 generalmente no aumentan la velocidad del servo en cada dirección).
En este bosquejo, se generan valores aleatorios para la velocidad y dirección en el rango de 80-105. Esto se logra en la función "newParameters" (después del bucle principal).
MOVIMIENTO ALEATORIO
Además de generar una velocidad aleatoria y la dirección, el código generará también un intervalo al azar en
velocidad/dirección.
Los rangos de estos valores generados al azar son:
Velocidad/dirección: 80-105
Pausa: 1000 – 5000ms
Tiempo de ejecución:.5 - 2.0 segundos, efectivamente
USANDO BUCLES DE CÓDIGO COMO UN CONTADOR DE TIEMPO
Código de Arduino ("bosquejos") se basan en bucle continuamente las instrucciones (el "void loop()"). En realidad, el Arduino se ejecutará a través del lazo casi instantáneamente, por lo tanto, un comando de "retraso" 100 milisegundos fue agregado al final del código del bucle. Esto limitará efectivamente el código de bucle aproximadamente 10 veces por segundo. Incrementando el valor de "timer" en cada paso a través del lazo, tiempo de ejecución puede ser rastreado. Con un valor de incremento de 10 y un límite de 50, el código será lazo durante aproximadamente medio segundo. Cuando se alcanza el valor de tiempo máximo, la velocidad se establece en "dead stop" y se inicia un temporizador de pausa. El tiempo de pausa es otro valor generado al azar.
INTERRUPTORES DE LÍMITE
Los interruptores están conectados a Digital Pins 1 y 2. Cuando se pone en contacto ya sea de carrera, el valor de la velocidad/dirección se establece inmediatamente en "dead stop". Luego se calcula un nuevo conjunto de valores de pausa, tiempo de ejecución y velocidad/dirección, pero el margen de velocidad/dirección se limita a movimiento en sentido contrario .
LED
Los LEDs fueron cableados basado en esta configuración. Cableado LED es muerto simple, que el truco está controlando el poder en el bosquejo basado en un evento separado, como un temporizador o un interruptor.
Los LEDs están integrados en la esfera y son accionados por los valores generados para la posición de velocidad, pausa y tiempo de ejecución.
Este código cortada se encenderá un LED si el valor de randpause es > 2000, otro se queda apagado.
Si (randpause > 2000)
{digitalWrite (LED 3, alto);}
Else {digitalWrite (LED 3, LOW);}