Pages: [1]   Go Down
Author Topic: lcd yb12864zb  (Read 537 times)
0 Members and 1 Guest are viewing this topic.
grugliasco
Offline Offline
Jr. Member
**
Karma: 0
Posts: 94
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

Pages: [1]   Go Up
Jump to: