LCD 16X1

Ahaha! Giusto! :grin: grazie mille! :wink:

Comunque una 10 ohm in parallelo all'alimentazione fa 0,5A, quindi il limite dell'USB, davvero il rischio era minimo o nullo; comunque sapendo che il potenziometro in genere è un 10K forse era più consona una prova con 5k.
Giusto per non fare sembrare questo mio post inutile ti dò una dritta: il potenziometro puoi usarlo come semplice resistenza variabile invece che come trimmer, colleghi il pin del contrasto al centrale del potenziometro, ed uno qualsiasi dei laterali a GND, vedrai che ti funziona benissimo lo stesso, senza "coinvolgere" il positivo.

Ok provo come hai detto tu! Solo una cosa: come facevo a sapere che il trimmer restituiva il gnd anziché il positivo?

SUBSEA:
Ok provo come hai detto tu! Solo una cosa: come facevo a sapere che il trimmer restituiva il gnd anziché il positivo?

Forse non ho capito bene, un trimmer è come una doppia resistenza variabile con un capo in comune, in pratica è un partitore variabile; sul centrale, in base alla posizione del perno, ti trovi una tensione che va da 0V a 5V.
Il sitema che ti ho suggerito io funziona perché tutti i nuoci LCD il riferimento positivo lo hanno già interno, quindi non devi fare altro che aggiungere una resistenza tra il pin del contrasto e GND, devi usare un potenziometro perché non sai qual è il valore ma una volta trovatolo, se non ti serve variarlo, nessuno ti imedisce di togliere il potenziometro e mettere una R fissa, del valore che misurerai sul potenzimetro.

Capito! Gtazie ancora! Comunque intendevo perchè il capo comune conduceva il negativo invece del positivo.

Altro problema: come mai non mi va più in là di 8 caratteri? Mi spiego meglio, lui arriva all' ottavo carattere, non va oltre. questo è lo schema:

/*
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {

  lcd.begin(16, 1);

  lcd.print("hello, world!");
}

void loop() {

  lcd.setCursor(0, 1);
 
  lcd.print(millis()/1000);
}

in poche parole mi appaiono solo "hello wo"

Prova a mettere:

lcd.setCursor(0,0);

avevo già provato, ma non cambia nulla... Comincio a credere di aver un display sfigato!

SUBSEA:
avevo già provato, ma non cambia nulla... Comincio a credere di aver un display sfigato!

Avresti una foto? magari non è un 16x2 ma è un 8x4 con due linee affiancate

e poi perche' scrivi

lcd.begin(16, 1);

se e' un 16x2

Ecco è proprio questo il problema. Io ho detto che era 16×2, ma io vedo solo un layer.

lcd.begin(16, 1);

per quanto ne so la numerazione delle righe va da 1 a 4 con valori da 0 a 3, quindi dovrebbe essere corretto. E comunque al massimo non funzionerebbe la seconda riga non la seconda metà della prima riga :astonished:

In poche parole l ho pagato la metà che uno su eBay e quindi ho metà caratteri :grin:

SUBSEA:
In poche parole l ho pagato la metà che uno su eBay e quindi ho metà caratteri :grin:

Non scherziamo, vediamo invece di farlo funzionare, poi tutto può essere, ma era un privato o un Venditore? nel secondo caso hai diritto alla sostituzione, ma prima di fare figurimm è meglio ricontrollare tutto. Prendiamo l'Hello World originale, dove effettivamente il comando "16,2" sembra dare ragione a brunello, ma io ho usato 20,3 per un LCD 20 caratteri per quattro righe:

#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
  lcd.begin(16, 2);
  lcd.print("hello, world!");
}
void loop() {
  lcd.setCursor(0, 1);
  lcd.print(millis()/1000);
}

quindi l'unica differenza sta nel 16,2 per cui prova a rimetterlo così e vediamo che succede.
L'altra problematica in genere sono i collegamenti, l'errore di inversione di qualche pin o proprio di uso di un altro pin, o i contatti, in quantp molti di noi pensano che gli elettroni, essendo leggerissimi, possono viaggiare nell'aria e far funzionare i componenti anche senza il contatto fisico, ergo: puoi postare una bella foto nitida dei collegamenti tra Arduino e LCD?

I collegamenti sono esatti e ho provato in tutti i metodi, ma si ferma davvero ad 8 caratteri. In questi giorni provo a comprarne un altro e vedere se ha lo stesso problema. Intanto sapete altre possibili soluzioni?

Sì, la numerazione parte da 0 ma per quanto riguarda l'indicizzazione (es. posizionare il cursore). Quando fai un Lcd.begin() devi passare il numero di righe e colonne di cui è effettivamente composto il display: quindi per un 20x4 devi scrivere Lcd.begin(20,4).

Nello sketch del modulo display dell'HV io ho usato 20,3 (ho controllato ora) eppure tutto funziona regolarmente :roll_eyes:

Ma con begin si deve passare la dimensione del display, non gli indici delle righe e delle colonne.

Non so perché ti funziona ma in teoria non va bene. Io uso (20,4) con un display 20x4 appunto.

Ma... oggi provo con 16, 0 poi vi dico ma sono scettico