Problemi con uno sketch che non riesco a caricare.

Ciao a tutti i componenti di questo Forum

Cercavo un'anima pia, esperta in programmazione del linguaggio che usa arduino, che mi può aiutare.
Da alcuni giorni sto' cercando di caricare uno sketch che vi allego, sulla mia scheda micro leonardo a cui ho collegato uno schermo lcd con I2c con indirizzo (0x27). Attualmente sto' usando la libreria Liquidcrystal_I2c-1.1.2 ed usando gli esempi tipo (Hello World), lo stesso funziona regolarmente. Premetto che voglio usare questo sketch per VDI di un metal detector. Il nome dello sketch è MD_V13 che vi allego. Una volta che ho copiato tale software nel programma di arduino e cercato di caricare su leonardo, lo stesso trova diversi errori di cui ne do menzione. Grazie per il vostro aiuto.

Maurizio.. :slight_smile:

Arduino:1.8.2 (Windows 7), Scheda:"Arduino Leonardo"

MD_V13:17: error: no matching function for call to 'LiquidCrystal_I2C::LiquidCrystal_I2C(int, int, int, int, int, int, int, int)'

LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);

^

C:\Program Files\Arduino\examples\MD_V13\MD_V13.ino:17:80: note: candidates are:

In file included from C:\Program Files\Arduino\examples\MD_V13\MD_V13.ino:8:0:

C:\Users\Home\Documents\Arduino\libraries\LiquidCrystal_I2C-1.1.2/LiquidCrystal_I2C.h:57:3: note: LiquidCrystal_I2C::LiquidCrystal_I2C(uint8_t, uint8_t, uint8_t)

LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows);

^

C:\Users\Home\Documents\Arduino\libraries\LiquidCrystal_I2C-1.1.2/LiquidCrystal_I2C.h:57:3: note: candidate expects 3 arguments, 8 provided

C:\Users\Home\Documents\Arduino\libraries\LiquidCrystal_I2C-1.1.2/LiquidCrystal_I2C.h:55:7: note: constexpr LiquidCrystal_I2C::LiquidCrystal_I2C(const LiquidCrystal_I2C&)

class LiquidCrystal_I2C : public Print {

^

C:\Users\Home\Documents\Arduino\libraries\LiquidCrystal_I2C-1.1.2/LiquidCrystal_I2C.h:55:7: note: candidate expects 1 argument, 8 provided

C:\Users\Home\Documents\Arduino\libraries\LiquidCrystal_I2C-1.1.2/LiquidCrystal_I2C.h:55:7: note: constexpr LiquidCrystal_I2C::LiquidCrystal_I2C(LiquidCrystal_I2C&&)

C:\Users\Home\Documents\Arduino\libraries\LiquidCrystal_I2C-1.1.2/LiquidCrystal_I2C.h:55:7: note: candidate expects 1 argument, 8 provided

C:\Program Files\Arduino\examples\MD_V13\MD_V13.ino: In function 'void setup()':

MD_V13:209: error: 'class LiquidCrystal_I2C' has no member named 'setBacklightPin'

lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);

^

MD_V13:209: error: 'POSITIVE' was not declared in this scope

lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);

^

exit status 1
no matching function for call to 'LiquidCrystal_I2C::LiquidCrystal_I2C(int, int, int, int, int, int, int, int)'

Questo report potrebbe essere più ricco di informazioni abilitando l'opzione
"Mostra un output dettagliato durante la compilazione"
in "File -> Impostazioni"

MD_V13.zip (9.99 KB)

Dove hai preso l'esempio ? un link ?

Se gli esempio della libreria che usi vanno, ma non va quel MD_V13 con la stessa lib, allora
probabilmente chi lo ha scritto usa un'altra libreria LiquidCrystal_I2C
Ad esempio io uso quella di fmalpartida: https://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home

Ciao Nid69ita, lo sketch è stato scritto da un certo Daren qualche anno fà, su un forum Americano "Geotech1"
lo stesso aveva messo a disposizione la libreria ed il menusystem necessari per far funzionare il tutto, ma con quella libreria non riesco a caricare gli esempi della stessa. Non so come fare. Grazie per il tuo commento!!

La lib LiquidCrystal_I2C standard di solito vuole pochi parametri, mentre quella che usa in quel esempio mi sembra la lib di fmalpartida che ti ho linkato e che io uso perchè accetta numerosi parametri, per specificare come mappare i pin del chip I2C. Ho dei display I2C con il chip I2C collegato in maniera "non standard" e quindi uso la lib che ho linkato io.

Potresti provare ad usare quella oppure modificare il MD_V13.ino adattandolo alla lib standard.
Ma la vedo dura, perchè quello zip è composto da molti file e chissà come si "incastrano" i vari pezzi.

Di solito la lib di fmalpartida dichiara:
LiquidCrystal_I2C lcd(I2C_ADDR,En_pin,Rw_pin,Rs_pin,D4_pin,D5_pin,D6_pin,D7_pin);
e nel setup
lcd.begin(16,2);
lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);

mentre la standard se non ricordo male fa tutto in unico comando dichiarativo, sostituisci con:
LiquidCrystal_I2C lcd(I2C_ADDR,16,2);
e quindi leva da setup quelle due righe e metti:
lcd.init();
lcd.backlight();

Non posso provare, quindi non sò se funziona.

nid69ita:
mentre la standard se non ricordo male fa tutto in unico comando dichiarativo, sostituisci con:
LiquidCrystal_I2C lcd(I2C_ADDR,16,2);

Confermo, io uso ormai SEMPRE quella, tre parametri e funziona.

Grazie a tutti, ho risolto con quella libreria, magicamente funziona, era solo questione di libreria.

Grazie ancora... :slight_smile:

docdoc:
Confermo, io uso ormai SEMPRE quella, tre parametri e funziona.

Occhio... funziona ... solo se il chip I2C ha i collegamenti standard (la piedinatura che porta i pin del chip al display)
Di solito gli ultimi display che ho visto seguono la piedinatura standard.

Grazie, adesso posso continuare il progetto. Poi se tutto è a posto scriverò ancora.