KMRT28028-SPI 2.8" TFT SPI 240*320 Display

Moin!
Ich habe mir oben genantes Display bei Amazon Besorgt.
das einzige was im Paket war ist eine Tüte mit einem Display und einem Stift.
sonnst keinerlei Unterlagen.
einige an Test programmen scheine ich gefunden zu haben.
das einzige was sich tut ist der Bildschirm wird WEISS.
sonnst nix!
kennt jemand dieses Display? oder weiß wo man ein Testprogramm dafür finden kann? gegeb. einen Anschluss plan?
Bin mir zwecks an schlüsse zum Display auch nicht sicher da sie mit 3.3 V betrieben
sollen war meine 1. Überlegung einen Spannungsteiler einzusetzen verworfen.
Ich habe mir einen Jungfräulichen Atmel328 mit nem Bootloader versehen und ein
(Vielleicht Richtigem?? Test Prog. ) Bespielt.
Aufbau der Schaltung Minimal Beschaltung.
die Anschlüsse die ich aus dem Programm heraus lesen konnte habe ich verbunden.
alles mit 3.3V Versorgt und der Bildschirm ging an! aber alles nur WEISS!
entweder benötigt der Atmel328 Mehr als nur die Minimal Beschaltung oder das Test Programm ist NICHT für mein Display vorgesehen!
hat jemand mal nen Klapps für mich das ich das Problem beseitige?

Allen einen Besten Dank im Voraus für die Hilfe Stellung und Ratschläge

There is dedicated German section Deutsch - Arduino Forum

Dann lies dir bitte mal den Beitrag
"Wie man dieses Forum benutzt" durch.
Mit deinen Angaben können wir nicht viel anfangen, außer, weitere Fragen stellen.

Link des Displays ?
Schaltbild deines Atmega328 ?
Schaltbild, wie du es angeschlossen hast ?
Deinen verwendeten Sketch ?

Alles Suchergebnisse nach KMRT 28028-SPI 2.8” liefern als Ergebnis ILI9341.

Was für Testprogramm, welscher TFT Treiber?
Wir haben Januar und die Glaskugeln sind noch ziemlich matt.

Also....das wäre die minimal Beschaltung nach meinem Buch.

Das der link von amazon.....

aus dem gehen die Möglichkeiten hervor die Pins sind Beschriftet.
Ich weis wie ich die Versorgungs Spannung von 3.3 auf 5.0V ändern kann
die Signalleitungen müssen aber Trozdem auf 3.3V laufen.
DieSpannungsversorgung Masse ist klar die Pins für Mosi Miso und SLk auch.
Simple_test.ino (6,3 KB)

ich stehe nun ab da auf dem Schlauch!
bei mir gibt es nur einen Weisen Bildschirm!

Hallo,
ich möchte deinen Sketch (in Code-Tags) sehen, nicht so wie er mal aussehen soll.

Und deine Schaltung ist unfertig. Es fehlen die Abblockkondensatoren.
Und ein Widerstand am Resetpin gegen VCC fehlt.
Auch möchten wir sehen, wie du dein Display angeschlossen hast.

Mich ärgert es immer wen jemand etwas kauft und erst danach schaut ob er es mit dem Controller seiner Wahl ansteuern kann. Dann es nicht zusammenbringt und uns fragt.

Amazon ist die schlechteste Quelle für Elektronikmodule weil kaum infos zum Produkt gegeben werden.

Ich bezweifle daß diese Display sinnvoll mit einem ATmega328 betrieben werden kann weil dieser zuwenig RAM hat.
Grüße Uwe

code Tags?
die minimal Beschaltung funktioniert aber soweit..

Im Editor (wenn Du eine Antwort erstellst):grafik

Heute in dieser Zeit?
wird doch alles Blockiert! , meine Letzten Bestellungen aus Fernost sollten 3Wochen betragen mittlerweile soll es Ostern werden!
und A-ZDel. hat sie nur bis 1,8"

Formatierter Text?

//This application does not rely on any libraries and it is for ILI9341

//This program is a demo of clearing screen to display black,white,red,green,blue.

//when using the BREAKOUT BOARD only and using these hardware spi lines to the LCD,
//the SDA pin and SCK pin is defined by the system and can't be modified.
//if you don't need to control the LED pin,you can set it to 3.3V and set the pin definition to -1.
//other pins can be defined by youself,for example
//pin usage as follow:
//             CS  DC/RS  RESET  SDI/MOSI  SCK   LED    VCC     GND    
//Arduino Uno  A5   A3     A4       11      13   A0   5V/3.3V   GND

//Remember to set the pins to suit your display module!
/********************************************************************************
* @attention
*
* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE
* TIME. AS A RESULT, QD electronic SHALL NOT BE HELD LIABLE FOR ANY
* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING
* FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE 
* CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
**********************************************************************************/
#include <SPI.h>

#define LED   A0    
#define CS    A5        
#define RS    A3       
#define RESET A4

void Lcd_Writ_Bus(unsigned char d)
{
  SPI.transfer(d);
}

void Lcd_Write_Com(unsigned char VH)  
{   
  *(portOutputRegister(digitalPinToPort(RS))) &=  ~digitalPinToBitMask(RS);//LCD_RS=0;
  Lcd_Writ_Bus(VH);
}

void Lcd_Write_Data(unsigned char VH)
{
  *(portOutputRegister(digitalPinToPort(RS)))|=  digitalPinToBitMask(RS);//LCD_RS=1;
  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 SPI_Init(void)
{
    SPI.begin();
    SPI.setClockDivider(SPI_CLOCK_DIV4); // 4 MHz (half speed)
    SPI.setBitOrder(MSBFIRST);
    SPI.setDataMode(SPI_MODE0);  
}

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

  digitalWrite(CS,LOW);  //CS

    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); 
    digitalWrite(CS,HIGH);
}

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

void V_line(unsigned int x, unsigned int y, unsigned int l, unsigned int c)                   
{	
  unsigned int i,j;
  digitalWrite(CS,LOW);
  Lcd_Write_Com(0x02c); //write_memory_start
  //digitalWrite(RS,HIGH);
  l=l+y;
  Address_set(x,y,x,l);
  j=l*2;
  for(i=1;i<=j;i++)
  { 
    Lcd_Write_Data(c);
  }
  digitalWrite(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;
  digitalWrite(CS,LOW);
  Address_set(0,0,240,320);
  for(i=0;i<240;i++)
    for(m=0;m<320;m++)
    {
      Lcd_Write_Data(j>>8);
      Lcd_Write_Data(j);
    }
  digitalWrite(CS,HIGH);   
}

void setup()
{
  SPI_Init();
  pinMode(A0,OUTPUT);
  pinMode(A3,OUTPUT);
  pinMode(A4,OUTPUT);
  pinMode(A5,OUTPUT);

  digitalWrite(A0, HIGH);
  digitalWrite(A3, HIGH);
  digitalWrite(A4, HIGH);
  digitalWrite(A5, HIGH);

  Lcd_Init();
  
}

void loop()
{  
   LCD_Clear(0xf800);
   LCD_Clear(0x07E0);
   LCD_Clear(0x001F);
   LCD_Clear(0x0); 
  for(int i=0;i<500;i++)
  {
    Rect(random(300),random(300),random(300),random(300),random(65535)); // rectangle at x, y, with, hight, color
  }
  
//  LCD_Clear(0xf800);
}

eine Frage an MOKO
dein Link zu dem Display und das gezeigte Programm weiter unten.

// For the Adafruit shield, these are the default.
#define TFT_DC 9
#define TFT_CS 10
diese Pins am Arduino sind frei auszuwählen?

Habe gerade erst einen Fregquenz Generator mit nem NANO u.AD9833 gebaut da war schon alles vorgegeben.

baue mal meine Minimal Beschaltung nach Anschiss um! :wink:

bin mal weg!

Du kannst Deine Beiträge auch noch nachträglich editieren... muss also nicht jedesmal einen neuen erstellen

Von wem ?

Entweder du machst es richtig, oder du lässt es sein.
Bei fehlerhaften Schaltungen ist man nie sicher, ob es dauerhaft stabil funktioniert.

Somit sollte man es von anfang an richtig machen.

Ich hatte dich doch gebeten, die Info zu lesen, wie man dieses Forum nutzt.
Hast du das gemacht ?