Siguelineas QRE1113 4 canales

arduino mega - siguelineas
siguelineas y arduino

 

Sensor Siguelineas QRE1113 4 canales 

El módulo de sensores Siguelineas QRE1113 4 canales, es una buena opción para  la construcción de un vehículo  seguidor de líneas con cualquier tarjeta de desarrollo o microcontrolador con entrada ADC.

Este módulo  cuenta con cuatro canales con sensor / emisor de las mismas características, por lo que es ideal, no solo para construir un vehículo sigue-líneas si no también se puede utilizar para una gran cantidad de aplicaciones que requieran monitoreo de paso, o presencia. Otro ejemplo sería contabilizar el producto de una línea de producción, detectar cualquier objeto en cercania para activar alguna otra  función de un sistema e incluso se podría adjuntar otros ejemplos para  diseñar un sistema completo donde se utilice los 4 canales. En resumen tu creatividad es el límite para utilizar este módulo de sensores.

Material a utilizar:

Enlaces de interés: 

Conexión módulo siguelineas:

siguelineas with arduino
siguelineas

En la imagen se muestra  como realizar la conexión de Arduino, en este caso un MEGA, a nuestro módulo de sensores Siguelineas. En el caso de otro modelo de Arduino usar de igual manera los canales A0 a A3. En la sección de entradas analógicas (“Analog in”)  que corresponde al Arduino se localizan nuestros cuatro pines que estaremos utilizando que son A0 al A3, así como también los pines que alimentan nuestro modulo que son 5v y GND.

Pines del ArduinoPines del Módulo de sensores
5vVcc
GNDGND
A0A0
A1A1
A2A2
A3A3

Explicación del código:

El primer paso, es declarar las variables donde se  guardaran los datos de  la lectura, así como también se asignaran en el Arduino los pines que se utilizaran para hacer esta lectura de datos, (recordemos que el modulo cuenta con 4 sensores siguelineas QRE1113), por lo que es necesario utilizar cuatro pines de la tarjeta que serán del pin A0 al A3 de la sección “Analog in”. Así como también se declarara la variable para guardar los datos de entrada. En el setup se configura el serial a 9600 baudios pero se puede  cambiar al valor que se requiera.

La función establishContact()  funciona para  enviar un byte que  establece un contacto con el  receptor. Es de seguridad, puede omitirse.

[code language=»cpp»]
int Analogue0 = 0;
int Analogue1 = 0;
int Analogue2 = 0;
int Analogue3 = 0;
int inByte = 0;
void setup()
{
Serial.begin(9600);
establishContact();
}

[/code]

 

Cuando los datos son guardados en las  variables declaradas anteriormente, procederemos a realizar la transformación de los datos obtenidos. Ya sea para  re-direccionarlos a otra variable o visualizarlos.

[code language=»cpp»]
if (Serial.available() > 0) {
inByte = Serial.read();
Analogue0 = analogRead(0)/4;
delay(10);
Analogue1 = analogRead(1)/4;
 delay(10);
Analogue2 = analogRead(2)/4;
delay(10);
Analogue3 = analogRead(3)/4;
delay(10);

[/code]

Por último enviamos los datos por el puerto serial de cada uno de los siguelineas QRE1113, para esto se utiliza la función write que es mucho más eficiente y precisa en cuestiones de envió de información , esto para obtener una mayor resolución de los datos.

[code language=»cpp»]
Serial.write(Analogue0 );
Serial.write(Analogue1 );
Serial.write(Analogue2 );
Serial.write(Analogue3 );
[/code]

Al final solo se revisa si el serial continuo   recibiendo datos, de no hacerlo escribir un valor predeterminado por el usuario en este caso “A” para finalizar el programa.

[code language=»cpp»]
while (Serial.available() <= 0) {
Serial.write(‘A’);
delay(300);
[/code]

 

Código completo:

[code language=»cpp»]

int Analogue0 = 0;
int Analogue1 = 0;
int Analogue2 = 0;
int Analogue3 = 0;
int inByte = 0;</p>
void setup()
{
Serial.begin(9600);
establishContact();
}

void loop()
{
if (Serial.available() > 0) {
inByte = Serial.read();
Analogue0 = analogRead(0)/4;
delay(10);
Analogue1 = analogRead(1)/4;
delay(10);
Analogue2 = analogRead(2)/4;
delay(10);
Analogue3 = analogRead(3)/4;
delay(10);
Serial.write(Analogue0 );
Serial.write(Analogue1 );
Serial.write(Analogue2 );
Serial.write(Analogue3 );
}
}
void establishContact() {
while (Serial.available() <= 0) {
Serial.write(‘A’);
delay(300);
}
}

[/code]


Deja una respuesta

Tu dirección de correo electrónico no será publicada.