Arduino Mega +Display seriale/I2C 20x4 Devantech

Ciao a tutti,ho un problema con il mio display seriale in quanto lancio lo sketch e lui mi dà la scrittache voglio ma non posizionata nel modo giusto, cioè: se per esempio il serial.print è così:

void mainmenu()
{
  Serial.print("?f");
  delay(50);
  Serial.print("?x01?y01  Paolo Carlo");
  delay(50);
  Serial.print("?x01?y12  Mamma Papà");
  delay(50);
  Serial.print("?x01?y23  Luca Paolo");
  delay(50);
  Serial.print("?x01?y34  Setup Menu");
  delay(50);

Lui sul display mi indica così:
?x01?y23 Luca Paolo?x01?y34 Setup Menu ,come se non capisce le coordinate,giusto?

ciao SAMPEI80
Sappiamo tanto ma non siamo ancora indovini o veggenti.
Quale display hai? Eventualmetne con quale schedina d' interfaccia?
Senó posso solo dirti: Consulta la documantazione del display e gli esempi inclusi.
Ciao Uwe

Se leggi il titolo del post è chiarissimo,comunque ho arduino mega e un display seriale/I2C 20x4 Devantech

Ciao SAMPEI80
Non mi é chiaro.
Ci sono comandi che l'interfaccia seriale interpreta. Quelli dipendono dal interfaccia o dal diplay che ha integrato l' interfaccia.

I normali LCD con il controller HD44780 non ha un interfaccia seriale.

Percui io posso aiutarti se mi dici che Display o elettronica di interfaccia stai usando.

Ciao Uwe

ok guarda questo in allegato è il manuale del display dove c'è anche l'adattatore seriale che utilizza

http://www.robot-italy.com/product_info.php?products_id=92

sul piccolo adattatore c'è un integrato e c'è scritto:
PIC16F819

ciao SAMPEI80
Scusami se ho insistito ma capirai quando leggi quello che scrivo.

Mi riferisco alla lista comandi sulla pagina 3 di http://www.robot-italy.net/downloads/lcd03.PDF

Il tuo errore é che mandi i comandi per il display come carattere ascii e non come numero.

Il comando (in decimale) 2 o in esadecimale 0x02 ( si scrive "0x" davanti per dire che é un numero esadecimale) mette il cursore su una posizione del display; Valori ammessi 1 a 80.
Il comando 3 mette il cursore su una posizione dando come valori la riga e poi la colonna.

se vuoi scrivere nella prima riga "Paolo Carlo" devi scrivere al posto di:

Serial.print("?x01?y01 Paolo Carlo");
Serial.print(3); Serial.print(1);Serial.print(1);Serial.print("Paolo Carlo");

Serial.print("?x01?y12 Mamma Papà");
Serial.print(3); Serial.print(2);Serial.print(1);Serial.print("Mamma Papà"); // oppure
Serial.print(2); Serial.print(21);Serial.print("Mamma Papà"); // non só se la "a" coll'accento é presente come lettera nel set di caratteri del display; prova. se non c'é Ti visualizzerá un simbolo strano.

comunque inizierei con un
Serial.print(12); //che cancella il display.

Scrivi nel Tuo esempio " void mainmenu(){ "
È una funzione che hai definita Tu?
L' arduino non ha la funzione "main()" del C; le 2 funzioni che esegue sono setup() e loop().

Il PIC16F819 é un piccolo microcontroller (simile al ATmega328, che usa l'Arduino) programmato con un programma che interpreta i comandi seriali e pilota il display HD44780-compatibile con interfaccia parallela.

Ciao Uwe

Grazie mille oggi provo e ti faccio sapere come è andata.
Buona giornata

Ciao mi risponde :

In function 'void mainmenu()':
error: invalid use of member (did you forget the '&' ?)

Ciao SAMPEI80
Non so mica cosa hai scritto. Mandami per favore tutto il codice.
Ciao Uwe

void mainmenu()
{
  Serial.print(12);
  delay(50);
  Serial.print(3);Serial.print(1);Serial.print=(1);Serial.print(" Manuale");
  delay(50);
  Serial.print(3);Serial.print(1);Serial.print=(12);Serial.print(" Automatico");
  delay(50);
  Serial.print(3);Serial.print(1);Serial.print=(23);Serial.print("  Mode");
  delay(50);
  Serial.print(3);Serial.print(1);Serial.print=(34);Serial.print(" Setup");
  delay(50);
}

Per favore TUTTO il programma non solo un pezzo.
Non ci va il "=" dopo Serial.print
Ciao Uwe

ti ho scritto in mp

Grazie SAMPEI80;
per primo:
Sia l' hardware che il software di Arduino sono sotto Creative Commons Attribution-ShareAlike 3.0 License. Percui anche se quella persona ha scritto personalmente il programma non puó adottare nessun altra licenza. Comunque va bene che mi hai spedito il programma in privato e non vuoi divulgarlo.

Secondo me il progetto originale usa un display con un altro Interfaccia seriale che usa altri commandi.
Se togli il segno uguale dovrebbe funzionare.

void setup()                    // run once, when the sketch starts
{
Serial.begin(9600);      
  Serial.print(12);
  delay(50);
  Serial.print(3);Serial.print(1);Serial.print(1);Serial.print(" Manuale");
  delay(50);
  Serial.print(3);Serial.print(1);Serial.print(12);Serial.print(" Automatico");
  delay(50);
  Serial.print(3);Serial.print(1);Serial.print(23);Serial.print("  Mode");
  delay(50);
  Serial.print(3);Serial.print(1);Serial.print(34);Serial.print(" Setup");
  delay(5000);
}
void loop(){
delay(5000);
}

Questo codice dovrebbe scriverti 1 volta "Manuale", "Automatico", "Mode" e "Setup" sul display. e poi aspettare in eterno.

Per imparare incomincia lentamente seguendo un libro su Arduino e poi sucessivamente incomincia a cambiare il programma della Birra alle tue esigenze.

Dove abiti? Forse qualcuno del forum abita vicino e puó aiutarti incontrandoti.

Ciao Uwe

Abito a Roma comunque ho provato prima ma non andava ho visto il serial monitor e il display e continua a non cambiare,si probabilmente la persona usava un altro display, e probabilmente a me nemmeno serve il suo sketch,tu non puoi aiutarmi nella mia impresa?