
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:
- Hoja de datos sensor QRE1113
- Vídeo para saber como graficar los datos leídos por el sensor siguelineas QRE1113
Conexión módulo 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 Arduino | Pines del Módulo de sensores |
5v | Vcc |
GND | GND |
A0 | A0 |
A1 | A1 |
A2 | A2 |
A3 | A3 |
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]