Go Down

Topic: lcd yb12864zb (Read 577 times) previous topic - next topic

iw1evm (Tecno)

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

Go Up