Paso 5: Código de Arduino.
Cómo funciona el código es al principio del bucle comprobamos el valor del sensor y entonces decidir si tenemos que seguir adelante, o gire. va a requerir alguna prueba sobre los valores reales para decidir si es una protuberancia o claro. Además, verifique en la documentación para el escudo del motor, en cuanto a que los pernos se asignan para el pin de control de motor y pwm pins. PWM determina qué tensión debe ser alimentado a sus motores y sistemas de control si el motor debe ser alta, o baja. Y, respectivamente.
Estoy utilizando el código siguiente. modificar M1, M2, E1, E2, según las asignaciones de pines para su escudo y sensor_max, sensor_min según su valor de sensor de IR cuando hay una obstrucción. también, según el método, forward_motors(), allí es una línea de digitalWrite(M1,LOW); y digitalWrite(M2,LOW); .. .modify baja a alta, si los motores están girando hacia atrás. hacer lo contrario para el método reverse_motors().
/ * secuencia:
retardo de giro aleatorio, al azar inversa retraso aleatorio
1 en el primer arranque, hacer una lectura secuencia, 10times de la vuelta y comprobar promedio.
2 ejecutar adelante en 50counts, luego reiniciar.
*/
int in1 = A4; entrada de pin
int led1 = 12; parpadeo de led-
int resetpin = 12;
int M1 = 7;
int M2 = 4;
int E1 = 6; motor izquierda
int E2 = 5; motor adecuado
fspd int = 255; ralentizado la velocidad de avance
int mspd = 255; velocidad normal del motor
int ddelay = 0;
int icount = 0;
int count_limit = 35;
min_delay int = 250;
int max_spin_delay = 550;
int max_rev_delay = 500;
int sensor_max = 60;
int sensor_min = 69;
int sensor_min = 20;
int sensor_val = 0;
void setup()
{
pinMode (M1, salida);
pinMode (M2, salida);
pinMode (A1, entrada);
Serial.Begin(4800);
}
secuencia de bucle void loop() //main
{
run_motor_seq2();
Serial.println("Count:");
Serial.println(icount);
Serial.println ("valor del sensor:");
Serial.println(sensor_val);
}
void run_motor_seq2()
{
ddelay = 0;
sensor_val = 0;
sensor_val = analogRead(A1);
Si (sensor_val > sensor_min)
{
run_bump_seq();
icount = 0;
count_limit = rand(35,50);
}
otra cosa
{
Si (icount > 50)
{
run_bump_seq();
icount = 0;
count_limit = rand(35,50);
}
otra cosa
{
forward_motors();
}
}
icount ++;
}
void run_bump_seq()
{
¿motor de la desaceleración? ¿o parar el motor?
brake_motors();
blink_fast();
reverse_motors();
ddelay = rand(min_delay,max_rev_delay);
Delay(ddelay);
brake_motors();
Delay(min_delay);
turn_motor();
ddelay = rand(min_delay,max_spin_delay);
Delay(ddelay);
brake_motors();
Delay(max_rev_delay);
blink_fast();
}
---motor métodos
void forward_motors()
{
digitalWrite(M1,LOW); ALTA
digitalWrite(M2,LOW);
analogWrite(E1,fspd); Control de velocidad PWM
analogWrite(E2,fspd); Control de velocidad PWM
}
void brake_motors()
{
analogWrite(E1,0);
analogWrite(E2,0);
}
void reverse_motors()
{
digitalWrite(M1,HIGH); BAJO
digitalWrite(M2,HIGH);
analogWrite(E1,mspd); Control de velocidad PWM
analogWrite(E2,mspd); Control de velocidad PWM
}
¿void turn_motor() //turn derecho?
{
digitalWrite(M1,HIGH);
digitalWrite(M2,HIGH);
analogWrite(E1,0); Control de velocidad PWM
analogWrite(E2,fspd); Control de velocidad PWM
}
---parpadean métodos
void blink_fast()
{
digitalWrite(led1,HIGH);
Delay(100);
digitalWrite(led1,LOW);
Delay(100);
digitalWrite(led1,HIGH);
Delay(100);
digitalWrite(led1,LOW);
}
void blink_slow()
{
digitalWrite(led1,HIGH);
Delay(500);
digitalWrite(led1,LOW);
Delay(100);
digitalWrite(led1,HIGH);
Delay(500);
digitalWrite(led1,LOW);
}
---métodos auxiliares;
valores de //random int rand (int mini, maxi int)
{
randval int = random(mini,maxi);
volver randval;
}
el ide de arduino tiene una ingeniosa característica que puede controlar los valores que desea mostrar,
simplemente conecte el cable usb en el arduino y el pc, en el arduino, haga clic en
Herramientas > serial monitor. y obtendrá todos los valores que arrojó hacia fuera con las líneas Println()
el código anterior.