VERWANDT
Kontakt
0086-411-84619565
E-mail:sales.de@good-display.com
Adresse:Nr. 18 Zhonghua West Road, Bezirk Ganjingzi, Stadt Dalian, Provinz Liaoning
Schreiben Sie Ihren E-Paper-Treiber (Arduino IDE) gemäß dem Spezifikations-Flussdiagramm und der Instruktionsliste
- Kategorie:Technischer Support
- Autor:
- Quelle:
- Angabezeit:2022-11-16
- Aufrufmenge:0
Quelle
Schreiben Sie Ihren E-Paper-Treiber (Arduino IDE) gemäß dem Spezifikations-Flussdiagramm und der Instruktionsliste
Quelle
- Kategorie:Technischer Support
- Autor:
- Quelle:
- Angabezeit:2022-11-16
- Aufrufmenge:0
Schreiben Sie Ihren E-Paper-Treiber (Arduino IDE) gemäß dem Spezifikations-Flussdiagramm und der Instruktionsliste
- Nehmen Sie den 2.13 Zoll elektronischen Tintenschirm GDEY0213B74 als Beispiel
-
Produktspezifikation :https://de.good-display.com/product/532.html
-
ArduinoUNO:http://de.good-display.com/product/222.html
-
Beispielcode: https://de.good-display.com/companyfile/590.html
-
Image2LCD: https://github.com/GoodDisplay/E-paper-Display-Library-of-GoodDisplay/tree/main/Image2LCD
-
Online-Tools:https://www.e-paper-display.com/project/English.html
Wie funktioniert der elektronische Tintenschirm?
Der elektronische Tintenschirm verwendet die elektrophoretische Anzeigetechnologie, die von E Ink beherrscht wird,
um die geladenen Mikrokapsel-Partikel zu arbeiten, indem die angelegte Spannung geändert wird.
Jedes Pixel besteht aus einer einzigen E-Tinte, also einer mikrogekapselten Einheit. Jede Kapsel enthält flüssige Ladung,
in der positive Ladung weiß und negative Ladung schwarz gefärbt wird. Wenn eine positive oder negative Spannung
auf einer Seite angelegt wird, wird die geladene Flüssigkeit angezogen bzw. abgestoßen, um ein Schwarz- oder Weißbild anzuzeigen.
2.1Hardware Parameter des 13-Zoll elektronischen Tintenschirms GDEY0213B74
#Bedeutung von Parametersymbolen
Einzelerdung Vss
Logische Versorgungsspannung Vci
Logik auf hohem Niveau Voh
Logik niedriges Niveau Vol
Typische Leistung Ptyp
Schlafkraft Pschlaf
Ruhestrom
Tiefschlafstrom Idsleep
VCOM-Pin-Ausgang
Flussdiagramm für Tintenschirmantriebe
Beschreibung des Flussdiagramm mit der Codes
1. Versorgungsspannung zum Bildschirm. Im Allgemeinen wird 3.3V Leistung empfohlen
2. Konfiguration initialisieren
2.1. In diesem Schritt müssen Sie die SPI-Kommunikation zwischen Tintenschirm und MCU konfigurieren, d. h. IO-Einstellung
**Für die SPI- und SPI-Kommunikationskonfiguration dieses Farbbildschirms beziehen Sie sich bitte auf
6.3 Panel AC Charakteristika in der Spezifikation**
Beachten Sie folgende Codes:
#include <SPI.h>
#include"Ap_29demo.h"
//IO settings
int BUSY_Pin = 4;
int RES_Pin = 5;
int DC_Pin = 6;
int CS_Pin = 7;
#define EPD_W21_CS_0 digitalWrite(CS_Pin,LOW)
#define EPD_W21_CS_1 digitalWrite(CS_Pin,HIGH)
#define EPD_W21_DC_0 digitalWrite(DC_Pin,LOW)
#define EPD_W21_DC_1 digitalWrite(DC_Pin,HIGH)
#define EPD_W21_RST_0 digitalWrite(RES_Pin,LOW)
#define EPD_W21_RST_1 digitalWrite(RES_Pin,HIGH)
#define isEPD_W21_BUSY digitalRead(BUSY_Pin)
void setup() {
pinMode(BUSY_Pin, INPUT);
pinMode(RES_Pin, OUTPUT);
pinMode(DC_Pin, OUTPUT);
pinMode(CS_Pin, OUTPUT);
//SPI
SPI.beginTransaction(SPISettings(10000000, MSBFIRST, SPI_MODE0));
SPI.begin ();
}
2.2. Entsprechend dem Flussdiagramm müssen Sie nach Abschluss der SPI-Kommunikationskonfiguration die Hardware-Initialisierung
und die Software-Initialisierung des E-Papers durchführen:
/////////////////EPD settings Functions/////////////////////
void EPD_HW_Init(void)
{
EPD_W21_RST_0; // Module reset
delay(10);//At least 10ms delay
EPD_W21_RST_1;
delay(10); //At least 10ms delay
Epaper_READBUSY();
Epaper_Write_Command(0x12); //SWRESET
Epaper_READBUSY();
3. Initialisierungscode senden
Die in diesem Abschnitt enthaltenen Codefragmente sind wie folgt:
Epaper_Write_Command(0x01); //Driver output control
Epaper_Write_Data(0xF9);
Epaper_Write_Data(0x00);
Epaper_Write_Data(0x00);
Epaper_Write_Command(0x11); //data entry mode
Epaper_Write_Data(0x01);
Epaper_Write_Command(0x44); //set Ram-X address start/end position
Epaper_Write_Data(0x00);
Epaper_Write_Data(0x0F); //0x0F-->(15+1)*8=128
Epaper_Write_Command(0x45); //set Ram-Y address start/end position
Epaper_Write_Data(0xF9); //0xF9-->(249+1)=250
Epaper_Write_Data(0x00);
Epaper_Write_Data(0x00);
Epaper_Write_Data(0x00);
Epaper_Write_Command(0x3C); //BorderWaveform
Epaper_Write_Data(0x05);
3.1. Steuerung des Fahrerausgangs
Dieser Teil muss drei Bytes an Daten schreiben:
Schreiben Sie 0xF9 bis A [8:0], das heißt, (249+1), und öffnen Sie insgesamt 250 Gates
Schreiben Sie 0x00 auf B [2:0], das heißt von G0 auf G249, G0 als erstes Ausgabegate; Scansequenz 0, 1, 2, 3... 249; Scanreihenfolge von 0 bis 249
3.2. Data Entry Mode Setting
Schreiben Sie Anweisung 0x11, und schreiben Sie 0x01 bis A [2:0], das heißt ID [1:0]=01, AM=0
Gemäß der folgenden Abbildung und Erklärung stellen wir diesen Modus ein:
Der Adresszähler wird in X-Richtung aktualisiert; Und jedes Mal, wenn die Daten in RAM geschrieben werden,
verringert sich der Y-Adresszähler automatisch um 1, und der X-Adresszähler erhöht sich automatisch um 1
-Es gibt einen Adresszähler im Inneren, der automatisch Adressen in eine bestimmte Richtung addiert oder subtrahiert und die Richtung durch AM einstellt; ID steuert Addition und Subtraktion.
-Bei ID [0]="1" erhöht sich der X-Adresszähler automatisch um 1, nachdem die Daten in den RAM geschrieben wurden.
-Bei ID [0]="0" verringert sich der X-Adresszähler automatisch um 1, nachdem die Daten in den RAM geschrieben wurden.
-Bei ID [1]="1" erhöht sich der Y-Adresszähler automatisch um 1, nachdem die Daten in den RAM geschrieben wurden.
-Bei ID [1]="0" sinkt der Y-Adresszähler automatisch um 1, nachdem die Daten in den RAM geschrieben wurden.
-Bei AM="0" wird der Adresszähler in X-Richtung aktualisiert.
-Bei AM="1" wird der Adresszähler in Y-Richtung aktualisiert.
-Wenn die Fensteradresse ausgewählt ist, werden die Daten in den RAM-Bereich geschrieben, der durch die Fensteradresse angegeben wird, wie durch ID [1:0] und AM Bits angegeben.
3.3. RAM X&Y-Adresse Start/End Position einstellen
Epaper_Write_Command(0x44); //set Ram-X address start/end position
Epaper_Write_Data(0x00);
Epaper_Write_Data(0x0F); //0x0F-->(15+1)*8=128
Epaper_Write_Command(0x45); //set Ram-Y address start/end position
Epaper_Write_Data(0xF9); //0xF9-->(249+1)=250
Epaper_Write_Data(0x00);
Epaper_Write_Data(0x00);
Epaper_Write_Data(0x00);
Sie müssen jetzt den Befehl 0x44, 0x45 verwenden
0x44: A [5:0] Setzen Sie die Startadresse des Fensters in X-Richtung
0x44: B [5:0] Legen Sie die X-Richtung-Abschlussadresse des Fensters fest
Schreiben Sie 0x00 bzw. 0x0F und bestätigen Sie, dass X bei 0 beginnt und bei 15+1 endet* 8=128
0x45: A [8:0] Setzen Sie die Startadresse des Fensters in Y-Richtung
0x45: B [8:0] Legen Sie die Y-Richtung Abschlussadresse des Fensters fest
Entsprechend dem Modus bestimmt durch 0x01 geschrieben in 0x01,
Die Startadresse wird auf 249 und die Endadresse auf 0 gesetzt.
3.3. Border Waveform Control
Epaper_Write_Command(0x3C); //BorderWaveform
Epaper_Write_Data(0x05);
4. Load Waveform LUT
Epaper_Write_Command(0x18); //Read built-in temperature sensor
Epaper_Write_Data(0x80);
5. Bild-Update
0x4E, 0x4F Legen Sie den Anfangswert des RAM-Adresszählers fest
0x4E: A [5:0] Setzen Sie den Wert des X-Richtungszählers der aktuellen RAM-Adresse, X ist 0
0x4F: A [7:0] Setzen Sie den Wert des Y-Richtungszählers der aktuellen RAM-Adresse, Y ist 249
Epaper_Write_Command(0x4E); // set RAM x address count
Epaper_Write_Data(0x00);
Epaper_Write_Command(0x4F); // set RAM y address count
Epaper_Write_Data(0xF9);
Epaper_Write_Data(0x00);
Als nächstes führen Sie den Befehl 0x24 aus. Für den schwarzen und weißen Farbbildschirm GDEY0213B74 schreiben
Sie 0 für Schwarz und 1 für Weiß, die 0x00 bzw. 0xff entsprechen.
//////////////////////Single display///////////////////////////////////
void EPD_WhiteScreen_Black(void)
{
unsigned int i;
Epaper_Write_Command(0x24); //write RAM for black(0)/white (1)
for(i=0;i<4000;i++)
{
Epaper_Write_Data(0x00);
}
EPD_Update();
}
void EPD_WhiteScreen_White(void)
{
unsigned int i;
Epaper_Write_Command(0x24); //write RAM for black(0)/white (1)
for(i=0;i<4000;i++)
{
Epaper_Write_Data(0xff);
}
EPD_Update();
}
*0x0C Anweisungen, die beim Aufruf externer Wellenformen aufgerufen werden, sind in dieser Demo nicht involviert
/////////////////////////All screen update//////////////////////////////
void EPD_WhiteScreen_ALL(const unsigned char * datas)
{
unsigned int i;
Epaper_Write_Command(0x24); //write RAM for black(0)/white (1)
for(i=0;i<4000;i++)
{
Epaper_Write_Data(pgm_read_byte(&datas[i]));
}
EPD_Update();
}
void EPD_WhiteScreen_ALL_Fast(const unsigned char *datas)
{
unsigned int i;
Epaper_Write_Command(0x24); //write RAM for black(0)/white (1)
for(i=0;i<4000;i++)
{
Epaper_Write_Data(pgm_read_byte(&datas[i]));
}
EPD_Update_Fast();
}
/////////////////////////////////////////////////////////////////////////////////////////
void EPD_Update(void)
{
Epaper_Write_Command(0x22); //Display Update Control
Epaper_Write_Data(0xF7);
Epaper_Write_Command(0x20); //Activate Display Update Sequence
Epaper_READBUSY();
}
void EPD_Update_Fast(void)
{
Epaper_Write_Command(0x22); //Display Update Control
Epaper_Write_Data(0xC7);
Epaper_Write_Command(0x20); //Activate Display Update Sequence
Epaper_READBUSY();
}
void EPD_Part_Update(void)
{
Epaper_Write_Command(0x22);//Display Update Control
Epaper_Write_Data(0xFF);
Epaper_Write_Command(0x20); //Activate Display Update Sequence
Epaper_READBUSY();
}
void EPD_DeepSleep(void)
{
Epaper_Write_Command(0x10); //enter deep sleep
Epaper_Write_Data(0x01);
delay(100);
}
void Epaper_READBUSY(void)
{
while(1)
{ //=1 BUSY
if(isEPD_W21_BUSY==0) break;
}
}
5.1 Display Update Control
Die obigen Codefragmente entwerfen drei Aktualisierungsmethoden der elektronischen Papieranzeige:
EPD_Update Epaper_Write_Data(0xF7);
EPD_Update_Fast Epaper_Write_Data(0xC7);
EPD_Part_Update Epaper_Write_Data(0xFF);
Epaper_Write_Command(0x21); // Display update control
Epaper_Write_Data(0x00);
Epaper_Write_Data(0x80);
Wenn 0x00 geschrieben ist, gibt es:
A[7:4] 0000-Normal
A[3:0] 0000-Normal
B [7] Schreiben 0x80 entspricht 1, S8toS167 (Schreiben 0x00 entspricht S0toS175)
Wenn Sie 0x80 auf 0x00 ändern, entspricht der tatsächliche Effekt einer Verschiebung des gesamten Bildes um 8bit
for(i=0;i<4000;i++)
Aus: Ap_29demo.h
const unsigned char gImage_basemap[4000]
Die Auflösung des Bildes muss 250x122 betragen und dann die Schritte in der Bildverarbeitungsanweisung befolgen (verwendet mit Image2LCD Software); Sie können auch direkt das Online-Tool von Good Display to ImageToArray verwenden, so dass Sie nur sicherstellen müssen, dass die Bildauflösung 250x122 erfüllt und das Bildformat jpg und png unterstützt.
Wenn Sie den vertikalen Scanmodus wählen, erhalten Sie 4000 Bytes;
Wenn Sie den horizontalen Scanmodus auswählen, erhalten Sie 3904 Bytes; Entsprechend für (i=0; i<3904; i++)
6. Das elektronische Papier vervollständigt die Bildaktualisierung und geht in den Schlaf
void EPD_DeepSleep(void)
{
Epaper_Write_Command(0x10); //enter deep sleep
Epaper_Write_Data(0x01);
QR-Code Scan erfolgt mit Handy
권장제품
온라인 메시지
佳显电子
Kontakt
Produktanfrage : sales.de@good-display.com
technischer Support : service@good-display.com
Beschwerdevorschlag : complaint@good-display.com
©2021-2024 DALIAN GOOD DISPLAY CO., LTD. All Rights Reserved. 辽ICP备08000578号-1 power by:300.cn Dalian