Sensor de infrarrojos CNY70 como entrada digital

cny70El dispositivo CNY70 es un sensor óptico infrarrojo, de un rango de corto alcance (menos de 5 cm) que se utiliza para detectar colores de objetos y superficies. Su uso más común es para construir pequeños robots siguelíneas. Contiene un emisor de radiación infrarroja -fotodiodo- y un receptor -fototransistor-. El fotodiodo emite un haz de radiación infrarroja, el fototransistor recibe ese haz de luz cuando se refleja sobre alguna superficie u objeto.

Dependiendo de la cantidad de luz recibida por el fototransistor el dispositivo envía una señal de retorno a Arduino.

El sensor CNY70 Puede utilizarse como entrada digital o analógica. En este ejemplo se ha utilizado como entrada digital para distinguir dos colores: blanco o negro. Cando el sensor está orientado hacia una superficie u objeto de color negro éste absorbe gran parte de la luz emitida  por el diodo. Entonces el sensor enviará un valor alto (HIGH – 1) a Arduino. A su vez cuando el sensor se sitúa sobre una superficie u objeto de color blanco gran parte de la luz emitida por el diodo será reflejada al fototransistor. Entonces, el sensor enviará un valor alto (LOW- 0) a Arduino. El CNY70 tiene cuatro terminales.

Para distinguir los terminales a fin de poder hacer el conexionado correctamente, tienes que colocar el sensor con la parte del fotodiodo y del fototransistor hacia arriba y los terminales hacia abajo. Además, la cara del sensor que está serigrafiada con el nombre del dispositivo ha de estar situada en tu derecha, tal y como se muestra en la siguiente imagen. CNY70interno Una vez identificados los terminales hay que realizar el conexionado a la protoboard y a Arduino. Este esquema te servirá para hacer correctamente las conexiones. El pin de Arduino que se ha usado en este programa ejemplo es el 4. Puedes conectarlo a cualquier otro pin digital. esquema_electrico_cny70 Descargar el programa de ejemplo y esquema eléctrico del sensor de infrarrojos CNY70. En los comentarios del programa encontrarás más detalles.

/* Programa que utiliza el sensor infrarrojos CNY70 como entrada digital para encender o apagar dos LEDs

El CNY70 está cableado para que al estar sobre negro lea un '1'; y si está sobre blanco lea un '0'

Se puede encontrar el cableado del CNY70 en el documento que hay en el archivo descomprimido

Si el sensor de infrarrojos está sobre negro, la entrada digital 8 tendrá el valor '1': un LED se encenderá y 
la entrada digital 9 tendrá el valor '0': el otro LED se apagará 
Si el sensor de infrarrojos está sobre blanco, la entrada digital 8 tendrá el valor '0', un LED se apagará
y la entrada digital 9 tendrá el valor '1': el otro LED se encenderá 

Basado en un programa encontrado en http://wiki.medialab-prado.es/ 

Por Julio Megía, http://www.tecnosefarad.com liberado para la comunidad 

This example code is in the public domain*/

int ledPin1 = 8;     // pin de un LED 
int ledPin2 = 9;     // pin de otro LED
int infraPin = 4;    // pin del infrarrojos utilizado como entrada digital
int valorInfra = 0;  // Valor inicial de la lectura digital del infrarrojos. 

void setup() { 
  pinMode(ledPin1, OUTPUT);     // Inicializa el pin del LED1 como salida digital
  pinMode(ledPin2, OUTPUT);     // Inicializa el pin del LED2 como salida digital
  pinMode(infraPin, INPUT);     // Inicializa el pin 4 como entrada digital
} 


void loop() { 
  valorInfra = digitalRead(infraPin);    // Lee el valor de la entrada 4, esto es, el valor que lee el infrarrojo
  digitalWrite(ledPin1, valorInfra);     /* Escribe en el pin 8 el valor que lee la entrada 4, esto es, el mismo valor que lee el infrarrojo
                                         Si el infrarrojo lee 0, entonces, el LED estará apagado
                                         Si el infrarrojo lee 1, entonces, el LED estará encendido */ 
  valorInfra = !valorInfra;              // Se asigna a valorInfra el valorInfra negado. Si valorInfra es 1, el nuevo valorInfra será 0; y viceversa
  digitalWrite(ledPin2, valorInfra);     /* Escribe en el pin 9 el valor negado que lee la entrada 4, esto es, el negado del valor que lee el infrarrojo
                                         Si el infrarrojo lee 0, entonces, el LED conectado al pin 9 estará encendido
                                         Si el infrarrojo lee 1, entonces, el LED conectado al pin 9 estará apagado */ 
}