Problemi con display seriale LCD 160x128

Salve, ho approcciato Arduino da qualche mese, per sviluppare il prototipo di un riscaldatore da cantiere, tutto bene fino a quando non mi è stato chiesto di passare ad un LCD 160x128. La scelta giocoforza è caduto su l'unico in commercio con interfaccia seriale, il problema è che tale interfaccia non si comporta molto bene, già a 9600 baud va in crisi generando strani caratteri sul display. Nessuno di voi ha mai provato a pilotare in parallelo un display di queste dimensioni?? ci sono dei progetti in merito??
Grazie!!

Qui (SparkFun Serial Graphic LCD 160x128 - LCD-08884 - SparkFun Electronics) dice che il display va a 115200.

... appunto ...
... APS650, posta il codice (... mi raccomando, racchiuso tra i tag CODE che, in fase di edit, ti inserisce il bottone # ... terzultimo della seconda fila) che ci deve essere qualche cosa che non va :roll_eyes:

Guglielmo

Grazie Guglielmo, ma devo aver pasticciato perché si è persa la mia risposta a PaoloP. Cmq il codice trasmette a 115200 baud, ho provato ad abbassare la velocità ma non cambia nulla, anche a 9600.
Sono passato ad un Arduino Mega, vorrei provare ad usare una seriale hardware ma non so come fare. Ecco il codice, abbiate pietà è il primo che scrivo!!!

TMAP_160x128.ino (91.3 KB)

Non seguo bene ...
... ma la SoftwareSerial NON la usi ??? Vedo che è commentata ...

Spero che tu non lo abbia collegato alla vera seriale la quale è anche collegata al PC ...

Insomma descrivi esattamente i collegamenti che non mi sono chiari ...

Guglielmo

/**********************************************
Graphic Serial LCD Libary Main File
Joel Bartlett
SparkFun Electronics 
9-25-13

**********************************************/
#include "Arduino.h"
#include "SerialGraphicLCD.h"
#include <SoftwareSerial.h>

//initialize an instance of the SoftwareSerial library 
SoftwareSerial serial(2,3);//change these two pin values to whichever pins you wish to use (RX, TX)

LCD::LCD()
{
	serial.begin(115200);

}

…sto usando il pin 3 oltre a +5v e GND, quella commentata era un tentativo non riuscito di cambiare i pin.

edit by mod: per favore includi il codice usando gli appositi tag

mamma mia che obbrobrio vedere che hanno chiamato la seriale virtuale "serial" con la "s" minuscola, mentre la vera seriale si chiama Serial con la "S" maiuscola ... crea un enorme confusione ... bastava chiamarla "serialLCD" e tutto era più chiaro :wink:

In ogni caso ... stai andando TU in conflitto con la SoftwareSerial ...
... difatti essa usa COMUNQUE (... sia che tu ci colleghi qualche cosa che non) i pin 2 e 3 mentre tu stai usando il pin 2 per i TUOI scopi :

int input_key = 2;

e questo NON va bene !!!

Impara poi, per risparmiare memoria, a NON dichiarare i numeri dei pin come variabili int, ma come costanti byte ... esempio :

const byte input_key = 2;

Guglielmo

..ho usato il pin 2 perché mi serviva un interrupt per leggere un pulsante, per questo volevo spostare la comunicazione seriale da software ad hardware dato che non uso i pin 0 e 1.
Grazie per i consigli sulla memoria, in effetti sono passato ad un arduino mega perché non ci stavo dentro, ne faro tesoro.

APS650:
..ho usato il pin 2 perché mi serviva un interrupt per leggere un pulsante, per questo volevo spostare la comunicazione seriale da software ad hardware dato che non uso i pin 0 e 1.

Purtroppo NON puoi usare lo stesso pin per due cose ...
... copia quella libreria con un altro nome (così conservi l'originale) e modifica, nel .cpp dei quella copiata, l'istanza alla SoftwareSerial affinché usi pin diversi, così ti si libera il pin 2 :wink:

Guglielmo

Guglielmo help me!!!

dopo aver modificato la libreria “SerialGraphicLCD” ( SerialGraphicLCD.cpp) e spostando la seriale dai pin 2 e 3 a 4 e 5 o altri, l’unico risultato è che lo sketch non si compila.
Cosa sbaglio???

Grazie!!!

Dato che non ho la palla di vetro ...
... o riporti gli errori (... mi raccomando, anche loro racchiusi tra i tag CODE che, in fase di edit, ti inserisce il bottone #, terzultimo della seconda fila) o sarà difficile indovinare cosa c'è che non va ... :roll_eyes:

Guglielmo

Grazie Guglielmo, ma ho risolto.
Ho istallato nuovamente l'IDE e cancellato la libreria che Arduino copia in documenti, in pratica avevo due copie della stessa libreria.
Grazie mille per la disponibilità!!!!

Figurati, mi fa piacere che tutto si sia risolto :wink:

Guglielmo

…spero che Guglielmo abbia ancora un po’ di pazienza…

Dato che la libreria della seriale che pilota LCD non ha font di grandi dimensioni, ho provato a costruire con delle linee i numeri da 1 a 9.

Presi singolarmente tutto bene, ma messi in sequenza, nell’angolo in alto a sinistra appaiono dei caratteri:

2 - HR
3 - LQ
4 - A6A
5 - 2LR
6 - PL
8 - -4J.,
9 - 0,

1 e 7 si visualizzano correttamente.

Qualcuno sa dirmi cosa indicano questi caratteri?? …problema di programmazione o della seriale??

serranda_digit.ino (38.7 KB)

... mmm ... purtroppo non conosco affatto quel display e quella libreria, quindi non saprei come aiutarti :~

Potrebbero essere dei problemi di posizionamento x,y ... singolarmente va tutto bene, quando li mette assieme c'è qualche cosa che non va ... ma ripeto, tiro ad indovinare, visto che non posseggo quel LCD né conosco la sua lib ... :roll_eyes:

Guglielmo