2,4" TFT und Arduino DUE

Hallo ,
Ich möchte gern ein 2,4" TFT Display mit einem Arduino DUE betreiben.
Es wurde vorgeschlagen.den Sketch LCDWIKI_KBV dazu zu benutzen.
Ich habe diese datei installiert, aber wahrscheinlich ist diese nicht bis zu Ende gebracht.
Die Kompilierung ergab über 10 Fehler.
Kann jemand helfen?
2. Ich habe tatsächlich ein Programm gefunden , mit dem der DUE tatsächlich , das Display ansteuert.
Der Haken bei diesem Programm. Es können keine Buchstaben und Zahlen erzeugt werden.
Pixel oder geometrische Figuren kein Thema Vielleicht kennt sich da jemand aus.

//Rechtecke Zufall

#define LCD_RD   A0
#define LCD_WR   A1     
#define LCD_RS   A2        
#define LCD_CS   A3       
#define LCD_REST A4

void Lcd_Writ_Bus(unsigned char VH)
{
  unsigned int i,temp,data; 
  data=VH;
  for(i=8;i<=9;i++)
  {
    temp=(data&0x01);
    if(temp)
      digitalWrite(i,HIGH);
    else
      digitalWrite(i,LOW);
    data=data>>1;
  }	
  for(i=2;i<=7;i++)
  {
    temp=(data&0x01);
    if(temp)
      digitalWrite(i,HIGH);
    else
      digitalWrite(i,LOW);
    data=data>>1;
  }	 

  digitalWrite(LCD_WR,LOW);
  digitalWrite(LCD_WR,HIGH);
}


void Lcd_Write_Com(unsigned char VH)  
{   
  digitalWrite(LCD_RS,LOW);
  Lcd_Writ_Bus(VH);
}

void Lcd_Write_Data(unsigned char VH)
{
  digitalWrite(LCD_RS,HIGH);
  Lcd_Writ_Bus(VH);
}

void Lcd_Write_Com_Data(unsigned char com,unsigned char dat)
{
  Lcd_Write_Com(com);
  Lcd_Write_Data(dat);
}

void Address_set(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2)
{
        Lcd_Write_Com(0x2a);
        Lcd_Write_Data(x1>>8);
        Lcd_Write_Data(x1);
        Lcd_Write_Data(x2>>8);
        Lcd_Write_Data(x2);
        Lcd_Write_Com(0x2b);
        Lcd_Write_Data(y1>>8);
        Lcd_Write_Data(y1);
        Lcd_Write_Data(y2>>8);
        Lcd_Write_Data(y2);
	Lcd_Write_Com(0x2c); 							 
}

void Lcd_Init(void)
{
  digitalWrite(LCD_REST,HIGH);
  delay(5); 
  digitalWrite(LCD_REST,LOW);
  delay(15);
  digitalWrite(LCD_REST,HIGH);
  delay(15);

  digitalWrite(LCD_CS,HIGH);
  digitalWrite(LCD_WR,HIGH);
  digitalWrite(LCD_CS,LOW);  //CS

 /*  Lcd_Write_Com(0x11);//sleep out 
	delay(20);
  //Lcd_Write_Com(0x01); //reset
  //delay(15);
  Lcd_Write_Com(0x28); //display off
  delay(5);
  Lcd_Write_Com(0xCF); //power control b
  Lcd_Write_Data(0x00);
  Lcd_Write_Data(0x83); //83 81 AA
  Lcd_Write_Data(0x30);
  Lcd_Write_Com(0xED); //power on seq control
  Lcd_Write_Data(0x64); //64 67
  Lcd_Write_Data(0x03);
  Lcd_Write_Data(0x12);
  Lcd_Write_Data(0x81);
  Lcd_Write_Com(0xE8); //timing control a
  Lcd_Write_Data(0x85);
  Lcd_Write_Data(0x01);
  Lcd_Write_Data(0x79); //79 78
  Lcd_Write_Com(0xCB); //power control a
  Lcd_Write_Data(0x39);
  Lcd_Write_Data(0X2C);
  Lcd_Write_Data(0x00);
  Lcd_Write_Data(0x34);
  Lcd_Write_Data(0x02);
  Lcd_Write_Com(0xF7); //pump ratio control
  Lcd_Write_Data(0x20);
  Lcd_Write_Com(0xEA); //timing control b
  Lcd_Write_Data(0x00);
  Lcd_Write_Data(0x00);
  Lcd_Write_Com(0xC0); //power control 2
  Lcd_Write_Data(0x26); //26 25
  Lcd_Write_Com(0xC1); //power control 2
  Lcd_Write_Data(0x11);
  Lcd_Write_Com(0xC5); //vcom control 1
  Lcd_Write_Data(0x35);
  Lcd_Write_Data(0x3E);
  Lcd_Write_Com(0xC7); //vcom control 2
  Lcd_Write_Data(0xBE); //BE 94
  Lcd_Write_Com(0xB1); //frame control
  Lcd_Write_Data(0x00);
  Lcd_Write_Data(0x1B); //1B 70
  Lcd_Write_Com(0xB6); //display control
  Lcd_Write_Data(0x0A);
  Lcd_Write_Data(0x82);
  Lcd_Write_Data(0x27);
  Lcd_Write_Data(0x00);
  Lcd_Write_Com(0xB7); //emtry mode
  Lcd_Write_Data(0x07);
  Lcd_Write_Com(0x3A); //pixel format
  Lcd_Write_Data(0x55); //16bit
  Lcd_Write_Com(0x36); //mem access
  Lcd_Write_Data((1<<3)|(1<<6));
  //Lcd_Write_Data((1<<3)|(1<<7)); //rotate 180
  Lcd_Write_Com(0x29); //display on
  delay(5);
    digitalWrite(LCD_CS,HIGH);
    */
     Lcd_Write_Com(0xCB);  
    Lcd_Write_Data(0x39); 
    Lcd_Write_Data(0x2C); 
    Lcd_Write_Data(0x00); 
    Lcd_Write_Data(0x34); 
    Lcd_Write_Data(0x02); 

    Lcd_Write_Com(0xCF);  
    Lcd_Write_Data(0x00); 
    Lcd_Write_Data(0XC1); 
    Lcd_Write_Data(0X30); 

    Lcd_Write_Com(0xE8);  
    Lcd_Write_Data(0x85); 
    Lcd_Write_Data(0x00); 
    Lcd_Write_Data(0x78); 

    Lcd_Write_Com(0xEA);  
    Lcd_Write_Data(0x00); 
    Lcd_Write_Data(0x00); 
 
    Lcd_Write_Com(0xED);  
    Lcd_Write_Data(0x64); 
    Lcd_Write_Data(0x03); 
    Lcd_Write_Data(0X12); 
    Lcd_Write_Data(0X81); 

    Lcd_Write_Com(0xF7);  
    Lcd_Write_Data(0x20); 
  
    Lcd_Write_Com(0xC0);    //Power control 
    Lcd_Write_Data(0x23);   //VRH[5:0] 
 
    Lcd_Write_Com(0xC1);    //Power control 
    Lcd_Write_Data(0x10);   //SAP[2:0];BT[3:0] 

    Lcd_Write_Com(0xC5);    //VCM control 
    Lcd_Write_Data(0x3e);   //Contrast
    Lcd_Write_Data(0x28); 
 
    Lcd_Write_Com(0xC7);    //VCM control2 
    Lcd_Write_Data(0x86);   //--
 
    Lcd_Write_Com(0x36);    // Memory Access Control 
    Lcd_Write_Data(0x48);   

    Lcd_Write_Com(0x3A);    
    Lcd_Write_Data(0x55); 

    Lcd_Write_Com(0xB1);    
    Lcd_Write_Data(0x00);  
    Lcd_Write_Data(0x18); 
 
    Lcd_Write_Com(0xB6);    // Display Function Control 
    Lcd_Write_Data(0x08); 
    Lcd_Write_Data(0x82);
    Lcd_Write_Data(0x27);  

    Lcd_Write_Com(0x11);    //Exit Sleep 
    delay(120); 
				
    Lcd_Write_Com(0x29);    //Display on 
    Lcd_Write_Com(0x2c); 
}

void H_line(unsigned int x, unsigned int y, unsigned int l, unsigned int c)                   
{	
  unsigned int i,j;
  digitalWrite(LCD_RS,HIGH);
  digitalWrite(LCD_CS,LOW);
  l=l+x;
  Address_set(x,y,l,y);
  j=l*2;
  for(i=1;i<=j;i++)
  {
    Lcd_Write_Data(c);
  }
  digitalWrite(LCD_CS,HIGH);   
}

void V_line(unsigned int x, unsigned int y, unsigned int l, unsigned int c)                   
{	
  unsigned int i,j;
  //Lcd_Write_Com(0x02c); //write_memory_start
  digitalWrite(LCD_RS,HIGH);
  digitalWrite(LCD_CS,LOW);
  l=l+y;
  Address_set(x,y,x,l);
  j=l*2;
  for(i=1;i<=j;i++)
  { 
    Lcd_Write_Data(c);
  }
  digitalWrite(LCD_CS,HIGH);   
}

void Rect(unsigned int x,unsigned int y,unsigned int w,unsigned int h,unsigned int c)
{
  H_line(x  , y  , w, c);
  H_line(x  , y+h, w, c);
  V_line(x  , y  , h, c);
  V_line(x+w, y  , h, c);
}

void Rectf(unsigned int x,unsigned int y,unsigned int w,unsigned int h,unsigned int c)
{
  unsigned int i;
  for(i=0;i<h;i++)
  {
    H_line(x  , y  , w, c);
    H_line(x  , y+i, w, c);
  }
}
int RGB(int r,int g,int b)
{return r << 16 | g << 8 | b;
}
void LCD_Clear(unsigned int j)                   
{	
  unsigned int i,m;
 Address_set(0,0,240-1,320-1);
  Lcd_Write_Com(0x02c); //write_memory_start
  digitalWrite(LCD_RS,HIGH);
  digitalWrite(LCD_CS,LOW);


  for(i=0;i<320;i++)
    for(m=0;m<240;m++)
    {
      Lcd_Write_Data(j>>8);
      Lcd_Write_Data(j);

    }
  digitalWrite(LCD_CS,HIGH);   
}
//--------------------------------------------------------------------------Voreinstellungen
void setup()
{
  for(int p=2;p<10;p++)
  {
    pinMode(p,OUTPUT);
  }
  pinMode(A0,OUTPUT);
  pinMode(A1,OUTPUT);
  pinMode(A2,OUTPUT);
  pinMode(A3,OUTPUT);
  pinMode(A4,OUTPUT);
  digitalWrite(A0, HIGH);
  digitalWrite(A1, HIGH);
  digitalWrite(A2, HIGH);
  digitalWrite(A3, HIGH);
  digitalWrite(A4, HIGH);
  Lcd_Init();
 LCD_Clear(0xf800);
 LCD_Clear(0x07e0);
 LCD_Clear(0x001F);
}
//----------------------------------------------------------------------hauptprogramm
void loop()
{  

  for(int i=0;i<1000;i++)
  {
    Rect(random(300),random(300),random(300),random(300),random(65535)); // rectangle at x, y, with, hight, color
  }
  
  LCD_Clear(0xf800);
}

Wie kann man diesem Programm Zahlen und Buchstaben beibringen?
Viele Grüße

[EDIT] Coder Tags hinzugefügt. Uwe[/EDIT]

Welches Display verwendest du ?
Bitte Link posten.
Das wird sicher ein SPI-Treiber brauchen, dann funktioniert das so sicher nicht.

Und wir benötigen die Fehlermeldungen.

Erstmal Probleme klären:

/tmp/arduino_modified_sketch_531913/sketch_aug08a.ino: In function 'int RGB(int, int, int)':
/tmp/arduino_modified_sketch_531913/sketch_aug08a.ino:255:14: warning: left shift count >= width of type [-Wshift-count-overflow]
 {return r << 16 | g << 8 | b;
              ^~

Und dann kommt ja nur eine Grafik bei raus:

void loop()
{  

  for(int i=0;i<1000;i++)
  {
    Rect(random(300),random(300),random(300),random(300),random(65535)); // rectangle at x, y, with, hight, color
  }
  
  LCD_Clear(0xf800);
}

Du musst schon festlegen was Du an welcher Stelle anzeigen willst.

Vielen Dank für die Antwort.
Gerne tue ich das.
Arduino: 1.8.15 (Windows 10), Board: "Arduino Uno"

C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\BerndR\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\BerndR\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\BerndR\Documents\Arduino\libraries -fqbn=arduino:avr:uno -ide-version=10815 -build-path C:\Users\BerndR\AppData\Local\Temp\arduino_build_210892 -warnings=none -build-cache C:\Users\BerndR\AppData\Local\Temp\arduino_cache_926094 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Program Files (x86)\Arduino\examples\LCDWIKI_kbv-master\LCDWIKI_kbv-master\Example\Example_03_display_string\display_string\display_string.ino

C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -hardware C:\Users\BerndR\AppData\Local\Arduino15\packages -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -tools C:\Users\BerndR\AppData\Local\Arduino15\packages -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\BerndR\Documents\Arduino\libraries -fqbn=arduino:avr:uno -ide-version=10815 -build-path C:\Users\BerndR\AppData\Local\Temp\arduino_build_210892 -warnings=none -build-cache C:\Users\BerndR\AppData\Local\Temp\arduino_cache_926094 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.arduinoOTA-1.3.0.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude-6.3.0-arduino17.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc-7.3.0-atmel3.6.1-arduino7.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Program Files (x86)\Arduino\examples\LCDWIKI_kbv-master\LCDWIKI_kbv-master\Example\Example_03_display_string\display_string\display_string.ino

Using board 'uno' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr

Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr

Detecting libraries used...

"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10815 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "C:\Users\BerndR\AppData\Local\Temp\arduino_build_210892\sketch\display_string.ino.cpp" -o nul

Generating function prototypes...

"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -flto -w -x c++ -E -CC -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10815 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "C:\Users\BerndR\AppData\Local\Temp\arduino_build_210892\sketch\display_string.ino.cpp" -o "C:\Users\BerndR\AppData\Local\Temp\arduino_build_210892\preproc\ctags_target_for_gcc_minus_e.cpp"

"C:\Program Files (x86)\Arduino\tools-builder\ctags\5.8-arduino11/ctags" -u --language-force=c++ -f - --c++-kinds=svpf --fields=KSTtzns --line-directives "C:\Users\BerndR\AppData\Local\Temp\arduino_build_210892\preproc\ctags_target_for_gcc_minus_e.cpp"

Sketch wird kompiliert...

"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -Wno-error=narrowing -MMD -flto -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10815 -DARDUINO_AVR_UNO -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\standard" "C:\Users\BerndR\AppData\Local\Temp\arduino_build_210892\sketch\display_string.ino.cpp" -o "C:\Users\BerndR\AppData\Local\Temp\arduino_build_210892\sketch\display_string.ino.cpp.o"

C:\Program Files (x86)\Arduino\examples\LCDWIKI_kbv-master\LCDWIKI_kbv-master\Example\Example_03_display_string\display_string\display_string.ino: In function 'void setup()':

display_string:67:3: error: 'mylcd' was not declared in this scope

mylcd.Init_LCD();

^~~~~

C:\Program Files (x86)\Arduino\examples\LCDWIKI_kbv-master\LCDWIKI_kbv-master\Example\Example_03_display_string\display_string\display_string.ino: In function 'void loop()':

display_string:73:3: error: 'mylcd' was not declared in this scope

mylcd.Set_Text_Mode(0);

^~~~~

exit status 1

'mylcd' was not declared in this scope

Das Display:
2.8inch Arduino Display - LCD wiki.

Wäre wirklich toll, wenn du den Fehler finden würdest.
Viele Grüße und danke für die Mühe

Vielen Dank, dass Du Dir Zeit für das Problem genommen hast.
Ganz klar, dass ich in der loop Schleife das eigentliche Programm schreiben muss.
Dieses Programm enthält keine .h Datei, ausser natürlich standartmässig Arduino.h.
Vor dem Programmteil setup sind genau die Funktionen aufgezählt, die ich nutzen kann,
beispielsweise H-line, V-line und Rechtecke.
Leider kann ich keine Möglichkeit erkennen, und Buchstaben Zahlen darzustellen.
Kann sein, das sich selbige in irgendwelchen Speicherzellen des DUE schlummern und ggf. standartmässig mit Arduino.h übertragen werden. Wenn dem so ist, weiss ich aber immer noch nicht, wo diese sich befinden und wie ich dieselbigen abrufen kann. Als Beispiel in der Loop Schleife (aus einem anderen Programm):

Beispielklasse.Print_String("Hello World!", 0, 0);
Beispielklasse.Print_Number_Float(01234.56789, 2, 0, 56, '.', 0, ' ');

Auf diese Art und Weise würde ich gern Zahlen und Buchstaben darstellen.

Viele Grüße

Eine schöne Fehlermeldung, die leider nur von einem völlig anderen Sketch stammt.

Sketche benutzt man nur zum Anschauen, um herauszubekommen, was man man wie selber anders machen will.
Dass eine Demo, die zeigt wie zufällige Rechtecke gemalt werden können, nicht auch Texte ausgibt, ist doch gut. Wenn die hier funktioniert, wirst du schonmal das Display richtig angeschlossen haben.

Ich schließe mich der Aussage von michael_x an, der gepostete Sketch ist falsch oder unvollständig. Um das verwendete Display zu betreiben, benötigst du mehr Pins als hier gezeigt.

Wie schon angemerkt, macht es keinen Sinn da zu raten. Es fehlen Deinem Sketch die includes - ich kann und will nicht raten, was Du da verwendest.
Wenn das bekannt ist, dann geht es evtl. weiter.

Ich würde mich ja Eurer Meinung anschließen.
Der Fehler tritt ja bereits beim Kompilieren auf.
Zu 2 . das Display ist richtig angeschlossen, da kann man nichts falsch machen.
Das wird einfach auf den DUE aufgesetzt.
Meine Frage war ja nach der Darstellung von alfanumerischen Zeichen.
Setzte ich das Display auf den UNO auf, ist das kein Problem. Da gibt es zig Programme , die einwandfrei funktionieren. Das Problem beim UNO ist, dass ich dann nicht mehr genügend Ports
für die Ansteuerung der Peripherie habe, andernfalls hätte ich mich damit zufrieden gegeben.
Es war ja auch nur eine Frage. Es hätte ja sein können, dass jemand das Programm für den DUE
angepasst und weiterentwickelt hätte.
Dennoch vielen Dank für Eure Mühe.
Viele Grüße

Ja.

Dann musst Du das erstmal beseitigen.

Indem Du die includes machst.

Wäre eine erste Idee.
Ich stelle fest, das ich mich wiederhole.

Genau darum geht es . Mir fehlen dazu die nötigen Kenntnisse.
Dazu brauche ich Hilfe.
Gruß

Das Lernen kann Dir keiner abnehmen, das musst Du schon selbst machen.
Dabei hilft es auch nicht, wenn Dir jemand Deinen Sketch schreibt, dann lernst Du überhaupt nichts. Ich empfehle Dir dieses C++-Buch.

Gruß Tommy

Ne. Da brauchst Du keine Hilfe.
An anderer Stelle schon....

Schau Dir an, wie das Original aussieht und schau, was Du hier eingestellt hast.
Was ist der Unterschied?
Und ich wiederhole mich erneut: was ist ein include?

Gibt es das im Beispiel?
Gibt es das bei Dir?
Was macht ein Include?

Kurzprogramm zum nächtlichen einschlafen:
https://www.arduinoforum.de/code-referenz
Dort das pdf runterladen.
Einmal von vorn nach hinten lesen.

Nicht vor sich herbeten - nur wissen, das und wo es steht.