Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
entrada digital
El
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 ms comn es para construir pequeos
robots siguelneas.
Contiene un emisor de radiacin infrarroja -fotodiodo- y un receptor
-fototransistor-. El fotodiodo emite un haz de radiacin infrarroja, el
fototransistor recibe ese haz de luz cuando se refleja sobre alguna
superficie u objeto. El sensor enva una seal de retorno a Arduino,
cuyo valor depender de la cantidad de luz reflejada.
El CNY70 puede utilizarse como entrada digital o analgica. 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 sita sobre una superficie u objeto
/*ProgramaqueutilizaelsensorinfrarrojosCNY70comoentrada
digitalparaencenderoapagardosLEDs
ElCNY70estcableadoparaquealestarsobrenegroleaun'1';ysi
estsobreblancoleaun'0'
SepuedeencontrarelcableadodelCNY70eneldocumentoquehayenel
archivodescomprimido
Sielsensordeinfrarrojosestsobrenegro,laentradadigital8
tendrelvalor'1':unLEDseencendery
laentradadigital9tendrelvalor'0':elotroLEDseapagar
Sielsensordeinfrarrojosestsobreblanco,laentradadigital8
tendrelvalor'0',unLEDseapagar
ylaentradadigital9tendrelvalor'1':elotroLEDseencender
Basadoenunprogramaencontradoenhttp://wiki.medialabprado.es/
PorJulioMega,http://www.tecnosefarad.comliberadoparala
comunidad
Thisexamplecodeisinthepublicdomain*/
int ledPin1=8;//pindeunLED
int ledPin2=9;//pindeotroLED
int infraPin=4;//pindelinfrarrojosutilizadocomoentrada
digital
int valorInfra=0;//Valorinicialdelalecturadigitaldel
infrarrojos.
void setup(){
pinMode(ledPin1,OUTPUT);//InicializaelpindelLED1como
salidadigital
pinMode(ledPin2,OUTPUT);//InicializaelpindelLED2como
salidadigital
pinMode(infraPin,INPUT);//Inicializaelpin4comoentrada
digital
}
void loop(){
valorInfra=digitalRead(infraPin);//Leeelvalordelaentrada
4,estoes,elvalorqueleeelinfrarrojo
digitalWrite(ledPin1,valorInfra);/*Escribeenelpin8el
valorqueleelaentrada4,estoes,elmismovalorqueleeel
infrarrojo
Sielinfrarrojolee0,
entonces,elLEDestarapagado
Sielinfrarrojolee1,
entonces,elLEDestarencendido*/
valorInfra=!valorInfra;//SeasignaavalorInfrael
valorInfranegado.SivalorInfraes1,elnuevovalorInfraser0;y
viceversa
digitalWrite(ledPin2,valorInfra);/*Escribeenelpin9el
valornegadoqueleelaentrada4,estoes,elnegadodelvalorque
leeelinfrarrojo
Sielinfrarrojolee0,
entonces,elLEDconectadoalpin9estarencendido
Sielinfrarrojolee1,
entonces,elLEDconectadoalpin9estarapagado*/
}
Lectura Analogica
//Los sensores se conectan a los puertos analogico del 0 al 5, El sensor mas a la izquierda
//debe ir al puerto 0 y asi susecivamente
int vectorCNY [ ] = { 0, 0, 0, 0, 0, 0 } ;
void setup ( ){
void loop ( ){
Serial.print ( vectorCNY [ i ] );
Serial.print ( ); }
Serial.print ( \n ) ;
delay(3000);
Lectura Digital
//Los sensores se conectan a los puertos digitales del 2 al 7, El sensor mas a la izquierda
//debe ir al puerto 2 en este caso
int vectorCNY [ ] = {2,3, 4, 5, 6, 7}; //Arreglo de cny70 con los pines a los que estan
ligados
int leng_vectorCNY = 6 ; //Longitud del arreglo (numero de pines)
void setup() {
void loop() {
Serial.print ( ); }
Serial.print(\n);
delay(3000); //Espera 3000 milisegundos y repite la lectura
}
Diagrama de Conexion:
Para ambas formas de lectura ( Analogica o Digital ) es necesario utilizar una resistencia de
47K para no daar el fotodiodo (tome la imagen de internet (^_^)! )