Lcd cinese 20x4

buongiorno a tutti!
ho uno sketch in cui utilizzo questo tipo di lcd con interfaccia I2C.
avrei necessità di utilizzare i pin 2 e 3 (pin interrupt) che vengono però definiti come pin di comunicazione tra arduino ed I2C nello sketch che sto utilizzando.
il quesito è: non essendo i pin 2 e 3 fisicamente occupati, ma definiti ed in seguito sfruttati tramite libreria per mettere in comunicazione I2C e display, posso semplicemente collegarci un bottone e sfruttarli come interrupt?

altrimenti dovrei cambiare nel define il valore dei pin annessi (non inserendo i pin interrupt 2,3) tentativo che ho fatto, ma l'lcd smette di andare.
allego parte dello sketch interessata nel caso qualcuno sappia che soluzione adottare:


#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR 0x27
#define BACKLIGHT_PIN 3
#define En_pin 2
#define Rw_pin 1
#define Rs_pin 0
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7

LiquidCrystal_I2C lcd(I2C_ADDR, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin); //comunicazione pin e I2c
void setup() {

  lcd.begin(20, 4);                                 //settaggio righe colonne e retroilluminazione
  lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);     //pin retroilluminazione
  lcd.setBacklight(HIGH);                           //acceso
}

ovviamente se qualcuno ha un idea e servono altre informazioni su sketch o altro, cerco di implementare al meglio.
ho omesso il resto del codice poichè ci sono svariate altre funzioni che dilungano e che a mio parere non dovrebbero servire.

grazie a tutti dell'interessamento anticipatamente!

I pin che sono definiti nel codice che hai postato non sono quelli dell'Arduino, ma quelli del chip expander collegato tramite I2C, dall'Arduino ti servono solo i 2 pin SDA/SCL (generalmente corrispondono ai pin A4/A5), quindi i pin 2 e 3 dell'Arduino li pouoi usare senza problemi.

Ciao, Ale.

ah cavolo grande!!! esaustivo e funzionale!! ti ringrazio dell'aiuto!

buonasera, dunque lo stesso lcd in questione, deve stampare a schermo diversi caratteri in base alla variabile ck2 che incremento tramite il richiamo attachinterrupt :

void riempimento() {     
                              //RICHIAMA IMPOSTAZIONE RIEMPIMENTO CIOTOLA[problema]selezione orario
  if (ck2 == 1) {

    lcd.setCursor(2, 1);
    lcd.print("**Rifornimento**");
    pulisciSchermo();
    lcd.setCursor(0, 2);
    lcd.print("Rifornire di:");
    lcd.setCursor(14, 2);
    lcd.print(String(load) + "g.");
    pulisciSchermo();
    lcd.setCursor(0, 3);
    lcd.print("Attualmente:");
    lcd.setCursor(14, 3);
    lcd.print(String(units, 0) + "g.");
    pulisciSchermo();
  }

  if (ck2 == 2) {                                            //da qua in poi il print su lcd lampeggia, e non so perchè
    lcd.print("orario:");
    lcd.setCursor(10, 1);
    lcd.setCursor(0, 3);
    lcd.print("Attualmente:")  
  }
}

ora il problema consiste nel fatto che quando si verifica vera la condizione di ck2==2 e quindi cambiano i caratteri a schermo, la visuale all'occhio risulta lampeggiante in maniera significative e veramente sgradevole.

si verifica solo nella seconda delle due condizioni, qualcuno sa dirmi cosa posso tentare per risolvere il problema?

grazie sempre anticipatamente.

Ma il primo LCD. Setcursor non dovrebbe stare prima di LCD. Print?

sisi è come dici te,avevo passato troppo tempo sullo sketch :joy:

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.