Paso 4: código
Por favor respeten que tomó un tiempo para averiguar y escribir este código:
Código por Jason McLaughlin
2015
const int channel_a_enable = 6; arranque motor una barra
const int channel_a_input_1 = 4; positiva/negativa 1
const int channel_a_input_2 = 7; positivos o negativos 2
const int channel_b_enable = 5; Inicio/derecha motor b
const int channel_b_input_3 = 3; positiva/negativa 1
const int channel_b_input_4 = 2; positivos o negativos 2
const int RightSensor = A1; Leer el sensor derecho
const int LeftSensor = A2; Leer el sensor izquierdo
Definiciones de variables
int SensorLeft; Esto almacena el valor del pin Sensor izquierda para utilizar más tarde en el bosquejo
int SensorRight; Esto almacena el valor del pin Sensor derecho para utilizar más tarde en el bosquejo
int SensorDifference; Este valor se utiliza para determinar la diferencia entre la izquierda y derecha
void setup() {}
pinMode (channel_a_enable, salida); Canal A habilitar
pinMode (channel_a_input_1, salida); Entrada de canal 1
pinMode (channel_a_input_2, salida); Entrada de canal 2
pinMode (channel_b_enable, salida); Canal B permiten
pinMode (channel_b_input_3, salida); Entrada del canal B 3
pinMode (channel_b_input_4, salida); Entrada del canal B 4
pinMode (LeftSensor, entrada); Define este pin como entrada. El Arduino leerá los valores de este pin.
pinMode (RightSensor, entrada); Define este pin como entrada. El Arduino leerá los valores de este pin.
digitalWrite (A1, alto); Permite LDR
digitalWrite (A2, alto); Permite LDR
Serial.Begin(9600); Permite una conexión en serie con el Arduino al USB o UART (pines 0 y 1). Observe que es la velocidad en baudios de 9600
Serial.println ("\nBeginning la luz buscando comportamiento"); Colocado en el extremo del void Setup() modo que funciona una vez, justo antes del void Loop()}
void loop() {SensorLeft = 1023 - analogRead(LeftSensor); / / esto lee el valor del sensor, luego guarda el entero correspondiente.
Delay(1);
SensorRight = 1023 - analogRead(RightSensor); Esto lee el valor del sensor, luego guarda el entero correspondiente.
Delay(1);
SensorDifference = abs (SensorLeft - SensorRight); Esto calcula la diferencia entre los dos sensores y luego lo guarda en un entero.
Esta sección del bosquejo se utiliza para imprimir los valores de la / / sensores a través de la serie a la computadora. Útil para determinar / / si los sensores están trabajando y si el código también funciona correctamente.
Serial.Print ("Sensor izquierdo ="); Imprime el texto dentro de las comillas.
Serial.Print(SensorLeft); Imprime el valor del Sensor de la izquierda.
Serial.Print("\t"); Imprime una pestaña (espacio).
Serial.Print ("Sensor de la derecha ="); Imprime el texto dentro de las comillas.
Serial.Print(SensorRight); Imprime el valor del Sensor de la derecha.
Serial.Print("\t"); Imprime una pestaña (espacio).
Esta sección del bosquejo es lo que realmente interperets los datos y luego ejecuta en consecuencia los motores.
Si (SensorLeft > SensorRight & & SensorDifference > 75) {/ / esto se interpreta como si el sensor izquierdo Lee más luz que el Sensor de la derecha, hacer esto:
analogWrite (channel_a_enable, 255);
digitalWrite (channel_a_input_1, bajo);
digitalWrite (channel_a_input_2, HIGH);
analogWrite (channel_b_enable, 255);
digitalWrite (channel_b_input_3, HIGH);
digitalWrite (channel_b_input_4, bajo);
Serial.println("left"); Esto imprime izquierda cuando el robot realmente gire a la izquierda.
Delay(50);
}
Si (SensorLeft < SensorRight & & SensorDifference > 75) {/ / esto se interpreta como si el sensor izquierdo lee menos luz que el Sensor de la derecha, hacer esto:
analogWrite (channel_a_enable, 255);
digitalWrite (channel_a_input_1, HIGH);
digitalWrite (channel_a_input_2, bajo);
analogWrite (channel_b_enable, 255);
digitalWrite (channel_b_input_3, bajo);
digitalWrite (channel_b_input_4, HIGH);
Serial.println("Right"); Esto imprime derecho cuando el robot realmente gire a la derecha.
Delay(50);
}
else if (SensorDifference < 75) {/ / esto es interpretado como si la diferencia entre los dos sensores es bajo 125 (experimento para nuestros sensores), hacer esto:
analogWrite (channel_a_enable, 255);
digitalWrite (channel_a_input_1, HIGH);
digitalWrite (channel_a_input_2, bajo);
analogWrite (channel_b_enable, 255);
digitalWrite (channel_b_input_3, HIGH);
digitalWrite (channel_b_input_4, bajo);
Serial.println("forward"); Esto imprime hacia adelante cuando el robot realmente iría adelante.
Delay(50);
}
Serial.Print("\n");
}