{"id":3242,"date":"2025-01-04T23:05:07","date_gmt":"2025-01-05T04:05:07","guid":{"rendered":"https:\/\/www.electroallweb.com\/?p=3242"},"modified":"2025-01-04T23:19:54","modified_gmt":"2025-01-05T04:19:54","slug":"como-hacer-un-panel-electronic-de-precios-para-grifos","status":"publish","type":"post","link":"https:\/\/www.electroallweb.com\/index.php\/2025\/01\/04\/como-hacer-un-panel-electronic-de-precios-para-grifos\/","title":{"rendered":"Como hacer un PANEL ELECTRONIC de precios para GRIFOS"},"content":{"rendered":"<section class=\"l-section wpb_row height_medium\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row type_default valign_top\"><div class=\"vc_col-sm-2 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><\/div><\/div><\/div><div class=\"vc_col-sm-10 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"w-socials align_center style_default color_brand index_1\" style=\"font-size:30px;\"><div class=\"w-socials-list\"><div class=\"w-socials-item facebook\">\r\n\t\t\t\t<a class=\"w-socials-item-link\" target=\"_blank\" href=\"https:\/\/www.facebook.com\/ELECTROALL.ELECTRONICA\/\">\r\n\t\t\t\t\t<span class=\"w-socials-item-link-hover\"><\/span>\r\n\t\t\t\t\t<span class=\"w-socials-item-link-title\">Facebook<\/span>\r\n\t\t\t\t<\/a>\r\n\t\t\t\t<div class=\"w-socials-item-popup\">\r\n\t\t\t\t\t<span>Facebook<\/span>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div><div class=\"w-socials-item youtube\">\r\n\t\t\t\t<a class=\"w-socials-item-link\" target=\"_blank\" href=\"https:\/\/www.youtube.com\/c\/ELECTROALL\">\r\n\t\t\t\t\t<span class=\"w-socials-item-link-hover\"><\/span>\r\n\t\t\t\t\t<span class=\"w-socials-item-link-title\">YouTube<\/span>\r\n\t\t\t\t<\/a>\r\n\t\t\t\t<div class=\"w-socials-item-popup\">\r\n\t\t\t\t\t<span>YouTube<\/span>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div><div class=\"w-socials-item instagram\">\r\n\t\t\t\t<a class=\"w-socials-item-link\" target=\"_blank\" href=\"https:\/\/www.instagram.com\/electroall_\/\">\r\n\t\t\t\t\t<span class=\"w-socials-item-link-hover\"><\/span>\r\n\t\t\t\t\t<span class=\"w-socials-item-link-title\">Instagram<\/span>\r\n\t\t\t\t<\/a>\r\n\t\t\t\t<div class=\"w-socials-item-popup\">\r\n\t\t\t\t\t<span>Instagram<\/span>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div><div class=\"w-socials-item github\">\r\n\t\t\t\t<a class=\"w-socials-item-link\" target=\"_blank\" href=\"https:\/\/github.com\/ELECTROALL\">\r\n\t\t\t\t\t<span class=\"w-socials-item-link-hover\"><\/span>\r\n\t\t\t\t\t<span class=\"w-socials-item-link-title\">GitHub<\/span>\r\n\t\t\t\t<\/a>\r\n\t\t\t\t<div class=\"w-socials-item-popup\">\r\n\t\t\t\t\t<span>GitHub<\/span>\r\n\t\t\t\t<\/div>\r\n\t\t\t<\/div><\/div><\/div>\r\n\t<div class=\"wpb_text_column  vc_custom_1736047828659\">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h5><span id=\"ESPECIFICACIONES_TECNICAS\">INTRODUCCI\u00d3N<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-265 alignnone\" src=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png\" alt=\"\" width=\"1080\" height=\"36\" srcset=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png 300w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-1024x33.png 1024w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-768x25.png 768w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores.png 1624w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/span><\/h5>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<p>Hoy les mostrar\u00e9 una maqueta de un panel de precios para gasolineras. En este panel, podemos ver el precio del Diesel, luego los precios de la Gasolina 95, 90 y 84. M\u00e1s abajo tenemos una pantalla con tres pulsadores, que nos permiten configurar los precios de manera f\u00e1cil. Para demostrar c\u00f3mo funciona, haremos un ejemplo cambiando el precio de la Gasolina de\u00a0 84.<\/p>\n<p style=\"text-align: justify;\">Al iniciar, la pantalla solicita una clave de acceso. Una vez ingresada correctamente, podemos navegar por el men\u00fa principal para modificar los precios. Bajamos hasta la opci\u00f3n de la Gasolina 84 y ajustamos el precio. Mientras lo hacemos, el cambio tambi\u00e9n se refleja en el display principal. Este proyecto est\u00e1 construido con un ESP32 y programado en el IDE de Arduino. A lo largo del video, les explicar\u00e9 el esquem\u00e1tico electr\u00f3nico, el dise\u00f1o de la PCB y la estructura del panel.<\/p>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row height_medium\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row type_default valign_top\"><div class=\"vc_col-sm-2 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><\/div><\/div><\/div><div class=\"vc_col-sm-10 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\">\r\n\t<div class=\"wpb_text_column  vc_custom_1736047877331\">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h5><span id=\"ESPECIFICACIONES_TECNICAS\">DATOS T\u00c9CNICOS<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-265 alignnone\" src=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png\" alt=\"\" width=\"1080\" height=\"36\" srcset=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png 300w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-1024x33.png 1024w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-768x25.png 768w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores.png 1624w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/span><\/h5>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<ol>\n<li>Tensi\u00f3n de alimentaci\u00f3n\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026.\u2026\u2026\u2026\u202612VDC<\/li>\n<li>Corriente de alimentaci\u00f3n\u2026\u2026\u2026\u2026\u2026\u2026\u2026.\u2026\u2026\u2026\u2026\u2026850mA<\/li>\n<li>Entradas digitales \u201cPulsadores\u201d 12VDC\u2026\u2026\u2026\u2026\u2026\u20263<\/li>\n<li>Puerto usb de programaci\u00f3n\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026..1<\/li>\n<li>Comunicaci\u00f3n I2C\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026S\u00ed<\/li>\n<li>Comunicaci\u00f3n Wifi\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026S\u00ed<\/li>\n<li>Comunicaci\u00f3n Bluetooth&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.S\u00ed<\/li>\n<li>Dimensiones\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026.\u2026\u2026.\u2026\u2026\u2026220x100mm<\/li>\n<li>Empotrable\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026.\u2026\u2026\u2026S\u00ed<\/li>\n<li>Entorno de programaci\u00f3n\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026..\u2026\u2026..Arduino IDE<\/li>\n<li>Condiciones ambientales min\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026\u2026.-10\u00b0<\/li>\n<li>Condiciones ambientales max\u2026\u2026\u2026\u2026\u2026\u2026\u2026..\u2026\u2026.55\u00b0<\/li>\n<\/ol>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row height_medium\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row type_default valign_top\"><div class=\"vc_col-sm-2 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><\/div><\/div><\/div><div class=\"vc_col-sm-10 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\">\r\n\t<div class=\"wpb_text_column  vc_custom_1736047889059\">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h5><span id=\"ESPECIFICACIONES_TECNICAS\">ESQUEM\u00c1TICO ELECTR\u00d3NICO<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-265 alignnone\" src=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png\" alt=\"\" width=\"1080\" height=\"36\" srcset=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png 300w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-1024x33.png 1024w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-768x25.png 768w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores.png 1624w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/span><\/h5>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-image\"><div class=\"w-image-h\"><a href=\"https:\/\/github.com\/ELECTROALL\/PANEL-PARA-PRECIOS-DE-GRIFOS\/blob\/main\/SCH_Schematic1_2024-10-03.pdf\" title=\"\" target=\"\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"725\" src=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/SCH_Schematic1_1-P1_2025-01-04-1024x725.png\" class=\"attachment-large size-large\" alt=\"\" srcset=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/SCH_Schematic1_1-P1_2025-01-04-1024x725.png 1024w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/SCH_Schematic1_1-P1_2025-01-04-300x213.png 300w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/SCH_Schematic1_1-P1_2025-01-04-768x544.png 768w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/SCH_Schematic1_1-P1_2025-01-04-1536x1088.png 1536w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/SCH_Schematic1_1-P1_2025-01-04-600x425.png 600w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/SCH_Schematic1_1-P1_2025-01-04.png 1680w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/div><\/div><div class=\"w-btn-wrapper align_left\"><a class=\"w-btn style_solid color_primary icon_none\" href=\"https:\/\/github.com\/ELECTROALL\/PANEL-PARA-PRECIOS-DE-GRIFOS\/blob\/main\/SCH_Schematic1_2024-10-03.pdf\"><span class=\"w-btn-label\">DESCARGAR ESQUEMATICO ELECTRONICO PDF<\/span><\/a><\/div><div class=\"w-btn-wrapper align_left\"><a class=\"w-btn style_solid color_primary icon_none\" href=\"https:\/\/www.patreon.com\/posts\/como-hacer-panel-119328547?utm_medium=clipboard_copy&#038;utm_source=copyLink&#038;utm_campaign=postshare_creator&#038;utm_content=join_link\"><span class=\"w-btn-label\">DESCARGAR PROYECTO EDITABLE<\/span><\/a><\/div><\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row height_medium\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row type_default valign_top\"><div class=\"vc_col-sm-2 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><\/div><\/div><\/div><div class=\"vc_col-sm-10 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\">\r\n\t<div class=\"wpb_text_column  vc_custom_1736047898553\">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h5><span id=\"ESPECIFICACIONES_TECNICAS\">DISE\u00d1O PCB<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-265 alignnone\" src=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png\" alt=\"\" width=\"1080\" height=\"36\" srcset=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png 300w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-1024x33.png 1024w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-768x25.png 768w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores.png 1624w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/span><\/h5>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-image\"><div class=\"w-image-h\"><a href=\"https:\/\/github.com\/ELECTROALL\/PANEL-PARA-PRECIOS-DE-GRIFOS\/blob\/main\/Gerber_PCB1_2024-10-03.zip\" title=\"\" target=\"\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"501\" src=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/3D_PCB1_2025-01-04-1024x501.png\" class=\"attachment-large size-large\" alt=\"\" srcset=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/3D_PCB1_2025-01-04-1024x501.png 1024w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/3D_PCB1_2025-01-04-300x147.png 300w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/3D_PCB1_2025-01-04-768x376.png 768w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/3D_PCB1_2025-01-04-1536x752.png 1536w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/3D_PCB1_2025-01-04-2048x1002.png 2048w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/3D_PCB1_2025-01-04-600x294.png 600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/div><\/div><div class=\"w-btn-wrapper align_left\"><a class=\"w-btn style_solid color_primary icon_none\" href=\"https:\/\/github.com\/ELECTROALL\/PANEL-PARA-PRECIOS-DE-GRIFOS\/blob\/main\/Gerber_PCB1_2024-10-03.zip\"><span class=\"w-btn-label\">DESCARGAR GERBER<\/span><\/a><\/div><div class=\"w-btn-wrapper align_left\"><a class=\"w-btn style_solid color_primary icon_none\" href=\"https:\/\/www.patreon.com\/posts\/como-hacer-panel-119328547?utm_medium=clipboard_copy&#038;utm_source=copyLink&#038;utm_campaign=postshare_creator&#038;utm_content=join_link\"><span class=\"w-btn-label\">DESCARGAR PROYECTO EDITABLE<\/span><\/a><\/div><\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row height_medium\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row type_default valign_top\"><div class=\"vc_col-sm-2 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><\/div><\/div><\/div><div class=\"vc_col-sm-10 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\">\r\n\t<div class=\"wpb_text_column  vc_custom_1736047913969\">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h5><span id=\"ESPECIFICACIONES_TECNICAS\">LISTA DE MATERIALES<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-265 alignnone\" src=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png\" alt=\"\" width=\"1080\" height=\"36\" srcset=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png 300w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-1024x33.png 1024w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-768x25.png 768w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores.png 1624w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/span><\/h5>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<table width=\"980\">\n<tbody>\n<tr>\n<td width=\"140\">Quantity<\/td>\n<td width=\"140\">Comment<\/td>\n<td width=\"140\">Designator<\/td>\n<td width=\"140\">Footprint<\/td>\n<td width=\"140\">Value<\/td>\n<td width=\"140\">Manufacturer Part<\/td>\n<td width=\"140\">Manufacturer<\/td>\n<\/tr>\n<tr>\n<td>10<\/td>\n<td>100nF<\/td>\n<td>C1,C3,C4,C7,C8,C12,C13,C15,C16,C17<\/td>\n<td>C0603<\/td>\n<td>100nF<\/td>\n<td>CC0603KRX7R9BB104<\/td>\n<td>YAGEO(\u56fd\u5de8)<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>47uF<\/td>\n<td>C2<\/td>\n<td>C1206<\/td>\n<td>47uF<\/td>\n<td>CL31A476MPHNNNE<\/td>\n<td>SAMSUNG(\u4e09\u661f)<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>470uF<\/td>\n<td>C5,C10<\/td>\n<td>CAP-SMD_BD10.0-L10.3-W10.3-LS11.3-FD<\/td>\n<td>470uF<\/td>\n<td>VT1V471M1010<\/td>\n<td>ROQANG(\u5bb9\u5f3a)<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>1uF<\/td>\n<td>C6,C11<\/td>\n<td>C1206<\/td>\n<td>1uF<\/td>\n<td>CL31B105KBHNNNE<\/td>\n<td>SAMSUNG(\u4e09\u661f)<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>220uF<\/td>\n<td>C9<\/td>\n<td>CAP-SMD_BD8.0-L8.3-W8.3-LS9.3-FD-2<\/td>\n<td>220uF<\/td>\n<td>UCD1V221MNL1GS<\/td>\n<td>Nichicon(\u5c3c\u5409\u5eb7)<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>220uF<\/td>\n<td>C14<\/td>\n<td>CAP-SMD_BD6.3-L6.6-W6.6-LS7.2-R-RD<\/td>\n<td>220uF<\/td>\n<td>RVE1C221M0607<\/td>\n<td>ROQANG(\u5bb9\u5f3a)<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>ZX-XH2.54-4PZZ<\/td>\n<td>CN1,CN2<\/td>\n<td>CONN-TH_4P-P2.50_4PIN<\/td>\n<td><\/td>\n<td>ZX-XH2.54-4PZZ<\/td>\n<td>Megastar(\u5146\u661f)<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>SS34<\/td>\n<td>D1,D2,D3<\/td>\n<td>SMA_L4.3-W2.6-LS5.2-RD<\/td>\n<td><\/td>\n<td>SS34<\/td>\n<td>MDD(\u8fb0\u8fbe\u534a\u5bfc\u4f53)<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>SS210<\/td>\n<td>D4,D5<\/td>\n<td>SMA_L4.3-W2.6-LS5.2-RD<\/td>\n<td><\/td>\n<td>SS210<\/td>\n<td>MDD<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>PM254-1-06-W-8.5<\/td>\n<td>H1<\/td>\n<td>HDR-TH_6P-P2.54-H-F-W10.0-N<\/td>\n<td><\/td>\n<td>PM254-1-06-W-8.5<\/td>\n<td>HCTL(\u534e\u707f\u5929\u7984)<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>PZ254R-11-06P<\/td>\n<td>H2<\/td>\n<td>HDR-TH_6P-P2.54-H-M-W10.4<\/td>\n<td><\/td>\n<td>PZ254R-11-06P<\/td>\n<td>XFCN(\u5174\u98de)<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>68uH<\/td>\n<td>L1,L2<\/td>\n<td>IND-SMD_L7.1-W6.6-1<\/td>\n<td>68uH<\/td>\n<td>PSPMAA0605H-680M-IGF<\/td>\n<td>PROD(\u8c31\u7f57\u5fb7)<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>SM412301N<\/td>\n<td>LED1,LED2,LED3,LED4<\/td>\n<td>LED-SEG-TH_10P-L48.7-W69.7-P2.54-S60.20-BL<\/td>\n<td><\/td>\n<td>SM412301N<\/td>\n<td>ARKLED(\u65b9\u821f)<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>WJ128V-5.0-2P<\/td>\n<td>P1<\/td>\n<td>CONN-TH_2P-P5.00_WJ128V-5.0-2P<\/td>\n<td><\/td>\n<td>WJ128V-5.0-2P<\/td>\n<td>KANGNEX(\u5eb7\u5948\u514b\u65af\u7535\u6c14)<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>MMBT3904<\/td>\n<td>Q1,Q2,Q3<\/td>\n<td>SOT-23-3_L2.9-W1.3-P1.90-LS2.4-BR<\/td>\n<td><\/td>\n<td>MMBT3904<\/td>\n<td>CJ(\u6c5f\u82cf\u957f\u7535\/\u957f\u6676)<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>10k\u03a9<\/td>\n<td>R1,R5,R13,R26,R27<\/td>\n<td>R0603<\/td>\n<td>10k\u03a9<\/td>\n<td>0603WAF1002T5E<\/td>\n<td>UNI-ROYAL(\u539a\u58f0)<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>2.2k\u03a9<\/td>\n<td>R2,R3,R4<\/td>\n<td>R0805<\/td>\n<td>2.2k\u03a9<\/td>\n<td>0805W8F2201T5E<\/td>\n<td>UNI-ROYAL(\u539a\u58f0)<\/td>\n<\/tr>\n<tr>\n<td>28<\/td>\n<td>240\u03a9<\/td>\n<td>R6,R7,R8,R9,R10,R11,R12,R15,<br \/>\nR16,R17,R18,R19,R20,R21,R28,<br \/>\nR29,R30,R31,R32,R33,R34,R35,<br \/>\nR36,R37,R38,R39,R40,R41<\/td>\n<td>R0805<\/td>\n<td>240\u03a9<\/td>\n<td>0805W8F2400T5E<\/td>\n<td>UNI-ROYAL(\u539a\u58f0)<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>1k\u03a9<\/td>\n<td>R14,R22,R23,R24,R25<\/td>\n<td>R0603<\/td>\n<td>1k\u03a9<\/td>\n<td>0603WAF1001T5E<\/td>\n<td>UNI-ROYAL(\u539a\u58f0)<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>TS-1187A-B-A-B<\/td>\n<td>SW1,SW2,SW3,SW4<\/td>\n<td>SW-SMD_4P-L5.1-W5.1-P3.70-LS6.5-TL-2<\/td>\n<td><\/td>\n<td>TS-1187A-B-A-B<\/td>\n<td>XKB Connectivity(\u4e2d\u56fd\u661f\u5764)<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>Test-Point<\/td>\n<td>TP1,TP2,TP3<\/td>\n<td>Test-Point-0.5mm<\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>74HC595D,118<\/td>\n<td>U1,U7,U11,U14<\/td>\n<td>SOIC-16_L9.9-W3.9-P1.27-LS6.0-BL<\/td>\n<td><\/td>\n<td>74HC595D,118<\/td>\n<td>Nexperia(\u5b89\u4e16)<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>ULN2003ADR<\/td>\n<td>U2,U8,U12,U15<\/td>\n<td>SOIC-16_L9.9-W3.9-P1.27-LS6.0-BL<\/td>\n<td><\/td>\n<td>ULN2003ADR<\/td>\n<td>TI(\u5fb7\u5dde\u4eea\u5668)<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>EL3H7(B)(TA)-G<\/td>\n<td>U3,U4,U5<\/td>\n<td>SOP-4_L4.4-W2.8-P1.27-LS7.0-TL<\/td>\n<td><\/td>\n<td>EL3H7(B)(TA)-G<\/td>\n<td>EVERLIGHT(\u4ebf\u5149)<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>XL1509-5.0E1<\/td>\n<td>U6<\/td>\n<td>SOIC-8_L5.0-W4.0-P1.27-LS6.0-BL<\/td>\n<td><\/td>\n<td>XL1509-5.0E1<\/td>\n<td>XLSEMI(\u82af\u9f99)<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>LM2594M-3.3<\/td>\n<td>U9<\/td>\n<td>SOP-8_L4.9-W3.9-P1.27-LS6.0-BL<\/td>\n<td><\/td>\n<td>LM2594M-3.3<\/td>\n<td>UMW(\u5e7f\u4e1c\u53cb\u53f0\u534a\u5bfc\u4f53)<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>CH340C<\/td>\n<td>U10<\/td>\n<td>SOP-16_L10.0-W3.9-P1.27-LS6.0-BL<\/td>\n<td><\/td>\n<td>CH340C<\/td>\n<td>WCH(\u5357\u4eac\u6c81\u6052)<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>ESP32-WROOM-32D-N4<\/td>\n<td>U13<\/td>\n<td>WIFIM-SMD_39P-L25.5-W18.0-P1.27-BL<\/td>\n<td><\/td>\n<td>ESP32-WROOM-32D-N4<\/td>\n<td>ESPRESSIF(\u4e50\u946b)<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>USB-TYPE-C-018<\/td>\n<td>USB1<\/td>\n<td>USB-C_SMD-TYPE-C-31-M-12<\/td>\n<td><\/td>\n<td>USB-TYPE-C-018<\/td>\n<td>DEALON(\u5fb7\u827a\u9686)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row height_medium\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row type_default valign_top\"><div class=\"vc_col-sm-2 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><\/div><\/div><\/div><div class=\"vc_col-sm-10 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\">\r\n\t<div class=\"wpb_text_column  vc_custom_1736050679175\">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h5><span id=\"ESPECIFICACIONES_TECNICAS\">CONEXIONES EXTERNAS<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-265 alignnone\" src=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png\" alt=\"\" width=\"1080\" height=\"36\" srcset=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png 300w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-1024x33.png 1024w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-768x25.png 768w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores.png 1624w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/span><\/h5>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-image\"><div class=\"w-image-h\"><a href=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/CONEXIONES-EXTERNAS.png\" ref=\"magnificPopup\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/CONEXIONES-EXTERNAS-1024x576.png\" class=\"attachment-large size-large\" alt=\"\" srcset=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/CONEXIONES-EXTERNAS-1024x576.png 1024w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/CONEXIONES-EXTERNAS-300x169.png 300w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/CONEXIONES-EXTERNAS-768x432.png 768w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/CONEXIONES-EXTERNAS-1536x865.png 1536w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/CONEXIONES-EXTERNAS-2048x1153.png 2048w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/CONEXIONES-EXTERNAS-600x338.png 600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row height_medium\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row type_default valign_top\"><div class=\"vc_col-sm-2 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><\/div><\/div><\/div><div class=\"vc_col-sm-10 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\">\r\n\t<div class=\"wpb_text_column  vc_custom_1736048046058\">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h5><span id=\"ESPECIFICACIONES_TECNICAS\">ESTRUCTURA SOLIDWORKS<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-265 alignnone\" src=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png\" alt=\"\" width=\"1080\" height=\"36\" srcset=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png 300w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-1024x33.png 1024w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-768x25.png 768w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores.png 1624w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/span><\/h5>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-image\"><div class=\"w-image-h\"><a href=\"https:\/\/github.com\/ELECTROALL\/PANEL-PARA-PRECIOS-DE-GRIFOS\/blob\/main\/Ensamblaje81.pdf\" title=\"\" target=\"\" rel=\"\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"542\" src=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/Estructura-3d-para-panel-de-grifo-1024x542.png\" class=\"attachment-large size-large\" alt=\"\" srcset=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/Estructura-3d-para-panel-de-grifo-1024x542.png 1024w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/Estructura-3d-para-panel-de-grifo-300x159.png 300w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/Estructura-3d-para-panel-de-grifo-768x406.png 768w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/Estructura-3d-para-panel-de-grifo-600x317.png 600w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2025\/01\/Estructura-3d-para-panel-de-grifo.png 1486w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/div><\/div><div class=\"w-btn-wrapper align_left\"><a class=\"w-btn style_solid color_primary icon_none\" href=\"https:\/\/github.com\/ELECTROALL\/PANEL-PARA-PRECIOS-DE-GRIFOS\/blob\/main\/Ensamblaje81.pdf\"><span class=\"w-btn-label\">DESCARGAR MEDIDAS<\/span><\/a><\/div><\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row height_medium\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row type_default valign_top\"><div class=\"vc_col-sm-2 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><\/div><\/div><\/div><div class=\"vc_col-sm-10 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\">\r\n\t<div class=\"wpb_text_column  vc_custom_1736048055034\">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h5><span id=\"ESPECIFICACIONES_TECNICAS\">CODIGO ARDUINO<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-265 alignnone\" src=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png\" alt=\"\" width=\"1080\" height=\"36\" srcset=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png 300w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-1024x33.png 1024w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-768x25.png 768w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores.png 1624w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/span><\/h5>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n\r\n\t<div class=\"wpb_text_column \">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\">\/\/librerias\r\n#define EEPROM_SIZE 64\r\n#include &lt;EEPROM.h&gt;\r\n#include &lt;Wire.h&gt;\r\n#include &lt;LiquidCrystal_I2C.h&gt;\r\nLiquidCrystal_I2C lcd(0x27, 16, 2);\r\n\r\n\/\/\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\r\n\/\/PINES DE ENTRADA DE LOS PULSADORES         \u2588\r\nconst int in_A = 34;    \/\/ADD                \u2588\r\nconst int in_B = 32;    \/\/LESS               \u2588\r\nconst int swPin = 35;   \/\/OK                 \u2588\r\nbool btnpress = false;  \/\/memoria boton OK   \u2588\r\n\/\/\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2588\r\n\r\n\/\/\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\r\n\/\/PINES DE SALIDA PARA CONTROLAR LOS Displays\r\nbyte clockpin = 27;  \/\/Cuando ay que leer los bit      SH\r\nbyte data = 12;      \/\/Envio datos                     DS\r\nbyte latch = 14;     \/\/indica pin de salida en el chip ST\r\n\r\n\/\/\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\r\n\r\n\/\/======================== DATOS CONVERSION ENTEROS A BINARIOS =================================\r\nconst int NUM[] = {\r\n  191,  \/\/Numero 0 en binario es : 10111111 = 0\r\n  134,  \/\/Numero 1 en binario es : 10000110 = 1\r\n  219,  \/\/Numero 2 en binario es : 11011011 = 2\r\n  207,  \/\/Numero 3 en binario es : 11001111 = 3\r\n  230,  \/\/Numero 4 en binario es : 11100110 = 4\r\n  237,  \/\/Numero 5 en binario es : 11101101 = 5\r\n  253,  \/\/Numero 6 en binario es : 11111101 = 6\r\n  135,  \/\/Numero 7 en binario es : 10000111 = 7\r\n  255,  \/\/Numero 8 en binario es : 11111111 = 8\r\n  239,  \/\/Numero 9 en binario es : 11101111 = 9\r\n  191,  \/\/Numero 0 en binario es : 10111111 = 10\r\n};\r\n\/\/==============================================================================================\r\n\r\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ VARIABLES PARA CONTEO DE DISPLAYS \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n\r\n\/\/Display de precios\r\nbyte contador_fatal = 0;  \/\/ se usa directo al display\r\nbyte contador_dieselPro_DISPLAY[4] = { 0, 0, 0, 0 };\r\nbyte contador_gasolina95_DISPLAY[4] = { 0, 0, 0, 0 };\r\nbyte contador_gasolina90_DISPLAY[4] = { 0, 0, 0, 0 };\r\nbyte contador_gasolina84_DISPLAY[4] = { 0, 0, 0, 0 };\r\n\r\n\/\/MEMORIA\r\nint contador_dieselPro_M = 0;   \/\/Memoria incapacitantes\r\nint contador_gasolina95_M = 0;  \/\/Memoria leve\r\nint contador_gasolina90_M = 0;  \/\/Memoria incidentes\r\nint contador_gasolina84_M = 0;  \/\/Memoria subestandard\r\n\r\n\/\/ Variables para almacenar el estado de la contrase\u00f1a\r\nint password[4] = { 0, 0, 0, 0 };\r\nint currentDigit = 0;\r\nint currentPosition = 0;\r\n\r\n\/\/ Contrase\u00f1a correcta\r\nconst int correctPassword[4] = { 0, 0, 0, 0 };\r\nbool isCorrect = false;\r\n\r\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/DIRECCION PARA ALMACENAR EN LA MENORIA EEPROM\r\nunsigned int direc_dieselPro = 0;    \/\/ Direccion EEPROM para almacenar precio Diesel pro\r\nunsigned int direc_gasolina95 = 8;   \/\/ Direccion EEPROM para almacenar gasolina 95\r\nunsigned int direc_gasolina90 = 16;  \/\/ Direccion EEPROM para almacenar gasolina 90\r\nunsigned int direc_gasolina84 = 32;  \/\/ Direccion EEPROM para almacenar gasolina 84\r\n\r\n\/\/\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\r\n\/\/----------------------------------------------------------------------MENUS-------------------------------------------------------------------------------\r\nString menu1[] = { \"DIESEL PRO\", \"GASOLINA 95\", \"GASOLINA 90\", \"GASOLINA 84\", \"Atras\" };  \/\/Palabras del menu principal\r\nint sizemenu1 = sizeof(menu1) \/ sizeof(menu1[0]);\r\n\r\nString linea1, linea2;  \/\/lines o filas del lcd 16x2\r\nint level_menu = 0;     \/\/ para ubicarnos en un men\u00fa\r\n\r\nint contador = 0;  \/\/ CONTADOR PARA EL DESPLAZAMIENTO ENTRE LOS MENUS\r\n\r\nbyte flecha[] = { B10000, B11000, B11100, B11110, B11100, B11000, B10000, B00000 };  \/\/Creamos un array de 8 posiciones para la flecha del menu\r\n\/\/\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\u2584\r\n\r\nvoid setup() {\r\n  EEPROM.begin(EEPROM_SIZE);\r\n  \/\/ Serial.begin(9600);\r\n\r\n  pinMode(in_A, INPUT);\r\n  pinMode(in_B, INPUT);\r\n  pinMode(swPin, INPUT);\r\n\r\n  \/\/ OUTPUTS to 74HC959\r\n  pinMode(clockpin, OUTPUT);\r\n  pinMode(data, OUTPUT);\r\n  pinMode(latch, OUTPUT);\r\n\r\n  lcd.init();\r\n  lcd.backlight();\r\n  lcd.createChar(0, flecha);  \/\/Caracter personalizado\r\n\r\n  contador_dieselPro_M = EEPROM.read(direc_dieselPro);\r\n  contador_gasolina95_M = EEPROM.read(direc_gasolina95);\r\n  contador_gasolina90_M = EEPROM.read(direc_gasolina90);\r\n  contador_gasolina84_M = EEPROM.read(direc_gasolina84);\r\n\r\n  init_displays();\r\n  cont();\r\n  updateLCD();\r\n}\r\nvoid loop() {\r\n\r\n  selectOption();  \/\/Funcion para detectar cuando se Presionar el pusador de OK\r\n\r\n  \/\/\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 PANTALLA PRINCIPAL \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\r\n  if (level_menu == 0) {\r\n\r\n    if (digitalRead(in_B) == HIGH) {\r\n      if (password[currentPosition] &gt; 0) {\r\n        password[currentPosition]--;\r\n      } else {\r\n        password[currentPosition] = 9;\r\n      }\r\n      updateLCD();\r\n      delay(250);  \/\/ Debouncing\r\n    }\r\n\r\n    if (btnpress) {\r\n      if (currentPosition &lt; 3) {\r\n        currentPosition++;\r\n      } else {\r\n        verifyPassword();\r\n        currentPosition = 0;  \/\/ Resetear para ingresar una nueva contrase\u00f1a\r\n      }\r\n      updateLCD();\r\n      btnpress = false;\r\n    }\r\n\r\n    if (digitalRead(in_A) == HIGH) {\r\n      if (password[currentPosition] &lt; 9) {\r\n        password[currentPosition]++;\r\n      } else {\r\n        password[currentPosition] = 0;\r\n      }\r\n      updateLCD();\r\n      delay(250);  \/\/ Debouncing\r\n    }\r\n\r\n    if (isCorrect == true) {  \/\/ si se presiona el pulsador de OK nos llevar\u00e1 al menu principal\r\n      level_menu = 1;\r\n      fn_menu(contador, menu1, sizemenu1);\r\n    }\r\n  }  \/\/\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\r\n\r\n  \/\/\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 MENU 1 PRINCIPAL \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\r\n  if (level_menu == 1) {  \/\/Esta variable corresponde al nivel principal del menu. level_menu = 1.\r\n\r\n    if (fnSwitch(sizemenu1)) {              \/\/Esta funcion muestra en el LCD el menu en el que estamos\r\n      fn_menu(contador, menu1, sizemenu1);  \/\/Esta funcion muestra la posicion dentro de ese menu segun el valor de la variable contador\r\n    }\r\n\r\n    if (btnpress) {  \/\/Verificamos si el boton del encoder fue oprimido. btnpress == true\r\n\r\n      \/\/ DIESEL PRO\r\n      if (contador == 0) {\r\n        \/\/contador = contador_dieselPro_M;\r\n        lcd.clear();\r\n\r\n        \/\/ Variables para manejar los d\u00edgitos\r\n        int digitoActivo = 0;  \/\/ D\u00edgito actual (0: unidades, 1: decenas, 2: centenas, 3: millares)\r\n        bool salir = false;    \/\/ Control para salir del bucle\r\n\r\n        do {\r\n          \/\/ Actualizamos los d\u00edgitos en el arreglo seg\u00fan el contador\r\n          contador_dieselPro_DISPLAY[0] = contador_dieselPro_M % 10;          \/\/ Unidades\r\n          contador_dieselPro_DISPLAY[1] = (contador_dieselPro_M \/ 10) % 10;   \/\/ Decenas\r\n          contador_dieselPro_DISPLAY[2] = (contador_dieselPro_M \/ 100) % 10;  \/\/ Centenas\r\n          contador_dieselPro_DISPLAY[3] = (contador_dieselPro_M \/ 1000);      \/\/ Millares\r\n\r\n          lcd.setCursor(0, 0);\r\n          lcd.print(\"DIESEL PRO\");\r\n\r\n          \/\/ Mostrar el precio completo en el LCD\r\n          lcd.setCursor(0, 1);\r\n          lcd.print(\"Precio: \");\r\n          lcd.print(contador_dieselPro_DISPLAY[3]);  \/\/ Millares\r\n          lcd.print(contador_dieselPro_DISPLAY[2]);  \/\/ Centenas\r\n          lcd.print(contador_dieselPro_DISPLAY[1]);  \/\/ Decenas\r\n          lcd.print(contador_dieselPro_DISPLAY[0]);  \/\/ Unidades\r\n\r\n          \/\/ Mostrar el d\u00edgito activo en el LCD\r\n          lcd.setCursor(0, 2);\r\n          lcd.print(\"Digito: \");\r\n          lcd.print(digitoActivo);\r\n\r\n          \/\/ Incrementar o decrementar el d\u00edgito activo\r\n          if (digitalRead(in_A) == HIGH) {  \/\/ Incrementar\r\n            if (contador_dieselPro_DISPLAY[digitoActivo] &lt; 9) {\r\n              contador_dieselPro_DISPLAY[digitoActivo]++;\r\n            } else {\r\n              contador_dieselPro_DISPLAY[digitoActivo] = 0;  \/\/ Reinicia si llega a 9\r\n            }\r\n            delay(200);  \/\/ Peque\u00f1a espera para evitar m\u00faltiples incrementos\r\n          }\r\n\r\n          if (digitalRead(in_B) == HIGH) {  \/\/ Decrementar\r\n            if (contador_dieselPro_DISPLAY[digitoActivo] &gt; 0) {\r\n              contador_dieselPro_DISPLAY[digitoActivo]--;\r\n            } else {\r\n              contador_dieselPro_DISPLAY[digitoActivo] = 9;  \/\/ Reinicia si llega a 0\r\n            }\r\n            delay(200);  \/\/ Peque\u00f1a espera para evitar m\u00faltiples decrementos\r\n          }\r\n\r\n          \/\/ Cambiar el d\u00edgito activo\r\n          if (digitalRead(swPin) == HIGH) {  \/\/ Selecci\u00f3n de d\u00edgito\r\n            if (digitoActivo &lt; 3) {\r\n              digitoActivo++;  \/\/ Cambia al siguiente d\u00edgito\r\n            } else {\r\n              salir = true;  \/\/ Salimos del bucle al confirmar el \u00faltimo d\u00edgito\r\n            }\r\n            delay(200);\r\n          }\r\n\r\n          \/\/ Actualizamos el contador seg\u00fan los valores de los d\u00edgitos\r\n\r\n          contador_dieselPro_M = contador_dieselPro_DISPLAY[3] * 1000 + contador_dieselPro_DISPLAY[2] * 100 + contador_dieselPro_DISPLAY[1] * 10 + contador_dieselPro_DISPLAY[0];\r\n\r\n          \/\/ Mostrar los d\u00edgitos en el display de 7 segmentos\r\n          cont();\r\n\r\n        } while (!salir);  \/\/ Se repite mientras no se confirme el \u00faltimo d\u00edgito\r\n\r\n        delay(500);\r\n\r\n        \/\/ Guardamos el valor final en la EEPROM\r\n        EEPROM.put(direc_dieselPro, contador_dieselPro_M);\r\n        EEPROM.commit();\r\n        \/\/ Regresamos al men\u00fa principal\r\n        contador = 0;\r\n        fn_menu(contador, menu1, sizemenu1);\r\n        level_menu = 1;\r\n      }\r\n\r\n      \/\/ &gt; GASOLINA 95\r\n      if (contador == 1) {\r\n        \/\/contador = contador_gasolina95_M;\r\n        lcd.clear();\r\n        int digitoActivo = 0;  \/\/ D\u00edgito actual (0: unidades, 1: decenas, 2: centenas, 3: millares)\r\n        bool salir = false;    \/\/ Control para salir del bucle\r\n\r\n        do {\r\n          \/\/ Actualizamos los d\u00edgitos en el arreglo seg\u00fan el contador\r\n          contador_gasolina95_DISPLAY[0] = contador_gasolina95_M % 10;          \/\/ Unidades\r\n          contador_gasolina95_DISPLAY[1] = (contador_gasolina95_M \/ 10) % 10;   \/\/ Decenas\r\n          contador_gasolina95_DISPLAY[2] = (contador_gasolina95_M \/ 100) % 10;  \/\/ Centenas\r\n          contador_gasolina95_DISPLAY[3] = (contador_gasolina95_M \/ 1000);      \/\/ Millares\r\n\r\n          lcd.setCursor(0, 0);\r\n          lcd.print(\"DIESEL PRO\");\r\n\r\n          \/\/ Mostrar el precio completo en el LCD\r\n          lcd.setCursor(0, 1);\r\n          lcd.print(\"Precio: \");\r\n          lcd.print(contador_gasolina95_DISPLAY[3]);  \/\/ Millares\r\n          lcd.print(contador_gasolina95_DISPLAY[2]);  \/\/ Centenas\r\n          lcd.print(contador_gasolina95_DISPLAY[1]);  \/\/ Decenas\r\n          lcd.print(contador_gasolina95_DISPLAY[0]);  \/\/ Unidades\r\n\r\n          \/\/ Mostrar el d\u00edgito activo en el LCD\r\n          lcd.setCursor(0, 2);\r\n          lcd.print(\"Digito: \");\r\n          lcd.print(digitoActivo);\r\n\r\n          \/\/ Incrementar o decrementar el d\u00edgito activo\r\n          if (digitalRead(in_A) == HIGH) {  \/\/ Incrementar\r\n            if (contador_gasolina95_DISPLAY[digitoActivo] &lt; 9) {\r\n              contador_gasolina95_DISPLAY[digitoActivo]++;\r\n            } else {\r\n              contador_gasolina95_DISPLAY[digitoActivo] = 0;  \/\/ Reinicia si llega a 9\r\n            }\r\n            delay(200);  \/\/ Peque\u00f1a espera para evitar m\u00faltiples incrementos\r\n          }\r\n\r\n          if (digitalRead(in_B) == HIGH) {  \/\/ Decrementar\r\n            if (contador_gasolina95_DISPLAY[digitoActivo] &gt; 0) {\r\n              contador_gasolina95_DISPLAY[digitoActivo]--;\r\n            } else {\r\n              contador_gasolina95_DISPLAY[digitoActivo] = 9;  \/\/ Reinicia si llega a 0\r\n            }\r\n            delay(200);  \/\/ Peque\u00f1a espera para evitar m\u00faltiples decrementos\r\n          }\r\n\r\n          \/\/ Cambiar el d\u00edgito activo\r\n          if (digitalRead(swPin) == HIGH) {  \/\/ Selecci\u00f3n de d\u00edgito\r\n            if (digitoActivo &lt; 3) {\r\n              digitoActivo++;  \/\/ Cambia al siguiente d\u00edgito\r\n            } else {\r\n              salir = true;  \/\/ Salimos del bucle al confirmar el \u00faltimo d\u00edgito\r\n            }\r\n            delay(200);\r\n          }\r\n\r\n          \/\/ Actualizamos el contador seg\u00fan los valores de los d\u00edgitos\r\n\r\n          contador_gasolina95_M = contador_gasolina95_DISPLAY[3] * 1000 + contador_gasolina95_DISPLAY[2] * 100 + contador_gasolina95_DISPLAY[1] * 10 + contador_gasolina95_DISPLAY[0];\r\n\r\n          \/\/ Mostrar los d\u00edgitos en el display de 7 segmentos\r\n          cont();\r\n\r\n        } while (!salir);  \/\/ Se repite mientras no se confirme el \u00faltimo d\u00edgito\r\n\r\n        delay(500);\r\n        EEPROM.put(direc_gasolina95, contador_gasolina95_M);  \/\/ Se agrega a EEPROM con la direcci\u00f3n primero y valor de la variable despu\u00e9s\r\n        EEPROM.commit();\r\n        contador = 1;\r\n        fn_menu(contador, menu1, sizemenu1);\r\n        level_menu = 1;\r\n      }\r\n\r\n      \/\/&gt; GASOLINA 90\r\n      if (contador == 2) {\r\n        contador = contador_gasolina90_M;\r\n        lcd.clear();\r\n       int digitoActivo = 0;  \/\/ D\u00edgito actual (0: unidades, 1: decenas, 2: centenas, 3: millares)\r\n        bool salir = false;    \/\/ Control para salir del bucle\r\n\r\n        do {\r\n          \/\/ Actualizamos los d\u00edgitos en el arreglo seg\u00fan el contador\r\n          contador_gasolina90_DISPLAY[0] = contador_gasolina90_M % 10;          \/\/ Unidades\r\n          contador_gasolina90_DISPLAY[1] = (contador_gasolina90_M \/ 10) % 10;   \/\/ Decenas\r\n          contador_gasolina90_DISPLAY[2] = (contador_gasolina90_M \/ 100) % 10;  \/\/ Centenas\r\n          contador_gasolina90_DISPLAY[3] = (contador_gasolina90_M \/ 1000);      \/\/ Millares\r\n\r\n          lcd.setCursor(0, 0);\r\n          lcd.print(\"DIESEL PRO\");\r\n\r\n          \/\/ Mostrar el precio completo en el LCD\r\n          lcd.setCursor(0, 1);\r\n          lcd.print(\"Precio: \");\r\n          lcd.print(contador_gasolina90_DISPLAY[3]);  \/\/ Millares\r\n          lcd.print(contador_gasolina90_DISPLAY[2]);  \/\/ Centenas\r\n          lcd.print(contador_gasolina90_DISPLAY[1]);  \/\/ Decenas\r\n          lcd.print(contador_gasolina90_DISPLAY[0]);  \/\/ Unidades\r\n\r\n          \/\/ Mostrar el d\u00edgito activo en el LCD\r\n          lcd.setCursor(0, 2);\r\n          lcd.print(\"Digito: \");\r\n          lcd.print(digitoActivo);\r\n\r\n          \/\/ Incrementar o decrementar el d\u00edgito activo\r\n          if (digitalRead(in_A) == HIGH) {  \/\/ Incrementar\r\n            if (contador_gasolina90_DISPLAY[digitoActivo] &lt; 9) {\r\n              contador_gasolina90_DISPLAY[digitoActivo]++;\r\n            } else {\r\n              contador_gasolina90_DISPLAY[digitoActivo] = 0;  \/\/ Reinicia si llega a 9\r\n            }\r\n            delay(200);  \/\/ Peque\u00f1a espera para evitar m\u00faltiples incrementos\r\n          }\r\n\r\n          if (digitalRead(in_B) == HIGH) {  \/\/ Decrementar\r\n            if (contador_gasolina90_DISPLAY[digitoActivo] &gt; 0) {\r\n              contador_gasolina90_DISPLAY[digitoActivo]--;\r\n            } else {\r\n              contador_gasolina90_DISPLAY[digitoActivo] = 9;  \/\/ Reinicia si llega a 0\r\n            }\r\n            delay(200);  \/\/ Peque\u00f1a espera para evitar m\u00faltiples decrementos\r\n          }\r\n\r\n          \/\/ Cambiar el d\u00edgito activo\r\n          if (digitalRead(swPin) == HIGH) {  \/\/ Selecci\u00f3n de d\u00edgito\r\n            if (digitoActivo &lt; 3) {\r\n              digitoActivo++;  \/\/ Cambia al siguiente d\u00edgito\r\n            } else {\r\n              salir = true;  \/\/ Salimos del bucle al confirmar el \u00faltimo d\u00edgito\r\n            }\r\n            delay(200);\r\n          }\r\n\r\n          \/\/ Actualizamos el contador seg\u00fan los valores de los d\u00edgitos\r\n\r\n          contador_gasolina90_M = contador_gasolina90_DISPLAY[3] * 1000 + contador_gasolina90_DISPLAY[2] * 100 + contador_gasolina90_DISPLAY[1] * 10 + contador_gasolina90_DISPLAY[0];\r\n\r\n          \/\/ Mostrar los d\u00edgitos en el display de 7 segmentos\r\n          cont();\r\n\r\n        } while (!salir);  \/\/ Se repite mientras no se confirme el \u00faltimo d\u00edgito\r\n        delay(500);\r\n        EEPROM.put(direc_gasolina90, contador_gasolina90_M);  \/\/ Se agrega a EEPROM con la direcci\u00f3n primero y valor de la variable despu\u00e9s\r\n        EEPROM.commit();\r\n        contador = 2;\r\n        fn_menu(contador, menu1, sizemenu1);\r\n        level_menu = 1;\r\n      }\r\n      \/\/&gt; GASOLINA 84\r\n      if (contador == 3) {\r\n        contador = contador_gasolina84_M;\r\n        lcd.clear();\r\n       int digitoActivo = 0;  \/\/ D\u00edgito actual (0: unidades, 1: decenas, 2: centenas, 3: millares)\r\n        bool salir = false;    \/\/ Control para salir del bucle\r\n\r\n        do {\r\n          \/\/ Actualizamos los d\u00edgitos en el arreglo seg\u00fan el contador\r\n          contador_gasolina84_DISPLAY[0] = contador_gasolina84_M % 10;          \/\/ Unidades\r\n          contador_gasolina84_DISPLAY[1] = (contador_gasolina84_M \/ 10) % 10;   \/\/ Decenas\r\n          contador_gasolina84_DISPLAY[2] = (contador_gasolina84_M \/ 100) % 10;  \/\/ Centenas\r\n          contador_gasolina84_DISPLAY[3] = (contador_gasolina84_M \/ 1000);      \/\/ Millares\r\n\r\n          lcd.setCursor(0, 0);\r\n          lcd.print(\"DIESEL PRO\");\r\n\r\n          \/\/ Mostrar el precio completo en el LCD\r\n          lcd.setCursor(0, 1);\r\n          lcd.print(\"Precio: \");\r\n          lcd.print(contador_gasolina84_DISPLAY[3]);  \/\/ Millares\r\n          lcd.print(contador_gasolina84_DISPLAY[2]);  \/\/ Centenas\r\n          lcd.print(contador_gasolina84_DISPLAY[1]);  \/\/ Decenas\r\n          lcd.print(contador_gasolina84_DISPLAY[0]);  \/\/ Unidades\r\n\r\n          \/\/ Mostrar el d\u00edgito activo en el LCD\r\n          lcd.setCursor(0, 2);\r\n          lcd.print(\"Digito: \");\r\n          lcd.print(digitoActivo);\r\n\r\n          \/\/ Incrementar o decrementar el d\u00edgito activo\r\n          if (digitalRead(in_A) == HIGH) {  \/\/ Incrementar\r\n            if (contador_gasolina84_DISPLAY[digitoActivo] &lt; 9) {\r\n              contador_gasolina84_DISPLAY[digitoActivo]++;\r\n            } else {\r\n              contador_gasolina84_DISPLAY[digitoActivo] = 0;  \/\/ Reinicia si llega a 9\r\n            }\r\n            delay(200);  \/\/ Peque\u00f1a espera para evitar m\u00faltiples incrementos\r\n          }\r\n\r\n          if (digitalRead(in_B) == HIGH) {  \/\/ Decrementar\r\n            if (contador_gasolina84_DISPLAY[digitoActivo] &gt; 0) {\r\n              contador_gasolina84_DISPLAY[digitoActivo]--;\r\n            } else {\r\n              contador_gasolina84_DISPLAY[digitoActivo] = 9;  \/\/ Reinicia si llega a 0\r\n            }\r\n            delay(200);  \/\/ Peque\u00f1a espera para evitar m\u00faltiples decrementos\r\n          }\r\n\r\n          \/\/ Cambiar el d\u00edgito activo\r\n          if (digitalRead(swPin) == HIGH) {  \/\/ Selecci\u00f3n de d\u00edgito\r\n            if (digitoActivo &lt; 3) {\r\n              digitoActivo++;  \/\/ Cambia al siguiente d\u00edgito\r\n            } else {\r\n              salir = true;  \/\/ Salimos del bucle al confirmar el \u00faltimo d\u00edgito\r\n            }\r\n            delay(200);\r\n          }\r\n\r\n          \/\/ Actualizamos el contador seg\u00fan los valores de los d\u00edgitos\r\n\r\n          contador_gasolina84_M = contador_gasolina84_DISPLAY[3] * 1000 + contador_gasolina84_DISPLAY[2] * 100 + contador_gasolina84_DISPLAY[1] * 10 + contador_gasolina84_DISPLAY[0];\r\n\r\n          \/\/ Mostrar los d\u00edgitos en el display de 7 segmentos\r\n          cont();\r\n\r\n        } while (!salir);  \/\/ Se repite mientras no se confirme el \u00faltimo d\u00edgito\r\n        delay(500);\r\n        EEPROM.put(direc_gasolina84, contador_gasolina84_M);  \/\/ Se agrega a EEPROM con la direcci\u00f3n primero y valor de la variable despu\u00e9s\r\n        EEPROM.commit();\r\n        contador = 3;\r\n        fn_menu(contador, menu1, sizemenu1);\r\n        level_menu = 1;\r\n      }\r\n      \/\/&gt;Atras\r\n      if (contador == 4) {\r\n        contador = 0;\r\n        level_menu = 0;\r\n        isCorrect = false;\r\n        password[0] = 0;\r\n        password[1] = 0;\r\n        password[2] = 0;\r\n        password[3] = 0;\r\n        updateLCD();\r\n      }\r\n      btnpress = false;  \/\/  Nos aseguramos que esta variable de retorno de la funcion selectOption() vuelva a su estado inicial\r\n    }\r\n  }  \/\/\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\r\n\r\n}  \/\/\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\r\n\r\nvoid updateLCD() {\r\n  lcd.clear();\r\n  lcd.setCursor(0, 0);\r\n  lcd.print(\"Ingrese Contra:\");\r\n  lcd.setCursor(0, 1);\r\n\r\n  for (int i = 0; i &lt; 4; i++) {\r\n    if (i == currentPosition) {\r\n      lcd.print(password[i]);\r\n    } else {\r\n      lcd.print(\"*\");  \/\/ Mostrar asteriscos para los d\u00edgitos confirmados\r\n    }\r\n    lcd.print(\" \");\r\n  }\r\n}\r\n\r\nvoid verifyPassword() {\r\n  isCorrect = true;\r\n\r\n  for (int i = 0; i &lt; 4; i++) {\r\n    if (password[i] != correctPassword[i]) {\r\n      isCorrect = false;\r\n      break;\r\n    }\r\n  }\r\n\r\n  lcd.clear();\r\n  lcd.setCursor(0, 0);\r\n\r\n  if (isCorrect) {\r\n    lcd.print(\"Contra correct\");\r\n  } else {\r\n    lcd.print(\"Contra Incorrect\");\r\n  }\r\n\r\n  delay(2000);  \/\/ Esperar 2 segundos antes de resetear\r\n}\r\n\r\nvoid selectOption() {  \/\/funcion para leer el pulsador de ok\r\n  if (digitalRead(swPin) == HIGH) {\r\n    delay(500);\r\n    btnpress = true;\r\n  }\r\n}\r\n\r\nvoid fn_contador_INC_DEC() {  \/\/ FUNCION INCREMENTAR Y DECREMENTAR\r\n\r\n  if (digitalRead(in_A) == HIGH) {\r\n    contador++;\r\n    delay(250);\r\n  } else if (digitalRead(in_B) == HIGH) {\r\n    contador--;\r\n    delay(250);\r\n  }\r\n\r\n  \/*if (contador &gt; 9) {\r\n    contador = 9;\r\n  }*\/\r\n  if (contador &lt; 0) {\r\n    contador = 0;\r\n  }\r\n}\r\n\r\nvoid fn_menu(int pos, String menus[], byte sizemenu) {  \/\/ funcion de desplazamiento de los men\u00fas\r\n  lcd.clear();\r\n  linea1 = \"\";\r\n  linea2 = \"\";\r\n\r\n  if ((pos % 2) == 0) {\r\n\r\n    lcd.setCursor(0, 0);\r\n    lcd.write(byte(0));\r\n    linea1 = menus[pos];\r\n\r\n    if (pos + 1 != sizemenu) {\r\n      linea2 = menus[pos + 1];\r\n    }\r\n\r\n  } else {\r\n    linea1 = menus[pos - 1];\r\n    lcd.setCursor(0, 1);\r\n    lcd.write(byte(0));\r\n    linea2 = menus[pos];\r\n  }\r\n\r\n  lcd.setCursor(1, 0);\r\n  lcd.print(linea1);\r\n\r\n  lcd.setCursor(1, 1);\r\n  lcd.print(linea2);\r\n}\r\n\r\nbool fnSwitch(byte sizemenu) {  \/\/Lee las se\u00f1ales de los pulsadores, exepto el de ok\r\n  bool retorno = false;\r\n  if (digitalRead(in_A) == HIGH || digitalRead(in_B) == HIGH) {\r\n    if (digitalRead(in_A) == HIGH) {\r\n      contador++;\r\n      delay(250);\r\n    } else if (digitalRead(in_B) == HIGH) {\r\n      contador--;\r\n      delay(250);\r\n    }\r\n\r\n    if (contador &lt;= 0) {\r\n      contador = 0;\r\n    }\r\n\r\n    if (contador &gt;= sizemenu - 1) {\r\n      contador = sizemenu - 1;\r\n    }\r\n\r\n    retorno = true;\r\n  }\r\n  return retorno;\r\n}\r\n\r\nvoid init_displays() {\r\n  contador_gasolina84_DISPLAY[0] = contador_gasolina84_M % 10;          \/\/unidades\r\n  contador_gasolina84_DISPLAY[1] = (contador_gasolina84_M \/ 10) % 10;   \/\/decenas\r\n  contador_gasolina84_DISPLAY[2] = (contador_gasolina84_M \/ 100) % 10;  \/\/centenas\r\n  contador_gasolina84_DISPLAY[2] = (contador_gasolina84_M \/ 100);       \/\/centenas\r\n\r\n  contador_gasolina90_DISPLAY[0] = contador_gasolina90_M % 10;          \/\/unidades\r\n  contador_gasolina90_DISPLAY[1] = (contador_gasolina90_M \/ 10) % 10;   \/\/decenas\r\n  contador_gasolina90_DISPLAY[2] = (contador_gasolina90_M \/ 100) % 10;  \/\/centenas\r\n  contador_gasolina90_DISPLAY[2] = (contador_gasolina90_M \/ 100);       \/\/centenas\r\n\r\n  contador_gasolina95_DISPLAY[0] = contador_gasolina95_M % 10;          \/\/unidades\r\n  contador_gasolina95_DISPLAY[1] = (contador_gasolina95_M \/ 10) % 10;   \/\/decenas\r\n  contador_gasolina95_DISPLAY[2] = (contador_gasolina95_M \/ 100) % 10;  \/\/centenas\r\n  contador_gasolina95_DISPLAY[2] = (contador_gasolina95_M \/ 100);       \/\/centenas\r\n\r\n  contador_dieselPro_DISPLAY[0] = contador_dieselPro_M % 10;\r\n  contador_dieselPro_DISPLAY[1] = (contador_dieselPro_M \/ 10) % 10;\r\n  contador_dieselPro_DISPLAY[2] = (contador_dieselPro_M \/ 100) % 10;\r\n  contador_dieselPro_DISPLAY[2] = (contador_dieselPro_M \/ 1000);\r\n}\r\n\r\nvoid cont() {  \/\/funncion salidas para los displays\r\n  digitalWrite(latch, LOW);\r\n  \/\/gasolina84\r\n  shiftOut(data, clockpin, MSBFIRST, NUM[contador_gasolina84_DISPLAY[0]]);\r\n  shiftOut(data, clockpin, MSBFIRST, NUM[contador_gasolina84_DISPLAY[1]]);\r\n  shiftOut(data, clockpin, MSBFIRST, NUM[contador_gasolina84_DISPLAY[2]]);\r\n  shiftOut(data, clockpin, MSBFIRST, NUM[contador_gasolina84_DISPLAY[3]]);\r\n\r\n  \/\/gasolina90\r\n  shiftOut(data, clockpin, MSBFIRST, NUM[contador_gasolina90_DISPLAY[0]]);\r\n  shiftOut(data, clockpin, MSBFIRST, NUM[contador_gasolina90_DISPLAY[1]]);\r\n  shiftOut(data, clockpin, MSBFIRST, NUM[contador_gasolina90_DISPLAY[2]]);\r\n  shiftOut(data, clockpin, MSBFIRST, NUM[contador_gasolina90_DISPLAY[3]]);\r\n\r\n  \/\/gasolina95\r\n  shiftOut(data, clockpin, MSBFIRST, NUM[contador_gasolina95_DISPLAY[0]]);\r\n  shiftOut(data, clockpin, MSBFIRST, NUM[contador_gasolina95_DISPLAY[1]]);\r\n  shiftOut(data, clockpin, MSBFIRST, NUM[contador_gasolina95_DISPLAY[2]]);\r\n  shiftOut(data, clockpin, MSBFIRST, NUM[contador_gasolina95_DISPLAY[3]]);\r\n\r\n  \/\/dieselPro\r\n  shiftOut(data, clockpin, MSBFIRST, NUM[contador_dieselPro_DISPLAY[0]]);\r\n  shiftOut(data, clockpin, MSBFIRST, NUM[contador_dieselPro_DISPLAY[1]]);\r\n  shiftOut(data, clockpin, MSBFIRST, NUM[contador_dieselPro_DISPLAY[2]]);\r\n  shiftOut(data, clockpin, MSBFIRST, NUM[contador_dieselPro_DISPLAY[3]]);\r\n\r\n  digitalWrite(latch, HIGH);\r\n}<\/pre>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<\/div><\/div><\/div><\/div><\/div><\/section><section class=\"l-section wpb_row height_medium\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row type_default valign_top\"><div class=\"vc_col-sm-2 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><\/div><\/div><\/div><div class=\"vc_col-sm-10 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\">\r\n\t<div class=\"wpb_text_column  vc_custom_1736048061665\">\r\n\t\t<div class=\"wpb_wrapper\">\r\n\t\t\t<h5><span id=\"ESPECIFICACIONES_TECNICAS\">VIDEO<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-265 alignnone\" src=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png\" alt=\"\" width=\"1080\" height=\"36\" srcset=\"https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-300x10.png 300w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-1024x33.png 1024w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores-768x25.png 768w, https:\/\/www.electroallweb.com\/wp-content\/uploads\/2019\/11\/linea-electroall-de-colores.png 1624w\" sizes=\"(max-width: 1080px) 100vw, 1080px\" \/><\/span><\/h5>\n\r\n\t\t<\/div>\r\n\t<\/div>\r\n<div class=\"w-video ratio_16x9\"><div class=\"w-video-h\"><iframe loading=\"lazy\" width=\"420\" height=\"315\" src=\"\/\/www.youtube.com\/embed\/X_Kj3LwboJE\" allowfullscreen><\/iframe><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/section>\n","protected":false},"excerpt":{"rendered":"Facebook Facebook YouTube YouTube Instagram Instagram GitHub GitHub INTRODUCCI\u00d3N Hoy les mostrar\u00e9 una maqueta de un panel de precios para gasolineras. En este panel, podemos ver el precio del Diesel, luego los precios de la Gasolina 95, 90 y 84. M\u00e1s abajo tenemos una pantalla con tres pulsadores, que nos permiten configurar los precios de...","protected":false},"author":2,"featured_media":3246,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[1],"tags":[],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.electroallweb.com\/index.php\/wp-json\/wp\/v2\/posts\/3242"}],"collection":[{"href":"https:\/\/www.electroallweb.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.electroallweb.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.electroallweb.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.electroallweb.com\/index.php\/wp-json\/wp\/v2\/comments?post=3242"}],"version-history":[{"count":3,"href":"https:\/\/www.electroallweb.com\/index.php\/wp-json\/wp\/v2\/posts\/3242\/revisions"}],"predecessor-version":[{"id":3250,"href":"https:\/\/www.electroallweb.com\/index.php\/wp-json\/wp\/v2\/posts\/3242\/revisions\/3250"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.electroallweb.com\/index.php\/wp-json\/wp\/v2\/media\/3246"}],"wp:attachment":[{"href":"https:\/\/www.electroallweb.com\/index.php\/wp-json\/wp\/v2\/media?parent=3242"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.electroallweb.com\/index.php\/wp-json\/wp\/v2\/categories?post=3242"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.electroallweb.com\/index.php\/wp-json\/wp\/v2\/tags?post=3242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}