Arduino Forum

International => Italiano => Hardware => Topic started by: SUBSEA on Oct 18, 2012, 09:28 pm

Title: LCD 16X1
Post by: SUBSEA on Oct 18, 2012, 09:28 pm
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 [url]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? :smiley-eek-blue:)? domani provo con il potenziometro.
Title: Re: LCD 16X2
Post by: uwefed on Oct 18, 2012, 09:43 pm
La tensione Vo serve per far visualizzare i caratteri. Senza non vedi niente. Procurati un potenziometro.
Ciao Uwe
Title: Re: LCD 16X2
Post by: SUBSEA on Oct 18, 2012, 09:56 pm
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?
Title: Re: LCD 16X2
Post by: uwefed on Oct 18, 2012, 10:01 pm
Vedo che scrivi ancora sul forum percui sembra che non hai fulminato il PC.  :D :D :D :D

Ciao Uwe
Title: Re: LCD 16X2
Post by: SUBSEA on Oct 18, 2012, 10:06 pm
Ahaha! Giusto! :smiley-mr-green: grazie mille! ;)
Title: Re: LCD 16X2
Post by: menniti on Oct 18, 2012, 10:55 pm
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.
Title: Re: LCD 16X2
Post by: SUBSEA on Oct 19, 2012, 12:21 pm
Ok provo come hai detto tu! Solo una cosa: come facevo a sapere che il trimmer restituiva il gnd anziché il positivo?
Title: Re: LCD 16X2
Post by: menniti on Oct 19, 2012, 06:52 pm

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.
Title: Re: LCD 16X2
Post by: SUBSEA on Oct 19, 2012, 07:32 pm
Capito! Gtazie ancora! Comunque intendevo perchè il capo comune conduceva il negativo invece del positivo.
Title: Re: LCD 16X2
Post by: SUBSEA on Oct 20, 2012, 03:07 pm
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:
Code: [Select]
/*
#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"
Title: Re: LCD 16X2
Post by: Hal90001 on Oct 20, 2012, 03:26 pm
Prova a mettere:
Code: [Select]
lcd.setCursor(0,0);
Title: Re: LCD 16X2
Post by: SUBSEA on Oct 20, 2012, 03:28 pm
avevo già provato, ma non cambia nulla... Comincio a credere di aver un display sfigato!
Title: Re: LCD 16X2
Post by: cece99 on Oct 20, 2012, 03:51 pm

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
Title: Re: LCD 16X2
Post by: brunello22 on Oct 20, 2012, 04:25 pm
e poi perche' scrivi

Quote
lcd.begin(16, 1);


se e' un 16x2
Title: Re: LCD 16X2
Post by: SUBSEA on Oct 20, 2012, 06:01 pm
Ecco è proprio questo il problema. Io ho detto che era 16×2, ma io vedo solo un layer.
Title: Re: LCD 16X2
Post by: menniti on Oct 20, 2012, 07:54 pm
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 :smiley-eek:
Title: Re: LCD 16X2
Post by: SUBSEA on Oct 20, 2012, 08:18 pm
In poche parole l ho pagato la metà che uno su eBay e quindi ho metà caratteri :smiley-mr-green:
Title: Re: LCD 16X2
Post by: menniti on Oct 20, 2012, 08:45 pm

In poche parole l ho pagato la metà che uno su eBay e quindi ho metà caratteri :smiley-mr-green:

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:
Code: [Select]

#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?
Title: Re: LCD 16X2
Post by: SUBSEA on Oct 21, 2012, 09:31 pm
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?
Title: Re: LCD 16X2
Post by: leo72 on Oct 21, 2012, 10:23 pm

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 :smiley-eek:

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).
Title: Re: LCD 16X1
Post by: menniti on Oct 21, 2012, 10:30 pm
Nello sketch del modulo display dell'HV io ho usato 20,3 (ho controllato ora) eppure tutto funziona regolarmente  :smiley-roll:
Title: Re: LCD 16X1
Post by: leo72 on Oct 21, 2012, 10:36 pm
http://arduino.cc/en/Reference/LiquidCrystalBegin
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.
Title: Re: LCD 16X1
Post by: SUBSEA on Oct 22, 2012, 02:20 pm
Ma... oggi provo con 16, 0 poi vi dico ma sono scettico