bclose

MEDIDOR DE CARGA BATERIAS Li-Po

Comprobando la situación de las baterías
CategoríaProyecto de usuario
AutorSuso
Fecha06/05/2016
ConceptoMedidor de carga de baterías LIPO.
DescripciónUn proyecto que combina un LCD de 16×02 y un Arduino Nano para montar un medidor de carga de baterías
DificultadMedia

 

 

Material requerido.

Imagen de Arduino UNOArduino Nano (también vale el Uno o el Mega)
Display LCDUn display LCD, de 16×2 o LCD 20×4, I2C.
componente3 x Resistencias de 330 Ω

 

rojo verde amarillo 3 LEDs, rojo, amarillo y verde
ProtoboardUna Protoboard .
conexionesAlgunos cables de protoboard, preferiblemente Dupont macho/hembra.
PotPotenciómetro de 10K
Multimetro sencillo Multimetro

 

Diagrama de conexion

 

Esquema proto board

El funcionamiento es muy sencillo. Arduino lee por la entrada analógica A0 el voltaje que tiene la batería, y lo compara con la referencia de 5V, que es a la que él trabaja, mostrando dicho voltaje por el display LCD.

Así mismo, hace un cálculo del porcentaje de carga de dicha batería, en base a que a plena carga (4.2V) nos dará el 100% y a 3.2V la carga será del 0%. Esto valores vienen porque estas baterías a plena carga arrojan un valor de 4.2V y durante su uso, el voltaje de las mismas no debe caer por debajo de 3.2V pues se pueden ir dañando y mermar sus capacidades. Se puede modificar el valor de carga mínima con tan solo modificarlo en el sketch.

Para un control a simple vista, se utilizan tres LEDs de colores verde, amarillo y rojo. El primer estará encendido hasta una carga del 40%. A partir de ahí se encenderá el amarillo hasta que la carga sea del 10% en el que se enciende el rojo, indicándonos que pronto habrá que recargar la la batería.

Igualmente, estos porcentajes se pueden modificar en el sketch y darles otros rangos.

El potenciómetro lo utilizamos como offset (Ajuste de voltaje). El proyecto está ideado para alimentarlo con una fuente externa de 5V, como puede ser un cargador de móvil y un cable modificado para alimentar la protoboard con esos 5V. De esta manera, alimentamos a Arduino y al display LCD.

Muestra la medida de voltaje

Como los cargadores o fuentes no siempre entregan 5V exactos, y pueden oscilar entre 4.85V y 4.90V (también 5.3V), Arduino estará alimentado por ese voltaje, y su ADC (Conversor Analógico Digital) también, y hará la conversión en base a ese voltaje, no a 5V. Pero en el sketch hacemos el cálculo en base a 5V y debemos corregir esa diferencia.

Para eso usamos el potenciometro,y seleccionando entre un rango de valores predeterminado podemos ajustar esa diferencia, con la ayuda de un multímetro. Una vez ajustado, ya no es necesario mientras usemos la misma fuente de alimentación.

El condensador de 100uF le he colocado para estabilizar un poco la tensión de alimentación, y evitar demasiadas fluctuaciones.

En esta foto se muestra la precisión comparado con un multímetro. Se puede observar que para la fuente de alimentación utilizada, el offset se estableció en 42.

COnfirmando con la medida del voltimetro

 

El programa de control

 

Este es el sketch

/* Sensor de voltaje para baterías Li-Po de una celda (1S).
   * Se toma el voltaje de la batería a través de la entrada A0.
   * Se muestra el voltaje y el porcentaje de carga por un display LCD I2C 1602
   * Además, tenemos tres LEDs que se van encendiendo dependiendo de la carga.
   * verde = hasta 40%
   * amarillo = hasta
   *   4.2 = 100% (máximo voltaje, máxima carga)
   *   3.2 = 0%   (mínimo voltaje de seguridad)
   *  
   * IMPORTANTE: La tensión que entra por USB o por el pin de 5V (Nano),
   * afecta a la precisión, ya que ésta puede ser difente de 5.0V en algunos mV.
   * El ADC utiliza el voltaje de alimentación como voltaje de referencia.
   * Utilizamos un potenciómetro para regular el voltaje de offset, y regular
   * la precisión, con la ayuda de un multímetro.
   *
   *
   * Por Suso. 19/04/2016
   */

  #include <LiquidCrystal_I2C.h>
  #include <Wire.h>
    /* Funcion de configuracion de pines del modulo 
       LCD/I2C (Direccion,en,rw,rs,d4,d5,d6,d7,backlight,polaridad)
    */

  LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
  byte pinV=A0; // Para leer el voltaje
  byte ledR=12; // LED rojo
  byte ledA=11; // LED amarillo
  byte ledV=10; // LED verde  

  float voltaje=0.0;
  int medida=0;
  int porcent=0;
  int pinOffset=A1;
  float offset=0.0;
  int valorPot = 0;

  unsigned long tAntes =0; // para el refresco de pantalla
  unsigned long tAhora =0;
  unsigned long tEjec =10000;

  void setup() 
     { lcd.begin(16,2); // inicializamos el LCD.
       lcd.backlight(); // encendemos la retroiluminación.
       pinMode(ledR, OUTPUT);
       pinMode(ledA, OUTPUT);
       pinMode(ledV, OUTPUT);
       Serial.begin(9600);
       digitalWrite(ledR, LOW);
       digitalWrite(ledA, LOW);
       digitalWrite(ledV, HIGH);
     }

void loop() 
    { tAhora = millis();              // Comprobamos para refrescar el LCD
      if( tAhora - tAntes >= tEjec)
        {  // cada 10 segundos
           tAntes = tAhora; // actualizamos variables
           lcd.clear();     // Refrescamos
        }

    medida = analogRead(pinV); // Leemos voltaje de la batería
    valorPot = analogRead(pinOffset); //Leemos ajuste de offset
    int ajuste = map (valorPot, 0,1023,60,5); // Mapeamos a un rango más corto

/* Podemos jugar con los dos últimos valores de la función map. Cuanta más diferencia
   haya entre ellos, menos precisión tendremos con el potenciómetro.
   El valor más grande es para voltajes más lejanos de 5V. El más pequeño para
   las fuentes muy cercanas a 5V. Así, con una fuente de 4.90V el valor de offset será
   de 9 ó 10.
*/

offset = (ajuste/100.0);
lcd.setCursor(12,1);
lcd.print (offset);
voltaje= ((((medida*5.0)/1023.0))- offset); // Convertimos a valor con decimales
if (voltaje<=0)
   { // Si es menor o igual a cero
     voltaje=0.0;  // Le damos valor 0, para evitar negativos
   }

porcent=((voltaje*100)-320); // Fórmula para mostrar el porcentaje de carga
if(porcent<=0)
   { // Evitamos valores negativos
     porcent=0;
   }

// Condicionales para encender los LEDs
if(porcent>=41)
  {  digitalWrite(ledR, LOW);
     digitalWrite(ledA, LOW);
     digitalWrite(ledV, HIGH);
  }

if(porcent<41 && porcent>10)
  {  digitalWrite(ledR, LOW);
     digitalWrite(ledA, HIGH);
     digitalWrite(ledV, LOW);
  }

if(porcent<=10)
  {  digitalWrite(ledR, HIGH);
     digitalWrite(ledA, LOW);
     digitalWrite(ledV, LOW);
  }

lcd.setCursor(0,0);
lcd.print("Voltaje: ");
lcd.print(voltaje);
lcd.print("V");
lcd.setCursor(0,1);
lcd.print("Carga: ");
lcd.print(porcent);
lcd.print("%    ");

//Descomentar para mostrar por monitor serial.
//Serial.print(medida); Serial.print("   ");
//Serial.print(voltaje);Serial.print("   ");
//Serial.print(porcent); Serial.println("%");

delay(1000);
}

Aquí una foto del medidor funcionando, con una batería de móvil en desuso:

Prototipo de medidor

Podríamos añadir un buzzer que nos avisara también cuando el nivel de voltaje llegase a un límite crítico.

Espero le guste.

Saludos.

01/05/2016

 

 

 

 

(39) Comments

  • Hola a todos.

    Siento que haya gente que no ha podido compilar el sketch, y es porque no he actualizado practicamente ninguna librería a día de hoy. La única vez que lo hice, me generó más problemas que beneficios, y opté por mantener las que había probado y funcionaban bien.
    El sketch está escrito con una versión antigua de la librería, y obviamente hay instrucciones que han cambiado. Esto me hace reflexionar en que debería haber incluido la versión de la librería que utilicé (añadiendo un enlace para descarga) y así alertar de posibles incompatibilidades con versiones nuevas.

    Muchos saludos.

  • He utilizado dos versiones distintas de IDE. He desinstalado e instalado la librería y sigue dando el mismo error al compilar.

    Arduino:1.6.5 (Windows 8.1), Placa:”Arduino Uno”

    sketch_oct11a:26: error: ‘POSITIVE’ was not declared in this scope
    ‘POSITIVE’ was not declared in this scope

    This report would have more information with
    “Show verbose output during compilation”
    activala desde Archivo > Preferencias

    • Hola Francisco,

      Si miras un poco en los comentarios encontraras que David planteo una solucion para esto:

      ya lo solucione pero como aporte al codigo hay un problema en 2 lineas
      LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
      para hacerlo funcionar debemos de modificar la linea
      por ejemplo:
      LiquidCrystal_I2C lcd(0x3F, 16,2);
      y en la otra linea
      lcd.begin(16,2); // inicializamos el LCD.
      quedaría así:
      lcd.begin();

  • Estoy intentando utilizar este sketch pero me da error en la siguiente línea del código:

    LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

    El error que indica el IDE es:

    exit status 1
    ‘POSITIVE’ was not declared in this scope

    Saludos

    • Hola Francisco, parece un problema de la librería. Yo probaría a desinstalarla y a incluir la última versión. Un saludo.

    • Antonio

    HOLA:

    3.2 = 0% (mínimo voltaje de seguridad) ???

    ¿No seria lo correcto situar este valor sobre los 2.6 voltios que es
    el valor habitual de la tension de corte de los dispositivos de protección
    par baterías LI-POa ?

    • Hola Antonio.

      Según pude leer en algunas páginas y tutoriales al respecto, recomendaban no bajar de ese voltaje. En el caso de su vida útil se hubiera acabado, sí recomendaban descargarlas hasta los 2.5V para luego depositarlas en un Punto de reciclaje. En algún sitio recomendaban incluso descargarlas completamente sumergiéndolas en agua salada 24h.

      Aún así, siempre puedes modificar los valores en el sketch, para tener otro rango.

      Saludos.

  • Perdonen mi No conocimiento, pero no acabo de entender como funciona el offset, es necesario para el circuito o se lo puede quitar?

    • Hola Matias.
      La regulación de offset es necesaria porque el cálculo ideal sería con una alimentación exacta de 5V. Como esto casi nunca es así, pues las fuentes de alimentación pueden entregar desde 4.88V hasta los 5.2V, aunque nominalmente marquen 5V. Si a Arduino lo alimentamos con 4.90V funcionará perfectamente, pero el conversor ADC hará la conversión de su lectura en base a ese voltaje, no a 5V que es como sería la fórmula ideal. Por eso se añade la regulación de offset, que añade esa diferencia de voltaje entre los 5V ideales y el voltaje real.
      Si no añadieras esa regulación, Arduino te podría arrojar un valor de 3.9V cuando en realidad son 3.5V, por ejemplo.

      Saludos.

      • Entonces cada vez que le conectamos los “5V” tendriamos que regular el offset?, ya que yo lo quiero armar y dejarlo asi sin modificarlo…

        Saludos.

        • El tema de offset me surgió porque cuando estuve escribiendo el sketch y probando el sistema, que fue en diferente días, usaba distintas fuentes de alimentación. Además, me percaté de que conectado al USB del PC me daba unas lecturas, y con la FA externa otras. Fue ahí donde surgió lo del control de offset. Si usas la misma fuente de alimenación, está perfectamente estabilizada, siempre entrega el mismo voltaje, creo que solo tienes que ajustarlo (con ayuda de multímetro) una sola vez. Las siguientes veces que conectes el sistema, como el voltaje es el mismo, el offset será el mismo.
          Los LEDs indicadores los puedes sustituir por un RGB pero debes modificar el sketch para que genere los colores (es algo que se me ocurrió más tarde). O simplemente los quitas y dejas solo el display LCD. También puedes modificar la parte del display para que éste se encuentre apagado todo el rato (para ahorrar energía) y que se encienda con un pulsador. Esto ya es al gusto del consumidor.

          Saludos.

    • Jonathan

    tambien se puede medir la corriente y si no, como se podria medir

    • claro que si jonathan, puedes usar un polimetrl para medir la intensidad de clfriente qje ckrcula o si prefieres leerlo desde arduino usar un sensor dd corriente como los que tienes en la tienda

    • Manuel

    Hola, estoy intentando hacer algo parecido y me ocurre algo curioso, al conectar la batería a A0 el led POWER se enciende sin tener nada más conectado ¿Por qué puede ser?
    Gracias.

  • Hola, soy nuevo esto y no entiendo bien como van las conexiones del arduino al LCD, si alguien me podría enseñar porfavor

    • Hola Victor, echa una ojeada a la seccion displays del menu y encontraras un par de sesiones dedicadas a conectar un display de estos con y sin I2C

    • Jesús

    Mil gracias de nuevo.

    • Jesús

    Hola de nuevo, gracias por tu interés.
    Lo que estoy montando lleva un circuito de los que se usan en los cargadores de baterías portátiles, que tiene una salida USB que mantiene la tensión estable a 5V a partir de una tensión de batería de 3V (por debajo la protege) así que no creo que tenga problemas de offset, en cualquier caso montaré el potenciómetro para afinar el ajuste. En cuanto a la señalización, tengo varias opciones, pero estoy pensando que con el Arduino puedo hacer parpadear un LED cuando la batería esté cargada y dejarlo fijo cuando esté cargando.

    Por cierto, ¿sabes dónde podría encontrar alguan aplicación con el modo Sleep del Arduino?. Hace años usaba el PIC16F84 y el Sleep era muy fácil de usar, pero del Arduino solo encuentro “teoría”.

    Un saludo.

    • Pues precisamente, los últimos tutoriales aquí, en Prometec hablan de eso. Mira las últimas entradas de la página y aparte de la explicación teórica, hay sketch mostrando como funciona.

      Saludos.

    • Jesús

    Hola,
    Muchísimas gracias, porque es justo lo que necesito.
    Resulta que el circuito que he diseñado y probado en protoboard me consume 25mA y como solo necesito el Arduino, porque no voy a presentar el voltaje, solo controlar la carga y descarga de la batería resulta que me da muchas más posibilidades de ajuste, necesito menos componentes y me ocupa la mitad que mi prototipo.

    • Por nada, Jesús.

      Ten en cuenta una cosa: el ajuste del sketch. Como comento en el tutorial, el voltaje de alimentación que recibe Arduino es la referencia que él usa para mostrar el voltaje de la batería. Por lo tanto, sugiero que montes de forma provisional un display LCD I2C (porque éste va con 4 cables) para ver que voltaje está midiendo nuestro microcontrolador, además de un multímetro. En el proyecto usé un potenciómetro para el ajuste de offset, pero tú podrías usar uno de esos pequeños de preset, para no tener que quitarlo cuando esté calibrado.
      Por otro lado, sí podrías añadir un LED, el rojo, que sólo se enciende cuando el nivel es crítico (recuerda que puedes modificar el voltaje crítico o porcentaje, mejor dicho). Como la mayor parte del tiempo está apagado, no consume. También puedes modificar el sketch añadiendo un condicional que encienda este LED cuando el voltaje pase de, p. ej. 3.4V, estando muy cerca de la zona crítica.

      Saludos.

    • Jesús

    Hola, tengo una idea para hacer una lámpara de emergencia con unos LEDs que tengo por casa y una batería Li-ion de 3.7V. La cuestión es si has medido cuánto consume tu circuito, porque para mi montaje es importante que el circuito de control no consuma demasiado y acorte el tiempo de encendido de la lámpara.
    Gracias de antemano.

    • Hola tocayo.

      No recuerdo haberlo medido, pero te puedo decir por mediciones separadas de algunos componentes que aproximadamente 45 – 55mA. Quita los LEDs indicadores y te ahorras 20mA. Si añades un pulsador, podrías controlar el tiempo de encendido del display, y al pulsarlo que éste se encienda un breve tiempo para luego volver a apagarse. Ahí te ahorras otros miliamperios.
      Si simplemente es un Arduino que debe controlar el voltaje para que no baje de 3.2V, pues el consumo será de unos 22mA para un Nano (es lo que yo he medido).

      Espero te sirva.

      Saludos.

    • William David Arreola Santiago

    Hola!! Se podría adaptar a una lcd normal??? osea sin I2C….
    Gracias…

    • Claro que si, habria que modificar un poco las conexiones, pero el programa casi no habria que tocarlo

  • Hola, primero gracias por compartir este proyecto. Me gustaria saber si se puede usar para comprobar baterias lipo de 3 y 4 s 12,6v y 14,8v respectivamente, soy nuevo en este mundo y estoy mas perdido que un pulpo en un garaje, gracias de antemano.

    Un saludo.

    • Hola Lolo.

      En teoría, si se puede. Tan solo hay que montar un divisor resistivo que baje esos 12.6V a 5V (o un poco menos, por seguridad), pues Arduino no puede medir más de 5V. Entonces, cuando él reciba 5V por su entrada analógica, significará que la batería tiene 12.6V. Se pierde precisión, pues está mapeando 12.6V a 5V, pero teóricamente se podría.

      Yo no lo he probado, pues mis Li-Po son de 1S, pero calcula bien el divisor resistivo antes de conectarlo a Arduino. Realiza muchas mediciones con multímetro y la batería a plena carga, a ver si a la salida del divisor te entrega 5V, o si es un poco menos, mejor. No quiero ser responsable de que achicharres tu placa.
      Tienes que estar muy seguro de lo que estás haciendo. Una subida de voltaje a la entrada analógica y se acabó.

      Saludos.

      • Muchas gracias por su pronta respuesta, en caso de que mi arduino se achicharre no pasa nada de alguna manera hay que aprender ;), todos debemos ser conscientes que seguir un tutorial pueden suceder cosas inesperadas y nunca se debe culpar al que comparte que con su contribucion a la comunidad esta enseñando a los que empezamos.

        Muchas gracias, un saludo.

        • Por nada. Yo también hago muchas preguntas en otros foros. ¿Tienes claro lo del divisor resistivo? Con poco que andes por Internet te vas a encontrar como es. Puedes hacer en Excell la fórmula para el divisor resistivo y ver que resistencias debes poner para obtener los 5V (o un poco menos). Te servirá de referencia, pero siempre debes medirlo realmente, pues las resistencias comerciales tienen un margen de tolerancia.

          Saludos.

          • si eso lo tengo claro, si no recuerdo mal la r1 es de 100k y las r2 es de 200k y saca un voltaje de 4,9

            Gracias por el interes, saludos.

  • Hola Jesús.

    Te felicito por el proyecto y tutorial, además creo que abre una gran puerta hacia proyectos de cierta portabilidad, pudiendo controlar en todo momento su autonomía. Me parece un detalle súper importante el haber explicado la diferencia que puede existir entre la utilización de una fuente u otra, así como, la facilidad de adaptación hacia otras tecnologías.

    En mi caso concreto lo voy a montar con unas baterías Li-Ion de 3.7V y 3.000mA que tengo por aquí para cacharrear, a falta del potenciómetro de 10K, aunque la tecnología es distinta a las Li-Po, creo que se adaptarán perfectamente.

    Por otro lado, si que me gustaría que David comentara el modelo de LCD I2C que utiliza, mas que nada por saber como controlarlo y cual son sus peculiaridades.

    Saludos,
    Man

    • Gracias Manuel.

      En teoría, aunque no lo he probado, con un simple divisor resistivo se pueden supervisar baterías de otros voltajes, teniendo en cuenta de adaptar la tensión de entrada un valor inferior a 5V. Añadir un zener de 5.1V no estaría mal por seguridad.

      Saludos.

  • Gracias David.
    ¿Que modelo de LCD usas? ¿Es similar al mío?

  • /* Sensor de voltaje para baterías Li-Po de una celda (1S).
    * Se toma el voltaje de la batería a través de la entrada A0.
    * Se muestra el voltaje y el porcentaje de carga por un display LCD I2C 1602
    * Además, tenemos tres LEDs que se van encendiendo dependiendo de la carga.
    * verde = hasta 40%
    * amarillo = hasta
    * 4.2 = 100% (máximo voltaje, máxima carga)
    * 3.2 = 0% (mínimo voltaje de seguridad)
    *
    * IMPORTANTE: La tensión que entra por USB o por el pin de 5V (Nano),
    * afecta a la precisión, ya que ésta puede ser difente de 5.0V en algunos mV.
    * El ADC utiliza el voltaje de alimentación como voltaje de referencia.
    * Utilizamos un potenciómetro para regular el voltaje de offset, y regular
    * la precisión, con la ayuda de un multímetro.
    *
    *
    * Por Suso. 19/04/2016
    */

    #include
    #include
    /* Funcion de configuracion de pines del modulo
    LCD/I2C (Direccion,en,rw,rs,d4,d5,d6,d7,backlight,polaridad)
    */

    LiquidCrystal_I2C lcd(0x3F, 16, 2); //modificar el modelo del I2C dependiendo el de cada quien
    byte pinV=A0; // Para leer el voltaje
    byte ledR=12; // LED rojo
    byte ledA=11; // LED amarillo
    byte ledV=10; // LED verde

    float voltaje=0.0;
    int medida=0;
    int porcent=0;
    int pinOffset=A1;
    float offset=0.0;
    int valorPot = 0;

    unsigned long tAntes =0; // para el refresco de pantalla
    unsigned long tAhora =0;
    unsigned long tEjec =10000;

    void setup()
    { lcd.begin(); // inicializamos el LCD.
    lcd.backlight(); // encendemos la retroiluminación.
    pinMode(ledR, OUTPUT);
    pinMode(ledA, OUTPUT);
    pinMode(ledV, OUTPUT);
    Serial.begin(9600);
    digitalWrite(ledR, LOW);
    digitalWrite(ledA, LOW);
    digitalWrite(ledV, HIGH);
    }

    void loop()
    { tAhora = millis(); // Comprobamos para refrescar el LCD
    if( tAhora – tAntes >= tEjec)
    { // cada 10 segundos
    tAntes = tAhora; // actualizamos variables
    lcd.clear(); // Refrescamos
    }

    medida = analogRead(pinV); // Leemos voltaje de la batería
    valorPot = analogRead(pinOffset); //Leemos ajuste de offset
    int ajuste = map (valorPot, 0,1023,60,5); // Mapeamos a un rango más corto

    /* Podemos jugar con los dos últimos valores de la función map. Cuanta más diferencia
    haya entre ellos, menos precisión tendremos con el potenciómetro.
    El valor más grande es para voltajes más lejanos de 5V. El más pequeño para
    las fuentes muy cercanas a 5V. Así, con una fuente de 4.90V el valor de offset será
    de 9 ó 10.
    */

    offset = (ajuste/100.0);
    lcd.setCursor(12,1);
    lcd.print (offset);
    voltaje= ((((medida*5.0)/1023.0))- offset); // Convertimos a valor con decimales
    if (voltaje<=0)
    { // Si es menor o igual a cero
    voltaje=0.0; // Le damos valor 0, para evitar negativos
    }

    porcent=((voltaje*100)-320); // Fórmula para mostrar el porcentaje de carga
    if(porcent=41)
    { digitalWrite(ledR, LOW);
    digitalWrite(ledA, LOW);
    digitalWrite(ledV, HIGH);
    }

    if(porcent10)
    { digitalWrite(ledR, LOW);
    digitalWrite(ledA, HIGH);
    digitalWrite(ledV, LOW);
    }

    if(porcent<=10)
    { digitalWrite(ledR, HIGH);
    digitalWrite(ledA, LOW);
    digitalWrite(ledV, LOW);
    }

    lcd.setCursor(0,0);
    lcd.print("Voltaje: ");
    lcd.print(voltaje);
    lcd.print("V");
    lcd.setCursor(0,1);
    lcd.print("Carga: ");
    lcd.print(porcent);
    lcd.print("% ");

    //Descomentar para mostrar por monitor serial.
    //Serial.print(medida); Serial.print(" ");
    //Serial.print(voltaje);Serial.print(" ");
    //Serial.print(porcent); Serial.println("%");

    delay(1000);
    }

  • ya lo solucione pero como aporte al codigo hay un problema en 2 lineas
    LiquidCrystal_I2C lcd(0x3F, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
    para hacerlo funcionar debemos de modificar la linea
    por ejemplo:
    LiquidCrystal_I2C lcd(0x3F, 16,2);
    y en la otra linea
    lcd.begin(16,2); // inicializamos el LCD.
    quedaría así:
    lcd.begin();

    ya con eso va a funcionar sin ningún problema y un detalle que falto mencionar es la versión que tenemos en el I2C para que cada quien la modifique dependiendo su caso

  • me manda error 1
    error de compilación pero con cualquier otro proyecto lo hago sin ningun problema

  • Amigos me podrian apoyar para cambiar el circuito para arduino UNO

    • David, los pines del Nano y del uno son exactamente iguales y puedes usar el mismo circuito para ambos

Give a Reply

WordPress Anti-Spam by WP-SpamShield