Questo è il mio primo post percui faro degli errori. Ho comprato su ebay un lcd yb12864zb e volevo collegare ,ad arduino 2009, in modo seriale per non sprecare ingressi, Da arduino playground ho provato la libreria 12864 Graphics LCD library che funziona con collegamento parallelo in fine dalle rete ho scaricato un libreria (avevo postato l'indirizzo ma essendo il mio primo post non è stato accettato)che funziona in seriale però ha comandi per inviare una stringa ma mi serve poter inviare un intero quindi ho modificato la liberia cosi: nel heder ho aggiunto "typedef int numero;" ,in .ccp questa routine ,che è la modifica di una gia esistente, "
//++++++++++++++++++++++inizi
void LCD12864RSPI::DisplayInt(int X,int Y,numero *ptr,int dat)
{
int i;
switch(X)
{
case 0: Y|=0x80;break;
case 1: Y|=0x90;break;
case 2: Y|=0x88;break;
case 3: Y|=0x98;break;
default: break;
}
WriteCommand(Y); //
for(i=0;i<dat;i++)
{
WriteData(ptr*);*
- }*
}
//+++++++++++++++++++++++Fine aggiunta tecno+++++++++++++++++++++++++++++
Questo è sketch che io scritto
#include <DFrobot_char.h>
#include <LCD12864RSPI.h>
#define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )
#define SCR 10 // scr collegato pin 10
int numero = 1;
unsigned char titolo[]="Cronometro ,";//
unsigned char en_char1[]="minuti ";//
unsigned char en_char2[]="Secondi ";//
unsigned char en_char3[]="tecno";//
int tempo = 0;
int T_totale = 0;
int minuti = 0;
int secondi = 0;
void setup()
{ - LCDA.Initialise(); // INIT SCREEN*
- delay(100);*
- //LCDA.DrawFullScreen(logo);//LOGO*
- delay(5000);*
- minuti = 1; // tempo in minuti*
- secondi = 45; // tempo in secondi*
T_totale = (minuti * 60) + secondi; //tempo totale in secondi
Serial.begin(9600); // apre la porta seriale x il pc
}
void loop() { - LCDA.CLEAR();//Clear*
delay(1000);
LCDA.DisplayString(1,0,titolo,16);
delay(1000);
LCDA.CLEAR();//Clear
LCDA.DisplayInt(1,0,minuti,16);
delay(1000);
LCDA.CLEAR();//Clear
LCDA.DisplayString(1,0,en_char3,16);
delay(500); - while ((minuti > 0) || (secondi > 0)){*
- delay(1000);*
T_totale = (minuti * 60) + secondi; //tempo totale in secondi - if (secondi > 0) {*
- digitalWrite(SCR, 1);*
- secondi--;*
- Serial.println(minuti); //stampa il valore sulla porta seriale*
- Serial.println(secondi); //stampa il valore sulla porta seriale*
- }*
- else {*
- if (minuti > 0) {*
- minuti--;*
- secondi = 60;*
- }*
} *
}
digitalWrite(SCR, 0);
}
quando provo a copilare il programma mi da:
skecth_dic17a.cpp: in fuction 'void loop()':
skecth_dic17a.cpp:39: error: invalid conversion from 'int' to 'int'
skecth_dic17a.cpp:39: error: initializing argument 3 of 'void lcd12864rspi::displayInt(int, int, int*, int)'
dopo varie prove non ho capito niente: Spero che voi mi potete dare un aiuto grazie a tutti