LCD 16X1

Ciao a tutti. Oggi ho provato per la prima volta un lcd che ho comprato in fiera per 4 euro. Il prezzo era veramente buono, ma il problema è che non mi mostra nessun carattere. ho seguito questo schema http://arduino.cc/en/uploads/Tutorial/LCD_bb.png[questo schema/url] e caricato lo sketch "hello world". Non avendo un potenziometro in casa ho collegato una resistenza da 10 ohm da 5V al ground, ma avevo paura di far sltare la USB così ho lasciato perdere. Può esseresi fusa la USB(o peggio il PC? :fearful:)? domani provo con il potenziometro.

La tensione Vo serve per far visualizzare i caratteri. Senza non vedi niente. Procurati un potenziometro.
Ciao Uwe

Sì in effetti adesso ho visto CBE era il contrasto. Quindi non si è rovinato il PC avendo messo la resistenza tra i 5 v di Arduino e il gnd?

Vedo che scrivi ancora sul forum percui sembra che non hai fulminato il PC. :smiley: :smiley: :smiley: :smiley:

Ciao Uwe

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).