Paso 10: Electrónica - parte 2: código de Arduino
El sketch de Arduino genera movimiento al azar que el servo gire para diversas longitudes del tiempo. El bosquejo es interminable; se ejecutará hasta que la energía está apagada para Arduino.
#include < servo .h > Servo myservo; crear objeto servo para controlar un servo void setup) pinMode (led1, salida); PIN suministra corriente para LED 1 pinMode (topButton, entrada); escuchar la señal del botón de Si (contador > 90)
int led1 = 4; asignar a pin 4
int led2 = 5; asignar a pin 5
led3 int = 6; asignar a pin 6
int pos = 95; velocidad inicial y la dirección cuando Arduino
int contador = 0;
pausa de int = 100; intervalo de la pausa inicial, en milisegundos
stoptime int = 100;
int randpause = 100;
int randspeed = 100;
int bbuttonState = 0;
int tbuttonState = 0;
int Hola;
int lo;
const int bottomButton = 2;
const int topButton = 1;
{
myservo. Instale (3); asignar el cable de control del servo a la clavija 3
pinMode (led2, salida); PIN suministra alimentación al LED 2
pinMode (led3, salida); PIN suministra energía a LED 3
pinMode (bottomButton, entrada); escuchar la señal del botón de
}
void loop)
{/ / bucle principal de ejecucion
myservo. escribir (pos); conjunto servo velocidad/dirección del valor de la variable pos
tbuttonState = digitalRead (topButton); leer el estado del botón superior
bbuttonState = digitalRead (bottomButton); leer el estado del botón inferior
Si (bbuttonState == HIGH) / / si se presiona el botón superior
{newParameters (85, 93);} calcular una velocidad en otra dirección
Si (tbuttonState == HIGH) / / Si presiona boton de abajo
{newParameters (96, 103);} calcular una velocidad en otra dirección
contador += 10; valor del temporizador de incremento por 10
Si (contador > = stoptime) //if ejecutar tiempo límite se alcanza,
{
myservo. escribir (95); parada de servo
newParameters (80, 105); calcular los nuevos parámetros
retardo (randpause); pausa por un tiempo al azar
}
Delay (100); pausa para 100 milisegundos
Si (pos < 97)
{digitalWrite (led2, HIGH);} encender led2
otra cosa
{digitalWrite (led2, LOW);} Apagar led2
Si (randpause > 2000)
{digitalWrite (LED 3, alto);}
Else {digitalWrite (LED 3, LOW);}
{digitalWrite (LED 1, HIGH);}
Else {digitalWrite (LED 1, LOW);}
} / / fin de bucle principal
void newParameters (int Hola, int lo) / / función para calcular la nueva velocidad/dirección, tiempo y pausa
{
pos = random (hi, lo); generar nueva velocidad/dirección, dentro de Hola y lo límites
randpause = random (1000, 5000); genera una pausa al azar entre 1 y 5 segundos
pausa = 100;
Contador = 0; Ajuste el temporizador a cero
stoptime = random (50, 200); generar al azar tiempo ejecutar servo
}