Paso 7: Final código
* Programa para un Robot de búsqueda de luz simple.
* creado por: Anuj
* (c) copyright
*
* Base robótica debe incluir la unidad diferencial.
*
* Configuración físico:
* Dos LDRs conectados a tierra y el pin análogo 1(Right) y 2(left) pin analógico
* base de los transistores NPN en pins 11(right) y 12(left).
*
*
******************************************************************************************************************/
Usando Arduino Duemilinove
Definiciones del PIN - une una variable a un pin.
const int RightMotor = 2; Este pin se utiliza para activar o desactivar el motor adecuado. Conectado a la base de un transistor NPN.
const int LeftMotor = 3; Este pin se utiliza para activar o desactivar el motor izquierdo. Conectado a la base de un transistor NPN.
const int RightSensor = 1; Este pin se utiliza para leer el valor del Sensor de la derecha.
const int LeftSensor = 2; Este pin se utiliza para leer el valor del Sensor de la izquierda.
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
el método setup() se ejecuta una vez cuando se ejecuta el programa. Cuando el
Arduino se restablece, el setup() se ejecutará una vez más.
void setup() {}
pinMode (LeftMotor, salida); Define este pin como salida. El Arduino escriba valores a esta clavija.
pinMode (RightMotor, salida); Define este pin como salida. El Arduino escriba valores a esta clavija.
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 una resistencia pullup interna
digitalWrite (A2, alto); Permite una resistencia pullup interna
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()
}
el método loop() se ejecuta una y otra vez,
como el Arduino tiene poder
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:
digitalWrite (RightMotor, alto); Se utiliza para girar a la izquierda. Aviso de la
digitalWrite (LeftMotor, bajo); enfrente de funcionamientos del motor a girar a la izquierda.
Serial.println("left"); Esto imprime izquierda cuando el robot realmente gire a la izquierda.
}
Si (SensorLeft < SensorRight & & SensorDifference > 75) {/ / esto se interpreta como si el sensor izquierdo lee menos luz que el Sensor de la derecha, hacer esto:
digitalWrite (RightMotor, bajo); Se utiliza para girar a la derecha. Aviso de la
digitalWrite (LeftMotor, alto); enfrente de funcionamientos del motor a girar a la derecha.
Serial.println("Right"); Esto imprime derecho cuando el robot realmente gire a la derecha.
}
else if (SensorDifference < 75) {/ / esto es interpretado como si la diferencia entre los dos sensores es bajo 125 (experimento para nuestros sensores), hacer esto:
digitalWrite (RightMotor, alto); Se utiliza para ir directamente. Aviso
digitalWrite (LeftMotor, alto); ambos motores están habilitados para seguir adelante.
Serial.println("forward"); Esto imprime hacia adelante cuando el robot realmente iría adelante.
}
Serial.Print("\n");
}