{"id":267,"date":"2010-09-30T00:28:10","date_gmt":"2010-09-29T21:28:10","guid":{"rendered":"http:\/\/pinguino.walii.es\/archives\/267"},"modified":"2010-10-09T20:31:55","modified_gmt":"2010-10-09T17:31:55","slug":"un-juego-de-colorines-y-sensores-de-infrarrojo%e2%80%a6-claro%e2%80%a6-con-pinguino","status":"publish","type":"post","link":"https:\/\/pinguino.walii.es\/?p=267","title":{"rendered":"Un juego de colorines y sensores de infrarrojo\u2026 claro\u2026 con PING\u00dcINO."},"content":{"rendered":"

Hola buenos d\u00edas\u2026 hoy cumplo con una de las promesas y proyectos de mi tintero\u2026 un juego con detecci\u00f3n de infrarrojos en los 360grados\u2026 con 4 sectores y uno adicional arriba.<\/p>\n

B\u00e1sicamente se compone de 5 sensores de infrarrojo que detectan cualquier obst\u00e1culo a menos de 30 cent\u00edmetros, y lo traduce en un color diferente dependiendo de donde provenga el objeto\u2026 por ejemplo si ponemos un objeto o interceptamos el as del norte\u2026 el cubo cambiar\u00eda a rojo\u2026 si incidimos desde arriba cambiar\u00eda a blanco\u2026 y si incidimos desde cualquier otro lado, el cubo cambiar\u00eda de color.<\/p>\n

Un ejemplo fotogr\u00e1fico de lo que he realizado\u2026 aunque no es un cubo en cuanto pueda conseguir un tooper que se adecue a las dimensiones\u2026 lo clono.<\/p>\n

\"\"\"\"<\/p>\n

\"\"\"\"<\/p>\n

Un v\u00eddeo al respecto para que se entienda un poco m\u00e1s.<\/p>\n

<\/embed><\/object><\/p>\n

<\/p>\n

\n

El circuito es f\u00e1cil.<\/p>\n

Los cuatro sensores infrarrojos se conectan en las 4 entradas anal\u00f3gicas 13, 14, 15 y 16, y las salidas digitales se conectan en los puertos 0, 1 y 2.<\/p>\n

NOTA a mi: PONER CIRCUITO… \ud83d\ude42<\/p>\n

Un poco de c\u00f3digo para condimentar y listo.<\/p>\n

[sourcecode language=\u00bbpy\u00bb]
\n\/\/ Infrared sensors and RGB pinguino.walii.es
\n\/** Vamos a tomar dos lecturas de cada infrarrojo, guardando la anterior en proxSenlast
\npara asi comparar luego cual es la diferencia, y si esta es mayor al diferencial es que
\nun objeto se interpuso en dicho sensor. Y ordena encender el color correspondiente.
\n**\/
\n#define 18f4550
\nunsigned\u00a0 int i;
\n\/\/ aqui configuramos cuanta es la diferencia de valores
\nunsigned int diferencial=20;
\nunsigned int finalproxSen;
\nunsigned int proxSenlast;
\nunsigned int proxSen1;
\nunsigned int finalproxSen1;
\nunsigned int proxSenlast1;
\nunsigned int proxSen2;
\nunsigned int finalproxSen2;
\nunsigned int proxSenlast2;
\nunsigned int proxSen3;
\nunsigned int finalproxSen3;
\nunsigned int proxSenlast3;
\nunsigned int proxSen4;
\nunsigned int finalproxSen4;
\nunsigned int proxSenlast4;
\nunsigned int proxSen;<\/p>\n

void setup()
\n{
\nfor (i=0;i<4;i++) \u00a0\u00a0 \u00a0{
\n pinMode(i,OUTPUT);
\n digitalWrite(i,LOW);
\n }
\nSerial.begin(9600); \/\/opcional
\n}<\/p>\n

void loop()
\n{
\n\/\/tomamos la primer lectura
\n proxSen=analogRead(13);
\n proxSen1=analogRead(14);
\n proxSen2=analogRead(15);
\n proxSen3=analogRead(16);
\n proxSen4=analogRead(17);
\n\/\/si desean pueden excluir del codigo lo referente al serial.
\n\/\/yo uso para debug.
\n\/**
\nif (Serial.available())
\n {
\nSerial.print("\\n\\r");
\nSerial.print("Distancia en digital: ");
\nSerial.print("\\n\\r");
\nSerial.print(proxSen,DEC);
\nSerial.print("\\n\\r");
\nSerial.print(proxSen1,DEC);
\nSerial.print("\\n\\r");
\nSerial.print(proxSen2,DEC);
\nSerial.print("\\n\\r");
\nSerial.print(proxSen3,DEC);
\nSerial.print("\\n\\r");
\nSerial.print(proxSen4,DEC);
\nSerial.print("\\n\\r");
\n }
\n**\/
\n\/\/guardamos la lectura en "LAST" y esperamos 10 milisegundos
\n\/\/ para volver a leer la puerta
\nproxSenlast=proxSen;
\ndelay(10);
\nproxSen=analogRead(13);
\nproxSenlast1=proxSen1;
\ndelay(10);
\nproxSen1=analogRead(14);
\nproxSenlast2=proxSen2;
\ndelay(10);
\nproxSen2=analogRead(15);
\nproxSenlast3=proxSen3;
\ndelay(10);
\nproxSen3=analogRead(16);
\nproxSenlast4=proxSen4;
\ndelay(10);
\nproxSen4=analogRead(17);<\/p>\n

\/\/restamos los valores obtenidos y obtenemos el diferencial en cada caso
\nif (proxSen>=proxSenlast) {
\nfinalproxSen=proxSen-proxSenlast;
\n}else{
\nfinalproxSen=proxSenlast-proxSen;
\n}
\nif (proxSen1>=proxSenlast1) {
\nfinalproxSen1=proxSen1-proxSenlast1;
\n}else{
\nfinalproxSen1=proxSenlast1-proxSen1;
\n}
\nif (proxSen2>=proxSenlast2) {
\nfinalproxSen2=proxSen2-proxSenlast2;
\n}else{
\nfinalproxSen2=proxSenlast2-proxSen2;
\n}
\nif (proxSen3>=proxSenlast3) {
\nfinalproxSen3=proxSen3-proxSenlast3;
\n}else{
\nfinalproxSen3=proxSenlast3-proxSen3;
\n}
\nif (proxSen4>=proxSenlast4) {
\nfinalproxSen4=proxSen4-proxSenlast4;
\n}else{
\nfinalproxSen4=proxSenlast4-proxSen4;
\n}<\/p>\n

\/\/Con el diferencia u la lectura sabemos si un objeto se interpuso.
\nif(finalproxSen>diferencial) {
\ndigitalWrite(0,HIGH);
\ndigitalWrite(1,HIGH);
\ndigitalWrite(2,HIGH);
\n};
\nif(finalproxSen1>diferencial) {
\ndigitalWrite(0,LOW);
\ndigitalWrite(1,HIGH);
\ndigitalWrite(2,LOW);
\n};
\nif(finalproxSen2>diferencial) {
\ndigitalWrite(0,LOW);
\ndigitalWrite(1,LOW);
\ndigitalWrite(2,HIGH);
\n};
\nif(finalproxSen3>diferencial) {
\ndigitalWrite(0,HIGH);
\ndigitalWrite(1,LOW);
\ndigitalWrite(2,HIGH);
\n};
\nif(finalproxSen4>diferencial) {
\ndigitalWrite(0,HIGH);
\ndigitalWrite(1,LOW);
\ndigitalWrite(2,LOW);
\n};
\n}
\n[\/sourcecode]<\/p>\n

Aqu\u00ed el invento por dentro.<\/p>\n

Izquierda los 3 leds RGB con tres transistores para descargar de trabajo al PIC, y a la derecha el cacharo con los sensores infrarrojos.<\/p>\n

\"\"\"\"<\/p>\n

aqu\u00ed se pueden observar los sensores infrarrojos.<\/p>\n

\"\"\"\"<\/p>\n

\n

En cuanto pueda os subo los circuitos, porque siempre es bueno tener circuito de sensores y fase de potencia RGB<\/p>\n","protected":false},"excerpt":{"rendered":"

Hola buenos d\u00edas\u2026 hoy cumplo con una de las promesas y proyectos de mi tintero\u2026 un juego con detecci\u00f3n de infrarrojos en los 360grados\u2026 con…<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/267"}],"collection":[{"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=267"}],"version-history":[{"count":11,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/267\/revisions"}],"predecessor-version":[{"id":268,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=\/wp\/v2\/posts\/267\/revisions\/268"}],"wp:attachment":[{"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=267"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=267"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pinguino.walii.es\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}