{"id":170,"date":"2016-03-19T23:38:04","date_gmt":"2016-03-19T22:38:04","guid":{"rendered":"http:\/\/lab.fawno.com\/?p=170"},"modified":"2024-09-06T22:30:43","modified_gmt":"2024-09-06T20:30:43","slug":"","status":"publish","type":"post","link":"https:\/\/lab.fawno.com\/en\/2016\/03\/19\/frontal-de-descodificador\/","title":{"rendered":"","raw":""},"content":{"rendered":"","protected":false,"raw":""},"excerpt":{"rendered":"","protected":false,"raw":""},"author":1,"featured_media":144,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_es_post_content":"\n
Revisando en el trastero todo aquello que me pudiera servir para mis arduinos<\/a>, me encontr\u00e9 alg\u00fan que otro descodificador. De uno de ellos obtuve este panel:<\/p>\n\n\n\n B\u00e1sicamente tenemos ocho botones, un display de 4 d\u00edgitos, dos leds bicolores (rojo-verde) y tres de color (rojo, amarillo, verde) y un receptor IR con su mando a distancia... todo por el m\u00f3dico precio de averiguar c\u00f3mo demonios controlar esto con un Arduino. Ten\u00eda la esperanza de que al tener tantos componentes en la placa y s\u00f3lo un bus de diez l\u00edneas como \u00fanica comunicaci\u00f3n con la placa base ser\u00eda posible controlar el panel de forma sencilla con Arduino.<\/p>\n\n\n\n As\u00ed que lo primero que hice fue revisar la trasera del frontal para ver qu\u00e9 circuitos integrados (aka garrapatas negras) lleva el trasto:<\/p>\n\n\n\n En la foto no se observa, pero con una lupa y la iluminaci\u00f3n adecuada pude comprobar que los dos \u00fanicos circuitos integrados son el MM74HC595M:<\/p>\n\n\n\n Una r\u00e1pida b\u00fasqueda nos da como resultado que el MM74HC595M<\/a> es un registro de desplazamiento de 8 bits (8bits Shift Register) del que hay sobrada documentaci\u00f3n<\/a> con respecto a c\u00f3mo controlarlo con Arduino<\/a>. As\u00ed que mi primera intuici\u00f3n empezaba a cobrar fuerza.<\/p>\n\n\n\n Sin embargo necesitaba saber el esquema para poder averiguar c\u00f3mo controlar el panel. As\u00ed que en dos o tres d\u00edas ya ten\u00eda los primeros esquemas a mano de la parte de los cuatro d\u00edgitos de siete segmentos y en dos o tres d\u00edas m\u00e1s el esquema definitivo<\/a>:<\/p>\n\n\n\n Del esquema se puede ver que con s\u00f3lo 8 cables (6 si descontamos Vcc y GND) podemos controlar los 4 d\u00edgitos de siete segmenos, los 5 leds (dos de ellos bicolor), recibir las se\u00f1ales del mando a distancia y saber qu\u00e9 pulsador es el que se ha accionado.<\/p>\n\n\n\n Lo m\u00e1s f\u00e1cil es utilizar el receptor de infrarrojos, ya que con conectar la alimentaci\u00f3n (pin 1 del panel a GND y pin 9 a +5V) y conectar el pin 2 del panel a una entrada digital del Arduino ya podemos jugar<\/a> con un mando a distancia<\/a>.<\/p>\n\n\n\n Evidentemente para jugar con el resto de elementos hay que pensar un poco m\u00e1s. Por ejemplo, algo que en los ejemplos y circuitos que he visto con Arduino y el 74595 suelen obviar el pin Enable<\/em> de estos chips. El panel lo utiliza y le da salida, siendo muy \u00fatil pues si en setup lo ponemos en HIGH<\/em> antes de poner el panel en su configuraci\u00f3n inicial (la que decidamos que deba ser) y una vez establecida dicha configuraci\u00f3n ponemos el Enable<\/em> a LOW<\/em> habremos tenido el panel completamente apagado (los leds y los segmentos de los d\u00edgitos) hasta obtener una situaci\u00f3n estable y conocida:<\/p>\n\n\n\n La verdad, el resultado es muy chulo, sobre todo por las opciones que me da sin tener que cablear o soldar nada:<\/p>\n\n\n\n<\/a>
<\/a>
<\/a>
<\/a>
void setup() {\n pinMode(latchPin, OUTPUT);\n pinMode(clockPin, OUTPUT);\n pinMode(enablePin, OUTPUT);\n pinMode(dataPin, OUTPUT);\n pinMode(swPin, INPUT);\n\n \/\/ Desactivamos las salidas de los 74595\n digitalWrite(enablePin, HIGH);\n\n \/\/ Establecemos la condici\u00f3n inicial del Panel\n digitalWrite(latchPin, LOW);\n shiftOut(dataPin, clockPin, LSBFIRST, 0b00001111);\n shiftOut(dataPin, clockPin, LSBFIRST, 0b00110000);\n digitalWrite(latchPin, HIGH);\n\n \/\/ Activamos las salidas de los 74595\n digitalWrite(enablePin, LOW);\n}<\/pre>\n\n\n\n