Initial commit
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"attachmentFolderPath": "./_docAssets",
|
||||||
|
"newLinkFormat": "relative",
|
||||||
|
"alwaysUpdateLinks": true,
|
||||||
|
"useMarkdownLinks": true
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
"file-explorer": true,
|
||||||
|
"global-search": true,
|
||||||
|
"switcher": true,
|
||||||
|
"graph": true,
|
||||||
|
"backlink": true,
|
||||||
|
"canvas": true,
|
||||||
|
"outgoing-link": true,
|
||||||
|
"tag-pane": true,
|
||||||
|
"footnotes": false,
|
||||||
|
"properties": true,
|
||||||
|
"page-preview": true,
|
||||||
|
"daily-notes": true,
|
||||||
|
"templates": true,
|
||||||
|
"note-composer": true,
|
||||||
|
"command-palette": true,
|
||||||
|
"slash-command": false,
|
||||||
|
"editor-status": true,
|
||||||
|
"bookmarks": true,
|
||||||
|
"markdown-importer": false,
|
||||||
|
"zk-prefixer": false,
|
||||||
|
"random-note": false,
|
||||||
|
"outline": true,
|
||||||
|
"word-count": true,
|
||||||
|
"slides": false,
|
||||||
|
"audio-recorder": false,
|
||||||
|
"workspaces": false,
|
||||||
|
"file-recovery": true,
|
||||||
|
"publish": false,
|
||||||
|
"sync": true,
|
||||||
|
"bases": true,
|
||||||
|
"webviewer": false
|
||||||
|
}
|
||||||
@@ -0,0 +1,235 @@
|
|||||||
|
{
|
||||||
|
"main": {
|
||||||
|
"id": "1fa809070d9803ee",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "291716df19b268b8",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "e04ce768654e1112",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "markdown",
|
||||||
|
"state": {
|
||||||
|
"file": "README.md",
|
||||||
|
"mode": "source",
|
||||||
|
"source": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-file",
|
||||||
|
"title": "README"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "vertical"
|
||||||
|
},
|
||||||
|
"left": {
|
||||||
|
"id": "1aebefe4bfe86911",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "63170218ec80dc27",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "49d9a20d15b3914b",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "file-explorer",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"autoReveal": false
|
||||||
|
},
|
||||||
|
"icon": "lucide-folder-closed",
|
||||||
|
"title": "Files"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "8d91401e18b0c276",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "search",
|
||||||
|
"state": {
|
||||||
|
"query": "",
|
||||||
|
"matchingCase": false,
|
||||||
|
"explainSearch": false,
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical"
|
||||||
|
},
|
||||||
|
"icon": "lucide-search",
|
||||||
|
"title": "Search"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "c133e091defcd246",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "bookmarks",
|
||||||
|
"state": {},
|
||||||
|
"icon": "lucide-bookmark",
|
||||||
|
"title": "Bookmarks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300
|
||||||
|
},
|
||||||
|
"right": {
|
||||||
|
"id": "5ccfeaa2b6e1e842",
|
||||||
|
"type": "split",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "d93b7e572f42c464",
|
||||||
|
"type": "tabs",
|
||||||
|
"children": [
|
||||||
|
{
|
||||||
|
"id": "93e38cec9ef7bd4b",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "backlink",
|
||||||
|
"state": {
|
||||||
|
"file": "README.md",
|
||||||
|
"collapseAll": false,
|
||||||
|
"extraContext": false,
|
||||||
|
"sortOrder": "alphabetical",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": "",
|
||||||
|
"backlinkCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-coming-in",
|
||||||
|
"title": "Backlinks for README"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fc8a1b0e9e934ba8",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outgoing-link",
|
||||||
|
"state": {
|
||||||
|
"file": "README.md",
|
||||||
|
"linksCollapsed": false,
|
||||||
|
"unlinkedCollapsed": true
|
||||||
|
},
|
||||||
|
"icon": "links-going-out",
|
||||||
|
"title": "Outgoing links from README"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bdc648f4c4d7bf7a",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "tag",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"useHierarchy": true,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-tags",
|
||||||
|
"title": "Tags"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2a95225123505042",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "all-properties",
|
||||||
|
"state": {
|
||||||
|
"sortOrder": "frequency",
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-archive",
|
||||||
|
"title": "All properties"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "ee905b20125b9c2a",
|
||||||
|
"type": "leaf",
|
||||||
|
"state": {
|
||||||
|
"type": "outline",
|
||||||
|
"state": {
|
||||||
|
"file": "README.md",
|
||||||
|
"followCursor": false,
|
||||||
|
"showSearch": false,
|
||||||
|
"searchQuery": ""
|
||||||
|
},
|
||||||
|
"icon": "lucide-list",
|
||||||
|
"title": "Outline of README"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"direction": "horizontal",
|
||||||
|
"width": 300,
|
||||||
|
"collapsed": true
|
||||||
|
},
|
||||||
|
"left-ribbon": {
|
||||||
|
"hiddenItems": {
|
||||||
|
"switcher:Open quick switcher": false,
|
||||||
|
"graph:Open graph view": false,
|
||||||
|
"canvas:Create new canvas": false,
|
||||||
|
"daily-notes:Open today's daily note": false,
|
||||||
|
"templates:Insert template": false,
|
||||||
|
"command-palette:Open command palette": false,
|
||||||
|
"bases:Create new base": false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"active": "e04ce768654e1112",
|
||||||
|
"lastOpenFiles": [
|
||||||
|
"libraries/GxEPD2/examples/GxEPD2_SerialFlash_Loader/GxEPD2_SerialFlash_Loader.ino",
|
||||||
|
"libraries/GxEPD2/examples/GxEPD2_SerialFlash_Loader/GxEPD2_github_raw_certs.h",
|
||||||
|
"libraries/GxEPD2/examples/GxEPD2_SerialFlash_Loader",
|
||||||
|
"libraries/GxEPD2/examples/GxEPD2_SerialFlash_Example/GxEPD2_wiring_examples.h",
|
||||||
|
"libraries/GxEPD2/examples/GxEPD2_SerialFlash_Example/GxEPD2_SerialFlash_Example.ino",
|
||||||
|
"libraries/GxEPD2/examples/GxEPD2_SerialFlash_Example/GxEPD2_selection_check.h",
|
||||||
|
"libraries/GxEPD2/examples/GxEPD2_SerialFlash_Example/GxEPD2_display_selection_new_style.h",
|
||||||
|
"libraries/GxEPD2/examples/GxEPD2_SerialFlash_Example",
|
||||||
|
"_docAssets/Screenshot 2026-06-28 235455.jpg",
|
||||||
|
"_docAssets/Screenshot 2026-06-28 235353.jpg",
|
||||||
|
"_docAssets/Pasted image 20260628235346.png",
|
||||||
|
"_docAssets/Pasted image 20260628235051.png",
|
||||||
|
"_docAssets/Pasted image 20260628222533.jpg",
|
||||||
|
"_docAssets/Pasted image 20260628223439.jpg",
|
||||||
|
"_docAssets/Pasted image 20260628223456.jpg",
|
||||||
|
"_docAssets/Pasted image 20260628225252.jpg",
|
||||||
|
"_docAssets/Pasted image 20260628225330.jpg",
|
||||||
|
"_docAssets/Pasted image 20260628225607.jpg",
|
||||||
|
"NTPClockEpaper/NTPClockEpaper.ino",
|
||||||
|
"NTPClockEpaper/FreeSerifBold18pts.txt",
|
||||||
|
"NTPClockEpaper/DSEG7_Classic_Regular_48.h",
|
||||||
|
"libraries/Time/docs/issue_template.md",
|
||||||
|
"libraries/Time/Readme.md",
|
||||||
|
"libraries/SoftPWM/README.md",
|
||||||
|
"libraries/GxEPD2/extras/sw_spi/README.MD",
|
||||||
|
"libraries/GxEPD2/README.md",
|
||||||
|
"libraries/GxEPD2/CONTRIBUTING.md",
|
||||||
|
"libraries/GxEPD2/ConnectingHardware.md",
|
||||||
|
"libraries/ESP_Async_WebServer/examples/idf_component/websocket/README.md",
|
||||||
|
"libraries/ESP_Async_WebServer/examples/idf_component/serversentevents/README.md",
|
||||||
|
"libraries/ESP_Async_WebServer/examples/idf_component/catchall/README.md",
|
||||||
|
"libraries/ESP_Async_WebServer/examples/arduino/URIMatcher/README.md",
|
||||||
|
"libraries/ESP_Async_WebServer/docs/backup/wiki.md",
|
||||||
|
"libraries/ESP_Async_WebServer/docs/backup/README.md",
|
||||||
|
"libraries/ESP_Async_WebServer/docs/websockets.md",
|
||||||
|
"libraries/ESP_Async_WebServer/docs/static-files.md",
|
||||||
|
"libraries/ESP_Async_WebServer/docs/setup.md",
|
||||||
|
"libraries/ESP_Async_WebServer/docs/routing.md",
|
||||||
|
"libraries/ESP_Async_WebServer/docs/responses.md",
|
||||||
|
"libraries/ESP_Async_WebServer/docs/requests.md",
|
||||||
|
"libraries/ESP_Async_WebServer/docs/middleware.md",
|
||||||
|
"libraries/ESP_Async_WebServer/docs/installation.md",
|
||||||
|
"libraries/ESP_Async_WebServer/docs/index.md",
|
||||||
|
"libraries/ESP_Async_WebServer/docs/help_and_issues.md",
|
||||||
|
"libraries/ESP_Async_WebServer/docs/filters.md",
|
||||||
|
"libraries/ESP_Async_WebServer/docs/eventsource.md"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <Adafruit_GFX.h>
|
||||||
|
|
||||||
@@ -0,0 +1,202 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <Adafruit_GFX.h>
|
||||||
|
|
||||||
|
// Created by https://oleddisplay.squix.ch/ Consider a donation
|
||||||
|
// In case of problems make sure that you are using the font file with the correct version!
|
||||||
|
const uint8_t DSEG7_Classic_Bold_56Bitmaps[] PROGMEM = {
|
||||||
|
|
||||||
|
// Bitmap Data:
|
||||||
|
0x00, // ' '
|
||||||
|
0x00, // '!'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '"'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '#'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '$'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '%'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '&'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '''
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '('
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // ')'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '*'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '+'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // ','
|
||||||
|
0x3F,0xFF,0xFE,0x0F,0xFF,0xFF,0xE3,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xC7,0xFF,0xFF,0xF0,0x7F,0xFF,0xFC,0x00, // '-'
|
||||||
|
0x79,0xFB,0xF7,0xEF,0xDF,0x9E,0x00, // '.'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '/'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0xCE,0x7F,0xFF,0xFF,0xBD,0xE7,0xFF,0xFF,0xEF,0xBE,0x7F,0xFF,0xFB,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x0F,0xDF,0x00,0x00,0x00,0xFB,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0xBE,0x00,0x00,0x01,0xF7,0xE0,0x00,0x00,0x7E,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x3F,0xFF,0xFD,0xFB,0xCF,0xFF,0xFF,0xDF,0x73,0xFF,0xFF,0xFD,0xEC,0xFF,0xFF,0xFF,0xD8,0x3F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xE0, // '0'
|
||||||
|
0x0C,0x1E,0x3E,0x7E,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x7E,0x3E,0x1E,0x00,0x00,0x1E,0x3E,0x7E,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x7E,0x3E,0x1E,0x0C, // '1'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFE,0xC0,0x7F,0xFF,0xFF,0xBC,0x07,0xFF,0xFF,0xEF,0x80,0x7F,0xFF,0xFB,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x0F,0xC0,0x7F,0xFF,0xFC,0xF8,0x1F,0xFF,0xFF,0xCF,0x07,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0x81,0xEF,0xFF,0xFF,0xE0,0x3E,0xFF,0xFF,0xF8,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x3F,0xFF,0xFC,0x03,0xCF,0xFF,0xFF,0xC0,0x73,0xFF,0xFF,0xFC,0x0C,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xE0, // '2'
|
||||||
|
0x7F,0xFF,0xFF,0xF0,0x7F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFE,0xF0,0x7F,0xFF,0xFE,0xF8,0x1F,0xFF,0xFE,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x1F,0xC0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x07,0xF0,0x00,0x00,0x03,0xF8,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x1F,0xC0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x07,0xF0,0x00,0x00,0x03,0xF8,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x07,0xFF,0xFF,0xCF,0x87,0xFF,0xFF,0xF3,0xC7,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFE,0x00,0xFF,0xFF,0xFE,0x78,0x3F,0xFF,0xFE,0x7C,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x1F,0xC0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x07,0xF0,0x00,0x00,0x03,0xF8,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x1F,0xC0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x07,0xF0,0x00,0x00,0x03,0xF8,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x7F,0x03,0xFF,0xFF,0xDF,0x83,0xFF,0xFF,0xF7,0xC3,0xFF,0xFF,0xFD,0xE3,0xFF,0xFF,0xFF,0x63,0xFF,0xFF,0xFF,0xC3,0xFF,0xFF,0xFF,0xE0,0xFF,0xFF,0xFF,0xE0, // '3'
|
||||||
|
0xC0,0x00,0x00,0x01,0x9C,0x00,0x00,0x00,0x7B,0xC0,0x00,0x00,0x1F,0x7C,0x00,0x00,0x07,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x1F,0xBE,0xFF,0xFF,0xF9,0xF7,0xBF,0xFF,0xFF,0x9E,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFF,0x00,0x1F,0xFF,0xFF,0xCF,0x01,0xFF,0xFF,0xF3,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x30, // '4'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0x0E,0x7F,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xE0,0x3E,0x7F,0xFF,0xF8,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x7F,0xFF,0xFC,0x03,0xDF,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xE7,0x80,0xFF,0xFF,0xF9,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x3F,0xFF,0xFD,0xF8,0x0F,0xFF,0xFF,0xDF,0x03,0xFF,0xFF,0xFD,0xE0,0xFF,0xFF,0xFF,0xD8,0x3F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xE0, // '5'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0x0E,0x7F,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xE0,0x3E,0x7F,0xFF,0xF8,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x7F,0xFF,0xFC,0x03,0xDF,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0x81,0xEF,0xFF,0xFF,0xE7,0xBE,0xFF,0xFF,0xF9,0xF7,0xE0,0x00,0x00,0x7E,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x3F,0xFF,0xFD,0xFB,0xCF,0xFF,0xFF,0xDF,0x73,0xFF,0xFF,0xFD,0xEC,0xFF,0xFF,0xFF,0xD8,0x3F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xE0, // '6'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0xCE,0x7F,0xFF,0xFF,0xBD,0xE7,0xFF,0xFF,0xEF,0xBE,0x7F,0xFF,0xFB,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x0F,0xDF,0x00,0x00,0x00,0xFB,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x18, // '7'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0xCE,0x7F,0xFF,0xFF,0xBD,0xE7,0xFF,0xFF,0xEF,0xBE,0x7F,0xFF,0xFB,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x0F,0xDF,0x7F,0xFF,0xFC,0xFB,0xDF,0xFF,0xFF,0xCF,0x07,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0x81,0xEF,0xFF,0xFF,0xE7,0xBE,0xFF,0xFF,0xF9,0xF7,0xE0,0x00,0x00,0x7E,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x3F,0xFF,0xFD,0xFB,0xCF,0xFF,0xFF,0xDF,0x73,0xFF,0xFF,0xFD,0xEC,0xFF,0xFF,0xFF,0xD8,0x3F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xE0, // '8'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0xCE,0x7F,0xFF,0xFF,0xBD,0xE7,0xFF,0xFF,0xEF,0xBE,0x7F,0xFF,0xFB,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x0F,0xDF,0x7F,0xFF,0xFC,0xFB,0xDF,0xFF,0xFF,0xCF,0x07,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xE7,0x80,0xFF,0xFF,0xF9,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x3F,0xFF,0xFD,0xF8,0x0F,0xFF,0xFF,0xDF,0x03,0xFF,0xFF,0xFD,0xE0,0xFF,0xFF,0xFF,0xD8,0x3F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xE0, // '9'
|
||||||
|
0x7C,0x7E,0xFE,0xFE,0xFE,0x7C,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x7E,0xFE,0xFE,0xFE,0x7C,0x38, // ':'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // ';'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '<'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '='
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '>'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '?'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '@'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0xCE,0x7F,0xFF,0xFF,0xBD,0xE7,0xFF,0xFF,0xEF,0xBE,0x7F,0xFF,0xFB,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x0F,0xDF,0x7F,0xFF,0xFC,0xFB,0xDF,0xFF,0xFF,0xCF,0x07,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0x81,0xEF,0xFF,0xFF,0xE7,0xBE,0xFF,0xFF,0xF9,0xF7,0xE0,0x00,0x00,0x7E,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x00,0x00,0x01,0xFB,0xC0,0x00,0x00,0x1F,0x70,0x00,0x00,0x01,0xEC,0x00,0x00,0x00,0x18, // 'A'
|
||||||
|
0xC0,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3E,0xFF,0xFF,0xF8,0x07,0xBF,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFF,0x03,0xDF,0xFF,0xFF,0xCF,0x7D,0xFF,0xFF,0xF3,0xEF,0xC0,0x00,0x00,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBE,0x7F,0xFF,0xFB,0xF7,0x9F,0xFF,0xFF,0xBE,0xE7,0xFF,0xFF,0xFB,0xD9,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC0, // 'B'
|
||||||
|
0x03,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xF8,0x03,0xFF,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0x0F,0x7F,0xFF,0xFF,0x07,0xDF,0xFF,0xFF,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF9,0xFF,0xFF,0xE0,0x79,0xFF,0xFF,0xF8,0x39,0xFF,0xFF,0xFE,0x19,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFF,0xE1,0xFF,0xFF,0xFF,0xF0,0x7F,0xFF,0xFF,0xF0, // 'C'
|
||||||
|
0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x1F,0x80,0xFF,0xFF,0xF9,0xF0,0x3F,0xFF,0xFF,0x9E,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFF,0x03,0xDF,0xFF,0xFF,0xCF,0x7D,0xFF,0xFF,0xF3,0xEF,0xC0,0x00,0x00,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBE,0x7F,0xFF,0xFB,0xF7,0x9F,0xFF,0xFF,0xBE,0xE7,0xFF,0xFF,0xFB,0xD9,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC0, // 'D'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0x99,0xFF,0xFF,0xFF,0x8E,0x7F,0xFF,0xFF,0x87,0x9F,0xFF,0xFF,0x83,0xE7,0xFF,0xFF,0x81,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7D,0xFF,0xFF,0xF0,0x3D,0xFF,0xFF,0xFC,0x01,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x87,0xBF,0xFF,0xFF,0x83,0xEF,0xFF,0xFF,0x81,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7C,0xFF,0xFF,0xF0,0x3C,0xFF,0xFF,0xFC,0x1C,0xFF,0xFF,0xFF,0x0C,0xFF,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xF8, // 'E'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0x99,0xFF,0xFF,0xFF,0x8E,0x7F,0xFF,0xFF,0x87,0x9F,0xFF,0xFF,0x83,0xE7,0xFF,0xFF,0x81,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7D,0xFF,0xFF,0xF0,0x3D,0xFF,0xFF,0xFC,0x01,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x87,0xBF,0xFF,0xFF,0x83,0xEF,0xFF,0xFF,0x81,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00, // 'F'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0x0E,0x7F,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xE0,0x3E,0x7F,0xFF,0xF8,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0xBE,0x00,0x00,0x01,0xF7,0xE0,0x00,0x00,0x7E,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x3F,0xFF,0xFD,0xFB,0xCF,0xFF,0xFF,0xDF,0x73,0xFF,0xFF,0xFD,0xEC,0xFF,0xFF,0xFF,0xD8,0x3F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xE0, // 'G'
|
||||||
|
0xC0,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3E,0xFF,0xFF,0xF8,0x07,0xBF,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFF,0x03,0xDF,0xFF,0xFF,0xCF,0x7D,0xFF,0xFF,0xF3,0xEF,0xC0,0x00,0x00,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBE,0x00,0x00,0x03,0xF7,0x80,0x00,0x00,0x3E,0xE0,0x00,0x00,0x03,0xD8,0x00,0x00,0x00,0x30, // 'H'
|
||||||
|
0x1E,0x3E,0x7E,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x7E,0x3E,0x1E,0x0C, // 'I'
|
||||||
|
0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x7C,0x00,0x00,0x03,0xEF,0xC0,0x00,0x00,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBE,0x7F,0xFF,0xFB,0xF7,0x9F,0xFF,0xFF,0xBE,0xE7,0xFF,0xFF,0xFB,0xD9,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC0, // 'J'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0x0E,0x7F,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xE0,0x3E,0x7F,0xFF,0xF8,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x7F,0xFF,0xFC,0x03,0xDF,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0x81,0xEF,0xFF,0xFF,0xE7,0xBE,0xFF,0xFF,0xF9,0xF7,0xE0,0x00,0x00,0x7E,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x00,0x00,0x01,0xFB,0xC0,0x00,0x00,0x1F,0x70,0x00,0x00,0x01,0xEC,0x00,0x00,0x00,0x18, // 'K'
|
||||||
|
0xC0,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xE7,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xE0,0xE7,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xFF,0x87,0xFF,0xFF,0xFF,0xC1,0xFF,0xFF,0xFF,0xC0, // 'L'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0xCE,0x7F,0xFF,0xFF,0xBD,0xE7,0xFF,0xFF,0xEF,0xBE,0x7F,0xFF,0xFB,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x0F,0xDF,0x00,0x00,0x00,0xFB,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0xBE,0x00,0x00,0x01,0xF7,0xE0,0x00,0x00,0x7E,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x00,0x00,0x01,0xFB,0xC0,0x00,0x00,0x1F,0x70,0x00,0x00,0x01,0xEC,0x00,0x00,0x00,0x18, // 'M'
|
||||||
|
0x03,0xFF,0xFF,0xE0,0x00,0xFF,0xFF,0xFE,0x00,0x3F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xFC,0x0F,0x7F,0xFF,0xFF,0x3D,0xF7,0xFF,0xFF,0xCF,0xBF,0x00,0x00,0x03,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xF8,0x00,0x00,0x0F,0xDE,0x00,0x00,0x00,0xFB,0x80,0x00,0x00,0x0F,0x60,0x00,0x00,0x00,0xC0, // 'N'
|
||||||
|
0x03,0xFF,0xFF,0xE0,0x00,0xFF,0xFF,0xFE,0x00,0x3F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xFC,0x0F,0x7F,0xFF,0xFF,0x3D,0xF7,0xFF,0xFF,0xCF,0xBF,0x00,0x00,0x03,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xF9,0xFF,0xFF,0xEF,0xDE,0x7F,0xFF,0xFE,0xFB,0x9F,0xFF,0xFF,0xEF,0x67,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0x00, // 'O'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0xCE,0x7F,0xFF,0xFF,0xBD,0xE7,0xFF,0xFF,0xEF,0xBE,0x7F,0xFF,0xFB,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x0F,0xDF,0x7F,0xFF,0xFC,0xFB,0xDF,0xFF,0xFF,0xCF,0x07,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0x81,0xEF,0xFF,0xFF,0xE0,0x3E,0xFF,0xFF,0xF8,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00, // 'P'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0xCE,0x7F,0xFF,0xFF,0xBD,0xE7,0xFF,0xFF,0xEF,0xBE,0x7F,0xFF,0xFB,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x0F,0xDF,0x7F,0xFF,0xFC,0xFB,0xDF,0xFF,0xFF,0xCF,0x07,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xE7,0x80,0xFF,0xFF,0xF9,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x18, // 'Q'
|
||||||
|
0x03,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xE0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0xCF,0x7F,0xFF,0xFF,0x1F,0x7F,0xFF,0xFC,0x3F,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0xFC,0x00,0x00,0x01,0xF8,0x00,0x00,0x03,0xF0,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x1F,0x80,0x00,0x00,0x3F,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0xFC,0x00,0x00,0x01,0xF8,0x00,0x00,0x03,0xF0,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x1F,0x80,0x00,0x00,0x3F,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0xF8,0x00,0x00,0x01,0xE0,0x00,0x00,0x03,0x80,0x00,0x00,0x06,0x00,0x00,0x00,0x00, // 'R'
|
||||||
|
0xC0,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3E,0xFF,0xFF,0xF8,0x07,0xBF,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFF,0x00,0x1F,0xFF,0xFF,0xCF,0x01,0xFF,0xFF,0xF3,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x7F,0xFF,0xFB,0xF0,0x1F,0xFF,0xFF,0xBE,0x07,0xFF,0xFF,0xFB,0xC1,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC0, // 'S'
|
||||||
|
0xC0,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xEF,0xFF,0xFF,0x81,0xEF,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFC,0x3D,0xFF,0xFF,0xFC,0x1F,0x7F,0xFF,0xFC,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xE7,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xE0,0xE7,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xFF,0x87,0xFF,0xFF,0xFF,0xC1,0xFF,0xFF,0xFF,0xC0, // 'T'
|
||||||
|
0xF0,0x00,0x00,0x03,0xDF,0x00,0x00,0x00,0xFB,0xF0,0x00,0x00,0x3F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0x9F,0xFF,0xFE,0xFD,0xE7,0xFF,0xFF,0xEF,0xB9,0xFF,0xFF,0xFE,0xF6,0x7F,0xFF,0xFF,0xEC,0x1F,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF0,0x00, // 'U'
|
||||||
|
0xC0,0x00,0x00,0x01,0x9C,0x00,0x00,0x00,0x7B,0xC0,0x00,0x00,0x1F,0x7C,0x00,0x00,0x07,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x1F,0xBE,0x00,0x00,0x01,0xF7,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x7C,0x00,0x00,0x03,0xEF,0xC0,0x00,0x00,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBE,0x7F,0xFF,0xFB,0xF7,0x9F,0xFF,0xFF,0xBE,0xE7,0xFF,0xFF,0xFB,0xD9,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC0, // 'V'
|
||||||
|
0xC0,0x00,0x00,0x01,0x9C,0x00,0x00,0x00,0x7B,0xC0,0x00,0x00,0x1F,0x7C,0x00,0x00,0x07,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x1F,0xBE,0xFF,0xFF,0xF9,0xF7,0xBF,0xFF,0xFF,0x9E,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFF,0x03,0xDF,0xFF,0xFF,0xCF,0x7D,0xFF,0xFF,0xF3,0xEF,0xC0,0x00,0x00,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBE,0x7F,0xFF,0xFB,0xF7,0x9F,0xFF,0xFF,0xBE,0xE7,0xFF,0xFF,0xFB,0xD9,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC0, // 'W'
|
||||||
|
0xC0,0x00,0x00,0x01,0x9C,0x00,0x00,0x00,0x7B,0xC0,0x00,0x00,0x1F,0x7C,0x00,0x00,0x07,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x1F,0xBE,0xFF,0xFF,0xF9,0xF7,0xBF,0xFF,0xFF,0x9E,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFF,0x03,0xDF,0xFF,0xFF,0xCF,0x7D,0xFF,0xFF,0xF3,0xEF,0xC0,0x00,0x00,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBE,0x00,0x00,0x03,0xF7,0x80,0x00,0x00,0x3E,0xE0,0x00,0x00,0x03,0xD8,0x00,0x00,0x00,0x30, // 'X'
|
||||||
|
0xC0,0x00,0x00,0x01,0x9C,0x00,0x00,0x00,0x7B,0xC0,0x00,0x00,0x1F,0x7C,0x00,0x00,0x07,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x1F,0xBE,0xFF,0xFF,0xF9,0xF7,0xBF,0xFF,0xFF,0x9E,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFF,0x00,0x1F,0xFF,0xFF,0xCF,0x01,0xFF,0xFF,0xF3,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x7F,0xFF,0xFB,0xF0,0x1F,0xFF,0xFF,0xBE,0x07,0xFF,0xFF,0xFB,0xC1,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC0, // 'Y'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFE,0xC0,0x7F,0xFF,0xFF,0xBC,0x07,0xFF,0xFF,0xEF,0x80,0x7F,0xFF,0xFB,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x3F,0xFF,0xFC,0x03,0xCF,0xFF,0xFF,0xC0,0x73,0xFF,0xFF,0xFC,0x0C,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xE0, // 'Z'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '['
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '\'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // ']'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '^'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '_'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '`'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0xCE,0x7F,0xFF,0xFF,0xBD,0xE7,0xFF,0xFF,0xEF,0xBE,0x7F,0xFF,0xFB,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x0F,0xDF,0x7F,0xFF,0xFC,0xFB,0xDF,0xFF,0xFF,0xCF,0x07,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0x81,0xEF,0xFF,0xFF,0xE7,0xBE,0xFF,0xFF,0xF9,0xF7,0xE0,0x00,0x00,0x7E,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x00,0x00,0x01,0xFB,0xC0,0x00,0x00,0x1F,0x70,0x00,0x00,0x01,0xEC,0x00,0x00,0x00,0x18, // 'a'
|
||||||
|
0xC0,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3E,0xFF,0xFF,0xF8,0x07,0xBF,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFF,0x03,0xDF,0xFF,0xFF,0xCF,0x7D,0xFF,0xFF,0xF3,0xEF,0xC0,0x00,0x00,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBE,0x7F,0xFF,0xFB,0xF7,0x9F,0xFF,0xFF,0xBE,0xE7,0xFF,0xFF,0xFB,0xD9,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC0, // 'b'
|
||||||
|
0x03,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xF8,0x03,0xFF,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0x0F,0x7F,0xFF,0xFF,0x07,0xDF,0xFF,0xFF,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xF9,0xFF,0xFF,0xE0,0x79,0xFF,0xFF,0xF8,0x39,0xFF,0xFF,0xFE,0x19,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFF,0xE1,0xFF,0xFF,0xFF,0xF0,0x7F,0xFF,0xFF,0xF0, // 'c'
|
||||||
|
0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x1F,0x80,0xFF,0xFF,0xF9,0xF0,0x3F,0xFF,0xFF,0x9E,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFF,0x03,0xDF,0xFF,0xFF,0xCF,0x7D,0xFF,0xFF,0xF3,0xEF,0xC0,0x00,0x00,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBE,0x7F,0xFF,0xFB,0xF7,0x9F,0xFF,0xFF,0xBE,0xE7,0xFF,0xFF,0xFB,0xD9,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC0, // 'd'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0x99,0xFF,0xFF,0xFF,0x8E,0x7F,0xFF,0xFF,0x87,0x9F,0xFF,0xFF,0x83,0xE7,0xFF,0xFF,0x81,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7D,0xFF,0xFF,0xF0,0x3D,0xFF,0xFF,0xFC,0x01,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x87,0xBF,0xFF,0xFF,0x83,0xEF,0xFF,0xFF,0x81,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7C,0xFF,0xFF,0xF0,0x3C,0xFF,0xFF,0xFC,0x1C,0xFF,0xFF,0xFF,0x0C,0xFF,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xF8, // 'e'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0x99,0xFF,0xFF,0xFF,0x8E,0x7F,0xFF,0xFF,0x87,0x9F,0xFF,0xFF,0x83,0xE7,0xFF,0xFF,0x81,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7D,0xFF,0xFF,0xF0,0x3D,0xFF,0xFF,0xFC,0x01,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0x87,0xBF,0xFF,0xFF,0x83,0xEF,0xFF,0xFF,0x81,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00, // 'f'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0x0E,0x7F,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xE0,0x3E,0x7F,0xFF,0xF8,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0xBE,0x00,0x00,0x01,0xF7,0xE0,0x00,0x00,0x7E,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x3F,0xFF,0xFD,0xFB,0xCF,0xFF,0xFF,0xDF,0x73,0xFF,0xFF,0xFD,0xEC,0xFF,0xFF,0xFF,0xD8,0x3F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xE0, // 'g'
|
||||||
|
0xC0,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3E,0xFF,0xFF,0xF8,0x07,0xBF,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFF,0x03,0xDF,0xFF,0xFF,0xCF,0x7D,0xFF,0xFF,0xF3,0xEF,0xC0,0x00,0x00,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBE,0x00,0x00,0x03,0xF7,0x80,0x00,0x00,0x3E,0xE0,0x00,0x00,0x03,0xD8,0x00,0x00,0x00,0x30, // 'h'
|
||||||
|
0x1E,0x3E,0x7E,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x7E,0x3E,0x1E,0x0C, // 'i'
|
||||||
|
0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x7C,0x00,0x00,0x03,0xEF,0xC0,0x00,0x00,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBE,0x7F,0xFF,0xFB,0xF7,0x9F,0xFF,0xFF,0xBE,0xE7,0xFF,0xFF,0xFB,0xD9,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC0, // 'j'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0x0E,0x7F,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xE0,0x3E,0x7F,0xFF,0xF8,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x7F,0xFF,0xFC,0x03,0xDF,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0x81,0xEF,0xFF,0xFF,0xE7,0xBE,0xFF,0xFF,0xF9,0xF7,0xE0,0x00,0x00,0x7E,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x00,0x00,0x01,0xFB,0xC0,0x00,0x00,0x1F,0x70,0x00,0x00,0x01,0xEC,0x00,0x00,0x00,0x18, // 'k'
|
||||||
|
0xC0,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xE7,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xE0,0xE7,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xFF,0x87,0xFF,0xFF,0xFF,0xC1,0xFF,0xFF,0xFF,0xC0, // 'l'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0xCE,0x7F,0xFF,0xFF,0xBD,0xE7,0xFF,0xFF,0xEF,0xBE,0x7F,0xFF,0xFB,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x0F,0xDF,0x00,0x00,0x00,0xFB,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0xBE,0x00,0x00,0x01,0xF7,0xE0,0x00,0x00,0x7E,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x00,0x00,0x01,0xFB,0xC0,0x00,0x00,0x1F,0x70,0x00,0x00,0x01,0xEC,0x00,0x00,0x00,0x18, // 'm'
|
||||||
|
0x03,0xFF,0xFF,0xE0,0x00,0xFF,0xFF,0xFE,0x00,0x3F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xFC,0x0F,0x7F,0xFF,0xFF,0x3D,0xF7,0xFF,0xFF,0xCF,0xBF,0x00,0x00,0x03,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xF8,0x00,0x00,0x0F,0xDE,0x00,0x00,0x00,0xFB,0x80,0x00,0x00,0x0F,0x60,0x00,0x00,0x00,0xC0, // 'n'
|
||||||
|
0x03,0xFF,0xFF,0xE0,0x00,0xFF,0xFF,0xFE,0x00,0x3F,0xFF,0xFF,0xE0,0x07,0xFF,0xFF,0xFC,0x0F,0x7F,0xFF,0xFF,0x3D,0xF7,0xFF,0xFF,0xCF,0xBF,0x00,0x00,0x03,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xF9,0xFF,0xFF,0xEF,0xDE,0x7F,0xFF,0xFE,0xFB,0x9F,0xFF,0xFF,0xEF,0x67,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0x00, // 'o'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0xCE,0x7F,0xFF,0xFF,0xBD,0xE7,0xFF,0xFF,0xEF,0xBE,0x7F,0xFF,0xFB,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x0F,0xDF,0x7F,0xFF,0xFC,0xFB,0xDF,0xFF,0xFF,0xCF,0x07,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0x81,0xEF,0xFF,0xFF,0xE0,0x3E,0xFF,0xFF,0xF8,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x00, // 'p'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0xCE,0x7F,0xFF,0xFF,0xBD,0xE7,0xFF,0xFF,0xEF,0xBE,0x7F,0xFF,0xFB,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x0F,0xDF,0x7F,0xFF,0xFC,0xFB,0xDF,0xFF,0xFF,0xCF,0x07,0xFF,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xE7,0x80,0xFF,0xFF,0xF9,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x18, // 'q'
|
||||||
|
0x03,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xE0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0xCF,0x7F,0xFF,0xFF,0x1F,0x7F,0xFF,0xFC,0x3F,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0xFC,0x00,0x00,0x01,0xF8,0x00,0x00,0x03,0xF0,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x1F,0x80,0x00,0x00,0x3F,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0xFC,0x00,0x00,0x01,0xF8,0x00,0x00,0x03,0xF0,0x00,0x00,0x07,0xE0,0x00,0x00,0x0F,0xC0,0x00,0x00,0x1F,0x80,0x00,0x00,0x3F,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0xF8,0x00,0x00,0x01,0xE0,0x00,0x00,0x03,0x80,0x00,0x00,0x06,0x00,0x00,0x00,0x00, // 'r'
|
||||||
|
0xC0,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3E,0xFF,0xFF,0xF8,0x07,0xBF,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFF,0x00,0x1F,0xFF,0xFF,0xCF,0x01,0xFF,0xFF,0xF3,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x7F,0xFF,0xFB,0xF0,0x1F,0xFF,0xFF,0xBE,0x07,0xFF,0xFF,0xFB,0xC1,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC0, // 's'
|
||||||
|
0xC0,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xEF,0xFF,0xFF,0x81,0xEF,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFC,0x3D,0xFF,0xFF,0xFC,0x1F,0x7F,0xFF,0xFC,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x07,0xE0,0x00,0x00,0x03,0xE7,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xE0,0xE7,0xFF,0xFF,0xF8,0x67,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xFF,0x87,0xFF,0xFF,0xFF,0xC1,0xFF,0xFF,0xFF,0xC0, // 't'
|
||||||
|
0xF0,0x00,0x00,0x03,0xDF,0x00,0x00,0x00,0xFB,0xF0,0x00,0x00,0x3F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0x9F,0xFF,0xFE,0xFD,0xE7,0xFF,0xFF,0xEF,0xB9,0xFF,0xFF,0xFE,0xF6,0x7F,0xFF,0xFF,0xEC,0x1F,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF0,0x00, // 'u'
|
||||||
|
0xC0,0x00,0x00,0x01,0x9C,0x00,0x00,0x00,0x7B,0xC0,0x00,0x00,0x1F,0x7C,0x00,0x00,0x07,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x1F,0xBE,0x00,0x00,0x01,0xF7,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x7C,0x00,0x00,0x03,0xEF,0xC0,0x00,0x00,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBE,0x7F,0xFF,0xFB,0xF7,0x9F,0xFF,0xFF,0xBE,0xE7,0xFF,0xFF,0xFB,0xD9,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC0, // 'v'
|
||||||
|
0xC0,0x00,0x00,0x01,0x9C,0x00,0x00,0x00,0x7B,0xC0,0x00,0x00,0x1F,0x7C,0x00,0x00,0x07,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x1F,0xBE,0xFF,0xFF,0xF9,0xF7,0xBF,0xFF,0xFF,0x9E,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFF,0x03,0xDF,0xFF,0xFF,0xCF,0x7D,0xFF,0xFF,0xF3,0xEF,0xC0,0x00,0x00,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBE,0x7F,0xFF,0xFB,0xF7,0x9F,0xFF,0xFF,0xBE,0xE7,0xFF,0xFF,0xFB,0xD9,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC0, // 'w'
|
||||||
|
0xC0,0x00,0x00,0x01,0x9C,0x00,0x00,0x00,0x7B,0xC0,0x00,0x00,0x1F,0x7C,0x00,0x00,0x07,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x1F,0xBE,0xFF,0xFF,0xF9,0xF7,0xBF,0xFF,0xFF,0x9E,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFF,0x03,0xDF,0xFF,0xFF,0xCF,0x7D,0xFF,0xFF,0xF3,0xEF,0xC0,0x00,0x00,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBE,0x00,0x00,0x03,0xF7,0x80,0x00,0x00,0x3E,0xE0,0x00,0x00,0x03,0xD8,0x00,0x00,0x00,0x30, // 'x'
|
||||||
|
0xC0,0x00,0x00,0x01,0x9C,0x00,0x00,0x00,0x7B,0xC0,0x00,0x00,0x1F,0x7C,0x00,0x00,0x07,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x3F,0xBF,0x00,0x00,0x07,0xF7,0xE0,0x00,0x00,0xFE,0xFC,0x00,0x00,0x1F,0xDF,0x80,0x00,0x03,0xFB,0xF0,0x00,0x00,0x7F,0x7E,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x01,0xFD,0xF8,0x00,0x00,0x1F,0xBE,0xFF,0xFF,0xF9,0xF7,0xBF,0xFF,0xFF,0x9E,0x0F,0xFF,0xFF,0xF8,0x01,0xFF,0xFF,0xFF,0x00,0x1F,0xFF,0xFF,0xCF,0x01,0xFF,0xFF,0xF3,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x7F,0xFF,0xFB,0xF0,0x1F,0xFF,0xFF,0xBE,0x07,0xFF,0xFF,0xFB,0xC1,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xC0, // 'y'
|
||||||
|
0x1F,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFE,0xC0,0x7F,0xFF,0xFF,0xBC,0x07,0xFF,0xFF,0xEF,0x80,0x7F,0xFF,0xFB,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x1F,0x3F,0xFF,0xFC,0x03,0xCF,0xFF,0xFF,0xC0,0x73,0xFF,0xFF,0xFC,0x0C,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xE0, // 'z'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '{'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '|'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE // '}'
|
||||||
|
};
|
||||||
|
const GFXglyph DSEG7_Classic_Bold_56Glyphs[] PROGMEM = {
|
||||||
|
// bitmapOffset, width, height, xAdvance, xOffset, yOffset
|
||||||
|
{ 0, 2, 1, 12, 0, -1 }, // ' '
|
||||||
|
{ 1, 2, 1, 47, 0, -1 }, // '!'
|
||||||
|
{ 2, 16, 37, 21, 2, -37 }, // '"'
|
||||||
|
{ 76, 16, 37, 21, 2, -37 }, // '#'
|
||||||
|
{ 150, 16, 37, 21, 2, -37 }, // '$'
|
||||||
|
{ 224, 16, 37, 21, 2, -37 }, // '%'
|
||||||
|
{ 298, 16, 37, 21, 2, -37 }, // '&'
|
||||||
|
{ 372, 16, 37, 21, 2, -37 }, // '''
|
||||||
|
{ 446, 16, 37, 21, 2, -37 }, // '('
|
||||||
|
{ 520, 16, 37, 21, 2, -37 }, // ')'
|
||||||
|
{ 594, 16, 37, 21, 2, -37 }, // '*'
|
||||||
|
{ 668, 16, 37, 21, 2, -37 }, // '+'
|
||||||
|
{ 742, 16, 37, 21, 2, -37 }, // ','
|
||||||
|
{ 816, 27, 6, 47, 10, -31 }, // '-'
|
||||||
|
{ 837, 7, 7, 1, -3, -7 }, // '.'
|
||||||
|
{ 844, 16, 37, 21, 2, -37 }, // '/'
|
||||||
|
{ 918, 35, 56, 47, 6, -56 }, // '0'
|
||||||
|
{ 1163, 8, 50, 47, 33, -53 }, // '1'
|
||||||
|
{ 1213, 35, 56, 47, 6, -56 }, // '2'
|
||||||
|
{ 1458, 33, 56, 47, 8, -56 }, // '3'
|
||||||
|
{ 1689, 35, 50, 47, 6, -53 }, // '4'
|
||||||
|
{ 1908, 35, 56, 47, 6, -56 }, // '5'
|
||||||
|
{ 2153, 35, 56, 47, 6, -56 }, // '6'
|
||||||
|
{ 2398, 35, 53, 47, 6, -56 }, // '7'
|
||||||
|
{ 2630, 35, 56, 47, 6, -56 }, // '8'
|
||||||
|
{ 2875, 35, 56, 47, 6, -56 }, // '9'
|
||||||
|
{ 3120, 8, 30, 12, 2, -42 }, // ':'
|
||||||
|
{ 3150, 16, 37, 21, 2, -37 }, // ';'
|
||||||
|
{ 3224, 16, 37, 21, 2, -37 }, // '<'
|
||||||
|
{ 3298, 16, 37, 21, 2, -37 }, // '='
|
||||||
|
{ 3372, 16, 37, 21, 2, -37 }, // '>'
|
||||||
|
{ 3446, 16, 37, 21, 2, -37 }, // '?'
|
||||||
|
{ 3520, 16, 37, 21, 2, -37 }, // '@'
|
||||||
|
{ 3594, 35, 53, 47, 6, -56 }, // 'A'
|
||||||
|
{ 3826, 35, 53, 47, 6, -53 }, // 'B'
|
||||||
|
{ 4058, 33, 31, 47, 6, -31 }, // 'C'
|
||||||
|
{ 4186, 35, 53, 47, 6, -53 }, // 'D'
|
||||||
|
{ 4418, 33, 56, 47, 6, -56 }, // 'E'
|
||||||
|
{ 4649, 33, 53, 47, 6, -56 }, // 'F'
|
||||||
|
{ 4868, 35, 56, 47, 6, -56 }, // 'G'
|
||||||
|
{ 5113, 35, 50, 47, 6, -53 }, // 'H'
|
||||||
|
{ 5332, 8, 24, 47, 33, -27 }, // 'I'
|
||||||
|
{ 5356, 35, 53, 47, 6, -53 }, // 'J'
|
||||||
|
{ 5588, 35, 53, 47, 6, -56 }, // 'K'
|
||||||
|
{ 5820, 33, 53, 47, 6, -53 }, // 'L'
|
||||||
|
{ 6039, 35, 53, 47, 6, -56 }, // 'M'
|
||||||
|
{ 6271, 35, 28, 47, 6, -31 }, // 'N'
|
||||||
|
{ 6394, 35, 31, 47, 6, -31 }, // 'O'
|
||||||
|
{ 6530, 35, 53, 47, 6, -56 }, // 'P'
|
||||||
|
{ 6762, 35, 53, 47, 6, -56 }, // 'Q'
|
||||||
|
{ 6994, 31, 28, 47, 6, -31 }, // 'R'
|
||||||
|
{ 7103, 35, 53, 47, 6, -53 }, // 'S'
|
||||||
|
{ 7335, 33, 53, 47, 6, -53 }, // 'T'
|
||||||
|
{ 7554, 35, 27, 47, 6, -27 }, // 'U'
|
||||||
|
{ 7673, 35, 53, 47, 6, -53 }, // 'V'
|
||||||
|
{ 7905, 35, 53, 47, 6, -53 }, // 'W'
|
||||||
|
{ 8137, 35, 50, 47, 6, -53 }, // 'X'
|
||||||
|
{ 8356, 35, 53, 47, 6, -53 }, // 'Y'
|
||||||
|
{ 8588, 35, 56, 47, 6, -56 }, // 'Z'
|
||||||
|
{ 8833, 16, 37, 21, 2, -37 }, // '['
|
||||||
|
{ 8907, 16, 37, 21, 2, -37 }, // '\'
|
||||||
|
{ 8981, 16, 37, 21, 2, -37 }, // ']'
|
||||||
|
{ 9055, 16, 37, 21, 2, -37 }, // '^'
|
||||||
|
{ 9129, 16, 37, 21, 2, -37 }, // '_'
|
||||||
|
{ 9203, 16, 37, 21, 2, -37 }, // '`'
|
||||||
|
{ 9277, 35, 53, 47, 6, -56 }, // 'a'
|
||||||
|
{ 9509, 35, 53, 47, 6, -53 }, // 'b'
|
||||||
|
{ 9741, 33, 31, 47, 6, -31 }, // 'c'
|
||||||
|
{ 9869, 35, 53, 47, 6, -53 }, // 'd'
|
||||||
|
{ 10101, 33, 56, 47, 6, -56 }, // 'e'
|
||||||
|
{ 10332, 33, 53, 47, 6, -56 }, // 'f'
|
||||||
|
{ 10551, 35, 56, 47, 6, -56 }, // 'g'
|
||||||
|
{ 10796, 35, 50, 47, 6, -53 }, // 'h'
|
||||||
|
{ 11015, 8, 24, 47, 33, -27 }, // 'i'
|
||||||
|
{ 11039, 35, 53, 47, 6, -53 }, // 'j'
|
||||||
|
{ 11271, 35, 53, 47, 6, -56 }, // 'k'
|
||||||
|
{ 11503, 33, 53, 47, 6, -53 }, // 'l'
|
||||||
|
{ 11722, 35, 53, 47, 6, -56 }, // 'm'
|
||||||
|
{ 11954, 35, 28, 47, 6, -31 }, // 'n'
|
||||||
|
{ 12077, 35, 31, 47, 6, -31 }, // 'o'
|
||||||
|
{ 12213, 35, 53, 47, 6, -56 }, // 'p'
|
||||||
|
{ 12445, 35, 53, 47, 6, -56 }, // 'q'
|
||||||
|
{ 12677, 31, 28, 47, 6, -31 }, // 'r'
|
||||||
|
{ 12786, 35, 53, 47, 6, -53 }, // 's'
|
||||||
|
{ 13018, 33, 53, 47, 6, -53 }, // 't'
|
||||||
|
{ 13237, 35, 27, 47, 6, -27 }, // 'u'
|
||||||
|
{ 13356, 35, 53, 47, 6, -53 }, // 'v'
|
||||||
|
{ 13588, 35, 53, 47, 6, -53 }, // 'w'
|
||||||
|
{ 13820, 35, 50, 47, 6, -53 }, // 'x'
|
||||||
|
{ 14039, 35, 53, 47, 6, -53 }, // 'y'
|
||||||
|
{ 14271, 35, 56, 47, 6, -56 }, // 'z'
|
||||||
|
{ 14516, 16, 37, 21, 2, -37 }, // '{'
|
||||||
|
{ 14590, 16, 37, 21, 2, -37 }, // '|'
|
||||||
|
{ 14664, 16, 37, 21, 2, -37 } // '}'
|
||||||
|
};
|
||||||
|
const GFXfont DSEG7_Classic_Bold_56 PROGMEM = {
|
||||||
|
(uint8_t *)DSEG7_Classic_Bold_56Bitmaps,(GFXglyph *)DSEG7_Classic_Bold_56Glyphs,0x20, 0x7E, 61};
|
||||||
@@ -0,0 +1,202 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <Adafruit_GFX.h>
|
||||||
|
|
||||||
|
// Created by https://oleddisplay.squix.ch/ Consider a donation
|
||||||
|
// In case of problems make sure that you are using the font file with the correct version!
|
||||||
|
const uint8_t DSEG7_Classic_Bold_58Bitmaps[] PROGMEM = {
|
||||||
|
|
||||||
|
// Bitmap Data:
|
||||||
|
0x00, // ' '
|
||||||
|
0x00, // '!'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '"'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '#'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '$'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '%'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '&'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '''
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '('
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // ')'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '*'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '+'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // ','
|
||||||
|
0x0F,0xFF,0xFF,0x01,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xE3,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0x80,0xFF,0xFF,0xF0, // '-'
|
||||||
|
0x3C,0x3F,0x1F,0x9F,0xE7,0xE3,0xF0,0xF0, // '.'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '/'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0xCE,0x7F,0xFF,0xFF,0xCF,0x79,0xFF,0xFF,0xFC,0xFB,0xE7,0xFF,0xFF,0xCF,0xDF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xE0,0x00,0x00,0x3F,0xBE,0x00,0x00,0x00,0xFD,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x07,0xDF,0x00,0x00,0x00,0x7E,0xFC,0x00,0x00,0x07,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x00,0x00,0x01,0xFD,0xF3,0xFF,0xFF,0xE7,0xEF,0x3F,0xFF,0xFF,0x9F,0x73,0xFF,0xFF,0xFE,0x79,0x3F,0xFF,0xFF,0xF9,0x83,0xFF,0xFF,0xFF,0xE0,0x1F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xF8,0x00, // '0'
|
||||||
|
0x06,0x07,0x87,0xC7,0xE7,0xF7,0xFB,0xFD,0xFE,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xF9,0xFC,0x7E,0x1F,0x00,0x00,0x03,0xE3,0xF3,0xFB,0xFD,0xFE,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFC,0xFE,0x3F,0x0F,0x83,0xC0,0xC0, // '1'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x1F,0xFF,0xFF,0xFC,0xC0,0x7F,0xFF,0xFF,0xCF,0x01,0xFF,0xFF,0xFC,0xF8,0x07,0xFF,0xFF,0xCF,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x07,0xFF,0xFF,0xBF,0x80,0x7F,0xFF,0xFE,0xFC,0x07,0xFF,0xFF,0xFB,0xE0,0x7F,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFF,0x03,0xCF,0xFF,0xFF,0xF0,0x1F,0x3F,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xF0,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x01,0xF3,0xFF,0xFF,0xE0,0x0F,0x3F,0xFF,0xFF,0x80,0x73,0xFF,0xFF,0xFE,0x01,0x3F,0xFF,0xFF,0xF8,0x03,0xFF,0xFF,0xFF,0xE0,0x1F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xF8,0x00, // '2'
|
||||||
|
0x3F,0xFF,0xFF,0xFC,0x0F,0xFF,0xFF,0xFF,0xC1,0xFF,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xFC,0xC1,0xFF,0xFF,0xFF,0x3C,0x1F,0xFF,0xFF,0xCF,0x81,0xFF,0xFF,0xF3,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x0F,0xF0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x0F,0xF0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x3F,0xC0,0x7F,0xFF,0xFB,0xF8,0x1F,0xFF,0xFF,0xBF,0x07,0xFF,0xFF,0xFB,0xE1,0xFF,0xFF,0xFF,0x80,0x3F,0xFF,0xFF,0xF0,0x03,0xFF,0xFF,0xFD,0xF0,0x3F,0xFF,0xFF,0x7E,0x03,0xFF,0xFF,0xDF,0xC0,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x0F,0xF0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x0F,0xF0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x7F,0x03,0xFF,0xFF,0xE7,0xE0,0xFF,0xFF,0xFE,0x7C,0x3F,0xFF,0xFF,0xE7,0x8F,0xFF,0xFF,0xFE,0x63,0xFF,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xFF,0x80, // '3'
|
||||||
|
0x40,0x00,0x00,0x00,0x67,0x00,0x00,0x00,0x07,0xBC,0x00,0x00,0x00,0x7D,0xF0,0x00,0x00,0x07,0xEF,0xC0,0x00,0x00,0x7F,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF3,0xFF,0xFF,0xDF,0xDF,0x3F,0xFF,0xFF,0x7E,0xF3,0xFF,0xFF,0xFD,0xF0,0x3F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0xFB,0xE0,0x1F,0xFF,0xFF,0xBF,0x00,0x7F,0xFF,0xFB,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0xC0, // '4'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0x0E,0x7F,0xFF,0xFF,0xC0,0x79,0xFF,0xFF,0xFC,0x03,0xE7,0xFF,0xFF,0xC0,0x1F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xE7,0xFF,0xFF,0x80,0x3E,0x7F,0xFF,0xFE,0x01,0xE7,0xFF,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFF,0x00,0x0F,0xFF,0xFF,0xF7,0xC0,0x3F,0xFF,0xFF,0x7E,0x00,0xFF,0xFF,0xF7,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x01,0xFC,0x03,0xFF,0xFF,0xE7,0xE0,0x3F,0xFF,0xFF,0x9F,0x03,0xFF,0xFF,0xFE,0x78,0x3F,0xFF,0xFF,0xF9,0x83,0xFF,0xFF,0xFF,0xE0,0x1F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xF8,0x00, // '5'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0x0E,0x7F,0xFF,0xFF,0xC0,0x79,0xFF,0xFF,0xFC,0x03,0xE7,0xFF,0xFF,0xC0,0x1F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xE7,0xFF,0xFF,0x80,0x3E,0x7F,0xFF,0xFE,0x01,0xE7,0xFF,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFF,0x03,0xCF,0xFF,0xFF,0xF7,0xDF,0x3F,0xFF,0xFF,0x7E,0xFC,0xFF,0xFF,0xF7,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x00,0x00,0x01,0xFD,0xF3,0xFF,0xFF,0xE7,0xEF,0x3F,0xFF,0xFF,0x9F,0x73,0xFF,0xFF,0xFE,0x79,0x3F,0xFF,0xFF,0xF9,0x83,0xFF,0xFF,0xFF,0xE0,0x1F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xF8,0x00, // '6'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0xCE,0x7F,0xFF,0xFF,0xCF,0x79,0xFF,0xFF,0xFC,0xFB,0xE7,0xFF,0xFF,0xCF,0xDF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xE0,0x00,0x00,0x3F,0xBE,0x00,0x00,0x00,0xFD,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x01,0x80, // '7'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0xCE,0x7F,0xFF,0xFF,0xCF,0x79,0xFF,0xFF,0xFC,0xFB,0xE7,0xFF,0xFF,0xCF,0xDF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xE7,0xFF,0xFF,0xBF,0xBE,0x7F,0xFF,0xFE,0xFD,0xE7,0xFF,0xFF,0xFB,0xE0,0x7F,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFF,0x03,0xCF,0xFF,0xFF,0xF7,0xDF,0x3F,0xFF,0xFF,0x7E,0xFC,0xFF,0xFF,0xF7,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x00,0x00,0x01,0xFD,0xF3,0xFF,0xFF,0xE7,0xEF,0x3F,0xFF,0xFF,0x9F,0x73,0xFF,0xFF,0xFE,0x79,0x3F,0xFF,0xFF,0xF9,0x83,0xFF,0xFF,0xFF,0xE0,0x1F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xF8,0x00, // '8'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0xCE,0x7F,0xFF,0xFF,0xCF,0x79,0xFF,0xFF,0xFC,0xFB,0xE7,0xFF,0xFF,0xCF,0xDF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xE7,0xFF,0xFF,0xBF,0xBE,0x7F,0xFF,0xFE,0xFD,0xE7,0xFF,0xFF,0xFB,0xE0,0x7F,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFF,0x00,0x0F,0xFF,0xFF,0xF7,0xC0,0x3F,0xFF,0xFF,0x7E,0x00,0xFF,0xFF,0xF7,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x01,0xFC,0x03,0xFF,0xFF,0xE7,0xE0,0x3F,0xFF,0xFF,0x9F,0x03,0xFF,0xFF,0xFE,0x78,0x3F,0xFF,0xFF,0xF9,0x83,0xFF,0xFF,0xFF,0xE0,0x1F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xF8,0x00, // '9'
|
||||||
|
0x38,0x7E,0xFE,0xFE,0xFE,0x7E,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x7E,0xFE,0xFE,0xFE,0x7E,0x7C, // ':'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // ';'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '<'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '='
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '>'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '?'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '@'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0xCE,0x7F,0xFF,0xFF,0xCF,0x79,0xFF,0xFF,0xFC,0xFB,0xE7,0xFF,0xFF,0xCF,0xDF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xE7,0xFF,0xFF,0xBF,0xBE,0x7F,0xFF,0xFE,0xFD,0xE7,0xFF,0xFF,0xFB,0xE0,0x7F,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFF,0x03,0xCF,0xFF,0xFF,0xF7,0xDF,0x3F,0xFF,0xFF,0x7E,0xFC,0xFF,0xFF,0xF7,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x00,0x00,0x01,0xFD,0xF0,0x00,0x00,0x07,0xEF,0x00,0x00,0x00,0x1F,0x70,0x00,0x00,0x00,0x79,0x00,0x00,0x00,0x01,0x80, // 'A'
|
||||||
|
0x40,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF3,0xFF,0xFF,0xC0,0x1F,0x3F,0xFF,0xFF,0x00,0xF3,0xFF,0xFF,0xFC,0x00,0x3F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xFB,0xEF,0x9F,0xFF,0xFF,0xBF,0x7E,0x7F,0xFF,0xFB,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0x80,0x00,0x00,0xFE,0xF9,0xFF,0xFF,0xF3,0xF7,0x9F,0xFF,0xFF,0xCF,0xB9,0xFF,0xFF,0xFF,0x3C,0x9F,0xFF,0xFF,0xFC,0xC1,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFC,0x00, // 'B'
|
||||||
|
0x00,0xFF,0xFF,0xF0,0x00,0x7F,0xFF,0xFE,0x00,0x3F,0xFF,0xFF,0xC0,0x1F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFE,0x3C,0xFF,0xFF,0xFF,0x0F,0x9F,0xFF,0xFF,0x83,0xF3,0xFF,0xFF,0xC0,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x0F,0x9F,0xFF,0xFF,0x03,0xCF,0xFF,0xFF,0xE0,0xE7,0xFF,0xFF,0xFC,0x13,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFF,0xF0,0x7F,0xFF,0xFF,0xFE,0x0F,0xFF,0xFF,0xFF,0x00, // 'C'
|
||||||
|
0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x03,0xFF,0xFF,0xDF,0xC0,0x3F,0xFF,0xFF,0x7E,0x03,0xFF,0xFF,0xFD,0xF0,0x3F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xFB,0xEF,0x9F,0xFF,0xFF,0xBF,0x7E,0x7F,0xFF,0xFB,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0x80,0x00,0x00,0xFE,0xF9,0xFF,0xFF,0xF3,0xF7,0x9F,0xFF,0xFF,0xCF,0xB9,0xFF,0xFF,0xFF,0x3C,0x9F,0xFF,0xFF,0xFC,0xC1,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFC,0x00, // 'D'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xE1,0xFF,0xFF,0xFF,0xF1,0x3F,0xFF,0xFF,0xF8,0xE7,0xFF,0xFF,0xFC,0x3C,0xFF,0xFF,0xFE,0x0F,0x9F,0xFF,0xFF,0x03,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x3F,0xFF,0xFC,0x0F,0x9F,0xFF,0xFF,0x83,0xCF,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0x8F,0x3F,0xFF,0xFF,0xC3,0xE7,0xFF,0xFF,0xE0,0xFC,0xFF,0xFF,0xF0,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x03,0xE7,0xFF,0xFF,0xC0,0xF3,0xFF,0xFF,0xF8,0x39,0xFF,0xFF,0xFF,0x04,0xFF,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xC0, // 'E'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xE1,0xFF,0xFF,0xFF,0xF1,0x3F,0xFF,0xFF,0xF8,0xE7,0xFF,0xFF,0xFC,0x3C,0xFF,0xFF,0xFE,0x0F,0x9F,0xFF,0xFF,0x03,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x3F,0xFF,0xFC,0x0F,0x9F,0xFF,0xFF,0x83,0xCF,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0x8F,0x3F,0xFF,0xFF,0xC3,0xE7,0xFF,0xFF,0xE0,0xFC,0xFF,0xFF,0xF0,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00, // 'F'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0x0E,0x7F,0xFF,0xFF,0xC0,0x79,0xFF,0xFF,0xFC,0x03,0xE7,0xFF,0xFF,0xC0,0x1F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x07,0xDF,0x00,0x00,0x00,0x7E,0xFC,0x00,0x00,0x07,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x00,0x00,0x01,0xFD,0xF3,0xFF,0xFF,0xE7,0xEF,0x3F,0xFF,0xFF,0x9F,0x73,0xFF,0xFF,0xFE,0x79,0x3F,0xFF,0xFF,0xF9,0x83,0xFF,0xFF,0xFF,0xE0,0x1F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xF8,0x00, // 'G'
|
||||||
|
0x40,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF3,0xFF,0xFF,0xC0,0x1F,0x3F,0xFF,0xFF,0x00,0xF3,0xFF,0xFF,0xFC,0x00,0x3F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xFB,0xEF,0x9F,0xFF,0xFF,0xBF,0x7E,0x7F,0xFF,0xFB,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0x80,0x00,0x00,0xFE,0xF8,0x00,0x00,0x03,0xF7,0x80,0x00,0x00,0x0F,0xB8,0x00,0x00,0x00,0x3C,0x80,0x00,0x00,0x00,0xC0, // 'H'
|
||||||
|
0x1F,0x1F,0x9F,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,0x7F,0xBF,0xDF,0xE7,0xF1,0xF8,0x7C,0x1E,0x06,0x00, // 'I'
|
||||||
|
0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x03,0xEF,0x80,0x00,0x00,0x3F,0x7E,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0x80,0x00,0x00,0xFE,0xF9,0xFF,0xFF,0xF3,0xF7,0x9F,0xFF,0xFF,0xCF,0xB9,0xFF,0xFF,0xFF,0x3C,0x9F,0xFF,0xFF,0xFC,0xC1,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFC,0x00, // 'J'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0x0E,0x7F,0xFF,0xFF,0xC0,0x79,0xFF,0xFF,0xFC,0x03,0xE7,0xFF,0xFF,0xC0,0x1F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xE7,0xFF,0xFF,0x80,0x3E,0x7F,0xFF,0xFE,0x01,0xE7,0xFF,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFF,0x03,0xCF,0xFF,0xFF,0xF7,0xDF,0x3F,0xFF,0xFF,0x7E,0xFC,0xFF,0xFF,0xF7,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x00,0x00,0x01,0xFD,0xF0,0x00,0x00,0x07,0xEF,0x00,0x00,0x00,0x1F,0x70,0x00,0x00,0x00,0x79,0x00,0x00,0x00,0x01,0x80, // 'K'
|
||||||
|
0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0xF9,0xFF,0xFF,0xF0,0x3C,0xFF,0xFF,0xFE,0x0E,0x7F,0xFF,0xFF,0xC1,0x3F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xE0,0xFF,0xFF,0xFF,0xF0, // 'L'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0xCE,0x7F,0xFF,0xFF,0xCF,0x79,0xFF,0xFF,0xFC,0xFB,0xE7,0xFF,0xFF,0xCF,0xDF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xE0,0x00,0x00,0x3F,0xBE,0x00,0x00,0x00,0xFD,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x07,0xDF,0x00,0x00,0x00,0x7E,0xFC,0x00,0x00,0x07,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x00,0x00,0x01,0xFD,0xF0,0x00,0x00,0x07,0xEF,0x00,0x00,0x00,0x1F,0x70,0x00,0x00,0x00,0x79,0x00,0x00,0x00,0x01,0x80, // 'M'
|
||||||
|
0x00,0xFF,0xFF,0xF0,0x00,0x0F,0xFF,0xFF,0xC0,0x00,0xFF,0xFF,0xFF,0x00,0x0F,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xE0,0x79,0xFF,0xFF,0xFE,0xFB,0xE7,0xFF,0xFF,0xEF,0xDF,0x9F,0xFF,0xFE,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xE0,0x00,0x00,0x3F,0xBE,0x00,0x00,0x00,0xFD,0xE0,0x00,0x00,0x03,0xEE,0x00,0x00,0x00,0x0F,0x20,0x00,0x00,0x00,0x30, // 'N'
|
||||||
|
0x00,0xFF,0xFF,0xF0,0x00,0x0F,0xFF,0xFF,0xC0,0x00,0xFF,0xFF,0xFF,0x00,0x0F,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xE0,0x79,0xFF,0xFF,0xFE,0xFB,0xE7,0xFF,0xFF,0xEF,0xDF,0x9F,0xFF,0xFE,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xE0,0x00,0x00,0x3F,0xBE,0x7F,0xFF,0xFC,0xFD,0xE7,0xFF,0xFF,0xF3,0xEE,0x7F,0xFF,0xFF,0xCF,0x27,0xFF,0xFF,0xFF,0x30,0x7F,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x00, // 'O'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0xCE,0x7F,0xFF,0xFF,0xCF,0x79,0xFF,0xFF,0xFC,0xFB,0xE7,0xFF,0xFF,0xCF,0xDF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xE7,0xFF,0xFF,0xBF,0xBE,0x7F,0xFF,0xFE,0xFD,0xE7,0xFF,0xFF,0xFB,0xE0,0x7F,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFF,0x03,0xCF,0xFF,0xFF,0xF0,0x1F,0x3F,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xF0,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, // 'P'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0xCE,0x7F,0xFF,0xFF,0xCF,0x79,0xFF,0xFF,0xFC,0xFB,0xE7,0xFF,0xFF,0xCF,0xDF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xE7,0xFF,0xFF,0xBF,0xBE,0x7F,0xFF,0xFE,0xFD,0xE7,0xFF,0xFF,0xFB,0xE0,0x7F,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFF,0x00,0x0F,0xFF,0xFF,0xF7,0xC0,0x3F,0xFF,0xFF,0x7E,0x00,0xFF,0xFF,0xF7,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x01,0x80, // 'Q'
|
||||||
|
0x00,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xF8,0x03,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xFE,0xF3,0xFF,0xFF,0xFC,0xF9,0xFF,0xFF,0xF8,0xFC,0xFF,0xFF,0xF0,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x40,0x00,0x00,0x00, // 'R'
|
||||||
|
0x40,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF3,0xFF,0xFF,0xC0,0x1F,0x3F,0xFF,0xFF,0x00,0xF3,0xFF,0xFF,0xFC,0x00,0x3F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0xFB,0xE0,0x1F,0xFF,0xFF,0xBF,0x00,0x7F,0xFF,0xFB,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0xFE,0x01,0xFF,0xFF,0xF3,0xF0,0x1F,0xFF,0xFF,0xCF,0x81,0xFF,0xFF,0xFF,0x3C,0x1F,0xFF,0xFF,0xFC,0xC1,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFC,0x00, // 'S'
|
||||||
|
0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xCF,0xFF,0xFF,0x03,0xE7,0xFF,0xFF,0xE0,0xF3,0xFF,0xFF,0xFC,0x01,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xE3,0xCF,0xFF,0xFF,0xF0,0xF9,0xFF,0xFF,0xF8,0x3F,0x3F,0xFF,0xFC,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0xF9,0xFF,0xFF,0xF0,0x3C,0xFF,0xFF,0xFE,0x0E,0x7F,0xFF,0xFF,0xC1,0x3F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xE0,0xFF,0xFF,0xFF,0xF0, // 'T'
|
||||||
|
0xF0,0x00,0x00,0x01,0xF7,0xC0,0x00,0x00,0x1F,0xBF,0x00,0x00,0x01,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xC0,0x00,0x00,0x7F,0x7C,0xFF,0xFF,0xF9,0xFB,0xCF,0xFF,0xFF,0xE7,0xDC,0xFF,0xFF,0xFF,0x9E,0x4F,0xFF,0xFF,0xFE,0x60,0xFF,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0xE0,0x1F,0xFF,0xFF,0xFE,0x00, // 'U'
|
||||||
|
0x40,0x00,0x00,0x00,0x67,0x00,0x00,0x00,0x07,0xBC,0x00,0x00,0x00,0x7D,0xF0,0x00,0x00,0x07,0xEF,0xC0,0x00,0x00,0x7F,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF0,0x00,0x00,0x1F,0xDF,0x00,0x00,0x00,0x7E,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x03,0xEF,0x80,0x00,0x00,0x3F,0x7E,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0x80,0x00,0x00,0xFE,0xF9,0xFF,0xFF,0xF3,0xF7,0x9F,0xFF,0xFF,0xCF,0xB9,0xFF,0xFF,0xFF,0x3C,0x9F,0xFF,0xFF,0xFC,0xC1,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFC,0x00, // 'V'
|
||||||
|
0x40,0x00,0x00,0x00,0x67,0x00,0x00,0x00,0x07,0xBC,0x00,0x00,0x00,0x7D,0xF0,0x00,0x00,0x07,0xEF,0xC0,0x00,0x00,0x7F,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF3,0xFF,0xFF,0xDF,0xDF,0x3F,0xFF,0xFF,0x7E,0xF3,0xFF,0xFF,0xFD,0xF0,0x3F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xFB,0xEF,0x9F,0xFF,0xFF,0xBF,0x7E,0x7F,0xFF,0xFB,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0x80,0x00,0x00,0xFE,0xF9,0xFF,0xFF,0xF3,0xF7,0x9F,0xFF,0xFF,0xCF,0xB9,0xFF,0xFF,0xFF,0x3C,0x9F,0xFF,0xFF,0xFC,0xC1,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFC,0x00, // 'W'
|
||||||
|
0x40,0x00,0x00,0x00,0x67,0x00,0x00,0x00,0x07,0xBC,0x00,0x00,0x00,0x7D,0xF0,0x00,0x00,0x07,0xEF,0xC0,0x00,0x00,0x7F,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF3,0xFF,0xFF,0xDF,0xDF,0x3F,0xFF,0xFF,0x7E,0xF3,0xFF,0xFF,0xFD,0xF0,0x3F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xFB,0xEF,0x9F,0xFF,0xFF,0xBF,0x7E,0x7F,0xFF,0xFB,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0x80,0x00,0x00,0xFE,0xF8,0x00,0x00,0x03,0xF7,0x80,0x00,0x00,0x0F,0xB8,0x00,0x00,0x00,0x3C,0x80,0x00,0x00,0x00,0xC0, // 'X'
|
||||||
|
0x40,0x00,0x00,0x00,0x67,0x00,0x00,0x00,0x07,0xBC,0x00,0x00,0x00,0x7D,0xF0,0x00,0x00,0x07,0xEF,0xC0,0x00,0x00,0x7F,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF3,0xFF,0xFF,0xDF,0xDF,0x3F,0xFF,0xFF,0x7E,0xF3,0xFF,0xFF,0xFD,0xF0,0x3F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0xFB,0xE0,0x1F,0xFF,0xFF,0xBF,0x00,0x7F,0xFF,0xFB,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0xFE,0x01,0xFF,0xFF,0xF3,0xF0,0x1F,0xFF,0xFF,0xCF,0x81,0xFF,0xFF,0xFF,0x3C,0x1F,0xFF,0xFF,0xFC,0xC1,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFC,0x00, // 'Y'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x1F,0xFF,0xFF,0xFC,0xC0,0x7F,0xFF,0xFF,0xCF,0x01,0xFF,0xFF,0xFC,0xF8,0x07,0xFF,0xFF,0xCF,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x01,0xF3,0xFF,0xFF,0xE0,0x0F,0x3F,0xFF,0xFF,0x80,0x73,0xFF,0xFF,0xFE,0x01,0x3F,0xFF,0xFF,0xF8,0x03,0xFF,0xFF,0xFF,0xE0,0x1F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xF8,0x00, // 'Z'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '['
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '\'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // ']'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '^'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '_'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '`'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0xCE,0x7F,0xFF,0xFF,0xCF,0x79,0xFF,0xFF,0xFC,0xFB,0xE7,0xFF,0xFF,0xCF,0xDF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xE7,0xFF,0xFF,0xBF,0xBE,0x7F,0xFF,0xFE,0xFD,0xE7,0xFF,0xFF,0xFB,0xE0,0x7F,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFF,0x03,0xCF,0xFF,0xFF,0xF7,0xDF,0x3F,0xFF,0xFF,0x7E,0xFC,0xFF,0xFF,0xF7,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x00,0x00,0x01,0xFD,0xF0,0x00,0x00,0x07,0xEF,0x00,0x00,0x00,0x1F,0x70,0x00,0x00,0x00,0x79,0x00,0x00,0x00,0x01,0x80, // 'a'
|
||||||
|
0x40,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF3,0xFF,0xFF,0xC0,0x1F,0x3F,0xFF,0xFF,0x00,0xF3,0xFF,0xFF,0xFC,0x00,0x3F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xFB,0xEF,0x9F,0xFF,0xFF,0xBF,0x7E,0x7F,0xFF,0xFB,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0x80,0x00,0x00,0xFE,0xF9,0xFF,0xFF,0xF3,0xF7,0x9F,0xFF,0xFF,0xCF,0xB9,0xFF,0xFF,0xFF,0x3C,0x9F,0xFF,0xFF,0xFC,0xC1,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFC,0x00, // 'b'
|
||||||
|
0x00,0xFF,0xFF,0xF0,0x00,0x7F,0xFF,0xFE,0x00,0x3F,0xFF,0xFF,0xC0,0x1F,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFE,0x3C,0xFF,0xFF,0xFF,0x0F,0x9F,0xFF,0xFF,0x83,0xF3,0xFF,0xFF,0xC0,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x0F,0x9F,0xFF,0xFF,0x03,0xCF,0xFF,0xFF,0xE0,0xE7,0xFF,0xFF,0xFC,0x13,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFF,0xF0,0x7F,0xFF,0xFF,0xFE,0x0F,0xFF,0xFF,0xFF,0x00, // 'c'
|
||||||
|
0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x03,0xFF,0xFF,0xDF,0xC0,0x3F,0xFF,0xFF,0x7E,0x03,0xFF,0xFF,0xFD,0xF0,0x3F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xFB,0xEF,0x9F,0xFF,0xFF,0xBF,0x7E,0x7F,0xFF,0xFB,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0x80,0x00,0x00,0xFE,0xF9,0xFF,0xFF,0xF3,0xF7,0x9F,0xFF,0xFF,0xCF,0xB9,0xFF,0xFF,0xFF,0x3C,0x9F,0xFF,0xFF,0xFC,0xC1,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFC,0x00, // 'd'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xE1,0xFF,0xFF,0xFF,0xF1,0x3F,0xFF,0xFF,0xF8,0xE7,0xFF,0xFF,0xFC,0x3C,0xFF,0xFF,0xFE,0x0F,0x9F,0xFF,0xFF,0x03,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x3F,0xFF,0xFC,0x0F,0x9F,0xFF,0xFF,0x83,0xCF,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0x8F,0x3F,0xFF,0xFF,0xC3,0xE7,0xFF,0xFF,0xE0,0xFC,0xFF,0xFF,0xF0,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x03,0xE7,0xFF,0xFF,0xC0,0xF3,0xFF,0xFF,0xF8,0x39,0xFF,0xFF,0xFF,0x04,0xFF,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xC0, // 'e'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xE1,0xFF,0xFF,0xFF,0xF1,0x3F,0xFF,0xFF,0xF8,0xE7,0xFF,0xFF,0xFC,0x3C,0xFF,0xFF,0xFE,0x0F,0x9F,0xFF,0xFF,0x03,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x3F,0xFF,0xFC,0x0F,0x9F,0xFF,0xFF,0x83,0xCF,0xFF,0xFF,0xF0,0x07,0xFF,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0x8F,0x3F,0xFF,0xFF,0xC3,0xE7,0xFF,0xFF,0xE0,0xFC,0xFF,0xFF,0xF0,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00, // 'f'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0x0E,0x7F,0xFF,0xFF,0xC0,0x79,0xFF,0xFF,0xFC,0x03,0xE7,0xFF,0xFF,0xC0,0x1F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x07,0xDF,0x00,0x00,0x00,0x7E,0xFC,0x00,0x00,0x07,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x00,0x00,0x01,0xFD,0xF3,0xFF,0xFF,0xE7,0xEF,0x3F,0xFF,0xFF,0x9F,0x73,0xFF,0xFF,0xFE,0x79,0x3F,0xFF,0xFF,0xF9,0x83,0xFF,0xFF,0xFF,0xE0,0x1F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xF8,0x00, // 'g'
|
||||||
|
0x40,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF3,0xFF,0xFF,0xC0,0x1F,0x3F,0xFF,0xFF,0x00,0xF3,0xFF,0xFF,0xFC,0x00,0x3F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xFB,0xEF,0x9F,0xFF,0xFF,0xBF,0x7E,0x7F,0xFF,0xFB,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0x80,0x00,0x00,0xFE,0xF8,0x00,0x00,0x03,0xF7,0x80,0x00,0x00,0x0F,0xB8,0x00,0x00,0x00,0x3C,0x80,0x00,0x00,0x00,0xC0, // 'h'
|
||||||
|
0x1F,0x1F,0x9F,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD,0xFE,0xFF,0x7F,0xBF,0xDF,0xE7,0xF1,0xF8,0x7C,0x1E,0x06,0x00, // 'i'
|
||||||
|
0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x03,0xEF,0x80,0x00,0x00,0x3F,0x7E,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0x80,0x00,0x00,0xFE,0xF9,0xFF,0xFF,0xF3,0xF7,0x9F,0xFF,0xFF,0xCF,0xB9,0xFF,0xFF,0xFF,0x3C,0x9F,0xFF,0xFF,0xFC,0xC1,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFC,0x00, // 'j'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0x0E,0x7F,0xFF,0xFF,0xC0,0x79,0xFF,0xFF,0xFC,0x03,0xE7,0xFF,0xFF,0xC0,0x1F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xE7,0xFF,0xFF,0x80,0x3E,0x7F,0xFF,0xFE,0x01,0xE7,0xFF,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFF,0x03,0xCF,0xFF,0xFF,0xF7,0xDF,0x3F,0xFF,0xFF,0x7E,0xFC,0xFF,0xFF,0xF7,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x00,0x00,0x01,0xFD,0xF0,0x00,0x00,0x07,0xEF,0x00,0x00,0x00,0x1F,0x70,0x00,0x00,0x00,0x79,0x00,0x00,0x00,0x01,0x80, // 'k'
|
||||||
|
0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xC0,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0xF9,0xFF,0xFF,0xF0,0x3C,0xFF,0xFF,0xFE,0x0E,0x7F,0xFF,0xFF,0xC1,0x3F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xE0,0xFF,0xFF,0xFF,0xF0, // 'l'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0xCE,0x7F,0xFF,0xFF,0xCF,0x79,0xFF,0xFF,0xFC,0xFB,0xE7,0xFF,0xFF,0xCF,0xDF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xE0,0x00,0x00,0x3F,0xBE,0x00,0x00,0x00,0xFD,0xE0,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x07,0xDF,0x00,0x00,0x00,0x7E,0xFC,0x00,0x00,0x07,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x00,0x00,0x01,0xFD,0xF0,0x00,0x00,0x07,0xEF,0x00,0x00,0x00,0x1F,0x70,0x00,0x00,0x00,0x79,0x00,0x00,0x00,0x01,0x80, // 'm'
|
||||||
|
0x00,0xFF,0xFF,0xF0,0x00,0x0F,0xFF,0xFF,0xC0,0x00,0xFF,0xFF,0xFF,0x00,0x0F,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xE0,0x79,0xFF,0xFF,0xFE,0xFB,0xE7,0xFF,0xFF,0xEF,0xDF,0x9F,0xFF,0xFE,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xE0,0x00,0x00,0x3F,0xBE,0x00,0x00,0x00,0xFD,0xE0,0x00,0x00,0x03,0xEE,0x00,0x00,0x00,0x0F,0x20,0x00,0x00,0x00,0x30, // 'n'
|
||||||
|
0x00,0xFF,0xFF,0xF0,0x00,0x0F,0xFF,0xFF,0xC0,0x00,0xFF,0xFF,0xFF,0x00,0x0F,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xE0,0x79,0xFF,0xFF,0xFE,0xFB,0xE7,0xFF,0xFF,0xEF,0xDF,0x9F,0xFF,0xFE,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xE0,0x00,0x00,0x3F,0xBE,0x7F,0xFF,0xFC,0xFD,0xE7,0xFF,0xFF,0xF3,0xEE,0x7F,0xFF,0xFF,0xCF,0x27,0xFF,0xFF,0xFF,0x30,0x7F,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x00, // 'o'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0xCE,0x7F,0xFF,0xFF,0xCF,0x79,0xFF,0xFF,0xFC,0xFB,0xE7,0xFF,0xFF,0xCF,0xDF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xE7,0xFF,0xFF,0xBF,0xBE,0x7F,0xFF,0xFE,0xFD,0xE7,0xFF,0xFF,0xFB,0xE0,0x7F,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFF,0x03,0xCF,0xFF,0xFF,0xF0,0x1F,0x3F,0xFF,0xFF,0x00,0xFC,0xFF,0xFF,0xF0,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, // 'p'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x9F,0xFF,0xFF,0xFC,0xCE,0x7F,0xFF,0xFF,0xCF,0x79,0xFF,0xFF,0xFC,0xFB,0xE7,0xFF,0xFF,0xCF,0xDF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xE7,0xFF,0xFF,0xBF,0xBE,0x7F,0xFF,0xFE,0xFD,0xE7,0xFF,0xFF,0xFB,0xE0,0x7F,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFF,0x00,0x0F,0xFF,0xFF,0xF7,0xC0,0x3F,0xFF,0xFF,0x7E,0x00,0xFF,0xFF,0xF7,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x01,0x80, // 'q'
|
||||||
|
0x00,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xF8,0x03,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xFE,0xF3,0xFF,0xFF,0xFC,0xF9,0xFF,0xFF,0xF8,0xFC,0xFF,0xFF,0xF0,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x40,0x00,0x00,0x00, // 'r'
|
||||||
|
0x40,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF3,0xFF,0xFF,0xC0,0x1F,0x3F,0xFF,0xFF,0x00,0xF3,0xFF,0xFF,0xFC,0x00,0x3F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0xFB,0xE0,0x1F,0xFF,0xFF,0xBF,0x00,0x7F,0xFF,0xFB,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0xFE,0x01,0xFF,0xFF,0xF3,0xF0,0x1F,0xFF,0xFF,0xCF,0x81,0xFF,0xFF,0xFF,0x3C,0x1F,0xFF,0xFF,0xFC,0xC1,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFC,0x00, // 's'
|
||||||
|
0x40,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xCF,0xFF,0xFF,0x03,0xE7,0xFF,0xFF,0xE0,0xF3,0xFF,0xFF,0xFC,0x01,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xE3,0xCF,0xFF,0xFF,0xF0,0xF9,0xFF,0xFF,0xF8,0x3F,0x3F,0xFF,0xFC,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x0F,0xE0,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0xF9,0xFF,0xFF,0xF0,0x3C,0xFF,0xFF,0xFE,0x0E,0x7F,0xFF,0xFF,0xC1,0x3F,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xE0,0xFF,0xFF,0xFF,0xF0, // 't'
|
||||||
|
0xF0,0x00,0x00,0x01,0xF7,0xC0,0x00,0x00,0x1F,0xBF,0x00,0x00,0x01,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xC0,0x00,0x00,0x7F,0x7C,0xFF,0xFF,0xF9,0xFB,0xCF,0xFF,0xFF,0xE7,0xDC,0xFF,0xFF,0xFF,0x9E,0x4F,0xFF,0xFF,0xFE,0x60,0xFF,0xFF,0xFF,0xF8,0x07,0xFF,0xFF,0xFF,0xE0,0x1F,0xFF,0xFF,0xFE,0x00, // 'u'
|
||||||
|
0x40,0x00,0x00,0x00,0x67,0x00,0x00,0x00,0x07,0xBC,0x00,0x00,0x00,0x7D,0xF0,0x00,0x00,0x07,0xEF,0xC0,0x00,0x00,0x7F,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF0,0x00,0x00,0x1F,0xDF,0x00,0x00,0x00,0x7E,0xF0,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x03,0xEF,0x80,0x00,0x00,0x3F,0x7E,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0x80,0x00,0x00,0xFE,0xF9,0xFF,0xFF,0xF3,0xF7,0x9F,0xFF,0xFF,0xCF,0xB9,0xFF,0xFF,0xFF,0x3C,0x9F,0xFF,0xFF,0xFC,0xC1,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFC,0x00, // 'v'
|
||||||
|
0x40,0x00,0x00,0x00,0x67,0x00,0x00,0x00,0x07,0xBC,0x00,0x00,0x00,0x7D,0xF0,0x00,0x00,0x07,0xEF,0xC0,0x00,0x00,0x7F,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF3,0xFF,0xFF,0xDF,0xDF,0x3F,0xFF,0xFF,0x7E,0xF3,0xFF,0xFF,0xFD,0xF0,0x3F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xFB,0xEF,0x9F,0xFF,0xFF,0xBF,0x7E,0x7F,0xFF,0xFB,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0x80,0x00,0x00,0xFE,0xF9,0xFF,0xFF,0xF3,0xF7,0x9F,0xFF,0xFF,0xCF,0xB9,0xFF,0xFF,0xFF,0x3C,0x9F,0xFF,0xFF,0xFC,0xC1,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFC,0x00, // 'w'
|
||||||
|
0x40,0x00,0x00,0x00,0x67,0x00,0x00,0x00,0x07,0xBC,0x00,0x00,0x00,0x7D,0xF0,0x00,0x00,0x07,0xEF,0xC0,0x00,0x00,0x7F,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF3,0xFF,0xFF,0xDF,0xDF,0x3F,0xFF,0xFF,0x7E,0xF3,0xFF,0xFF,0xFD,0xF0,0x3F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0x81,0xE7,0xFF,0xFF,0xFB,0xEF,0x9F,0xFF,0xFF,0xBF,0x7E,0x7F,0xFF,0xFB,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0x80,0x00,0x00,0xFE,0xF8,0x00,0x00,0x03,0xF7,0x80,0x00,0x00,0x0F,0xB8,0x00,0x00,0x00,0x3C,0x80,0x00,0x00,0x00,0xC0, // 'x'
|
||||||
|
0x40,0x00,0x00,0x00,0x67,0x00,0x00,0x00,0x07,0xBC,0x00,0x00,0x00,0x7D,0xF0,0x00,0x00,0x07,0xEF,0xC0,0x00,0x00,0x7F,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF8,0x00,0x00,0x3F,0xDF,0xC0,0x00,0x01,0xFE,0xFE,0x00,0x00,0x0F,0xF7,0xF0,0x00,0x00,0x7F,0xBF,0x80,0x00,0x03,0xFD,0xFC,0x00,0x00,0x1F,0xEF,0xE0,0x00,0x00,0xFF,0x7F,0x00,0x00,0x07,0xFB,0xF3,0xFF,0xFF,0xDF,0xDF,0x3F,0xFF,0xFF,0x7E,0xF3,0xFF,0xFF,0xFD,0xF0,0x3F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0x80,0x07,0xFF,0xFF,0xFB,0xE0,0x1F,0xFF,0xFF,0xBF,0x00,0x7F,0xFF,0xFB,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x00,0xFE,0x01,0xFF,0xFF,0xF3,0xF0,0x1F,0xFF,0xFF,0xCF,0x81,0xFF,0xFF,0xFF,0x3C,0x1F,0xFF,0xFF,0xFC,0xC1,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFC,0x00, // 'y'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x00,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xC0,0x1F,0xFF,0xFF,0xFC,0xC0,0x7F,0xFF,0xFF,0xCF,0x01,0xFF,0xFF,0xFC,0xF8,0x07,0xFF,0xFF,0xCF,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x7F,0x80,0x00,0x00,0x03,0xFC,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x01,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x01,0xF3,0xFF,0xFF,0xE0,0x0F,0x3F,0xFF,0xFF,0x80,0x73,0xFF,0xFF,0xFE,0x01,0x3F,0xFF,0xFF,0xF8,0x03,0xFF,0xFF,0xFF,0xE0,0x1F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xF8,0x00, // 'z'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '{'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE, // '|'
|
||||||
|
0xFF,0xFE,0xFF,0xFE,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xC0,0x06,0xFF,0xFE,0xFF,0xFE // '}'
|
||||||
|
};
|
||||||
|
const GFXglyph DSEG7_Classic_Bold_58Glyphs[] PROGMEM = {
|
||||||
|
// bitmapOffset, width, height, xAdvance, xOffset, yOffset
|
||||||
|
{ 0, 2, 1, 13, 0, -1 }, // ' '
|
||||||
|
{ 1, 2, 1, 48, 0, -1 }, // '!'
|
||||||
|
{ 2, 16, 39, 22, 2, -39 }, // '"'
|
||||||
|
{ 80, 16, 39, 22, 2, -39 }, // '#'
|
||||||
|
{ 158, 16, 39, 22, 2, -39 }, // '$'
|
||||||
|
{ 236, 16, 39, 22, 2, -39 }, // '%'
|
||||||
|
{ 314, 16, 39, 22, 2, -39 }, // '&'
|
||||||
|
{ 392, 16, 39, 22, 2, -39 }, // '''
|
||||||
|
{ 470, 16, 39, 22, 2, -39 }, // '('
|
||||||
|
{ 548, 16, 39, 22, 2, -39 }, // ')'
|
||||||
|
{ 626, 16, 39, 22, 2, -39 }, // '*'
|
||||||
|
{ 704, 16, 39, 22, 2, -39 }, // '+'
|
||||||
|
{ 782, 16, 39, 22, 2, -39 }, // ','
|
||||||
|
{ 860, 28, 8, 48, 10, -33 }, // '-'
|
||||||
|
{ 888, 9, 7, 1, -4, -7 }, // '.'
|
||||||
|
{ 896, 16, 39, 22, 2, -39 }, // '/'
|
||||||
|
{ 974, 37, 58, 48, 6, -58 }, // '0'
|
||||||
|
{ 1243, 9, 52, 48, 34, -55 }, // '1'
|
||||||
|
{ 1302, 37, 58, 48, 6, -58 }, // '2'
|
||||||
|
{ 1571, 35, 58, 48, 8, -58 }, // '3'
|
||||||
|
{ 1825, 37, 52, 48, 6, -55 }, // '4'
|
||||||
|
{ 2066, 37, 58, 48, 6, -58 }, // '5'
|
||||||
|
{ 2335, 37, 58, 48, 6, -58 }, // '6'
|
||||||
|
{ 2604, 37, 55, 48, 6, -58 }, // '7'
|
||||||
|
{ 2859, 37, 58, 48, 6, -58 }, // '8'
|
||||||
|
{ 3128, 37, 58, 48, 6, -58 }, // '9'
|
||||||
|
{ 3397, 8, 31, 13, 2, -44 }, // ':'
|
||||||
|
{ 3428, 16, 39, 22, 2, -39 }, // ';'
|
||||||
|
{ 3506, 16, 39, 22, 2, -39 }, // '<'
|
||||||
|
{ 3584, 16, 39, 22, 2, -39 }, // '='
|
||||||
|
{ 3662, 16, 39, 22, 2, -39 }, // '>'
|
||||||
|
{ 3740, 16, 39, 22, 2, -39 }, // '?'
|
||||||
|
{ 3818, 16, 39, 22, 2, -39 }, // '@'
|
||||||
|
{ 3896, 37, 55, 48, 6, -58 }, // 'A'
|
||||||
|
{ 4151, 37, 55, 48, 6, -55 }, // 'B'
|
||||||
|
{ 4406, 34, 33, 48, 6, -33 }, // 'C'
|
||||||
|
{ 4547, 37, 55, 48, 6, -55 }, // 'D'
|
||||||
|
{ 4802, 34, 58, 48, 6, -58 }, // 'E'
|
||||||
|
{ 5049, 34, 55, 48, 6, -58 }, // 'F'
|
||||||
|
{ 5283, 37, 58, 48, 6, -58 }, // 'G'
|
||||||
|
{ 5552, 37, 52, 48, 6, -55 }, // 'H'
|
||||||
|
{ 5793, 9, 25, 48, 34, -28 }, // 'I'
|
||||||
|
{ 5822, 37, 55, 48, 6, -55 }, // 'J'
|
||||||
|
{ 6077, 37, 55, 48, 6, -58 }, // 'K'
|
||||||
|
{ 6332, 34, 55, 48, 6, -55 }, // 'L'
|
||||||
|
{ 6566, 37, 55, 48, 6, -58 }, // 'M'
|
||||||
|
{ 6821, 37, 30, 48, 6, -33 }, // 'N'
|
||||||
|
{ 6960, 37, 33, 48, 6, -33 }, // 'O'
|
||||||
|
{ 7113, 37, 55, 48, 6, -58 }, // 'P'
|
||||||
|
{ 7368, 37, 55, 48, 6, -58 }, // 'Q'
|
||||||
|
{ 7623, 32, 30, 48, 6, -33 }, // 'R'
|
||||||
|
{ 7743, 37, 55, 48, 6, -55 }, // 'S'
|
||||||
|
{ 7998, 34, 55, 48, 6, -55 }, // 'T'
|
||||||
|
{ 8232, 37, 28, 48, 6, -28 }, // 'U'
|
||||||
|
{ 8362, 37, 55, 48, 6, -55 }, // 'V'
|
||||||
|
{ 8617, 37, 55, 48, 6, -55 }, // 'W'
|
||||||
|
{ 8872, 37, 52, 48, 6, -55 }, // 'X'
|
||||||
|
{ 9113, 37, 55, 48, 6, -55 }, // 'Y'
|
||||||
|
{ 9368, 37, 58, 48, 6, -58 }, // 'Z'
|
||||||
|
{ 9637, 16, 39, 22, 2, -39 }, // '['
|
||||||
|
{ 9715, 16, 39, 22, 2, -39 }, // '\'
|
||||||
|
{ 9793, 16, 39, 22, 2, -39 }, // ']'
|
||||||
|
{ 9871, 16, 39, 22, 2, -39 }, // '^'
|
||||||
|
{ 9949, 16, 39, 22, 2, -39 }, // '_'
|
||||||
|
{ 10027, 16, 39, 22, 2, -39 }, // '`'
|
||||||
|
{ 10105, 37, 55, 48, 6, -58 }, // 'a'
|
||||||
|
{ 10360, 37, 55, 48, 6, -55 }, // 'b'
|
||||||
|
{ 10615, 34, 33, 48, 6, -33 }, // 'c'
|
||||||
|
{ 10756, 37, 55, 48, 6, -55 }, // 'd'
|
||||||
|
{ 11011, 34, 58, 48, 6, -58 }, // 'e'
|
||||||
|
{ 11258, 34, 55, 48, 6, -58 }, // 'f'
|
||||||
|
{ 11492, 37, 58, 48, 6, -58 }, // 'g'
|
||||||
|
{ 11761, 37, 52, 48, 6, -55 }, // 'h'
|
||||||
|
{ 12002, 9, 25, 48, 34, -28 }, // 'i'
|
||||||
|
{ 12031, 37, 55, 48, 6, -55 }, // 'j'
|
||||||
|
{ 12286, 37, 55, 48, 6, -58 }, // 'k'
|
||||||
|
{ 12541, 34, 55, 48, 6, -55 }, // 'l'
|
||||||
|
{ 12775, 37, 55, 48, 6, -58 }, // 'm'
|
||||||
|
{ 13030, 37, 30, 48, 6, -33 }, // 'n'
|
||||||
|
{ 13169, 37, 33, 48, 6, -33 }, // 'o'
|
||||||
|
{ 13322, 37, 55, 48, 6, -58 }, // 'p'
|
||||||
|
{ 13577, 37, 55, 48, 6, -58 }, // 'q'
|
||||||
|
{ 13832, 32, 30, 48, 6, -33 }, // 'r'
|
||||||
|
{ 13952, 37, 55, 48, 6, -55 }, // 's'
|
||||||
|
{ 14207, 34, 55, 48, 6, -55 }, // 't'
|
||||||
|
{ 14441, 37, 28, 48, 6, -28 }, // 'u'
|
||||||
|
{ 14571, 37, 55, 48, 6, -55 }, // 'v'
|
||||||
|
{ 14826, 37, 55, 48, 6, -55 }, // 'w'
|
||||||
|
{ 15081, 37, 52, 48, 6, -55 }, // 'x'
|
||||||
|
{ 15322, 37, 55, 48, 6, -55 }, // 'y'
|
||||||
|
{ 15577, 37, 58, 48, 6, -58 }, // 'z'
|
||||||
|
{ 15846, 16, 39, 22, 2, -39 }, // '{'
|
||||||
|
{ 15924, 16, 39, 22, 2, -39 }, // '|'
|
||||||
|
{ 16002, 16, 39, 22, 2, -39 } // '}'
|
||||||
|
};
|
||||||
|
const GFXfont DSEG7_Classic_Bold_58 PROGMEM = {
|
||||||
|
(uint8_t *)DSEG7_Classic_Bold_58Bitmaps,(GFXglyph *)DSEG7_Classic_Bold_58Glyphs,0x20, 0x7E, 64};
|
||||||
@@ -0,0 +1,202 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <Adafruit_GFX.h>
|
||||||
|
|
||||||
|
// Created by https://oleddisplay.squix.ch/ Consider a donation
|
||||||
|
// In case of problems make sure that you are using the font file with the correct version!
|
||||||
|
const uint8_t DSEG7_Classic_Bold_60Bitmaps[] PROGMEM = {
|
||||||
|
|
||||||
|
// Bitmap Data:
|
||||||
|
0x00, // ' '
|
||||||
|
0x00, // '!'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '"'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '#'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '$'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '%'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '&'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '''
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '('
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // ')'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '*'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '+'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // ','
|
||||||
|
0x0F,0xFF,0xFF,0x80,0xFF,0xFF,0xFE,0x0F,0xFF,0xFF,0xF8,0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xFF,0x1F,0xFF,0xFF,0xF0,0x7F,0xFF,0xFF,0x01,0xFF,0xFF,0xF0, // '-'
|
||||||
|
0x3C,0x3F,0x3F,0xDF,0xEF,0xF3,0xF0,0xF0, // '.'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '/'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xFF,0x7B,0xEF,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFF,0xDF,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x00,0x1F,0xBE,0x00,0x00,0x00,0x3E,0xF0,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x1E,0xF8,0x00,0x00,0x00,0xFB,0xF0,0x00,0x00,0x07,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF7,0xFF,0xFF,0xF7,0xEF,0xBF,0xFF,0xFF,0xEF,0xBD,0xFF,0xFF,0xFF,0xDE,0x6F,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0xE0, // '0'
|
||||||
|
0x0C,0x1E,0x3E,0x7E,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x7E,0x3E,0x1E,0x00,0x00,0x1E,0x3E,0x7E,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x7E,0x3E,0x1E,0x0C, // '1'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0xEC,0x07,0xFF,0xFF,0xFF,0x78,0x0F,0xFF,0xFF,0xFB,0xE0,0x1F,0xFF,0xFF,0xDF,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x0F,0xFF,0xFF,0x9F,0x80,0x7F,0xFF,0xFF,0x3E,0x03,0xFF,0xFF,0xFE,0x78,0x1F,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xF0,0x3C,0xFF,0xFF,0xFF,0x80,0xF9,0xFF,0xFF,0xFC,0x03,0xF3,0xFF,0xFF,0xE0,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF7,0xFF,0xFF,0xF0,0x0F,0xBF,0xFF,0xFF,0xE0,0x3D,0xFF,0xFF,0xFF,0xC0,0x6F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0xE0, // '2'
|
||||||
|
0x7F,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0xFF,0xC3,0xFF,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFE,0xC3,0xFF,0xFF,0xFF,0xBC,0x3F,0xFF,0xFF,0xEF,0x83,0xFF,0xFF,0xFB,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x1F,0xFF,0xFF,0x3F,0x07,0xFF,0xFF,0xF3,0xE1,0xFF,0xFF,0xFF,0x3C,0x7F,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFE,0x00,0xFF,0xFF,0xFF,0x9E,0x0F,0xFF,0xFF,0xE7,0xC0,0xFF,0xFF,0xF9,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x1F,0xFF,0xFF,0xDF,0x87,0xFF,0xFF,0xFD,0xF1,0xFF,0xFF,0xFF,0xDE,0x7F,0xFF,0xFF,0xFD,0x9F,0xFF,0xFF,0xFF,0xC3,0xFF,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xFE,0x00, // '3'
|
||||||
|
0x60,0x00,0x00,0x00,0x33,0xC0,0x00,0x00,0x01,0xEF,0x80,0x00,0x00,0x0F,0xBF,0x00,0x00,0x00,0x7E,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x3F,0xFF,0xFE,0x7E,0xF9,0xFF,0xFF,0xFC,0xFB,0xCF,0xFF,0xFF,0xF9,0xE0,0x7F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xFE,0x78,0x07,0xFF,0xFF,0xF3,0xE0,0x0F,0xFF,0xFF,0x9F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0xC0, // '4'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xFF,0x03,0xEF,0xFF,0xFF,0xF8,0x0F,0xDF,0xFF,0xFF,0xC0,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xCF,0xFF,0xFF,0x80,0x3E,0x7F,0xFF,0xFF,0x00,0xF3,0xFF,0xFF,0xFE,0x00,0x1F,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xF0,0x00,0xFF,0xFF,0xFF,0x9E,0x01,0xFF,0xFF,0xFC,0xF8,0x03,0xFF,0xFF,0xE7,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x07,0xFF,0xFF,0xF7,0xE0,0x3F,0xFF,0xFF,0xEF,0x81,0xFF,0xFF,0xFF,0xDE,0x0F,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0xE0, // '5'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xFF,0x03,0xEF,0xFF,0xFF,0xF8,0x0F,0xDF,0xFF,0xFF,0xC0,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xCF,0xFF,0xFF,0x80,0x3E,0x7F,0xFF,0xFF,0x00,0xF3,0xFF,0xFF,0xFE,0x00,0x1F,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xF0,0x3C,0xFF,0xFF,0xFF,0x9E,0xF9,0xFF,0xFF,0xFC,0xFB,0xF3,0xFF,0xFF,0xE7,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF7,0xFF,0xFF,0xF7,0xEF,0xBF,0xFF,0xFF,0xEF,0xBD,0xFF,0xFF,0xFF,0xDE,0x6F,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0xE0, // '6'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xFF,0x7B,0xEF,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFF,0xDF,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x00,0x1F,0xBE,0x00,0x00,0x00,0x3E,0xF0,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x30, // '7'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xFF,0x7B,0xEF,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFF,0xDF,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xCF,0xFF,0xFF,0x9F,0xBE,0x7F,0xFF,0xFF,0x3E,0xF3,0xFF,0xFF,0xFE,0x78,0x1F,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xF0,0x3C,0xFF,0xFF,0xFF,0x9E,0xF9,0xFF,0xFF,0xFC,0xFB,0xF3,0xFF,0xFF,0xE7,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF7,0xFF,0xFF,0xF7,0xEF,0xBF,0xFF,0xFF,0xEF,0xBD,0xFF,0xFF,0xFF,0xDE,0x6F,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0xE0, // '8'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xFF,0x7B,0xEF,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFF,0xDF,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xCF,0xFF,0xFF,0x9F,0xBE,0x7F,0xFF,0xFF,0x3E,0xF3,0xFF,0xFF,0xFE,0x78,0x1F,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xF0,0x00,0xFF,0xFF,0xFF,0x9E,0x01,0xFF,0xFF,0xFC,0xF8,0x03,0xFF,0xFF,0xE7,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x07,0xFF,0xFF,0xF7,0xE0,0x3F,0xFF,0xFF,0xEF,0x81,0xFF,0xFF,0xFF,0xDE,0x0F,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0xE0, // '9'
|
||||||
|
0x3C,0x3F,0x3F,0xDF,0xEF,0xF3,0xF0,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x3F,0x1F,0x9F,0xEF,0xF3,0xF1,0xF8,0x78, // ':'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // ';'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '<'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '='
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '>'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '?'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '@'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xFF,0x7B,0xEF,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFF,0xDF,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xCF,0xFF,0xFF,0x9F,0xBE,0x7F,0xFF,0xFF,0x3E,0xF3,0xFF,0xFF,0xFE,0x78,0x1F,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xF0,0x3C,0xFF,0xFF,0xFF,0x9E,0xF9,0xFF,0xFF,0xFC,0xFB,0xF3,0xFF,0xFF,0xE7,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF0,0x00,0x00,0x07,0xEF,0x80,0x00,0x00,0x0F,0xBC,0x00,0x00,0x00,0x1E,0x60,0x00,0x00,0x00,0x30, // 'A'
|
||||||
|
0x60,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x3F,0xFF,0xFE,0x00,0xF9,0xFF,0xFF,0xFC,0x03,0xCF,0xFF,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0xC0,0xF3,0xFF,0xFF,0xFE,0x7B,0xE7,0xFF,0xFF,0xF3,0xEF,0xCF,0xFF,0xFF,0x9F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xDF,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFF,0xBE,0xF7,0xFF,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x80, // 'B'
|
||||||
|
0x00,0xFF,0xFF,0xF8,0x00,0x3F,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xF8,0x03,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xF1,0xE7,0xFF,0xFF,0xFC,0x3E,0x7F,0xFF,0xFF,0x07,0xE7,0xFF,0xFF,0xC0,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7E,0xFF,0xFF,0xFE,0x0F,0xBF,0xFF,0xFF,0xE1,0xEF,0xFF,0xFF,0xFE,0x1B,0xFF,0xFF,0xFF,0xE0,0xFF,0xFF,0xFF,0xFE,0x1F,0xFF,0xFF,0xFF,0xC1,0xFF,0xFF,0xFF,0xF0, // 'C'
|
||||||
|
0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x3F,0xFF,0xFE,0x7E,0x01,0xFF,0xFF,0xFC,0xF8,0x0F,0xFF,0xFF,0xF9,0xE0,0x7F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0xC0,0xF3,0xFF,0xFF,0xFE,0x7B,0xE7,0xFF,0xFF,0xF3,0xEF,0xCF,0xFF,0xFF,0x9F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xDF,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFF,0xBE,0xF7,0xFF,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x80, // 'D'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0xFF,0x37,0xFF,0xFF,0xFF,0xCF,0x7F,0xFF,0xFF,0xF1,0xF7,0xFF,0xFF,0xFC,0x3F,0x7F,0xFF,0xFF,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF3,0xFF,0xFF,0xE0,0x7C,0xFF,0xFF,0xFE,0x0F,0x3F,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xC7,0x9F,0xFF,0xFF,0xF0,0xF9,0xFF,0xFF,0xFC,0x1F,0x9F,0xFF,0xFF,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFB,0xFF,0xFF,0xF8,0x3E,0xFF,0xFF,0xFF,0x87,0xBF,0xFF,0xFF,0xF8,0x6F,0xFF,0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xC0, // 'E'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0xFF,0x37,0xFF,0xFF,0xFF,0xCF,0x7F,0xFF,0xFF,0xF1,0xF7,0xFF,0xFF,0xFC,0x3F,0x7F,0xFF,0xFF,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF3,0xFF,0xFF,0xE0,0x7C,0xFF,0xFF,0xFE,0x0F,0x3F,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xC7,0x9F,0xFF,0xFF,0xF0,0xF9,0xFF,0xFF,0xFC,0x1F,0x9F,0xFF,0xFF,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00, // 'F'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xFF,0x03,0xEF,0xFF,0xFF,0xF8,0x0F,0xDF,0xFF,0xFF,0xC0,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x1E,0xF8,0x00,0x00,0x00,0xFB,0xF0,0x00,0x00,0x07,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF7,0xFF,0xFF,0xF7,0xEF,0xBF,0xFF,0xFF,0xEF,0xBD,0xFF,0xFF,0xFF,0xDE,0x6F,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0xE0, // 'G'
|
||||||
|
0x60,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x3F,0xFF,0xFE,0x00,0xF9,0xFF,0xFF,0xFC,0x03,0xCF,0xFF,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0xC0,0xF3,0xFF,0xFF,0xFE,0x7B,0xE7,0xFF,0xFF,0xF3,0xEF,0xCF,0xFF,0xFF,0x9F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x00,0x1F,0xBE,0x00,0x00,0x00,0x3E,0xF0,0x00,0x00,0x00,0x79,0x80,0x00,0x00,0x00,0xC0, // 'H'
|
||||||
|
0x1E,0x3E,0x7E,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x7E,0x3E,0x1E,0x0C, // 'I'
|
||||||
|
0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x7B,0xE0,0x00,0x00,0x03,0xEF,0xC0,0x00,0x00,0x1F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xDF,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFF,0xBE,0xF7,0xFF,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x80, // 'J'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xFF,0x03,0xEF,0xFF,0xFF,0xF8,0x0F,0xDF,0xFF,0xFF,0xC0,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xCF,0xFF,0xFF,0x80,0x3E,0x7F,0xFF,0xFF,0x00,0xF3,0xFF,0xFF,0xFE,0x00,0x1F,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xF0,0x3C,0xFF,0xFF,0xFF,0x9E,0xF9,0xFF,0xFF,0xFC,0xFB,0xF3,0xFF,0xFF,0xE7,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF0,0x00,0x00,0x07,0xEF,0x80,0x00,0x00,0x0F,0xBC,0x00,0x00,0x00,0x1E,0x60,0x00,0x00,0x00,0x30, // 'K'
|
||||||
|
0x60,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF7,0xFF,0xFF,0xF0,0x7D,0xFF,0xFF,0xFF,0x0F,0x7F,0xFF,0xFF,0xF0,0xDF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFE,0x0F,0xFF,0xFF,0xFF,0x80, // 'L'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xFF,0x7B,0xEF,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFF,0xDF,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x00,0x1F,0xBE,0x00,0x00,0x00,0x3E,0xF0,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x1E,0xF8,0x00,0x00,0x00,0xFB,0xF0,0x00,0x00,0x07,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF0,0x00,0x00,0x07,0xEF,0x80,0x00,0x00,0x0F,0xBC,0x00,0x00,0x00,0x1E,0x60,0x00,0x00,0x00,0x30, // 'M'
|
||||||
|
0x00,0xFF,0xFF,0xF8,0x00,0x07,0xFF,0xFF,0xF0,0x00,0x3F,0xFF,0xFF,0xE0,0x01,0xFF,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xFF,0x03,0xCF,0xFF,0xFF,0xF9,0xEF,0x9F,0xFF,0xFF,0xCF,0xBF,0x3F,0xFF,0xFE,0x7E,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x00,0x00,0x00,0x7E,0xF8,0x00,0x00,0x00,0xFB,0xC0,0x00,0x00,0x01,0xE6,0x00,0x00,0x00,0x03,0x00, // 'N'
|
||||||
|
0x00,0xFF,0xFF,0xF8,0x00,0x07,0xFF,0xFF,0xF0,0x00,0x3F,0xFF,0xFF,0xE0,0x01,0xFF,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xFF,0x03,0xCF,0xFF,0xFF,0xF9,0xEF,0x9F,0xFF,0xFF,0xCF,0xBF,0x3F,0xFF,0xFE,0x7E,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x7F,0xFF,0xFF,0x7E,0xFB,0xFF,0xFF,0xFE,0xFB,0xDF,0xFF,0xFF,0xFD,0xE6,0xFF,0xFF,0xFF,0xFB,0x07,0xFF,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFE,0x00, // 'O'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xFF,0x7B,0xEF,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFF,0xDF,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xCF,0xFF,0xFF,0x9F,0xBE,0x7F,0xFF,0xFF,0x3E,0xF3,0xFF,0xFF,0xFE,0x78,0x1F,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xF0,0x3C,0xFF,0xFF,0xFF,0x80,0xF9,0xFF,0xFF,0xFC,0x03,0xF3,0xFF,0xFF,0xE0,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00, // 'P'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xFF,0x7B,0xEF,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFF,0xDF,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xCF,0xFF,0xFF,0x9F,0xBE,0x7F,0xFF,0xFF,0x3E,0xF3,0xFF,0xFF,0xFE,0x78,0x1F,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xF0,0x00,0xFF,0xFF,0xFF,0x9E,0x01,0xFF,0xFF,0xFC,0xF8,0x03,0xFF,0xFF,0xE7,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x30, // 'Q'
|
||||||
|
0x00,0xFF,0xFF,0xF8,0x00,0xFF,0xFF,0xFE,0x00,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0xF7,0x9F,0xFF,0xFF,0xF3,0xE7,0xFF,0xFF,0xF1,0xF9,0xFF,0xFF,0xF0,0xFE,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x1F,0xC0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x07,0xF0,0x00,0x00,0x03,0xF8,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x1F,0xC0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x07,0xF0,0x00,0x00,0x03,0xF8,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x07,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x00, // 'R'
|
||||||
|
0x60,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x3F,0xFF,0xFE,0x00,0xF9,0xFF,0xFF,0xFC,0x03,0xCF,0xFF,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xFE,0x78,0x07,0xFF,0xFF,0xF3,0xE0,0x0F,0xFF,0xFF,0x9F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x1F,0xFF,0xFF,0xDF,0x80,0xFF,0xFF,0xFF,0xBE,0x07,0xFF,0xFF,0xFF,0x78,0x3F,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x80, // 'S'
|
||||||
|
0x60,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xE7,0xFF,0xFF,0xC0,0xF9,0xFF,0xFF,0xFC,0x1E,0x7F,0xFF,0xFF,0xC0,0x1F,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0x8F,0x3F,0xFF,0xFF,0xE1,0xF3,0xFF,0xFF,0xF8,0x3F,0x3F,0xFF,0xFE,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF7,0xFF,0xFF,0xF0,0x7D,0xFF,0xFF,0xFF,0x0F,0x7F,0xFF,0xFF,0xF0,0xDF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFE,0x0F,0xFF,0xFF,0xFF,0x80, // 'T'
|
||||||
|
0xF0,0x00,0x00,0x00,0x7B,0xE0,0x00,0x00,0x03,0xEF,0xC0,0x00,0x00,0x1F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xDF,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFF,0xBE,0xF7,0xFF,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x80, // 'U'
|
||||||
|
0x60,0x00,0x00,0x00,0x33,0xC0,0x00,0x00,0x01,0xEF,0x80,0x00,0x00,0x0F,0xBF,0x00,0x00,0x00,0x7E,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x00,0x00,0x00,0x7E,0xF8,0x00,0x00,0x00,0xFB,0xC0,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x7B,0xE0,0x00,0x00,0x03,0xEF,0xC0,0x00,0x00,0x1F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xDF,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFF,0xBE,0xF7,0xFF,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x80, // 'V'
|
||||||
|
0x60,0x00,0x00,0x00,0x33,0xC0,0x00,0x00,0x01,0xEF,0x80,0x00,0x00,0x0F,0xBF,0x00,0x00,0x00,0x7E,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x3F,0xFF,0xFE,0x7E,0xF9,0xFF,0xFF,0xFC,0xFB,0xCF,0xFF,0xFF,0xF9,0xE0,0x7F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0xC0,0xF3,0xFF,0xFF,0xFE,0x7B,0xE7,0xFF,0xFF,0xF3,0xEF,0xCF,0xFF,0xFF,0x9F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xDF,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFF,0xBE,0xF7,0xFF,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x80, // 'W'
|
||||||
|
0x60,0x00,0x00,0x00,0x33,0xC0,0x00,0x00,0x01,0xEF,0x80,0x00,0x00,0x0F,0xBF,0x00,0x00,0x00,0x7E,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x3F,0xFF,0xFE,0x7E,0xF9,0xFF,0xFF,0xFC,0xFB,0xCF,0xFF,0xFF,0xF9,0xE0,0x7F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0xC0,0xF3,0xFF,0xFF,0xFE,0x7B,0xE7,0xFF,0xFF,0xF3,0xEF,0xCF,0xFF,0xFF,0x9F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x00,0x1F,0xBE,0x00,0x00,0x00,0x3E,0xF0,0x00,0x00,0x00,0x79,0x80,0x00,0x00,0x00,0xC0, // 'X'
|
||||||
|
0x60,0x00,0x00,0x00,0x33,0xC0,0x00,0x00,0x01,0xEF,0x80,0x00,0x00,0x0F,0xBF,0x00,0x00,0x00,0x7E,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x3F,0xFF,0xFE,0x7E,0xF9,0xFF,0xFF,0xFC,0xFB,0xCF,0xFF,0xFF,0xF9,0xE0,0x7F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xFE,0x78,0x07,0xFF,0xFF,0xF3,0xE0,0x0F,0xFF,0xFF,0x9F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x1F,0xFF,0xFF,0xDF,0x80,0xFF,0xFF,0xFF,0xBE,0x07,0xFF,0xFF,0xFF,0x78,0x3F,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x80, // 'Y'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0xEC,0x07,0xFF,0xFF,0xFF,0x78,0x0F,0xFF,0xFF,0xFB,0xE0,0x1F,0xFF,0xFF,0xDF,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF7,0xFF,0xFF,0xF0,0x0F,0xBF,0xFF,0xFF,0xE0,0x3D,0xFF,0xFF,0xFF,0xC0,0x6F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0xE0, // 'Z'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '['
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '\'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // ']'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '^'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '_'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '`'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xFF,0x7B,0xEF,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFF,0xDF,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xCF,0xFF,0xFF,0x9F,0xBE,0x7F,0xFF,0xFF,0x3E,0xF3,0xFF,0xFF,0xFE,0x78,0x1F,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xF0,0x3C,0xFF,0xFF,0xFF,0x9E,0xF9,0xFF,0xFF,0xFC,0xFB,0xF3,0xFF,0xFF,0xE7,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF0,0x00,0x00,0x07,0xEF,0x80,0x00,0x00,0x0F,0xBC,0x00,0x00,0x00,0x1E,0x60,0x00,0x00,0x00,0x30, // 'a'
|
||||||
|
0x60,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x3F,0xFF,0xFE,0x00,0xF9,0xFF,0xFF,0xFC,0x03,0xCF,0xFF,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0xC0,0xF3,0xFF,0xFF,0xFE,0x7B,0xE7,0xFF,0xFF,0xF3,0xEF,0xCF,0xFF,0xFF,0x9F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xDF,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFF,0xBE,0xF7,0xFF,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x80, // 'b'
|
||||||
|
0x00,0xFF,0xFF,0xF8,0x00,0x3F,0xFF,0xFF,0x80,0x0F,0xFF,0xFF,0xF8,0x03,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xF1,0xE7,0xFF,0xFF,0xFC,0x3E,0x7F,0xFF,0xFF,0x07,0xE7,0xFF,0xFF,0xC0,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7E,0xFF,0xFF,0xFE,0x0F,0xBF,0xFF,0xFF,0xE1,0xEF,0xFF,0xFF,0xFE,0x1B,0xFF,0xFF,0xFF,0xE0,0xFF,0xFF,0xFF,0xFE,0x1F,0xFF,0xFF,0xFF,0xC1,0xFF,0xFF,0xFF,0xF0, // 'c'
|
||||||
|
0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x3F,0xFF,0xFE,0x7E,0x01,0xFF,0xFF,0xFC,0xF8,0x0F,0xFF,0xFF,0xF9,0xE0,0x7F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0xC0,0xF3,0xFF,0xFF,0xFE,0x7B,0xE7,0xFF,0xFF,0xF3,0xEF,0xCF,0xFF,0xFF,0x9F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xDF,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFF,0xBE,0xF7,0xFF,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x80, // 'd'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0xFF,0x37,0xFF,0xFF,0xFF,0xCF,0x7F,0xFF,0xFF,0xF1,0xF7,0xFF,0xFF,0xFC,0x3F,0x7F,0xFF,0xFF,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF3,0xFF,0xFF,0xE0,0x7C,0xFF,0xFF,0xFE,0x0F,0x3F,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xC7,0x9F,0xFF,0xFF,0xF0,0xF9,0xFF,0xFF,0xFC,0x1F,0x9F,0xFF,0xFF,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFB,0xFF,0xFF,0xF8,0x3E,0xFF,0xFF,0xFF,0x87,0xBF,0xFF,0xFF,0xF8,0x6F,0xFF,0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xC0, // 'e'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x83,0xFF,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0xFF,0x37,0xFF,0xFF,0xFF,0xCF,0x7F,0xFF,0xFF,0xF1,0xF7,0xFF,0xFF,0xFC,0x3F,0x7F,0xFF,0xFF,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF3,0xFF,0xFF,0xE0,0x7C,0xFF,0xFF,0xFE,0x0F,0x3F,0xFF,0xFF,0xE0,0x0F,0xFF,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xC7,0x9F,0xFF,0xFF,0xF0,0xF9,0xFF,0xFF,0xFC,0x1F,0x9F,0xFF,0xFF,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x07,0x80,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00, // 'f'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xFF,0x03,0xEF,0xFF,0xFF,0xF8,0x0F,0xDF,0xFF,0xFF,0xC0,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xC0,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x1E,0xF8,0x00,0x00,0x00,0xFB,0xF0,0x00,0x00,0x07,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF7,0xFF,0xFF,0xF7,0xEF,0xBF,0xFF,0xFF,0xEF,0xBD,0xFF,0xFF,0xFF,0xDE,0x6F,0xFF,0xFF,0xFF,0xB0,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0xE0, // 'g'
|
||||||
|
0x60,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x3F,0xFF,0xFE,0x00,0xF9,0xFF,0xFF,0xFC,0x03,0xCF,0xFF,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0xC0,0xF3,0xFF,0xFF,0xFE,0x7B,0xE7,0xFF,0xFF,0xF3,0xEF,0xCF,0xFF,0xFF,0x9F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x00,0x1F,0xBE,0x00,0x00,0x00,0x3E,0xF0,0x00,0x00,0x00,0x79,0x80,0x00,0x00,0x00,0xC0, // 'h'
|
||||||
|
0x1E,0x3E,0x7E,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0x7E,0x3E,0x1E,0x0C, // 'i'
|
||||||
|
0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x7B,0xE0,0x00,0x00,0x03,0xEF,0xC0,0x00,0x00,0x1F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xDF,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFF,0xBE,0xF7,0xFF,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x80, // 'j'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xE0,0xF7,0xFF,0xFF,0xFF,0x03,0xEF,0xFF,0xFF,0xF8,0x0F,0xDF,0xFF,0xFF,0xC0,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xCF,0xFF,0xFF,0x80,0x3E,0x7F,0xFF,0xFF,0x00,0xF3,0xFF,0xFF,0xFE,0x00,0x1F,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xF0,0x3C,0xFF,0xFF,0xFF,0x9E,0xF9,0xFF,0xFF,0xFC,0xFB,0xF3,0xFF,0xFF,0xE7,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF0,0x00,0x00,0x07,0xEF,0x80,0x00,0x00,0x0F,0xBC,0x00,0x00,0x00,0x1E,0x60,0x00,0x00,0x00,0x30, // 'k'
|
||||||
|
0x60,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF7,0xFF,0xFF,0xF0,0x7D,0xFF,0xFF,0xFF,0x0F,0x7F,0xFF,0xFF,0xF0,0xDF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFE,0x0F,0xFF,0xFF,0xFF,0x80, // 'l'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xFF,0x7B,0xEF,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFF,0xDF,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x00,0x1F,0xBE,0x00,0x00,0x00,0x3E,0xF0,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x1E,0xF8,0x00,0x00,0x00,0xFB,0xF0,0x00,0x00,0x07,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF0,0x00,0x00,0x07,0xEF,0x80,0x00,0x00,0x0F,0xBC,0x00,0x00,0x00,0x1E,0x60,0x00,0x00,0x00,0x30, // 'm'
|
||||||
|
0x00,0xFF,0xFF,0xF8,0x00,0x07,0xFF,0xFF,0xF0,0x00,0x3F,0xFF,0xFF,0xE0,0x01,0xFF,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xFF,0x03,0xCF,0xFF,0xFF,0xF9,0xEF,0x9F,0xFF,0xFF,0xCF,0xBF,0x3F,0xFF,0xFE,0x7E,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x00,0x00,0x00,0x7E,0xF8,0x00,0x00,0x00,0xFB,0xC0,0x00,0x00,0x01,0xE6,0x00,0x00,0x00,0x03,0x00, // 'n'
|
||||||
|
0x00,0xFF,0xFF,0xF8,0x00,0x07,0xFF,0xFF,0xF0,0x00,0x3F,0xFF,0xFF,0xE0,0x01,0xFF,0xFF,0xFF,0xC0,0x07,0xFF,0xFF,0xFF,0x03,0xCF,0xFF,0xFF,0xF9,0xEF,0x9F,0xFF,0xFF,0xCF,0xBF,0x3F,0xFF,0xFE,0x7E,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x7F,0xFF,0xFF,0x7E,0xFB,0xFF,0xFF,0xFE,0xFB,0xDF,0xFF,0xFF,0xFD,0xE6,0xFF,0xFF,0xFF,0xFB,0x07,0xFF,0xFF,0xFF,0xF0,0x1F,0xFF,0xFF,0xFF,0xC0,0x3F,0xFF,0xFF,0xFE,0x00, // 'o'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xFF,0x7B,0xEF,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFF,0xDF,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xCF,0xFF,0xFF,0x9F,0xBE,0x7F,0xFF,0xFF,0x3E,0xF3,0xFF,0xFF,0xFE,0x78,0x1F,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xF0,0x3C,0xFF,0xFF,0xFF,0x80,0xF9,0xFF,0xFF,0xFC,0x03,0xF3,0xFF,0xFF,0xE0,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00, // 'p'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x1B,0xFF,0xFF,0xFF,0xEC,0xF7,0xFF,0xFF,0xFF,0x7B,0xEF,0xFF,0xFF,0xFB,0xEF,0xDF,0xFF,0xFF,0xDF,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xCF,0xFF,0xFF,0x9F,0xBE,0x7F,0xFF,0xFF,0x3E,0xF3,0xFF,0xFF,0xFE,0x78,0x1F,0xFF,0xFF,0xFC,0x00,0x7F,0xFF,0xFF,0xF0,0x00,0xFF,0xFF,0xFF,0x9E,0x01,0xFF,0xFF,0xFC,0xF8,0x03,0xFF,0xFF,0xE7,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x07,0xE0,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x30, // 'q'
|
||||||
|
0x00,0xFF,0xFF,0xF8,0x00,0xFF,0xFF,0xFE,0x00,0xFF,0xFF,0xFF,0x80,0xFF,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0xF7,0x9F,0xFF,0xFF,0xF3,0xE7,0xFF,0xFF,0xF1,0xF9,0xFF,0xFF,0xF0,0xFE,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x1F,0xC0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x07,0xF0,0x00,0x00,0x03,0xF8,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x1F,0xC0,0x00,0x00,0x0F,0xE0,0x00,0x00,0x07,0xF0,0x00,0x00,0x03,0xF8,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x1F,0x80,0x00,0x00,0x0F,0x80,0x00,0x00,0x07,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x00, // 'r'
|
||||||
|
0x60,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x0F,0x80,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x3F,0xFF,0xFE,0x00,0xF9,0xFF,0xFF,0xFC,0x03,0xCF,0xFF,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xFE,0x78,0x07,0xFF,0xFF,0xF3,0xE0,0x0F,0xFF,0xFF,0x9F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x1F,0xFF,0xFF,0xDF,0x80,0xFF,0xFF,0xFF,0xBE,0x07,0xFF,0xFF,0xFF,0x78,0x3F,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x80, // 's'
|
||||||
|
0x60,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xE7,0xFF,0xFF,0xC0,0xF9,0xFF,0xFF,0xFC,0x1E,0x7F,0xFF,0xFF,0xC0,0x1F,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0x8F,0x3F,0xFF,0xFF,0xE1,0xF3,0xFF,0xFF,0xF8,0x3F,0x3F,0xFF,0xFE,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x07,0xF0,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x1F,0xC0,0x00,0x00,0x03,0xF7,0xFF,0xFF,0xF0,0x7D,0xFF,0xFF,0xFF,0x0F,0x7F,0xFF,0xFF,0xF0,0xDF,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0xFE,0x0F,0xFF,0xFF,0xFF,0x80, // 't'
|
||||||
|
0xF0,0x00,0x00,0x00,0x7B,0xE0,0x00,0x00,0x03,0xEF,0xC0,0x00,0x00,0x1F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xDF,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFF,0xBE,0xF7,0xFF,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x80, // 'u'
|
||||||
|
0x60,0x00,0x00,0x00,0x33,0xC0,0x00,0x00,0x01,0xEF,0x80,0x00,0x00,0x0F,0xBF,0x00,0x00,0x00,0x7E,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x00,0x00,0x00,0x7E,0xF8,0x00,0x00,0x00,0xFB,0xC0,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x7B,0xE0,0x00,0x00,0x03,0xEF,0xC0,0x00,0x00,0x1F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xDF,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFF,0xBE,0xF7,0xFF,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x80, // 'v'
|
||||||
|
0x60,0x00,0x00,0x00,0x33,0xC0,0x00,0x00,0x01,0xEF,0x80,0x00,0x00,0x0F,0xBF,0x00,0x00,0x00,0x7E,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x3F,0xFF,0xFE,0x7E,0xF9,0xFF,0xFF,0xFC,0xFB,0xCF,0xFF,0xFF,0xF9,0xE0,0x7F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0xC0,0xF3,0xFF,0xFF,0xFE,0x7B,0xE7,0xFF,0xFF,0xF3,0xEF,0xCF,0xFF,0xFF,0x9F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xDF,0xFF,0xFF,0xDF,0xBE,0xFF,0xFF,0xFF,0xBE,0xF7,0xFF,0xFF,0xFF,0x79,0xBF,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x80, // 'w'
|
||||||
|
0x60,0x00,0x00,0x00,0x33,0xC0,0x00,0x00,0x01,0xEF,0x80,0x00,0x00,0x0F,0xBF,0x00,0x00,0x00,0x7E,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x3F,0xFF,0xFE,0x7E,0xF9,0xFF,0xFF,0xFC,0xFB,0xCF,0xFF,0xFF,0xF9,0xE0,0x7F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0xC0,0xF3,0xFF,0xFF,0xFE,0x7B,0xE7,0xFF,0xFF,0xF3,0xEF,0xCF,0xFF,0xFF,0x9F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xC0,0x00,0x00,0x1F,0xBE,0x00,0x00,0x00,0x3E,0xF0,0x00,0x00,0x00,0x79,0x80,0x00,0x00,0x00,0xC0, // 'x'
|
||||||
|
0x60,0x00,0x00,0x00,0x33,0xC0,0x00,0x00,0x01,0xEF,0x80,0x00,0x00,0x0F,0xBF,0x00,0x00,0x00,0x7E,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x80,0x00,0x00,0xFE,0xFE,0x00,0x00,0x03,0xFB,0xF8,0x00,0x00,0x0F,0xEF,0xE0,0x00,0x00,0x3F,0xBF,0x3F,0xFF,0xFE,0x7E,0xF9,0xFF,0xFF,0xFC,0xFB,0xCF,0xFF,0xFF,0xF9,0xE0,0x7F,0xFF,0xFF,0xF0,0x01,0xFF,0xFF,0xFF,0xC0,0x03,0xFF,0xFF,0xFE,0x78,0x07,0xFF,0xFF,0xF3,0xE0,0x0F,0xFF,0xFF,0x9F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x1F,0xFF,0xFF,0xDF,0x80,0xFF,0xFF,0xFF,0xBE,0x07,0xFF,0xFF,0xFF,0x78,0x3F,0xFF,0xFF,0xFE,0xC1,0xFF,0xFF,0xFF,0xFC,0x07,0xFF,0xFF,0xFF,0xF0,0x0F,0xFF,0xFF,0xFF,0x80, // 'y'
|
||||||
|
0x0F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0xEC,0x07,0xFF,0xFF,0xFF,0x78,0x0F,0xFF,0xFF,0xFB,0xE0,0x1F,0xFF,0xFF,0xDF,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x1F,0x80,0x00,0x00,0x00,0x3E,0x00,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x3F,0x80,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x03,0xF7,0xFF,0xFF,0xF0,0x0F,0xBF,0xFF,0xFF,0xE0,0x3D,0xFF,0xFF,0xFF,0xC0,0x6F,0xFF,0xFF,0xFF,0x80,0x7F,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0xE0, // 'z'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '{'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE, // '|'
|
||||||
|
0xFF,0xFF,0x7F,0xFF,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0x00,0x0D,0x80,0x06,0xC0,0x03,0x60,0x01,0xB0,0x00,0xD8,0x00,0x6C,0x00,0x36,0x00,0x1B,0xFF,0xFD,0xFF,0xFE // '}'
|
||||||
|
};
|
||||||
|
const GFXglyph DSEG7_Classic_Bold_60Glyphs[] PROGMEM = {
|
||||||
|
// bitmapOffset, width, height, xAdvance, xOffset, yOffset
|
||||||
|
{ 0, 2, 1, 13, 0, -1 }, // ' '
|
||||||
|
{ 1, 2, 1, 50, 0, -1 }, // '!'
|
||||||
|
{ 2, 17, 40, 23, 2, -40 }, // '"'
|
||||||
|
{ 87, 17, 40, 23, 2, -40 }, // '#'
|
||||||
|
{ 172, 17, 40, 23, 2, -40 }, // '$'
|
||||||
|
{ 257, 17, 40, 23, 2, -40 }, // '%'
|
||||||
|
{ 342, 17, 40, 23, 2, -40 }, // '&'
|
||||||
|
{ 427, 17, 40, 23, 2, -40 }, // '''
|
||||||
|
{ 512, 17, 40, 23, 2, -40 }, // '('
|
||||||
|
{ 597, 17, 40, 23, 2, -40 }, // ')'
|
||||||
|
{ 682, 17, 40, 23, 2, -40 }, // '*'
|
||||||
|
{ 767, 17, 40, 23, 2, -40 }, // '+'
|
||||||
|
{ 852, 17, 40, 23, 2, -40 }, // ','
|
||||||
|
{ 937, 29, 8, 50, 10, -34 }, // '-'
|
||||||
|
{ 966, 9, 7, 1, -4, -7 }, // '.'
|
||||||
|
{ 974, 17, 40, 23, 2, -40 }, // '/'
|
||||||
|
{ 1059, 38, 60, 50, 6, -60 }, // '0'
|
||||||
|
{ 1344, 8, 54, 50, 36, -57 }, // '1'
|
||||||
|
{ 1398, 38, 60, 50, 6, -60 }, // '2'
|
||||||
|
{ 1683, 35, 60, 50, 9, -60 }, // '3'
|
||||||
|
{ 1946, 38, 54, 50, 6, -57 }, // '4'
|
||||||
|
{ 2203, 38, 60, 50, 6, -60 }, // '5'
|
||||||
|
{ 2488, 38, 60, 50, 6, -60 }, // '6'
|
||||||
|
{ 2773, 38, 57, 50, 6, -60 }, // '7'
|
||||||
|
{ 3044, 38, 60, 50, 6, -60 }, // '8'
|
||||||
|
{ 3329, 38, 60, 50, 6, -60 }, // '9'
|
||||||
|
{ 3614, 9, 32, 13, 2, -45 }, // ':'
|
||||||
|
{ 3650, 17, 40, 23, 2, -40 }, // ';'
|
||||||
|
{ 3735, 17, 40, 23, 2, -40 }, // '<'
|
||||||
|
{ 3820, 17, 40, 23, 2, -40 }, // '='
|
||||||
|
{ 3905, 17, 40, 23, 2, -40 }, // '>'
|
||||||
|
{ 3990, 17, 40, 23, 2, -40 }, // '?'
|
||||||
|
{ 4075, 17, 40, 23, 2, -40 }, // '@'
|
||||||
|
{ 4160, 38, 57, 50, 6, -60 }, // 'A'
|
||||||
|
{ 4431, 38, 57, 50, 6, -57 }, // 'B'
|
||||||
|
{ 4702, 35, 34, 50, 6, -34 }, // 'C'
|
||||||
|
{ 4851, 38, 57, 50, 6, -57 }, // 'D'
|
||||||
|
{ 5122, 35, 60, 50, 6, -60 }, // 'E'
|
||||||
|
{ 5385, 35, 57, 50, 6, -60 }, // 'F'
|
||||||
|
{ 5635, 38, 60, 50, 6, -60 }, // 'G'
|
||||||
|
{ 5920, 38, 54, 50, 6, -57 }, // 'H'
|
||||||
|
{ 6177, 8, 26, 50, 36, -29 }, // 'I'
|
||||||
|
{ 6203, 38, 57, 50, 6, -57 }, // 'J'
|
||||||
|
{ 6474, 38, 57, 50, 6, -60 }, // 'K'
|
||||||
|
{ 6745, 35, 57, 50, 6, -57 }, // 'L'
|
||||||
|
{ 6995, 38, 57, 50, 6, -60 }, // 'M'
|
||||||
|
{ 7266, 38, 31, 50, 6, -34 }, // 'N'
|
||||||
|
{ 7414, 38, 34, 50, 6, -34 }, // 'O'
|
||||||
|
{ 7576, 38, 57, 50, 6, -60 }, // 'P'
|
||||||
|
{ 7847, 38, 57, 50, 6, -60 }, // 'Q'
|
||||||
|
{ 8118, 33, 31, 50, 6, -34 }, // 'R'
|
||||||
|
{ 8246, 38, 57, 50, 6, -57 }, // 'S'
|
||||||
|
{ 8517, 35, 57, 50, 6, -57 }, // 'T'
|
||||||
|
{ 8767, 38, 29, 50, 6, -29 }, // 'U'
|
||||||
|
{ 8905, 38, 57, 50, 6, -57 }, // 'V'
|
||||||
|
{ 9176, 38, 57, 50, 6, -57 }, // 'W'
|
||||||
|
{ 9447, 38, 54, 50, 6, -57 }, // 'X'
|
||||||
|
{ 9704, 38, 57, 50, 6, -57 }, // 'Y'
|
||||||
|
{ 9975, 38, 60, 50, 6, -60 }, // 'Z'
|
||||||
|
{ 10260, 17, 40, 23, 2, -40 }, // '['
|
||||||
|
{ 10345, 17, 40, 23, 2, -40 }, // '\'
|
||||||
|
{ 10430, 17, 40, 23, 2, -40 }, // ']'
|
||||||
|
{ 10515, 17, 40, 23, 2, -40 }, // '^'
|
||||||
|
{ 10600, 17, 40, 23, 2, -40 }, // '_'
|
||||||
|
{ 10685, 17, 40, 23, 2, -40 }, // '`'
|
||||||
|
{ 10770, 38, 57, 50, 6, -60 }, // 'a'
|
||||||
|
{ 11041, 38, 57, 50, 6, -57 }, // 'b'
|
||||||
|
{ 11312, 35, 34, 50, 6, -34 }, // 'c'
|
||||||
|
{ 11461, 38, 57, 50, 6, -57 }, // 'd'
|
||||||
|
{ 11732, 35, 60, 50, 6, -60 }, // 'e'
|
||||||
|
{ 11995, 35, 57, 50, 6, -60 }, // 'f'
|
||||||
|
{ 12245, 38, 60, 50, 6, -60 }, // 'g'
|
||||||
|
{ 12530, 38, 54, 50, 6, -57 }, // 'h'
|
||||||
|
{ 12787, 8, 26, 50, 36, -29 }, // 'i'
|
||||||
|
{ 12813, 38, 57, 50, 6, -57 }, // 'j'
|
||||||
|
{ 13084, 38, 57, 50, 6, -60 }, // 'k'
|
||||||
|
{ 13355, 35, 57, 50, 6, -57 }, // 'l'
|
||||||
|
{ 13605, 38, 57, 50, 6, -60 }, // 'm'
|
||||||
|
{ 13876, 38, 31, 50, 6, -34 }, // 'n'
|
||||||
|
{ 14024, 38, 34, 50, 6, -34 }, // 'o'
|
||||||
|
{ 14186, 38, 57, 50, 6, -60 }, // 'p'
|
||||||
|
{ 14457, 38, 57, 50, 6, -60 }, // 'q'
|
||||||
|
{ 14728, 33, 31, 50, 6, -34 }, // 'r'
|
||||||
|
{ 14856, 38, 57, 50, 6, -57 }, // 's'
|
||||||
|
{ 15127, 35, 57, 50, 6, -57 }, // 't'
|
||||||
|
{ 15377, 38, 29, 50, 6, -29 }, // 'u'
|
||||||
|
{ 15515, 38, 57, 50, 6, -57 }, // 'v'
|
||||||
|
{ 15786, 38, 57, 50, 6, -57 }, // 'w'
|
||||||
|
{ 16057, 38, 54, 50, 6, -57 }, // 'x'
|
||||||
|
{ 16314, 38, 57, 50, 6, -57 }, // 'y'
|
||||||
|
{ 16585, 38, 60, 50, 6, -60 }, // 'z'
|
||||||
|
{ 16870, 17, 40, 23, 2, -40 }, // '{'
|
||||||
|
{ 16955, 17, 40, 23, 2, -40 }, // '|'
|
||||||
|
{ 17040, 17, 40, 23, 2, -40 } // '}'
|
||||||
|
};
|
||||||
|
const GFXfont DSEG7_Classic_Bold_60 PROGMEM = {
|
||||||
|
(uint8_t *)DSEG7_Classic_Bold_60Bitmaps,(GFXglyph *)DSEG7_Classic_Bold_60Glyphs,0x20, 0x7E, 66};
|
||||||
@@ -0,0 +1,202 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <Adafruit_GFX.h>
|
||||||
|
|
||||||
|
// Created by https://oleddisplay.squix.ch/ Consider a donation
|
||||||
|
// In case of problems make sure that you are using the font file with the correct version!
|
||||||
|
const uint8_t DSEG7_Classic_Regular_24Bitmaps[] PROGMEM = {
|
||||||
|
|
||||||
|
// Bitmap Data:
|
||||||
|
0x00, // ' '
|
||||||
|
0x00, // '!'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '"'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '#'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '$'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '%'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '&'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '''
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '('
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // ')'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '*'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '+'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // ','
|
||||||
|
0x7F,0xF9,0xFF,0xE0, // '-'
|
||||||
|
0xDB,0x00, // '.'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '/'
|
||||||
|
0x3F,0xFC,0x7F,0xFA,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0x80,0x02,0x80,0x02,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // '0'
|
||||||
|
0x5B,0x6D,0xB6,0xD9,0x2D,0xB6,0xDB,0x6C,0x80, // '1'
|
||||||
|
0x3F,0xFC,0x3F,0xFA,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x3F,0xFE,0xBF,0xFC,0xC0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0x7F,0xF8,0x3F,0xFC, // '2'
|
||||||
|
0x7F,0xF8,0xFF,0xE8,0x00,0x30,0x00,0x60,0x00,0xC0,0x01,0x80,0x03,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x33,0xFF,0xE7,0xFF,0xC0,0x01,0x80,0x03,0x00,0x06,0x00,0x0C,0x00,0x18,0x00,0x30,0x00,0x60,0x00,0xC0,0x01,0x9F,0xFD,0x3F,0xFC, // '3'
|
||||||
|
0x40,0x02,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0xBF,0xFE,0x3F,0xFE,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x02, // '4'
|
||||||
|
0x3F,0xFC,0x7F,0xF8,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x00,0xBF,0xFC,0x3F,0xFE,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x3F,0xFA,0x3F,0xFC, // '5'
|
||||||
|
0x3F,0xFC,0x7F,0xF8,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x00,0xBF,0xFC,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // '6'
|
||||||
|
0x3F,0xFC,0x7F,0xFA,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0x80,0x02,0x00,0x02,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x02, // '7'
|
||||||
|
0x3F,0xFC,0x7F,0xFA,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0xBF,0xFE,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // '8'
|
||||||
|
0x3F,0xFC,0x7F,0xFA,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0xBF,0xFE,0x3F,0xFE,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x3F,0xFA,0x3F,0xFC, // '9'
|
||||||
|
0xEE,0xC0,0x00,0x00,0x00,0xEE,0x40, // ':'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // ';'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '<'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '='
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '>'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '?'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '@'
|
||||||
|
0x3F,0xFC,0x7F,0xFA,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0xBF,0xFE,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x40,0x02, // 'A'
|
||||||
|
0x40,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x00,0xBF,0xFC,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // 'B'
|
||||||
|
0x3F,0xFD,0x7F,0xFB,0x00,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x03,0xFF,0xC3,0xFF,0xC0, // 'C'
|
||||||
|
0x00,0x02,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x3F,0xFE,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // 'D'
|
||||||
|
0x3F,0xFC,0xFF,0xF3,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x00,0x05,0xFF,0xEB,0xFF,0xD8,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x1F,0xFE,0x1F,0xFE, // 'E'
|
||||||
|
0x3F,0xFC,0xFF,0xF3,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x00,0x05,0xFF,0xEB,0xFF,0xD8,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x10,0x00,0x00, // 'F'
|
||||||
|
0x3F,0xFC,0x7F,0xF8,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x00,0x80,0x00,0x80,0x02,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // 'G'
|
||||||
|
0x40,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x00,0xBF,0xFC,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x40,0x02, // 'H'
|
||||||
|
0x5B,0x6D,0xB6,0xD9,0x00, // 'I'
|
||||||
|
0x00,0x02,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x02,0x80,0x02,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // 'J'
|
||||||
|
0x3F,0xFC,0x7F,0xF8,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x00,0xBF,0xFC,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x40,0x02, // 'K'
|
||||||
|
0x40,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0x80,0x02,0x00,0x04,0x00,0x0C,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x0F,0xFF,0x0F,0xFF,0x00, // 'L'
|
||||||
|
0x3F,0xFC,0x7F,0xFA,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0x80,0x02,0x80,0x02,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x40,0x02, // 'M'
|
||||||
|
0x3F,0xFC,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x40,0x02, // 'N'
|
||||||
|
0x3F,0xFC,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // 'O'
|
||||||
|
0x3F,0xFC,0x7F,0xFA,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0xBF,0xFE,0xBF,0xFC,0xC0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0x40,0x00, // 'P'
|
||||||
|
0x3F,0xFC,0x7F,0xFA,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0xBF,0xFE,0x3F,0xFE,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x02, // 'Q'
|
||||||
|
0x3F,0xFD,0x7F,0xFB,0x00,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x02,0x00,0x00, // 'R'
|
||||||
|
0x40,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x00,0xBF,0xFC,0x3F,0xFE,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x3F,0xFA,0x3F,0xFC, // 'S'
|
||||||
|
0x40,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0x80,0x02,0xFF,0xF5,0xFF,0xEC,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x0F,0xFF,0x0F,0xFF,0x00, // 'T'
|
||||||
|
0x80,0x02,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // 'U'
|
||||||
|
0x40,0x02,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0x80,0x02,0x80,0x02,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // 'V'
|
||||||
|
0x40,0x02,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0xBF,0xFE,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // 'W'
|
||||||
|
0x40,0x02,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0xBF,0xFE,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x40,0x02, // 'X'
|
||||||
|
0x40,0x02,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0xBF,0xFE,0x3F,0xFE,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x3F,0xFA,0x3F,0xFC, // 'Y'
|
||||||
|
0x3F,0xFC,0x3F,0xFA,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x02,0x80,0x00,0xC0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0x7F,0xF8,0x3F,0xFC, // 'Z'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '['
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '\'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // ']'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '^'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '_'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '`'
|
||||||
|
0x3F,0xFC,0x7F,0xFA,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0xBF,0xFE,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x40,0x02, // 'a'
|
||||||
|
0x40,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x00,0xBF,0xFC,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // 'b'
|
||||||
|
0x3F,0xFD,0x7F,0xFB,0x00,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x03,0xFF,0xC3,0xFF,0xC0, // 'c'
|
||||||
|
0x00,0x02,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x3F,0xFE,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // 'd'
|
||||||
|
0x3F,0xFC,0xFF,0xF3,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x00,0x05,0xFF,0xEB,0xFF,0xD8,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x1F,0xFE,0x1F,0xFE, // 'e'
|
||||||
|
0x3F,0xFC,0xFF,0xF3,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x00,0x05,0xFF,0xEB,0xFF,0xD8,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x10,0x00,0x00, // 'f'
|
||||||
|
0x3F,0xFC,0x7F,0xF8,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x00,0x80,0x00,0x80,0x02,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // 'g'
|
||||||
|
0x40,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x00,0xBF,0xFC,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x40,0x02, // 'h'
|
||||||
|
0x5B,0x6D,0xB6,0xD9,0x00, // 'i'
|
||||||
|
0x00,0x02,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x02,0x80,0x02,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // 'j'
|
||||||
|
0x3F,0xFC,0x7F,0xF8,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x00,0xBF,0xFC,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x40,0x02, // 'k'
|
||||||
|
0x40,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0x80,0x02,0x00,0x04,0x00,0x0C,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x0F,0xFF,0x0F,0xFF,0x00, // 'l'
|
||||||
|
0x3F,0xFC,0x7F,0xFA,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0x80,0x02,0x80,0x02,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x40,0x02, // 'm'
|
||||||
|
0x3F,0xFC,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x40,0x02, // 'n'
|
||||||
|
0x3F,0xFC,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // 'o'
|
||||||
|
0x3F,0xFC,0x7F,0xFA,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0xBF,0xFE,0xBF,0xFC,0xC0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0x40,0x00, // 'p'
|
||||||
|
0x3F,0xFC,0x7F,0xFA,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0xBF,0xFE,0x3F,0xFE,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x02, // 'q'
|
||||||
|
0x3F,0xFD,0x7F,0xFB,0x00,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x02,0x00,0x00, // 'r'
|
||||||
|
0x40,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xC0,0x00,0xBF,0xFC,0x3F,0xFE,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x3F,0xFA,0x3F,0xFC, // 's'
|
||||||
|
0x40,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0x80,0x02,0xFF,0xF5,0xFF,0xEC,0x00,0x1C,0x00,0x38,0x00,0x70,0x00,0xE0,0x01,0xC0,0x03,0x80,0x07,0x00,0x0E,0x00,0x0F,0xFF,0x0F,0xFF,0x00, // 't'
|
||||||
|
0x80,0x02,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // 'u'
|
||||||
|
0x40,0x02,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0x80,0x02,0x80,0x02,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // 'v'
|
||||||
|
0x40,0x02,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0xBF,0xFE,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x7F,0xFA,0x3F,0xFC, // 'w'
|
||||||
|
0x40,0x02,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0xBF,0xFE,0xBF,0xFE,0xC0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0x40,0x02, // 'x'
|
||||||
|
0x40,0x02,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xE0,0x06,0xC0,0x06,0xBF,0xFE,0x3F,0xFE,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x3F,0xFA,0x3F,0xFC, // 'y'
|
||||||
|
0x3F,0xFC,0x3F,0xFA,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x02,0x80,0x00,0xC0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0xE0,0x00,0x7F,0xF8,0x3F,0xFC, // 'z'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '{'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE, // '|'
|
||||||
|
0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFE // '}'
|
||||||
|
};
|
||||||
|
const GFXglyph DSEG7_Classic_Regular_24Glyphs[] PROGMEM = {
|
||||||
|
// bitmapOffset, width, height, xAdvance, xOffset, yOffset
|
||||||
|
{ 0, 2, 1, 6, 0, -1 }, // ' '
|
||||||
|
{ 1, 2, 1, 21, 0, -1 }, // '!'
|
||||||
|
{ 2, 8, 16, 10, 1, -16 }, // '"'
|
||||||
|
{ 18, 8, 16, 10, 1, -16 }, // '#'
|
||||||
|
{ 34, 8, 16, 10, 1, -16 }, // '$'
|
||||||
|
{ 50, 8, 16, 10, 1, -16 }, // '%'
|
||||||
|
{ 66, 8, 16, 10, 1, -16 }, // '&'
|
||||||
|
{ 82, 8, 16, 10, 1, -16 }, // '''
|
||||||
|
{ 98, 8, 16, 10, 1, -16 }, // '('
|
||||||
|
{ 114, 8, 16, 10, 1, -16 }, // ')'
|
||||||
|
{ 130, 8, 16, 10, 1, -16 }, // '*'
|
||||||
|
{ 146, 8, 16, 10, 1, -16 }, // '+'
|
||||||
|
{ 162, 8, 16, 10, 1, -16 }, // ','
|
||||||
|
{ 178, 14, 2, 21, 3, -13 }, // '-'
|
||||||
|
{ 182, 3, 3, 1, -1, -3 }, // '.'
|
||||||
|
{ 184, 8, 16, 10, 1, -16 }, // '/'
|
||||||
|
{ 200, 16, 24, 21, 2, -24 }, // '0'
|
||||||
|
{ 248, 3, 22, 21, 15, -23 }, // '1'
|
||||||
|
{ 257, 16, 24, 21, 2, -24 }, // '2'
|
||||||
|
{ 305, 15, 24, 21, 3, -24 }, // '3'
|
||||||
|
{ 350, 16, 22, 21, 2, -23 }, // '4'
|
||||||
|
{ 394, 16, 24, 21, 2, -24 }, // '5'
|
||||||
|
{ 442, 16, 24, 21, 2, -24 }, // '6'
|
||||||
|
{ 490, 16, 23, 21, 2, -24 }, // '7'
|
||||||
|
{ 536, 16, 24, 21, 2, -24 }, // '8'
|
||||||
|
{ 584, 16, 24, 21, 2, -24 }, // '9'
|
||||||
|
{ 632, 4, 13, 6, 1, -18 }, // ':'
|
||||||
|
{ 639, 8, 16, 10, 1, -16 }, // ';'
|
||||||
|
{ 655, 8, 16, 10, 1, -16 }, // '<'
|
||||||
|
{ 671, 8, 16, 10, 1, -16 }, // '='
|
||||||
|
{ 687, 8, 16, 10, 1, -16 }, // '>'
|
||||||
|
{ 703, 8, 16, 10, 1, -16 }, // '?'
|
||||||
|
{ 719, 8, 16, 10, 1, -16 }, // '@'
|
||||||
|
{ 735, 16, 23, 21, 2, -24 }, // 'A'
|
||||||
|
{ 781, 16, 23, 21, 2, -23 }, // 'B'
|
||||||
|
{ 827, 15, 13, 21, 2, -13 }, // 'C'
|
||||||
|
{ 852, 16, 23, 21, 2, -23 }, // 'D'
|
||||||
|
{ 898, 15, 24, 21, 2, -24 }, // 'E'
|
||||||
|
{ 943, 15, 23, 21, 2, -24 }, // 'F'
|
||||||
|
{ 987, 16, 24, 21, 2, -24 }, // 'G'
|
||||||
|
{ 1035, 16, 22, 21, 2, -23 }, // 'H'
|
||||||
|
{ 1079, 3, 11, 21, 15, -12 }, // 'I'
|
||||||
|
{ 1084, 16, 23, 21, 2, -23 }, // 'J'
|
||||||
|
{ 1130, 16, 23, 21, 2, -24 }, // 'K'
|
||||||
|
{ 1176, 15, 23, 21, 2, -23 }, // 'L'
|
||||||
|
{ 1220, 16, 23, 21, 2, -24 }, // 'M'
|
||||||
|
{ 1266, 16, 12, 21, 2, -13 }, // 'N'
|
||||||
|
{ 1290, 16, 13, 21, 2, -13 }, // 'O'
|
||||||
|
{ 1316, 16, 23, 21, 2, -24 }, // 'P'
|
||||||
|
{ 1362, 16, 23, 21, 2, -24 }, // 'Q'
|
||||||
|
{ 1408, 15, 12, 21, 2, -13 }, // 'R'
|
||||||
|
{ 1431, 16, 23, 21, 2, -23 }, // 'S'
|
||||||
|
{ 1477, 15, 23, 21, 2, -23 }, // 'T'
|
||||||
|
{ 1521, 16, 12, 21, 2, -12 }, // 'U'
|
||||||
|
{ 1545, 16, 23, 21, 2, -23 }, // 'V'
|
||||||
|
{ 1591, 16, 23, 21, 2, -23 }, // 'W'
|
||||||
|
{ 1637, 16, 22, 21, 2, -23 }, // 'X'
|
||||||
|
{ 1681, 16, 23, 21, 2, -23 }, // 'Y'
|
||||||
|
{ 1727, 16, 24, 21, 2, -24 }, // 'Z'
|
||||||
|
{ 1775, 8, 16, 10, 1, -16 }, // '['
|
||||||
|
{ 1791, 8, 16, 10, 1, -16 }, // '\'
|
||||||
|
{ 1807, 8, 16, 10, 1, -16 }, // ']'
|
||||||
|
{ 1823, 8, 16, 10, 1, -16 }, // '^'
|
||||||
|
{ 1839, 8, 16, 10, 1, -16 }, // '_'
|
||||||
|
{ 1855, 8, 16, 10, 1, -16 }, // '`'
|
||||||
|
{ 1871, 16, 23, 21, 2, -24 }, // 'a'
|
||||||
|
{ 1917, 16, 23, 21, 2, -23 }, // 'b'
|
||||||
|
{ 1963, 15, 13, 21, 2, -13 }, // 'c'
|
||||||
|
{ 1988, 16, 23, 21, 2, -23 }, // 'd'
|
||||||
|
{ 2034, 15, 24, 21, 2, -24 }, // 'e'
|
||||||
|
{ 2079, 15, 23, 21, 2, -24 }, // 'f'
|
||||||
|
{ 2123, 16, 24, 21, 2, -24 }, // 'g'
|
||||||
|
{ 2171, 16, 22, 21, 2, -23 }, // 'h'
|
||||||
|
{ 2215, 3, 11, 21, 15, -12 }, // 'i'
|
||||||
|
{ 2220, 16, 23, 21, 2, -23 }, // 'j'
|
||||||
|
{ 2266, 16, 23, 21, 2, -24 }, // 'k'
|
||||||
|
{ 2312, 15, 23, 21, 2, -23 }, // 'l'
|
||||||
|
{ 2356, 16, 23, 21, 2, -24 }, // 'm'
|
||||||
|
{ 2402, 16, 12, 21, 2, -13 }, // 'n'
|
||||||
|
{ 2426, 16, 13, 21, 2, -13 }, // 'o'
|
||||||
|
{ 2452, 16, 23, 21, 2, -24 }, // 'p'
|
||||||
|
{ 2498, 16, 23, 21, 2, -24 }, // 'q'
|
||||||
|
{ 2544, 15, 12, 21, 2, -13 }, // 'r'
|
||||||
|
{ 2567, 16, 23, 21, 2, -23 }, // 's'
|
||||||
|
{ 2613, 15, 23, 21, 2, -23 }, // 't'
|
||||||
|
{ 2657, 16, 12, 21, 2, -12 }, // 'u'
|
||||||
|
{ 2681, 16, 23, 21, 2, -23 }, // 'v'
|
||||||
|
{ 2727, 16, 23, 21, 2, -23 }, // 'w'
|
||||||
|
{ 2773, 16, 22, 21, 2, -23 }, // 'x'
|
||||||
|
{ 2817, 16, 23, 21, 2, -23 }, // 'y'
|
||||||
|
{ 2863, 16, 24, 21, 2, -24 }, // 'z'
|
||||||
|
{ 2911, 8, 16, 10, 1, -16 }, // '{'
|
||||||
|
{ 2927, 8, 16, 10, 1, -16 }, // '|'
|
||||||
|
{ 2943, 8, 16, 10, 1, -16 } // '}'
|
||||||
|
};
|
||||||
|
const GFXfont DSEG7_Classic_Regular_24 PROGMEM = {
|
||||||
|
(uint8_t *)DSEG7_Classic_Regular_24Bitmaps,(GFXglyph *)DSEG7_Classic_Regular_24Glyphs,0x20, 0x7E, 27};
|
||||||
@@ -0,0 +1,202 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <Adafruit_GFX.h>
|
||||||
|
|
||||||
|
// Created by https://oleddisplay.squix.ch/ Consider a donation
|
||||||
|
// In case of problems make sure that you are using the font file with the correct version!
|
||||||
|
const uint8_t DSEG7_Classic_Regular_36Bitmaps[] PROGMEM = {
|
||||||
|
|
||||||
|
// Bitmap Data:
|
||||||
|
0x00, // ' '
|
||||||
|
0x00, // '!'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '"'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '#'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '$'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '%'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '&'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '''
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '('
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // ')'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '*'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '+'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // ','
|
||||||
|
0x3F,0xFF,0xC7,0xFF,0xFE,0x7F,0xFF,0xE3,0xFF,0xFC, // '-'
|
||||||
|
0xF7,0xBC,0xC0, // '.'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '/'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0xB7,0x00,0x00,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x0E,0xC0,0x00,0x0D,0x00,0x00,0x0A,0x00,0x00,0x16,0x00,0x00,0x6E,0x00,0x01,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x1D,0xBF,0xFF,0xD8,0xFF,0xFF,0xC1,0xFF,0xFF,0x80, // '0'
|
||||||
|
0x33,0xBD,0xEF,0x7B,0xDE,0xF7,0xBD,0xEF,0x38,0xC2,0x11,0x9D,0xEF,0x7B,0xDE,0xF7,0xBD,0xEF,0x79,0xC6, // '1'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE0,0x7F,0xFF,0xB0,0x00,0x00,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x0E,0x1F,0xFF,0xEC,0x7F,0xFF,0xEA,0xFF,0xFF,0xC6,0xFF,0xFF,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xBF,0xFF,0xC0,0xFF,0xFF,0xC1,0xFF,0xFF,0x80, // '2'
|
||||||
|
0x7F,0xFF,0xE1,0xFF,0xFF,0x83,0xFF,0xFD,0x80,0x00,0x0E,0x00,0x00,0x78,0x00,0x01,0xE0,0x00,0x07,0x80,0x00,0x1E,0x00,0x00,0x78,0x00,0x01,0xE0,0x00,0x07,0x80,0x00,0x1E,0x00,0x00,0x78,0x00,0x01,0xE0,0x00,0x07,0x80,0x00,0x0E,0x3F,0xFF,0xD9,0xFF,0xFF,0xA7,0xFF,0xFE,0x8F,0xFF,0xF6,0x00,0x00,0x38,0x00,0x01,0xE0,0x00,0x07,0x80,0x00,0x1E,0x00,0x00,0x78,0x00,0x01,0xE0,0x00,0x07,0x80,0x00,0x1E,0x00,0x00,0x78,0x00,0x01,0xE0,0x00,0x07,0x80,0x00,0x1E,0x00,0x00,0x38,0xFF,0xFF,0x67,0xFF,0xFE,0x1F,0xFF,0xF8, // '3'
|
||||||
|
0xC0,0x00,0x0D,0xC0,0x00,0x3B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x03,0xB7,0xFF,0xFB,0x5F,0xFF,0xFA,0x3F,0xFF,0xF4,0x3F,0xFF,0xD8,0x00,0x00,0x70,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x07,0x00,0x00,0x06, // '4'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0x87,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xDF,0xFF,0xE1,0x7F,0xFF,0xE0,0xFF,0xFF,0xD0,0xFF,0xFF,0x60,0x00,0x01,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x1C,0x3F,0xFF,0xD8,0xFF,0xFF,0xC1,0xFF,0xFF,0x80, // '5'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0x87,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xDF,0xFF,0xE1,0x7F,0xFF,0xE2,0xFF,0xFF,0xD6,0xFF,0xFF,0x6E,0x00,0x01,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x1D,0xBF,0xFF,0xD8,0xFF,0xFF,0xC1,0xFF,0xFF,0x80, // '6'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0xB7,0x00,0x00,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x0E,0xC0,0x00,0x0D,0x00,0x00,0x08,0x00,0x00,0x10,0x00,0x00,0x60,0x00,0x01,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x1C,0x00,0x00,0x18, // '7'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0xB7,0x00,0x00,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x0E,0xDF,0xFF,0xED,0x7F,0xFF,0xEA,0xFF,0xFF,0xD6,0xFF,0xFF,0x6E,0x00,0x01,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x1D,0xBF,0xFF,0xD8,0xFF,0xFF,0xC1,0xFF,0xFF,0x80, // '8'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0xB7,0x00,0x00,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x0E,0xDF,0xFF,0xED,0x7F,0xFF,0xE8,0xFF,0xFF,0xD0,0xFF,0xFF,0x60,0x00,0x01,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x1C,0x3F,0xFF,0xD8,0xFF,0xFF,0xC1,0xFF,0xFF,0x80, // '9'
|
||||||
|
0x73,0xEF,0x9C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0xFB,0xE7,0x00, // ':'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // ';'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '<'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '='
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '>'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '?'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '@'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0xB7,0x00,0x00,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x0E,0xDF,0xFF,0xED,0x7F,0xFF,0xEA,0xFF,0xFF,0xD6,0xFF,0xFF,0x6E,0x00,0x01,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x1D,0x80,0x00,0x18, // 'A'
|
||||||
|
0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x37,0xFF,0xF8,0x5F,0xFF,0xF8,0xBF,0xFF,0xF5,0xBF,0xFF,0xDB,0x80,0x00,0x77,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x07,0x6F,0xFF,0xF6,0x3F,0xFF,0xF0,0x7F,0xFF,0xE0, // 'B'
|
||||||
|
0x1F,0xFF,0xE1,0xFF,0xFF,0xAF,0xFF,0xFD,0xBF,0xFF,0xCE,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x06,0xFF,0xFF,0x0F,0xFF,0xFC,0x7F,0xFF,0xE0, // 'C'
|
||||||
|
0x00,0x00,0x0C,0x00,0x00,0x38,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x03,0x87,0xFF,0xFB,0x1F,0xFF,0xFA,0xBF,0xFF,0xF5,0xBF,0xFF,0xDB,0x80,0x00,0x77,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x07,0x6F,0xFF,0xF6,0x3F,0xFF,0xF0,0x7F,0xFF,0xE0, // 'D'
|
||||||
|
0x3F,0xFF,0xF1,0xFF,0xFF,0xB7,0xFF,0xF9,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xDF,0xFF,0xE5,0xFF,0xFF,0xAF,0xFF,0xFD,0xBF,0xFF,0xCE,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x06,0xFF,0xFF,0x0F,0xFF,0xFC,0x7F,0xFF,0xE0, // 'E'
|
||||||
|
0x3F,0xFF,0xF1,0xFF,0xFF,0xB7,0xFF,0xF9,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xDF,0xFF,0xE5,0xFF,0xFF,0xAF,0xFF,0xFD,0xBF,0xFF,0xCE,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x06,0x00,0x00,0x00, // 'F'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0x87,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xC0,0x00,0x01,0x00,0x00,0x02,0x00,0x00,0x16,0x00,0x00,0x6E,0x00,0x01,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x1D,0xBF,0xFF,0xD8,0xFF,0xFF,0xC1,0xFF,0xFF,0x80, // 'G'
|
||||||
|
0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x37,0xFF,0xF8,0x5F,0xFF,0xF8,0xBF,0xFF,0xF5,0xBF,0xFF,0xDB,0x80,0x00,0x77,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x07,0x60,0x00,0x06, // 'H'
|
||||||
|
0x11,0x9D,0xEF,0x7B,0xDE,0xF7,0xBD,0xEF,0x79,0xC6, // 'I'
|
||||||
|
0x00,0x00,0x0C,0x00,0x00,0x38,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x03,0x80,0x00,0x03,0x00,0x00,0x02,0x80,0x00,0x05,0x80,0x00,0x1B,0x80,0x00,0x77,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x07,0x6F,0xFF,0xF6,0x3F,0xFF,0xF0,0x7F,0xFF,0xE0, // 'J'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0x87,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xDF,0xFF,0xE1,0x7F,0xFF,0xE2,0xFF,0xFF,0xD6,0xFF,0xFF,0x6E,0x00,0x01,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x1D,0x80,0x00,0x18, // 'K'
|
||||||
|
0xC0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x00,0x00,0x10,0x00,0x00,0x80,0x00,0x06,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1B,0xFF,0xFC,0x3F,0xFF,0xF1,0xFF,0xFF,0x80, // 'L'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0xB7,0x00,0x00,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x0E,0xC0,0x00,0x0D,0x00,0x00,0x0A,0x00,0x00,0x16,0x00,0x00,0x6E,0x00,0x01,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x1D,0x80,0x00,0x18, // 'M'
|
||||||
|
0x1F,0xFF,0xE0,0x7F,0xFF,0xE2,0xFF,0xFF,0xD6,0xFF,0xFF,0x6E,0x00,0x01,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x1D,0x80,0x00,0x18, // 'N'
|
||||||
|
0x1F,0xFF,0xE0,0x7F,0xFF,0xE2,0xFF,0xFF,0xD6,0xFF,0xFF,0x6E,0x00,0x01,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x1D,0xBF,0xFF,0xD8,0xFF,0xFF,0xC1,0xFF,0xFF,0x80, // 'O'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0xB7,0x00,0x00,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x0E,0xDF,0xFF,0xED,0x7F,0xFF,0xEA,0xFF,0xFF,0xC6,0xFF,0xFF,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0x80,0x00,0x00, // 'P'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0xB7,0x00,0x00,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x0E,0xDF,0xFF,0xED,0x7F,0xFF,0xE8,0xFF,0xFF,0xD0,0xFF,0xFF,0x60,0x00,0x01,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x1C,0x00,0x00,0x18, // 'Q'
|
||||||
|
0x1F,0xFF,0xE1,0xFF,0xFF,0xAF,0xFF,0xFD,0xBF,0xFF,0xCE,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x06,0x00,0x00,0x00, // 'R'
|
||||||
|
0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x37,0xFF,0xF8,0x5F,0xFF,0xF8,0x3F,0xFF,0xF4,0x3F,0xFF,0xD8,0x00,0x00,0x70,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x07,0x0F,0xFF,0xF6,0x3F,0xFF,0xF0,0x7F,0xFF,0xE0, // 'S'
|
||||||
|
0xC0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x7F,0xFF,0x97,0xFF,0xFE,0xBF,0xFF,0xF6,0xFF,0xFF,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1B,0xFF,0xFC,0x3F,0xFF,0xF1,0xFF,0xFF,0x80, // 'T'
|
||||||
|
0x80,0x00,0x05,0x80,0x00,0x1B,0x80,0x00,0x77,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x07,0x6F,0xFF,0xF6,0x3F,0xFF,0xF0,0x7F,0xFF,0xE0, // 'U'
|
||||||
|
0xC0,0x00,0x0D,0xC0,0x00,0x3B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x03,0xB0,0x00,0x03,0x40,0x00,0x02,0x80,0x00,0x05,0x80,0x00,0x1B,0x80,0x00,0x77,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x07,0x6F,0xFF,0xF6,0x3F,0xFF,0xF0,0x7F,0xFF,0xE0, // 'V'
|
||||||
|
0xC0,0x00,0x0D,0xC0,0x00,0x3B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x03,0xB7,0xFF,0xFB,0x5F,0xFF,0xFA,0xBF,0xFF,0xF5,0xBF,0xFF,0xDB,0x80,0x00,0x77,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x07,0x6F,0xFF,0xF6,0x3F,0xFF,0xF0,0x7F,0xFF,0xE0, // 'W'
|
||||||
|
0xC0,0x00,0x0D,0xC0,0x00,0x3B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x03,0xB7,0xFF,0xFB,0x5F,0xFF,0xFA,0xBF,0xFF,0xF5,0xBF,0xFF,0xDB,0x80,0x00,0x77,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x07,0x60,0x00,0x06, // 'X'
|
||||||
|
0xC0,0x00,0x0D,0xC0,0x00,0x3B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x03,0xB7,0xFF,0xFB,0x5F,0xFF,0xFA,0x3F,0xFF,0xF4,0x3F,0xFF,0xD8,0x00,0x00,0x70,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x07,0x0F,0xFF,0xF6,0x3F,0xFF,0xF0,0x7F,0xFF,0xE0, // 'Y'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE0,0x7F,0xFF,0xB0,0x00,0x00,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x0E,0x00,0x00,0x0C,0x00,0x00,0x0A,0x00,0x00,0x06,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xBF,0xFF,0xC0,0xFF,0xFF,0xC1,0xFF,0xFF,0x80, // 'Z'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '['
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '\'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // ']'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '^'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '_'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '`'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0xB7,0x00,0x00,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x0E,0xDF,0xFF,0xED,0x7F,0xFF,0xEA,0xFF,0xFF,0xD6,0xFF,0xFF,0x6E,0x00,0x01,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x1D,0x80,0x00,0x18, // 'a'
|
||||||
|
0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x37,0xFF,0xF8,0x5F,0xFF,0xF8,0xBF,0xFF,0xF5,0xBF,0xFF,0xDB,0x80,0x00,0x77,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x07,0x6F,0xFF,0xF6,0x3F,0xFF,0xF0,0x7F,0xFF,0xE0, // 'b'
|
||||||
|
0x1F,0xFF,0xE1,0xFF,0xFF,0xAF,0xFF,0xFD,0xBF,0xFF,0xCE,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x06,0xFF,0xFF,0x0F,0xFF,0xFC,0x7F,0xFF,0xE0, // 'c'
|
||||||
|
0x00,0x00,0x0C,0x00,0x00,0x38,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x03,0x87,0xFF,0xFB,0x1F,0xFF,0xFA,0xBF,0xFF,0xF5,0xBF,0xFF,0xDB,0x80,0x00,0x77,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x07,0x6F,0xFF,0xF6,0x3F,0xFF,0xF0,0x7F,0xFF,0xE0, // 'd'
|
||||||
|
0x3F,0xFF,0xF1,0xFF,0xFF,0xB7,0xFF,0xF9,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xDF,0xFF,0xE5,0xFF,0xFF,0xAF,0xFF,0xFD,0xBF,0xFF,0xCE,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x06,0xFF,0xFF,0x0F,0xFF,0xFC,0x7F,0xFF,0xE0, // 'e'
|
||||||
|
0x3F,0xFF,0xF1,0xFF,0xFF,0xB7,0xFF,0xF9,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xDF,0xFF,0xE5,0xFF,0xFF,0xAF,0xFF,0xFD,0xBF,0xFF,0xCE,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x06,0x00,0x00,0x00, // 'f'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0x87,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xC0,0x00,0x01,0x00,0x00,0x02,0x00,0x00,0x16,0x00,0x00,0x6E,0x00,0x01,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x1D,0xBF,0xFF,0xD8,0xFF,0xFF,0xC1,0xFF,0xFF,0x80, // 'g'
|
||||||
|
0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x37,0xFF,0xF8,0x5F,0xFF,0xF8,0xBF,0xFF,0xF5,0xBF,0xFF,0xDB,0x80,0x00,0x77,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x07,0x60,0x00,0x06, // 'h'
|
||||||
|
0x11,0x9D,0xEF,0x7B,0xDE,0xF7,0xBD,0xEF,0x79,0xC6, // 'i'
|
||||||
|
0x00,0x00,0x0C,0x00,0x00,0x38,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x03,0x80,0x00,0x03,0x00,0x00,0x02,0x80,0x00,0x05,0x80,0x00,0x1B,0x80,0x00,0x77,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x07,0x6F,0xFF,0xF6,0x3F,0xFF,0xF0,0x7F,0xFF,0xE0, // 'j'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0x87,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xDF,0xFF,0xE1,0x7F,0xFF,0xE2,0xFF,0xFF,0xD6,0xFF,0xFF,0x6E,0x00,0x01,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x1D,0x80,0x00,0x18, // 'k'
|
||||||
|
0xC0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x00,0x00,0x10,0x00,0x00,0x80,0x00,0x06,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1B,0xFF,0xFC,0x3F,0xFF,0xF1,0xFF,0xFF,0x80, // 'l'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0xB7,0x00,0x00,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x0E,0xC0,0x00,0x0D,0x00,0x00,0x0A,0x00,0x00,0x16,0x00,0x00,0x6E,0x00,0x01,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x1D,0x80,0x00,0x18, // 'm'
|
||||||
|
0x1F,0xFF,0xE0,0x7F,0xFF,0xE2,0xFF,0xFF,0xD6,0xFF,0xFF,0x6E,0x00,0x01,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x1D,0x80,0x00,0x18, // 'n'
|
||||||
|
0x1F,0xFF,0xE0,0x7F,0xFF,0xE2,0xFF,0xFF,0xD6,0xFF,0xFF,0x6E,0x00,0x01,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x1D,0xBF,0xFF,0xD8,0xFF,0xFF,0xC1,0xFF,0xFF,0x80, // 'o'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0xB7,0x00,0x00,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x0E,0xDF,0xFF,0xED,0x7F,0xFF,0xEA,0xFF,0xFF,0xC6,0xFF,0xFF,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0x80,0x00,0x00, // 'p'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE3,0x7F,0xFF,0xB7,0x00,0x00,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x0E,0xDF,0xFF,0xED,0x7F,0xFF,0xE8,0xFF,0xFF,0xD0,0xFF,0xFF,0x60,0x00,0x01,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x1C,0x00,0x00,0x18, // 'q'
|
||||||
|
0x1F,0xFF,0xE1,0xFF,0xFF,0xAF,0xFF,0xFD,0xBF,0xFF,0xCE,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x06,0x00,0x00,0x00, // 'r'
|
||||||
|
0xC0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x37,0xFF,0xF8,0x5F,0xFF,0xF8,0x3F,0xFF,0xF4,0x3F,0xFF,0xD8,0x00,0x00,0x70,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x07,0x0F,0xFF,0xF6,0x3F,0xFF,0xF0,0x7F,0xFF,0xE0, // 's'
|
||||||
|
0xC0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x7F,0xFF,0x97,0xFF,0xFE,0xBF,0xFF,0xF6,0xFF,0xFF,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1C,0x00,0x00,0xE0,0x00,0x07,0x00,0x00,0x38,0x00,0x01,0xC0,0x00,0x0E,0x00,0x00,0x70,0x00,0x03,0x80,0x00,0x1B,0xFF,0xFC,0x3F,0xFF,0xF1,0xFF,0xFF,0x80, // 't'
|
||||||
|
0x80,0x00,0x05,0x80,0x00,0x1B,0x80,0x00,0x77,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x07,0x6F,0xFF,0xF6,0x3F,0xFF,0xF0,0x7F,0xFF,0xE0, // 'u'
|
||||||
|
0xC0,0x00,0x0D,0xC0,0x00,0x3B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x03,0xB0,0x00,0x03,0x40,0x00,0x02,0x80,0x00,0x05,0x80,0x00,0x1B,0x80,0x00,0x77,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x07,0x6F,0xFF,0xF6,0x3F,0xFF,0xF0,0x7F,0xFF,0xE0, // 'v'
|
||||||
|
0xC0,0x00,0x0D,0xC0,0x00,0x3B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x03,0xB7,0xFF,0xFB,0x5F,0xFF,0xFA,0xBF,0xFF,0xF5,0xBF,0xFF,0xDB,0x80,0x00,0x77,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x07,0x6F,0xFF,0xF6,0x3F,0xFF,0xF0,0x7F,0xFF,0xE0, // 'w'
|
||||||
|
0xC0,0x00,0x0D,0xC0,0x00,0x3B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x03,0xB7,0xFF,0xFB,0x5F,0xFF,0xFA,0xBF,0xFF,0xF5,0xBF,0xFF,0xDB,0x80,0x00,0x77,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x07,0x60,0x00,0x06, // 'x'
|
||||||
|
0xC0,0x00,0x0D,0xC0,0x00,0x3B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x07,0xB8,0x00,0x0F,0x70,0x00,0x1E,0xE0,0x00,0x3D,0xC0,0x00,0x7B,0x80,0x00,0xF7,0x00,0x01,0xEE,0x00,0x03,0xDC,0x00,0x03,0xB7,0xFF,0xFB,0x5F,0xFF,0xFA,0x3F,0xFF,0xF4,0x3F,0xFF,0xD8,0x00,0x00,0x70,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x07,0x0F,0xFF,0xF6,0x3F,0xFF,0xF0,0x7F,0xFF,0xE0, // 'y'
|
||||||
|
0x3F,0xFF,0xF0,0x7F,0xFF,0xE0,0x7F,0xFF,0xB0,0x00,0x00,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x1E,0x00,0x00,0x3C,0x00,0x00,0x78,0x00,0x00,0xF0,0x00,0x01,0xE0,0x00,0x03,0xC0,0x00,0x07,0x80,0x00,0x0F,0x00,0x00,0x0E,0x00,0x00,0x0C,0x00,0x00,0x0A,0x00,0x00,0x06,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xC0,0x00,0x03,0x80,0x00,0x07,0x00,0x00,0x0E,0x00,0x00,0x1C,0x00,0x00,0x38,0x00,0x00,0x70,0x00,0x00,0xE0,0x00,0x01,0xBF,0xFF,0xC0,0xFF,0xFF,0xC1,0xFF,0xFF,0x80, // 'z'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '{'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE, // '|'
|
||||||
|
0xFF,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0A,0x02,0x80,0xA0,0x28,0x0B,0xFE // '}'
|
||||||
|
};
|
||||||
|
const GFXglyph DSEG7_Classic_Regular_36Glyphs[] PROGMEM = {
|
||||||
|
// bitmapOffset, width, height, xAdvance, xOffset, yOffset
|
||||||
|
{ 0, 2, 1, 8, 0, -1 }, // ' '
|
||||||
|
{ 1, 2, 1, 30, 0, -1 }, // '!'
|
||||||
|
{ 2, 10, 24, 14, 1, -24 }, // '"'
|
||||||
|
{ 32, 10, 24, 14, 1, -24 }, // '#'
|
||||||
|
{ 62, 10, 24, 14, 1, -24 }, // '$'
|
||||||
|
{ 92, 10, 24, 14, 1, -24 }, // '%'
|
||||||
|
{ 122, 10, 24, 14, 1, -24 }, // '&'
|
||||||
|
{ 152, 10, 24, 14, 1, -24 }, // '''
|
||||||
|
{ 182, 10, 24, 14, 1, -24 }, // '('
|
||||||
|
{ 212, 10, 24, 14, 1, -24 }, // ')'
|
||||||
|
{ 242, 10, 24, 14, 1, -24 }, // '*'
|
||||||
|
{ 272, 10, 24, 14, 1, -24 }, // '+'
|
||||||
|
{ 302, 10, 24, 14, 1, -24 }, // ','
|
||||||
|
{ 332, 20, 4, 30, 5, -20 }, // '-'
|
||||||
|
{ 342, 5, 4, 1, -2, -4 }, // '.'
|
||||||
|
{ 345, 10, 24, 14, 1, -24 }, // '/'
|
||||||
|
{ 375, 23, 36, 30, 4, -36 }, // '0'
|
||||||
|
{ 479, 5, 32, 30, 22, -34 }, // '1'
|
||||||
|
{ 499, 23, 36, 30, 4, -36 }, // '2'
|
||||||
|
{ 603, 22, 36, 30, 5, -36 }, // '3'
|
||||||
|
{ 702, 23, 32, 30, 4, -34 }, // '4'
|
||||||
|
{ 794, 23, 36, 30, 4, -36 }, // '5'
|
||||||
|
{ 898, 23, 36, 30, 4, -36 }, // '6'
|
||||||
|
{ 1002, 23, 34, 30, 4, -36 }, // '7'
|
||||||
|
{ 1100, 23, 36, 30, 4, -36 }, // '8'
|
||||||
|
{ 1204, 23, 36, 30, 4, -36 }, // '9'
|
||||||
|
{ 1308, 6, 19, 8, 1, -27 }, // ':'
|
||||||
|
{ 1323, 10, 24, 14, 1, -24 }, // ';'
|
||||||
|
{ 1353, 10, 24, 14, 1, -24 }, // '<'
|
||||||
|
{ 1383, 10, 24, 14, 1, -24 }, // '='
|
||||||
|
{ 1413, 10, 24, 14, 1, -24 }, // '>'
|
||||||
|
{ 1443, 10, 24, 14, 1, -24 }, // '?'
|
||||||
|
{ 1473, 10, 24, 14, 1, -24 }, // '@'
|
||||||
|
{ 1503, 23, 34, 30, 4, -36 }, // 'A'
|
||||||
|
{ 1601, 23, 34, 30, 4, -34 }, // 'B'
|
||||||
|
{ 1699, 21, 20, 30, 4, -20 }, // 'C'
|
||||||
|
{ 1752, 23, 34, 30, 4, -34 }, // 'D'
|
||||||
|
{ 1850, 21, 36, 30, 4, -36 }, // 'E'
|
||||||
|
{ 1945, 21, 34, 30, 4, -36 }, // 'F'
|
||||||
|
{ 2035, 23, 36, 30, 4, -36 }, // 'G'
|
||||||
|
{ 2139, 23, 32, 30, 4, -34 }, // 'H'
|
||||||
|
{ 2231, 5, 16, 30, 22, -18 }, // 'I'
|
||||||
|
{ 2241, 23, 34, 30, 4, -34 }, // 'J'
|
||||||
|
{ 2339, 23, 34, 30, 4, -36 }, // 'K'
|
||||||
|
{ 2437, 21, 34, 30, 4, -34 }, // 'L'
|
||||||
|
{ 2527, 23, 34, 30, 4, -36 }, // 'M'
|
||||||
|
{ 2625, 23, 18, 30, 4, -20 }, // 'N'
|
||||||
|
{ 2677, 23, 20, 30, 4, -20 }, // 'O'
|
||||||
|
{ 2735, 23, 34, 30, 4, -36 }, // 'P'
|
||||||
|
{ 2833, 23, 34, 30, 4, -36 }, // 'Q'
|
||||||
|
{ 2931, 21, 18, 30, 4, -20 }, // 'R'
|
||||||
|
{ 2979, 23, 34, 30, 4, -34 }, // 'S'
|
||||||
|
{ 3077, 21, 34, 30, 4, -34 }, // 'T'
|
||||||
|
{ 3167, 23, 18, 30, 4, -18 }, // 'U'
|
||||||
|
{ 3219, 23, 34, 30, 4, -34 }, // 'V'
|
||||||
|
{ 3317, 23, 34, 30, 4, -34 }, // 'W'
|
||||||
|
{ 3415, 23, 32, 30, 4, -34 }, // 'X'
|
||||||
|
{ 3507, 23, 34, 30, 4, -34 }, // 'Y'
|
||||||
|
{ 3605, 23, 36, 30, 4, -36 }, // 'Z'
|
||||||
|
{ 3709, 10, 24, 14, 1, -24 }, // '['
|
||||||
|
{ 3739, 10, 24, 14, 1, -24 }, // '\'
|
||||||
|
{ 3769, 10, 24, 14, 1, -24 }, // ']'
|
||||||
|
{ 3799, 10, 24, 14, 1, -24 }, // '^'
|
||||||
|
{ 3829, 10, 24, 14, 1, -24 }, // '_'
|
||||||
|
{ 3859, 10, 24, 14, 1, -24 }, // '`'
|
||||||
|
{ 3889, 23, 34, 30, 4, -36 }, // 'a'
|
||||||
|
{ 3987, 23, 34, 30, 4, -34 }, // 'b'
|
||||||
|
{ 4085, 21, 20, 30, 4, -20 }, // 'c'
|
||||||
|
{ 4138, 23, 34, 30, 4, -34 }, // 'd'
|
||||||
|
{ 4236, 21, 36, 30, 4, -36 }, // 'e'
|
||||||
|
{ 4331, 21, 34, 30, 4, -36 }, // 'f'
|
||||||
|
{ 4421, 23, 36, 30, 4, -36 }, // 'g'
|
||||||
|
{ 4525, 23, 32, 30, 4, -34 }, // 'h'
|
||||||
|
{ 4617, 5, 16, 30, 22, -18 }, // 'i'
|
||||||
|
{ 4627, 23, 34, 30, 4, -34 }, // 'j'
|
||||||
|
{ 4725, 23, 34, 30, 4, -36 }, // 'k'
|
||||||
|
{ 4823, 21, 34, 30, 4, -34 }, // 'l'
|
||||||
|
{ 4913, 23, 34, 30, 4, -36 }, // 'm'
|
||||||
|
{ 5011, 23, 18, 30, 4, -20 }, // 'n'
|
||||||
|
{ 5063, 23, 20, 30, 4, -20 }, // 'o'
|
||||||
|
{ 5121, 23, 34, 30, 4, -36 }, // 'p'
|
||||||
|
{ 5219, 23, 34, 30, 4, -36 }, // 'q'
|
||||||
|
{ 5317, 21, 18, 30, 4, -20 }, // 'r'
|
||||||
|
{ 5365, 23, 34, 30, 4, -34 }, // 's'
|
||||||
|
{ 5463, 21, 34, 30, 4, -34 }, // 't'
|
||||||
|
{ 5553, 23, 18, 30, 4, -18 }, // 'u'
|
||||||
|
{ 5605, 23, 34, 30, 4, -34 }, // 'v'
|
||||||
|
{ 5703, 23, 34, 30, 4, -34 }, // 'w'
|
||||||
|
{ 5801, 23, 32, 30, 4, -34 }, // 'x'
|
||||||
|
{ 5893, 23, 34, 30, 4, -34 }, // 'y'
|
||||||
|
{ 5991, 23, 36, 30, 4, -36 }, // 'z'
|
||||||
|
{ 6095, 10, 24, 14, 1, -24 }, // '{'
|
||||||
|
{ 6125, 10, 24, 14, 1, -24 }, // '|'
|
||||||
|
{ 6155, 10, 24, 14, 1, -24 } // '}'
|
||||||
|
};
|
||||||
|
const GFXfont DSEG7_Classic_Regular_36 PROGMEM = {
|
||||||
|
(uint8_t *)DSEG7_Classic_Regular_36Bitmaps,(GFXglyph *)DSEG7_Classic_Regular_36Glyphs,0x20, 0x7E, 40};
|
||||||
@@ -0,0 +1,202 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <Adafruit_GFX.h>
|
||||||
|
|
||||||
|
// Created by https://oleddisplay.squix.ch/ Consider a donation
|
||||||
|
// In case of problems make sure that you are using the font file with the correct version!
|
||||||
|
const uint8_t DSEG7_Classic_Regular_48Bitmaps[] PROGMEM = {
|
||||||
|
|
||||||
|
// Bitmap Data:
|
||||||
|
0x00, // ' '
|
||||||
|
0x00, // '!'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '"'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '#'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '$'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '%'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '&'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '''
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '('
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // ')'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '*'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '+'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // ','
|
||||||
|
0x7F,0xFF,0xFF,0x3F,0xFF,0xFF,0xEF,0xFF,0xFF,0xF9,0xFF,0xFF,0xFC, // '-'
|
||||||
|
0x79,0xFB,0xF7,0xEF,0xCF,0x00, // '.'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '/'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0x80,0x00,0x00,0xEC,0x00,0x00,0x01,0xA0,0x00,0x00,0x02,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x6E,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x0E,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '0'
|
||||||
|
0x01,0x9D,0xEF,0x7B,0xDE,0xF7,0xBD,0xEF,0x7B,0xDE,0xF7,0xBC,0xE3,0x08,0x06,0x77,0xBD,0xEF,0x7B,0xDE,0xF7,0xBD,0xEF,0x7B,0xDE,0xF3,0x8C,0x00, // '1'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xE6,0x00,0x00,0x00,0x38,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xE1,0xFF,0xFF,0xFD,0x8F,0xFF,0xFF,0xFA,0xBF,0xFF,0xFF,0xE3,0x7F,0xFF,0xFF,0x0E,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xEF,0xFF,0xFF,0x81,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '2'
|
||||||
|
0x7F,0xFF,0xFF,0x0F,0xFF,0xFF,0xF8,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xE6,0x00,0x00,0x00,0xE0,0x00,0x00,0x1E,0x00,0x00,0x01,0xE0,0x00,0x00,0x1E,0x00,0x00,0x01,0xE0,0x00,0x00,0x1E,0x00,0x00,0x01,0xE0,0x00,0x00,0x1E,0x00,0x00,0x01,0xE0,0x00,0x00,0x1E,0x00,0x00,0x01,0xE0,0x00,0x00,0x1E,0x00,0x00,0x01,0xE0,0x00,0x00,0x1E,0x00,0x00,0x01,0xE0,0x00,0x00,0x1E,0x00,0x00,0x01,0xE0,0x00,0x00,0x0E,0x7F,0xFF,0xFF,0x6F,0xFF,0xFF,0xFA,0xFF,0xFF,0xFF,0x87,0xFF,0xFF,0xF6,0x00,0x00,0x00,0xE0,0x00,0x00,0x1E,0x00,0x00,0x01,0xE0,0x00,0x00,0x1E,0x00,0x00,0x01,0xE0,0x00,0x00,0x1E,0x00,0x00,0x01,0xE0,0x00,0x00,0x1E,0x00,0x00,0x01,0xE0,0x00,0x00,0x1E,0x00,0x00,0x01,0xE0,0x00,0x00,0x1E,0x00,0x00,0x01,0xE0,0x00,0x00,0x1E,0x00,0x00,0x01,0xE0,0x00,0x00,0x1E,0x00,0x00,0x01,0xE0,0x00,0x00,0x0E,0x3F,0xFF,0xFE,0x67,0xFF,0xFF,0xF0,0xFF,0xFF,0xFF,0x87,0xFF,0xFF,0xF0, // '3'
|
||||||
|
0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xB8,0x00,0x00,0x0E,0xDF,0xFF,0xFF,0xDA,0xFF,0xFF,0xFF,0xA3,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF6,0x00,0x00,0x00,0x38,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0x80,0x00,0x00,0x00, // '4'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0x80,0x00,0x00,0x0D,0xFF,0xFF,0xFC,0x2F,0xFF,0xFF,0xF8,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x0E,0x0F,0xFF,0xFF,0x98,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '5'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0x80,0x00,0x00,0x0D,0xFF,0xFF,0xFC,0x2F,0xFF,0xFF,0xF8,0xBF,0xFF,0xFF,0xE3,0x7F,0xFF,0xFF,0x6E,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x0E,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '6'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0x80,0x00,0x00,0xEC,0x00,0x00,0x01,0xA0,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x0E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00, // '7'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0x80,0x00,0x00,0xED,0xFF,0xFF,0xFD,0xAF,0xFF,0xFF,0xFA,0xBF,0xFF,0xFF,0xE3,0x7F,0xFF,0xFF,0x6E,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x0E,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '8'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0x80,0x00,0x00,0xED,0xFF,0xFF,0xFD,0xAF,0xFF,0xFF,0xFA,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x0E,0x0F,0xFF,0xFF,0x98,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // '9'
|
||||||
|
0x79,0xF3,0xF7,0xEF,0x86,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x9F,0xBF,0x7E,0x78, // ':'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // ';'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '<'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '='
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '>'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '?'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '@'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0x80,0x00,0x00,0xED,0xFF,0xFF,0xFD,0xAF,0xFF,0xFF,0xFA,0xBF,0xFF,0xFF,0xE3,0x7F,0xFF,0xFF,0x6E,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'A'
|
||||||
|
0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0xDF,0xFF,0xFF,0xC2,0xFF,0xFF,0xFF,0x8B,0xFF,0xFF,0xFE,0x37,0xFF,0xFF,0xF6,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'B'
|
||||||
|
0x1F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0xBF,0xFF,0xFF,0xED,0xFF,0xFF,0xFC,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 'C'
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x0E,0x1F,0xFF,0xFF,0xD8,0xFF,0xFF,0xFF,0xAB,0xFF,0xFF,0xFE,0x37,0xFF,0xFF,0xF6,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'D'
|
||||||
|
0x1F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x5F,0xFF,0xFF,0xCE,0xFF,0xFF,0xF8,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0E,0x00,0x00,0x00,0xDF,0xFF,0xFF,0xCB,0xFF,0xFF,0xFE,0xBF,0xFF,0xFF,0xED,0xFF,0xFF,0xFC,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 'E'
|
||||||
|
0x1F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x5F,0xFF,0xFF,0xCE,0xFF,0xFF,0xF8,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0E,0x00,0x00,0x00,0xDF,0xFF,0xFF,0xCB,0xFF,0xFF,0xFE,0xBF,0xFF,0xFF,0xED,0xFF,0xFF,0xFC,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xE0,0x00,0x00,0x04,0x00,0x00,0x00, // 'F'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0x80,0x00,0x00,0x0C,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x6E,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x0E,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'G'
|
||||||
|
0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0xDF,0xFF,0xFF,0xC2,0xFF,0xFF,0xFF,0x8B,0xFF,0xFF,0xFE,0x37,0xFF,0xFF,0xF6,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0x00,0x00,0x01,0x90,0x00,0x00,0x00, // 'H'
|
||||||
|
0x33,0xBD,0xEF,0x7B,0xDE,0xF7,0xBD,0xEF,0x7B,0xDE,0xF7,0x9C,0x60,0x00, // 'I'
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x0E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x30,0x00,0x00,0x06,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'J'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0x80,0x00,0x00,0x0D,0xFF,0xFF,0xFC,0x2F,0xFF,0xFF,0xF8,0xBF,0xFF,0xFF,0xE3,0x7F,0xFF,0xFF,0x6E,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'K'
|
||||||
|
0x40,0x00,0x00,0x0E,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0E,0x00,0x00,0x00,0xC0,0x00,0x00,0x08,0x00,0x00,0x00,0x80,0x00,0x00,0x0C,0x00,0x00,0x00,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 'L'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0x80,0x00,0x00,0xEC,0x00,0x00,0x01,0xA0,0x00,0x00,0x02,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x6E,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'M'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x8B,0xFF,0xFF,0xFE,0x37,0xFF,0xFF,0xF6,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0x00,0x00,0x01,0x90,0x00,0x00,0x00, // 'N'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x8B,0xFF,0xFF,0xFE,0x37,0xFF,0xFF,0xF6,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'O'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0x80,0x00,0x00,0xED,0xFF,0xFF,0xFD,0xAF,0xFF,0xFF,0xFA,0xBF,0xFF,0xFF,0xE3,0x7F,0xFF,0xFF,0x0E,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0x00,0x00,0x00,0x00, // 'P'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0x80,0x00,0x00,0xED,0xFF,0xFF,0xFD,0xAF,0xFF,0xFF,0xFA,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x0E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00, // 'Q'
|
||||||
|
0x1F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0xBF,0xFF,0xFF,0xED,0xFF,0xFF,0xFC,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xE0,0x00,0x00,0x04,0x00,0x00,0x00, // 'R'
|
||||||
|
0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0xDF,0xFF,0xFF,0xC2,0xFF,0xFF,0xFF,0x83,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF6,0x00,0x00,0x00,0x38,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xF9,0x87,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'S'
|
||||||
|
0x40,0x00,0x00,0x0E,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0E,0x00,0x00,0x00,0xDF,0xFF,0xFF,0xCB,0xFF,0xFF,0xFE,0xBF,0xFF,0xFF,0xED,0xFF,0xFF,0xFC,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 'T'
|
||||||
|
0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x6E,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x0E,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'U'
|
||||||
|
0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xB8,0x00,0x00,0x0E,0xC0,0x00,0x00,0x1A,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x30,0x00,0x00,0x06,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'V'
|
||||||
|
0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xB8,0x00,0x00,0x0E,0xDF,0xFF,0xFF,0xDA,0xFF,0xFF,0xFF,0xAB,0xFF,0xFF,0xFE,0x37,0xFF,0xFF,0xF6,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'W'
|
||||||
|
0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xB8,0x00,0x00,0x0E,0xDF,0xFF,0xFF,0xDA,0xFF,0xFF,0xFF,0xAB,0xFF,0xFF,0xFE,0x37,0xFF,0xFF,0xF6,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0x00,0x00,0x01,0x90,0x00,0x00,0x00, // 'X'
|
||||||
|
0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xB8,0x00,0x00,0x0E,0xDF,0xFF,0xFF,0xDA,0xFF,0xFF,0xFF,0xA3,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF6,0x00,0x00,0x00,0x38,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xF9,0x87,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'Y'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xE6,0x00,0x00,0x00,0x38,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0x80,0x00,0x00,0x02,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xEF,0xFF,0xFF,0x81,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'Z'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '['
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '\'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // ']'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '^'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '_'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '`'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0x80,0x00,0x00,0xED,0xFF,0xFF,0xFD,0xAF,0xFF,0xFF,0xFA,0xBF,0xFF,0xFF,0xE3,0x7F,0xFF,0xFF,0x6E,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'a'
|
||||||
|
0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0xDF,0xFF,0xFF,0xC2,0xFF,0xFF,0xFF,0x8B,0xFF,0xFF,0xFE,0x37,0xFF,0xFF,0xF6,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'b'
|
||||||
|
0x1F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0xBF,0xFF,0xFF,0xED,0xFF,0xFF,0xFC,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 'c'
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x0E,0x1F,0xFF,0xFF,0xD8,0xFF,0xFF,0xFF,0xAB,0xFF,0xFF,0xFE,0x37,0xFF,0xFF,0xF6,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'd'
|
||||||
|
0x1F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x5F,0xFF,0xFF,0xCE,0xFF,0xFF,0xF8,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0E,0x00,0x00,0x00,0xDF,0xFF,0xFF,0xCB,0xFF,0xFF,0xFE,0xBF,0xFF,0xFF,0xED,0xFF,0xFF,0xFC,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 'e'
|
||||||
|
0x1F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x5F,0xFF,0xFF,0xCE,0xFF,0xFF,0xF8,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0E,0x00,0x00,0x00,0xDF,0xFF,0xFF,0xCB,0xFF,0xFF,0xFE,0xBF,0xFF,0xFF,0xED,0xFF,0xFF,0xFC,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xE0,0x00,0x00,0x04,0x00,0x00,0x00, // 'f'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0x80,0x00,0x00,0x0C,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x6E,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x0E,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'g'
|
||||||
|
0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0xDF,0xFF,0xFF,0xC2,0xFF,0xFF,0xFF,0x8B,0xFF,0xFF,0xFE,0x37,0xFF,0xFF,0xF6,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0x00,0x00,0x01,0x90,0x00,0x00,0x00, // 'h'
|
||||||
|
0x33,0xBD,0xEF,0x7B,0xDE,0xF7,0xBD,0xEF,0x7B,0xDE,0xF7,0x9C,0x60,0x00, // 'i'
|
||||||
|
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x0E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x30,0x00,0x00,0x06,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'j'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE0,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0x80,0x00,0x00,0x0D,0xFF,0xFF,0xFC,0x2F,0xFF,0xFF,0xF8,0xBF,0xFF,0xFF,0xE3,0x7F,0xFF,0xFF,0x6E,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'k'
|
||||||
|
0x40,0x00,0x00,0x0E,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0E,0x00,0x00,0x00,0xC0,0x00,0x00,0x08,0x00,0x00,0x00,0x80,0x00,0x00,0x0C,0x00,0x00,0x00,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 'l'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0x80,0x00,0x00,0xEC,0x00,0x00,0x01,0xA0,0x00,0x00,0x02,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x6E,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x0E,0xE0,0x00,0x00,0x19,0x00,0x00,0x00,0x00, // 'm'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x8B,0xFF,0xFF,0xFE,0x37,0xFF,0xFF,0xF6,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0x00,0x00,0x01,0x90,0x00,0x00,0x00, // 'n'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x8B,0xFF,0xFF,0xFE,0x37,0xFF,0xFF,0xF6,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'o'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0x80,0x00,0x00,0xED,0xFF,0xFF,0xFD,0xAF,0xFF,0xFF,0xFA,0xBF,0xFF,0xFF,0xE3,0x7F,0xFF,0xFF,0x0E,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0x00,0x00,0x00,0x00, // 'p'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3B,0xFF,0xFF,0xE6,0xF0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0x80,0x00,0x00,0xED,0xFF,0xFF,0xFD,0xAF,0xFF,0xFF,0xFA,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x60,0x00,0x00,0x03,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x0E,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00, // 'q'
|
||||||
|
0x1F,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0xBF,0xFF,0xFF,0xED,0xFF,0xFF,0xFC,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xE0,0x00,0x00,0x04,0x00,0x00,0x00, // 'r'
|
||||||
|
0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0xDF,0xFF,0xFF,0xC2,0xFF,0xFF,0xFF,0x83,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF6,0x00,0x00,0x00,0x38,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xF9,0x87,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 's'
|
||||||
|
0x40,0x00,0x00,0x0E,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0E,0x00,0x00,0x00,0xDF,0xFF,0xFF,0xCB,0xFF,0xFF,0xFE,0xBF,0xFF,0xFF,0xED,0xFF,0xFF,0xFC,0xE0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xF0,0x00,0x00,0x0F,0x00,0x00,0x00,0xEF,0xFF,0xFF,0x85,0xFF,0xFF,0xFC,0x3F,0xFF,0xFF,0xE1,0xFF,0xFF,0xFC, // 't'
|
||||||
|
0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x6E,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x0E,0xEF,0xFF,0xFF,0x99,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'u'
|
||||||
|
0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xB8,0x00,0x00,0x0E,0xC0,0x00,0x00,0x1A,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x30,0x00,0x00,0x06,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'v'
|
||||||
|
0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xB8,0x00,0x00,0x0E,0xDF,0xFF,0xFF,0xDA,0xFF,0xFF,0xFF,0xAB,0xFF,0xFF,0xFE,0x37,0xFF,0xFF,0xF6,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0xFF,0xFF,0xF9,0x97,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'w'
|
||||||
|
0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xB8,0x00,0x00,0x0E,0xDF,0xFF,0xFF,0xDA,0xFF,0xFF,0xFF,0xAB,0xFF,0xFF,0xFE,0x37,0xFF,0xFF,0xF6,0xE0,0x00,0x00,0x3B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x00,0xEE,0x00,0x00,0x01,0x90,0x00,0x00,0x00, // 'x'
|
||||||
|
0x40,0x00,0x00,0x03,0x80,0x00,0x00,0x6F,0x00,0x00,0x03,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xBC,0x00,0x00,0x1E,0xF0,0x00,0x00,0x7B,0xC0,0x00,0x01,0xEF,0x00,0x00,0x07,0xB8,0x00,0x00,0x0E,0xDF,0xFF,0xFF,0xDA,0xFF,0xFF,0xFF,0xA3,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF6,0x00,0x00,0x00,0x38,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xE0,0xFF,0xFF,0xF9,0x87,0xFF,0xFF,0xF0,0x3F,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x00, // 'y'
|
||||||
|
0x1F,0xFF,0xFF,0xC0,0xFF,0xFF,0xFF,0x81,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xE6,0x00,0x00,0x00,0x38,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x01,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,0x1E,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xE0,0x00,0x00,0x01,0x80,0x00,0x00,0x02,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xF0,0x00,0x00,0x03,0xC0,0x00,0x00,0x0F,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xEF,0xFF,0xFF,0x81,0x7F,0xFF,0xFF,0x03,0xFF,0xFF,0xFE,0x07,0xFF,0xFF,0xF0, // 'z'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '{'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE, // '|'
|
||||||
|
0xFF,0xFB,0xFF,0xEC,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6C,0x01,0xB0,0x06,0xC0,0x1B,0x00,0x6F,0xFF,0xBF,0xFE // '}'
|
||||||
|
};
|
||||||
|
const GFXglyph DSEG7_Classic_Regular_48Glyphs[] PROGMEM = {
|
||||||
|
// bitmapOffset, width, height, xAdvance, xOffset, yOffset
|
||||||
|
{ 0, 2, 1, 11, 0, -1 }, // ' '
|
||||||
|
{ 1, 2, 1, 40, 0, -1 }, // '!'
|
||||||
|
{ 2, 14, 32, 18, 2, -32 }, // '"'
|
||||||
|
{ 58, 14, 32, 18, 2, -32 }, // '#'
|
||||||
|
{ 114, 14, 32, 18, 2, -32 }, // '$'
|
||||||
|
{ 170, 14, 32, 18, 2, -32 }, // '%'
|
||||||
|
{ 226, 14, 32, 18, 2, -32 }, // '&'
|
||||||
|
{ 282, 14, 32, 18, 2, -32 }, // '''
|
||||||
|
{ 338, 14, 32, 18, 2, -32 }, // '('
|
||||||
|
{ 394, 14, 32, 18, 2, -32 }, // ')'
|
||||||
|
{ 450, 14, 32, 18, 2, -32 }, // '*'
|
||||||
|
{ 506, 14, 32, 18, 2, -32 }, // '+'
|
||||||
|
{ 562, 14, 32, 18, 2, -32 }, // ','
|
||||||
|
{ 618, 26, 4, 40, 7, -26 }, // '-'
|
||||||
|
{ 631, 7, 6, 1, -3, -6 }, // '.'
|
||||||
|
{ 637, 14, 32, 18, 2, -32 }, // '/'
|
||||||
|
{ 693, 30, 48, 40, 5, -48 }, // '0'
|
||||||
|
{ 873, 5, 44, 40, 30, -46 }, // '1'
|
||||||
|
{ 901, 30, 48, 40, 5, -48 }, // '2'
|
||||||
|
{ 1081, 28, 48, 40, 7, -48 }, // '3'
|
||||||
|
{ 1249, 30, 44, 40, 5, -46 }, // '4'
|
||||||
|
{ 1414, 30, 48, 40, 5, -48 }, // '5'
|
||||||
|
{ 1594, 30, 48, 40, 5, -48 }, // '6'
|
||||||
|
{ 1774, 30, 46, 40, 5, -48 }, // '7'
|
||||||
|
{ 1947, 30, 48, 40, 5, -48 }, // '8'
|
||||||
|
{ 2127, 30, 48, 40, 5, -48 }, // '9'
|
||||||
|
{ 2307, 7, 25, 11, 2, -36 }, // ':'
|
||||||
|
{ 2329, 14, 32, 18, 2, -32 }, // ';'
|
||||||
|
{ 2385, 14, 32, 18, 2, -32 }, // '<'
|
||||||
|
{ 2441, 14, 32, 18, 2, -32 }, // '='
|
||||||
|
{ 2497, 14, 32, 18, 2, -32 }, // '>'
|
||||||
|
{ 2553, 14, 32, 18, 2, -32 }, // '?'
|
||||||
|
{ 2609, 14, 32, 18, 2, -32 }, // '@'
|
||||||
|
{ 2665, 30, 46, 40, 5, -48 }, // 'A'
|
||||||
|
{ 2838, 30, 46, 40, 5, -46 }, // 'B'
|
||||||
|
{ 3011, 28, 26, 40, 5, -26 }, // 'C'
|
||||||
|
{ 3102, 30, 46, 40, 5, -46 }, // 'D'
|
||||||
|
{ 3275, 28, 48, 40, 5, -48 }, // 'E'
|
||||||
|
{ 3443, 28, 46, 40, 5, -48 }, // 'F'
|
||||||
|
{ 3604, 30, 48, 40, 5, -48 }, // 'G'
|
||||||
|
{ 3784, 30, 44, 40, 5, -46 }, // 'H'
|
||||||
|
{ 3949, 5, 21, 40, 30, -23 }, // 'I'
|
||||||
|
{ 3963, 30, 46, 40, 5, -46 }, // 'J'
|
||||||
|
{ 4136, 30, 46, 40, 5, -48 }, // 'K'
|
||||||
|
{ 4309, 28, 46, 40, 5, -46 }, // 'L'
|
||||||
|
{ 4470, 30, 46, 40, 5, -48 }, // 'M'
|
||||||
|
{ 4643, 30, 24, 40, 5, -26 }, // 'N'
|
||||||
|
{ 4733, 30, 26, 40, 5, -26 }, // 'O'
|
||||||
|
{ 4831, 30, 46, 40, 5, -48 }, // 'P'
|
||||||
|
{ 5004, 30, 46, 40, 5, -48 }, // 'Q'
|
||||||
|
{ 5177, 28, 24, 40, 5, -26 }, // 'R'
|
||||||
|
{ 5261, 30, 46, 40, 5, -46 }, // 'S'
|
||||||
|
{ 5434, 28, 46, 40, 5, -46 }, // 'T'
|
||||||
|
{ 5595, 30, 24, 40, 5, -24 }, // 'U'
|
||||||
|
{ 5685, 30, 46, 40, 5, -46 }, // 'V'
|
||||||
|
{ 5858, 30, 46, 40, 5, -46 }, // 'W'
|
||||||
|
{ 6031, 30, 44, 40, 5, -46 }, // 'X'
|
||||||
|
{ 6196, 30, 46, 40, 5, -46 }, // 'Y'
|
||||||
|
{ 6369, 30, 48, 40, 5, -48 }, // 'Z'
|
||||||
|
{ 6549, 14, 32, 18, 2, -32 }, // '['
|
||||||
|
{ 6605, 14, 32, 18, 2, -32 }, // '\'
|
||||||
|
{ 6661, 14, 32, 18, 2, -32 }, // ']'
|
||||||
|
{ 6717, 14, 32, 18, 2, -32 }, // '^'
|
||||||
|
{ 6773, 14, 32, 18, 2, -32 }, // '_'
|
||||||
|
{ 6829, 14, 32, 18, 2, -32 }, // '`'
|
||||||
|
{ 6885, 30, 46, 40, 5, -48 }, // 'a'
|
||||||
|
{ 7058, 30, 46, 40, 5, -46 }, // 'b'
|
||||||
|
{ 7231, 28, 26, 40, 5, -26 }, // 'c'
|
||||||
|
{ 7322, 30, 46, 40, 5, -46 }, // 'd'
|
||||||
|
{ 7495, 28, 48, 40, 5, -48 }, // 'e'
|
||||||
|
{ 7663, 28, 46, 40, 5, -48 }, // 'f'
|
||||||
|
{ 7824, 30, 48, 40, 5, -48 }, // 'g'
|
||||||
|
{ 8004, 30, 44, 40, 5, -46 }, // 'h'
|
||||||
|
{ 8169, 5, 21, 40, 30, -23 }, // 'i'
|
||||||
|
{ 8183, 30, 46, 40, 5, -46 }, // 'j'
|
||||||
|
{ 8356, 30, 46, 40, 5, -48 }, // 'k'
|
||||||
|
{ 8529, 28, 46, 40, 5, -46 }, // 'l'
|
||||||
|
{ 8690, 30, 46, 40, 5, -48 }, // 'm'
|
||||||
|
{ 8863, 30, 24, 40, 5, -26 }, // 'n'
|
||||||
|
{ 8953, 30, 26, 40, 5, -26 }, // 'o'
|
||||||
|
{ 9051, 30, 46, 40, 5, -48 }, // 'p'
|
||||||
|
{ 9224, 30, 46, 40, 5, -48 }, // 'q'
|
||||||
|
{ 9397, 28, 24, 40, 5, -26 }, // 'r'
|
||||||
|
{ 9481, 30, 46, 40, 5, -46 }, // 's'
|
||||||
|
{ 9654, 28, 46, 40, 5, -46 }, // 't'
|
||||||
|
{ 9815, 30, 24, 40, 5, -24 }, // 'u'
|
||||||
|
{ 9905, 30, 46, 40, 5, -46 }, // 'v'
|
||||||
|
{ 10078, 30, 46, 40, 5, -46 }, // 'w'
|
||||||
|
{ 10251, 30, 44, 40, 5, -46 }, // 'x'
|
||||||
|
{ 10416, 30, 46, 40, 5, -46 }, // 'y'
|
||||||
|
{ 10589, 30, 48, 40, 5, -48 }, // 'z'
|
||||||
|
{ 10769, 14, 32, 18, 2, -32 }, // '{'
|
||||||
|
{ 10825, 14, 32, 18, 2, -32 }, // '|'
|
||||||
|
{ 10881, 14, 32, 18, 2, -32 } // '}'
|
||||||
|
};
|
||||||
|
const GFXfont DSEG7_Classic_Regular_48 PROGMEM = {
|
||||||
|
(uint8_t *)DSEG7_Classic_Regular_48Bitmaps,(GFXglyph *)DSEG7_Classic_Regular_48Glyphs,0x20, 0x7E, 53};
|
||||||
@@ -0,0 +1,464 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <Adafruit_GFX.h>
|
||||||
|
|
||||||
|
const uint8_t FreeSerifBold18pt7bBitmaps[] PROGMEM = {
|
||||||
|
0x7B, 0xEF, 0xFF, 0xFF, 0xF7, 0x9E, 0x71, 0xC7, 0x0C, 0x20, 0x82, 0x00,
|
||||||
|
0x00, 0x07, 0x3E, 0xFF, 0xFF, 0xDC, 0x60, 0x37, 0x83, 0xFC, 0x1F, 0xE0,
|
||||||
|
0xFF, 0x07, 0xB8, 0x3D, 0xC0, 0xCC, 0x06, 0x20, 0x31, 0x01, 0x80, 0x03,
|
||||||
|
0x8E, 0x00, 0xC3, 0x80, 0x30, 0xE0, 0x1C, 0x38, 0x07, 0x0E, 0x01, 0xC3,
|
||||||
|
0x87, 0xFF, 0xFD, 0xFF, 0xFF, 0x7F, 0xFF, 0xC1, 0x87, 0x00, 0xE1, 0xC0,
|
||||||
|
0x38, 0x70, 0x0E, 0x1C, 0x03, 0x86, 0x0F, 0xFF, 0xF3, 0xFF, 0xFC, 0xFF,
|
||||||
|
0xFF, 0x07, 0x0E, 0x01, 0xC3, 0x80, 0x70, 0xE0, 0x1C, 0x30, 0x07, 0x0C,
|
||||||
|
0x01, 0x87, 0x00, 0x61, 0xC0, 0x02, 0x00, 0x04, 0x00, 0x08, 0x00, 0xFF,
|
||||||
|
0x03, 0x27, 0x8C, 0x47, 0x38, 0x86, 0x71, 0x0C, 0xF2, 0x09, 0xF4, 0x03,
|
||||||
|
0xF8, 0x03, 0xF8, 0x07, 0xFC, 0x03, 0xFC, 0x03, 0xFE, 0x01, 0xFE, 0x03,
|
||||||
|
0xFC, 0x04, 0xFC, 0x08, 0xFA, 0x10, 0xF4, 0x21, 0xEC, 0x43, 0xD8, 0x8F,
|
||||||
|
0x3D, 0x3C, 0x3F, 0xF0, 0x1F, 0x00, 0x08, 0x00, 0x10, 0x00, 0x03, 0xC0,
|
||||||
|
0x18, 0x01, 0xFE, 0x0F, 0x00, 0x7C, 0xFF, 0xC0, 0x1F, 0x0F, 0x90, 0x07,
|
||||||
|
0xC1, 0x06, 0x00, 0xF0, 0x21, 0x80, 0x3E, 0x04, 0x30, 0x07, 0x81, 0x8C,
|
||||||
|
0x00, 0xF0, 0x21, 0x80, 0x1E, 0x0C, 0x60, 0x03, 0xC1, 0x18, 0x1E, 0x3C,
|
||||||
|
0xE3, 0x0F, 0xE7, 0xF8, 0xC3, 0xE6, 0x3C, 0x18, 0xF8, 0x40, 0x06, 0x3E,
|
||||||
|
0x08, 0x01, 0x87, 0x81, 0x00, 0x31, 0xF0, 0x20, 0x0C, 0x3E, 0x04, 0x01,
|
||||||
|
0x87, 0x81, 0x00, 0x60, 0xF0, 0x60, 0x18, 0x1E, 0x08, 0x03, 0x03, 0xC7,
|
||||||
|
0x00, 0xC0, 0x3F, 0xC0, 0x18, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x00, 0x7F,
|
||||||
|
0xE0, 0x00, 0x38, 0xF8, 0x00, 0x1E, 0x1F, 0x00, 0x07, 0x83, 0xC0, 0x01,
|
||||||
|
0xF0, 0xF0, 0x00, 0x7C, 0x38, 0x00, 0x1F, 0x9C, 0x00, 0x03, 0xFC, 0x00,
|
||||||
|
0x00, 0xFE, 0x0F, 0xF0, 0x3F, 0x80, 0xF0, 0x1F, 0xF0, 0x18, 0x1C, 0xFE,
|
||||||
|
0x0C, 0x0E, 0x1F, 0xC3, 0x07, 0x87, 0xF1, 0x81, 0xE0, 0xFE, 0x40, 0xF8,
|
||||||
|
0x1F, 0xF0, 0x3F, 0x07, 0xF8, 0x0F, 0xC0, 0xFE, 0x03, 0xF8, 0x1F, 0xC0,
|
||||||
|
0xFE, 0x07, 0xF8, 0x9F, 0xE3, 0xFF, 0xE7, 0xFF, 0x9F, 0xF0, 0xFF, 0xC3,
|
||||||
|
0xF8, 0x0F, 0x80, 0x3C, 0x00, 0x6F, 0xFF, 0xFF, 0x66, 0x66, 0x00, 0x81,
|
||||||
|
0x81, 0x81, 0x81, 0x80, 0xC0, 0xE0, 0x70, 0x70, 0x38, 0x3C, 0x1E, 0x0F,
|
||||||
|
0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x78, 0x3C, 0x0E, 0x07, 0x03, 0x80, 0xE0,
|
||||||
|
0x70, 0x18, 0x06, 0x01, 0x00, 0x40, 0x10, 0x04, 0x80, 0x30, 0x0C, 0x03,
|
||||||
|
0x00, 0xC0, 0x60, 0x38, 0x1C, 0x07, 0x03, 0x81, 0xC0, 0xF0, 0x78, 0x3C,
|
||||||
|
0x1E, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xE0, 0x70, 0x38, 0x38, 0x1C, 0x0C,
|
||||||
|
0x0C, 0x06, 0x04, 0x04, 0x04, 0x00, 0x03, 0x00, 0x1E, 0x00, 0x78, 0x1D,
|
||||||
|
0xE6, 0xFB, 0x3D, 0xED, 0xF3, 0xFF, 0x01, 0xC0, 0x7F, 0xF3, 0xED, 0xFF,
|
||||||
|
0x33, 0xD9, 0xE6, 0x07, 0x80, 0x1E, 0x00, 0x30, 0x00, 0x00, 0xE0, 0x00,
|
||||||
|
0x1C, 0x00, 0x03, 0x80, 0x00, 0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00,
|
||||||
|
0x38, 0x00, 0x07, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80,
|
||||||
|
0x70, 0x00, 0x0E, 0x00, 0x01, 0xC0, 0x00, 0x38, 0x00, 0x07, 0x00, 0x00,
|
||||||
|
0xE0, 0x00, 0x1C, 0x00, 0x03, 0x80, 0x00, 0x73, 0xEF, 0xFF, 0xFD, 0xF0,
|
||||||
|
0xC2, 0x18, 0xC6, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0x7B, 0xFF, 0xFF, 0xFD,
|
||||||
|
0xE0, 0x00, 0xE0, 0x3C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C,
|
||||||
|
0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C,
|
||||||
|
0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x1C, 0x07, 0x00, 0xE0, 0x00,
|
||||||
|
0x03, 0xC0, 0x0E, 0x70, 0x1E, 0x78, 0x3C, 0x3C, 0x3C, 0x3C, 0x7C, 0x3E,
|
||||||
|
0x7C, 0x3E, 0x7C, 0x3E, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F,
|
||||||
|
0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3E, 0x7C, 0x3E,
|
||||||
|
0x7C, 0x3E, 0x3C, 0x3C, 0x3C, 0x3C, 0x1E, 0x78, 0x0E, 0x70, 0x03, 0xC0,
|
||||||
|
0x00, 0xC0, 0x3C, 0x0F, 0xC3, 0xFC, 0x4F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC,
|
||||||
|
0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC,
|
||||||
|
0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x0F, 0xC0, 0xFC, 0x1F, 0xEF, 0xFF,
|
||||||
|
0x03, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3F, 0xFC, 0x30, 0xFE, 0x60, 0x7E,
|
||||||
|
0x40, 0x3E, 0x00, 0x3E, 0x00, 0x3E, 0x00, 0x3C, 0x00, 0x3C, 0x00, 0x78,
|
||||||
|
0x00, 0x70, 0x00, 0xE0, 0x00, 0xC0, 0x01, 0x80, 0x03, 0x00, 0x06, 0x01,
|
||||||
|
0x0C, 0x03, 0x1F, 0xFF, 0x1F, 0xFF, 0x3F, 0xFE, 0x7F, 0xFE, 0xFF, 0xFE,
|
||||||
|
0x03, 0xF0, 0x0F, 0xF8, 0x3F, 0xFC, 0x21, 0xFE, 0x40, 0xFE, 0x00, 0x7E,
|
||||||
|
0x00, 0x7E, 0x00, 0x7C, 0x00, 0x78, 0x00, 0xF0, 0x01, 0xFC, 0x03, 0xFE,
|
||||||
|
0x00, 0x7E, 0x00, 0x3F, 0x00, 0x1F, 0x00, 0x0F, 0x00, 0x0F, 0x00, 0x0F,
|
||||||
|
0x00, 0x0E, 0x70, 0x0E, 0xFC, 0x1C, 0xFE, 0x38, 0x7F, 0xE0, 0x3F, 0x80,
|
||||||
|
0x00, 0x38, 0x00, 0xF0, 0x03, 0xE0, 0x07, 0xC0, 0x1F, 0x80, 0x5F, 0x00,
|
||||||
|
0xBE, 0x02, 0x7C, 0x08, 0xF8, 0x31, 0xF0, 0x43, 0xE1, 0x07, 0xC4, 0x0F,
|
||||||
|
0x88, 0x1F, 0x20, 0x3E, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF8,
|
||||||
|
0x07, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x3E, 0x00, 0x7C, 0x0F, 0xFE, 0x1F,
|
||||||
|
0xF8, 0x7F, 0xF0, 0xFF, 0xE1, 0x80, 0x03, 0x00, 0x0C, 0x00, 0x18, 0x00,
|
||||||
|
0x3F, 0x80, 0xFF, 0xC1, 0xFF, 0xC3, 0xFF, 0xC3, 0xFF, 0x80, 0x3F, 0x80,
|
||||||
|
0x0F, 0x00, 0x0E, 0x00, 0x1C, 0x00, 0x18, 0x00, 0x37, 0x80, 0x4F, 0x81,
|
||||||
|
0x9F, 0xC6, 0x3F, 0xF8, 0x1F, 0x80, 0x00, 0x07, 0x00, 0x7C, 0x01, 0xF0,
|
||||||
|
0x03, 0xC0, 0x0F, 0x80, 0x1F, 0x00, 0x1F, 0x00, 0x3E, 0x00, 0x7E, 0x00,
|
||||||
|
0x7F, 0xF0, 0x7F, 0xFC, 0xFC, 0x7E, 0xFC, 0x7E, 0xFC, 0x3F, 0xFC, 0x3F,
|
||||||
|
0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F, 0x7C, 0x3F, 0x7C, 0x3E, 0x3C, 0x3E,
|
||||||
|
0x3E, 0x3C, 0x1E, 0x78, 0x07, 0xE0, 0x7F, 0xFF, 0x7F, 0xFE, 0x7F, 0xFE,
|
||||||
|
0xFF, 0xFE, 0xFF, 0xFC, 0xC0, 0x1C, 0x80, 0x18, 0x80, 0x38, 0x00, 0x38,
|
||||||
|
0x00, 0x70, 0x00, 0x70, 0x00, 0x70, 0x00, 0xE0, 0x00, 0xE0, 0x00, 0xE0,
|
||||||
|
0x01, 0xC0, 0x01, 0xC0, 0x01, 0xC0, 0x03, 0x80, 0x03, 0x80, 0x07, 0x80,
|
||||||
|
0x07, 0x00, 0x07, 0x00, 0x0F, 0x00, 0x0F, 0xE0, 0x38, 0x78, 0x70, 0x3C,
|
||||||
|
0xF0, 0x1E, 0xF0, 0x1E, 0xF8, 0x1E, 0xF8, 0x1E, 0xFE, 0x3C, 0x7F, 0xB0,
|
||||||
|
0x7F, 0xE0, 0x3F, 0xF0, 0x0F, 0xF8, 0x1F, 0xFC, 0x39, 0xFE, 0x70, 0xFF,
|
||||||
|
0xF0, 0x3F, 0xF0, 0x3F, 0xF0, 0x1F, 0xF0, 0x1F, 0xF0, 0x1E, 0x78, 0x3E,
|
||||||
|
0x7C, 0x7C, 0x3F, 0xF8, 0x0F, 0xE0, 0x07, 0xE0, 0x1E, 0x78, 0x3C, 0x7C,
|
||||||
|
0x7C, 0x3C, 0x7C, 0x3E, 0xFC, 0x3E, 0xFC, 0x3F, 0xFC, 0x3F, 0xFC, 0x3F,
|
||||||
|
0xFC, 0x3F, 0xFC, 0x3F, 0x7E, 0x3F, 0x7E, 0x3F, 0x3F, 0xFE, 0x0F, 0xFE,
|
||||||
|
0x00, 0x7E, 0x00, 0x7C, 0x00, 0xF8, 0x00, 0xF8, 0x01, 0xF0, 0x03, 0xC0,
|
||||||
|
0x0F, 0x80, 0x3E, 0x00, 0xE0, 0x00, 0x7B, 0xFF, 0xFF, 0xFD, 0xE0, 0x00,
|
||||||
|
0x00, 0x07, 0xBF, 0xFF, 0xFF, 0xDE, 0x39, 0xFB, 0xF7, 0xEF, 0xC7, 0x00,
|
||||||
|
0x00, 0x00, 0x01, 0xE7, 0xEF, 0xFF, 0xFF, 0xBF, 0x06, 0x08, 0x30, 0xC2,
|
||||||
|
0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x0F, 0x80, 0x07, 0xF0,
|
||||||
|
0x03, 0xFC, 0x01, 0xFE, 0x00, 0xFE, 0x00, 0x7F, 0x00, 0x3F, 0x80, 0x1F,
|
||||||
|
0xC0, 0x03, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00, 0x07, 0xF0, 0x00,
|
||||||
|
0x3F, 0x80, 0x01, 0xFE, 0x00, 0x0F, 0xE0, 0x00, 0x7C, 0x00, 0x01, 0x80,
|
||||||
|
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x80, 0x00, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x18, 0x00, 0x03,
|
||||||
|
0xE0, 0x00, 0x7F, 0x00, 0x07, 0xF8, 0x00, 0x1F, 0xC0, 0x00, 0xFE, 0x00,
|
||||||
|
0x07, 0xF0, 0x00, 0x3F, 0x80, 0x01, 0xFC, 0x00, 0x3F, 0x80, 0x1F, 0xC0,
|
||||||
|
0x0F, 0xE0, 0x07, 0xF0, 0x07, 0xF8, 0x03, 0xFC, 0x00, 0xFE, 0x00, 0x1F,
|
||||||
|
0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xC0, 0xFF, 0xC7, 0x1F,
|
||||||
|
0xB8, 0x3E, 0xF0, 0xFF, 0xC3, 0xFF, 0x0F, 0xD8, 0x3F, 0x00, 0xF8, 0x07,
|
||||||
|
0xC0, 0x1E, 0x00, 0x60, 0x03, 0x00, 0x08, 0x00, 0x20, 0x00, 0x80, 0x00,
|
||||||
|
0x00, 0x00, 0x00, 0x70, 0x03, 0xE0, 0x1F, 0x80, 0x7E, 0x01, 0xF8, 0x01,
|
||||||
|
0xC0, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xE0, 0x07, 0xC0, 0xF0, 0x0F, 0x00,
|
||||||
|
0x38, 0x1E, 0x00, 0x0C, 0x3C, 0x07, 0x06, 0x38, 0x1F, 0x72, 0x78, 0x3C,
|
||||||
|
0xF3, 0x78, 0x78, 0xE1, 0xF0, 0x70, 0xE1, 0xF0, 0xF0, 0xE1, 0xF0, 0xE0,
|
||||||
|
0xC1, 0xF1, 0xE1, 0xC1, 0xF1, 0xC1, 0xC1, 0xF1, 0xC3, 0x82, 0xF1, 0xC3,
|
||||||
|
0x86, 0x71, 0xC7, 0x8C, 0x79, 0xFB, 0xF8, 0x78, 0xF1, 0xF0, 0x3C, 0x00,
|
||||||
|
0x00, 0x1E, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x07, 0xC0, 0x78, 0x03, 0xFF,
|
||||||
|
0xE0, 0x00, 0x7F, 0x80, 0x00, 0x10, 0x00, 0x00, 0x38, 0x00, 0x00, 0x38,
|
||||||
|
0x00, 0x00, 0x78, 0x00, 0x00, 0x7C, 0x00, 0x00, 0x7C, 0x00, 0x00, 0xFE,
|
||||||
|
0x00, 0x00, 0xFE, 0x00, 0x01, 0xBF, 0x00, 0x01, 0xBF, 0x00, 0x01, 0x1F,
|
||||||
|
0x00, 0x03, 0x1F, 0x80, 0x02, 0x1F, 0x80, 0x06, 0x0F, 0xC0, 0x06, 0x0F,
|
||||||
|
0xC0, 0x04, 0x07, 0xE0, 0x0F, 0xFF, 0xE0, 0x0F, 0xFF, 0xE0, 0x18, 0x03,
|
||||||
|
0xF0, 0x18, 0x03, 0xF0, 0x30, 0x01, 0xF8, 0x30, 0x01, 0xF8, 0x70, 0x01,
|
||||||
|
0xFC, 0xFE, 0x0F, 0xFF, 0xFF, 0xFE, 0x07, 0xFF, 0xFE, 0x0F, 0xE1, 0xF8,
|
||||||
|
0x3F, 0x07, 0xC1, 0xF8, 0x3F, 0x0F, 0xC1, 0xF8, 0x7E, 0x0F, 0xC3, 0xF0,
|
||||||
|
0x7E, 0x1F, 0x87, 0xE0, 0xFC, 0x7C, 0x07, 0xFF, 0x00, 0x3F, 0xFF, 0x01,
|
||||||
|
0xF8, 0xFE, 0x0F, 0xC1, 0xF8, 0x7E, 0x0F, 0xC3, 0xF0, 0x3F, 0x1F, 0x81,
|
||||||
|
0xF8, 0xFC, 0x0F, 0xC7, 0xE0, 0x7E, 0x3F, 0x03, 0xF1, 0xF8, 0x3F, 0x0F,
|
||||||
|
0xC3, 0xF0, 0xFF, 0xFF, 0x1F, 0xFF, 0xC0, 0x00, 0x7E, 0x04, 0x07, 0xFF,
|
||||||
|
0x18, 0x1F, 0x07, 0xF0, 0x7C, 0x03, 0xE1, 0xF0, 0x03, 0xC7, 0xC0, 0x03,
|
||||||
|
0x9F, 0x80, 0x03, 0x3F, 0x00, 0x06, 0x7C, 0x00, 0x05, 0xF8, 0x00, 0x03,
|
||||||
|
0xF0, 0x00, 0x07, 0xE0, 0x00, 0x0F, 0xC0, 0x00, 0x1F, 0x80, 0x00, 0x3F,
|
||||||
|
0x00, 0x00, 0x7E, 0x00, 0x00, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x01, 0xF8,
|
||||||
|
0x00, 0x01, 0xF0, 0x00, 0x23, 0xF0, 0x00, 0xC3, 0xF0, 0x07, 0x03, 0xF0,
|
||||||
|
0x3C, 0x01, 0xFF, 0xE0, 0x00, 0xFF, 0x00, 0xFF, 0xFE, 0x00, 0x7F, 0xFF,
|
||||||
|
0x00, 0x7E, 0x1F, 0x80, 0xFC, 0x1F, 0x81, 0xF8, 0x1F, 0x83, 0xF0, 0x1F,
|
||||||
|
0x07, 0xE0, 0x3F, 0x0F, 0xC0, 0x7E, 0x1F, 0x80, 0x7E, 0x3F, 0x00, 0xFC,
|
||||||
|
0x7E, 0x01, 0xF8, 0xFC, 0x03, 0xF1, 0xF8, 0x07, 0xE3, 0xF0, 0x0F, 0xC7,
|
||||||
|
0xE0, 0x1F, 0x8F, 0xC0, 0x3F, 0x1F, 0x80, 0x7C, 0x3F, 0x01, 0xF8, 0x7E,
|
||||||
|
0x03, 0xE0, 0xFC, 0x0F, 0x81, 0xF8, 0x1F, 0x03, 0xF0, 0xFC, 0x0F, 0xFF,
|
||||||
|
0xE0, 0x7F, 0xFF, 0x00, 0xFF, 0xFF, 0xE3, 0xFF, 0xFF, 0x0F, 0xC0, 0x78,
|
||||||
|
0x7E, 0x01, 0xC3, 0xF0, 0x06, 0x1F, 0x80, 0x10, 0xFC, 0x10, 0x87, 0xE0,
|
||||||
|
0x80, 0x3F, 0x0C, 0x01, 0xF8, 0xE0, 0x0F, 0xFF, 0x00, 0x7F, 0xF8, 0x03,
|
||||||
|
0xF1, 0xC0, 0x1F, 0x86, 0x00, 0xFC, 0x10, 0x07, 0xE0, 0x80, 0x3F, 0x00,
|
||||||
|
0x09, 0xF8, 0x00, 0xCF, 0xC0, 0x0C, 0x7E, 0x00, 0x63, 0xF0, 0x0F, 0x1F,
|
||||||
|
0x81, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFC, 0xFF, 0xFF, 0xEF, 0xFF, 0xFC,
|
||||||
|
0xFC, 0x0F, 0x9F, 0x80, 0x73, 0xF0, 0x06, 0x7E, 0x00, 0x4F, 0xC1, 0x09,
|
||||||
|
0xF8, 0x20, 0x3F, 0x0C, 0x07, 0xE3, 0x80, 0xFF, 0xF0, 0x1F, 0xFE, 0x03,
|
||||||
|
0xF1, 0xC0, 0x7E, 0x18, 0x0F, 0xC1, 0x01, 0xF8, 0x20, 0x3F, 0x00, 0x07,
|
||||||
|
0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E, 0x00, 0x1F,
|
||||||
|
0xE0, 0x07, 0xFF, 0x00, 0x00, 0x7E, 0x02, 0x01, 0xFF, 0xE3, 0x01, 0xF0,
|
||||||
|
0x3F, 0x81, 0xF0, 0x07, 0xC1, 0xF0, 0x01, 0xE1, 0xF0, 0x00, 0x71, 0xF8,
|
||||||
|
0x00, 0x18, 0xFC, 0x00, 0x0C, 0x7C, 0x00, 0x02, 0x7E, 0x00, 0x00, 0x3F,
|
||||||
|
0x00, 0x00, 0x1F, 0x80, 0x00, 0x0F, 0xC0, 0x00, 0x07, 0xE0, 0x00, 0x03,
|
||||||
|
0xF0, 0x0F, 0xFF, 0xF8, 0x01, 0xFE, 0x7C, 0x00, 0x7E, 0x3F, 0x00, 0x3F,
|
||||||
|
0x1F, 0x80, 0x1F, 0x87, 0xC0, 0x0F, 0xC1, 0xF0, 0x07, 0xE0, 0xFC, 0x03,
|
||||||
|
0xF0, 0x1F, 0x83, 0xF0, 0x07, 0xFF, 0xE0, 0x00, 0x7F, 0x80, 0x00, 0xFF,
|
||||||
|
0xC3, 0xFF, 0x7F, 0x81, 0xFE, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F,
|
||||||
|
0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F,
|
||||||
|
0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F, 0xFF, 0xFC, 0x3F,
|
||||||
|
0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F,
|
||||||
|
0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x3F,
|
||||||
|
0x00, 0xFC, 0x3F, 0x00, 0xFC, 0x7F, 0x81, 0xFE, 0xFF, 0xC3, 0xFF, 0xFF,
|
||||||
|
0xEF, 0xF0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07,
|
||||||
|
0xE0, 0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x0F, 0xC1, 0xF8, 0x3F, 0x07, 0xE0,
|
||||||
|
0xFC, 0x1F, 0x83, 0xF0, 0x7E, 0x1F, 0xE7, 0xFF, 0x07, 0xFF, 0x01, 0xFE,
|
||||||
|
0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC,
|
||||||
|
0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC,
|
||||||
|
0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC, 0x00, 0xFC,
|
||||||
|
0x70, 0xFC, 0xF8, 0xFC, 0xF8, 0xF8, 0xF0, 0xF8, 0x71, 0xF0, 0x7F, 0xE0,
|
||||||
|
0x1F, 0x80, 0xFF, 0xC3, 0xFF, 0x3F, 0xC0, 0x3E, 0x0F, 0xC0, 0x1C, 0x07,
|
||||||
|
0xE0, 0x18, 0x03, 0xF0, 0x18, 0x01, 0xF8, 0x18, 0x00, 0xFC, 0x18, 0x00,
|
||||||
|
0x7E, 0x18, 0x00, 0x3F, 0x18, 0x00, 0x1F, 0x9C, 0x00, 0x0F, 0xDF, 0x00,
|
||||||
|
0x07, 0xFF, 0xC0, 0x03, 0xFF, 0xF0, 0x01, 0xF9, 0xF8, 0x00, 0xFC, 0xFE,
|
||||||
|
0x00, 0x7E, 0x3F, 0x80, 0x3F, 0x0F, 0xE0, 0x1F, 0x83, 0xF8, 0x0F, 0xC0,
|
||||||
|
0xFC, 0x07, 0xE0, 0x7F, 0x03, 0xF0, 0x1F, 0xC1, 0xF8, 0x07, 0xF1, 0xFE,
|
||||||
|
0x03, 0xFD, 0xFF, 0x8F, 0xFF, 0xFF, 0xE0, 0x03, 0xFC, 0x00, 0x0F, 0xC0,
|
||||||
|
0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07,
|
||||||
|
0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00,
|
||||||
|
0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x01, 0x3F,
|
||||||
|
0x00, 0x19, 0xF8, 0x00, 0xCF, 0xC0, 0x0C, 0x7E, 0x00, 0x63, 0xF0, 0x0F,
|
||||||
|
0x1F, 0x81, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0x80, 0x03, 0xFE,
|
||||||
|
0x7F, 0x00, 0x07, 0xF8, 0x7E, 0x00, 0x0F, 0xE0, 0xFE, 0x00, 0x3F, 0xC1,
|
||||||
|
0x7C, 0x00, 0x5F, 0x82, 0xFC, 0x01, 0xBF, 0x05, 0xF8, 0x02, 0x7E, 0x09,
|
||||||
|
0xF8, 0x0C, 0xFC, 0x13, 0xF0, 0x11, 0xF8, 0x23, 0xE0, 0x23, 0xF0, 0x47,
|
||||||
|
0xE0, 0xC7, 0xE0, 0x87, 0xC1, 0x0F, 0xC1, 0x0F, 0xC6, 0x1F, 0x82, 0x0F,
|
||||||
|
0x88, 0x3F, 0x04, 0x1F, 0xB0, 0x7E, 0x08, 0x3F, 0x60, 0xFC, 0x10, 0x3E,
|
||||||
|
0x81, 0xF8, 0x20, 0x7F, 0x03, 0xF0, 0x40, 0x7C, 0x07, 0xE0, 0x80, 0xF8,
|
||||||
|
0x0F, 0xC1, 0x00, 0xE0, 0x1F, 0x82, 0x01, 0xC0, 0x3F, 0x0E, 0x03, 0x80,
|
||||||
|
0xFF, 0x7F, 0x82, 0x03, 0xFF, 0xFE, 0x00, 0xFE, 0xFE, 0x00, 0x70, 0xFE,
|
||||||
|
0x00, 0x40, 0xFE, 0x00, 0x81, 0xFC, 0x01, 0x03, 0xFC, 0x02, 0x05, 0xFC,
|
||||||
|
0x04, 0x09, 0xFC, 0x08, 0x11, 0xFC, 0x10, 0x23, 0xF8, 0x20, 0x43, 0xF8,
|
||||||
|
0x40, 0x83, 0xF8, 0x81, 0x03, 0xF9, 0x02, 0x03, 0xFA, 0x04, 0x03, 0xF4,
|
||||||
|
0x08, 0x07, 0xF8, 0x10, 0x07, 0xF0, 0x20, 0x07, 0xE0, 0x40, 0x07, 0xC0,
|
||||||
|
0x80, 0x07, 0x81, 0x00, 0x0F, 0x02, 0x00, 0x0E, 0x0E, 0x00, 0x0C, 0x7F,
|
||||||
|
0x00, 0x08, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0, 0x01, 0xF0, 0x7C, 0x01,
|
||||||
|
0xF0, 0x1F, 0x01, 0xF0, 0x07, 0xC1, 0xF0, 0x01, 0xF1, 0xF8, 0x00, 0xFC,
|
||||||
|
0xFC, 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00, 0x0F, 0xFF, 0x00, 0x07,
|
||||||
|
0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0, 0x00, 0xFF, 0xF0, 0x00,
|
||||||
|
0x7F, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x3E, 0x00, 0x1F, 0x9F, 0x80,
|
||||||
|
0x0F, 0xC7, 0xC0, 0x07, 0xC1, 0xF0, 0x07, 0xC0, 0xFC, 0x07, 0xE0, 0x3F,
|
||||||
|
0x07, 0xC0, 0x07, 0xFF, 0xC0, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0xFC, 0x0F,
|
||||||
|
0xFF, 0xE0, 0xFC, 0x7E, 0x1F, 0x87, 0xE3, 0xF0, 0x7E, 0x7E, 0x0F, 0xCF,
|
||||||
|
0xC1, 0xF9, 0xF8, 0x3F, 0x3F, 0x07, 0xE7, 0xE0, 0xFC, 0xFC, 0x3F, 0x1F,
|
||||||
|
0x8F, 0xC3, 0xFF, 0xF0, 0x7F, 0xF8, 0x0F, 0xC0, 0x01, 0xF8, 0x00, 0x3F,
|
||||||
|
0x00, 0x07, 0xE0, 0x00, 0xFC, 0x00, 0x1F, 0x80, 0x03, 0xF0, 0x00, 0x7E,
|
||||||
|
0x00, 0x1F, 0xE0, 0x07, 0xFE, 0x00, 0x00, 0x7F, 0x00, 0x01, 0xFF, 0xF0,
|
||||||
|
0x01, 0xF0, 0x7C, 0x01, 0xF0, 0x1F, 0x01, 0xF0, 0x07, 0xC1, 0xF0, 0x01,
|
||||||
|
0xF1, 0xF8, 0x00, 0xFC, 0xFC, 0x00, 0x7E, 0x7C, 0x00, 0x1F, 0x7E, 0x00,
|
||||||
|
0x0F, 0xFF, 0x00, 0x07, 0xFF, 0x80, 0x03, 0xFF, 0xC0, 0x01, 0xFF, 0xE0,
|
||||||
|
0x00, 0xFF, 0xF0, 0x00, 0x7F, 0xF8, 0x00, 0x3F, 0x7C, 0x00, 0x1F, 0x3E,
|
||||||
|
0x00, 0x0F, 0x9F, 0x80, 0x0F, 0xC7, 0xC0, 0x07, 0xC1, 0xF0, 0x07, 0xC0,
|
||||||
|
0x78, 0x03, 0xC0, 0x1E, 0x07, 0xC0, 0x03, 0xFF, 0x80, 0x00, 0x7F, 0x00,
|
||||||
|
0x00, 0x3F, 0xC0, 0x00, 0x0F, 0xF0, 0x00, 0x03, 0xFE, 0x00, 0x00, 0xFF,
|
||||||
|
0xF8, 0x00, 0x0F, 0xE0, 0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0x00, 0xFC, 0x3F,
|
||||||
|
0x01, 0xF8, 0x3F, 0x03, 0xF0, 0x3F, 0x07, 0xE0, 0x7E, 0x0F, 0xC0, 0xFC,
|
||||||
|
0x1F, 0x81, 0xF8, 0x3F, 0x03, 0xF0, 0x7E, 0x07, 0xC0, 0xFC, 0x1F, 0x81,
|
||||||
|
0xF8, 0x7E, 0x03, 0xFF, 0xF0, 0x07, 0xFF, 0xC0, 0x0F, 0xDF, 0xC0, 0x1F,
|
||||||
|
0x9F, 0x80, 0x3F, 0x1F, 0x80, 0x7E, 0x3F, 0x80, 0xFC, 0x3F, 0x81, 0xF8,
|
||||||
|
0x3F, 0x03, 0xF0, 0x7F, 0x07, 0xE0, 0x7F, 0x1F, 0xE0, 0x7F, 0x7F, 0xE0,
|
||||||
|
0xFF, 0x07, 0xC2, 0x1F, 0xF2, 0x3C, 0x3E, 0x70, 0x0E, 0xF0, 0x06, 0xF0,
|
||||||
|
0x06, 0xF0, 0x02, 0xF8, 0x00, 0xFE, 0x00, 0xFF, 0x80, 0x7F, 0xE0, 0x3F,
|
||||||
|
0xF8, 0x1F, 0xFC, 0x0F, 0xFE, 0x03, 0xFE, 0x00, 0xFF, 0x00, 0x3F, 0x80,
|
||||||
|
0x1F, 0xC0, 0x0F, 0xC0, 0x0F, 0xE0, 0x0E, 0xF0, 0x1E, 0xF8, 0x3C, 0x9F,
|
||||||
|
0xF8, 0x87, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x7E, 0x3F, 0x83,
|
||||||
|
0xF0, 0x7C, 0x1F, 0x81, 0xC0, 0xFC, 0x06, 0x07, 0xE0, 0x20, 0x3F, 0x00,
|
||||||
|
0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F,
|
||||||
|
0x80, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x01, 0xF8, 0x00,
|
||||||
|
0x0F, 0xC0, 0x00, 0x7E, 0x00, 0x03, 0xF0, 0x00, 0x1F, 0x80, 0x00, 0xFC,
|
||||||
|
0x00, 0x0F, 0xF0, 0x01, 0xFF, 0xE0, 0xFF, 0xC1, 0xFD, 0xFE, 0x01, 0xC3,
|
||||||
|
0xF0, 0x02, 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0,
|
||||||
|
0x02, 0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02,
|
||||||
|
0x0F, 0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, 0x0F,
|
||||||
|
0xC0, 0x08, 0x3F, 0x00, 0x20, 0xFC, 0x00, 0x83, 0xF0, 0x02, 0x0F, 0xC0,
|
||||||
|
0x18, 0x1F, 0x80, 0x40, 0x7E, 0x03, 0x00, 0xFC, 0x18, 0x01, 0xFF, 0xC0,
|
||||||
|
0x00, 0xFC, 0x00, 0xFF, 0xF0, 0x7F, 0x3F, 0xC0, 0x1E, 0x1F, 0x80, 0x0C,
|
||||||
|
0x1F, 0x80, 0x08, 0x0F, 0xC0, 0x18, 0x0F, 0xC0, 0x18, 0x07, 0xE0, 0x10,
|
||||||
|
0x07, 0xE0, 0x30, 0x07, 0xE0, 0x20, 0x03, 0xF0, 0x60, 0x03, 0xF0, 0x60,
|
||||||
|
0x01, 0xF8, 0x40, 0x01, 0xF8, 0xC0, 0x00, 0xF8, 0x80, 0x00, 0xFC, 0x80,
|
||||||
|
0x00, 0xFD, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x3E, 0x00,
|
||||||
|
0x00, 0x3E, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x1C, 0x00,
|
||||||
|
0x00, 0x0C, 0x00, 0xFF, 0xE7, 0xFF, 0x0F, 0xCF, 0xE0, 0x7F, 0x00, 0xE1,
|
||||||
|
0xF8, 0x0F, 0xC0, 0x30, 0x7E, 0x03, 0xF0, 0x0C, 0x1F, 0x80, 0x7C, 0x02,
|
||||||
|
0x03, 0xE0, 0x1F, 0x81, 0x80, 0xFC, 0x07, 0xE0, 0x60, 0x3F, 0x03, 0xF8,
|
||||||
|
0x10, 0x07, 0xC0, 0xBF, 0x0C, 0x01, 0xF8, 0x2F, 0xC3, 0x00, 0x7E, 0x19,
|
||||||
|
0xF0, 0x80, 0x0F, 0x84, 0x7C, 0x60, 0x03, 0xF3, 0x0F, 0x98, 0x00, 0xFC,
|
||||||
|
0xC3, 0xE4, 0x00, 0x1F, 0x20, 0xFB, 0x00, 0x07, 0xF8, 0x1F, 0xC0, 0x00,
|
||||||
|
0xFC, 0x07, 0xE0, 0x00, 0x3F, 0x01, 0xF8, 0x00, 0x0F, 0xC0, 0x3E, 0x00,
|
||||||
|
0x01, 0xE0, 0x0F, 0x00, 0x00, 0x78, 0x03, 0xC0, 0x00, 0x1C, 0x00, 0x70,
|
||||||
|
0x00, 0x03, 0x00, 0x18, 0x00, 0x00, 0xC0, 0x06, 0x00, 0x00, 0x20, 0x00,
|
||||||
|
0x80, 0x00, 0xFF, 0xF3, 0xFE, 0x7F, 0x80, 0x78, 0x3F, 0x80, 0x70, 0x1F,
|
||||||
|
0xC0, 0x60, 0x0F, 0xC0, 0xC0, 0x0F, 0xE1, 0x80, 0x07, 0xF1, 0x00, 0x03,
|
||||||
|
0xF3, 0x00, 0x03, 0xFE, 0x00, 0x01, 0xFC, 0x00, 0x00, 0xFC, 0x00, 0x00,
|
||||||
|
0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7F, 0x00, 0x00, 0xFF, 0x80, 0x00,
|
||||||
|
0x9F, 0x80, 0x01, 0x8F, 0xC0, 0x03, 0x0F, 0xE0, 0x06, 0x07, 0xE0, 0x06,
|
||||||
|
0x07, 0xF0, 0x0C, 0x03, 0xF8, 0x1C, 0x03, 0xF8, 0x3C, 0x03, 0xFC, 0xFF,
|
||||||
|
0x0F, 0xFF, 0xFF, 0xF0, 0xFF, 0x7F, 0x80, 0x1E, 0x3F, 0x80, 0x1C, 0x1F,
|
||||||
|
0x80, 0x18, 0x1F, 0xC0, 0x10, 0x0F, 0xC0, 0x30, 0x07, 0xE0, 0x20, 0x07,
|
||||||
|
0xE0, 0x60, 0x03, 0xF0, 0xC0, 0x03, 0xF0, 0x80, 0x01, 0xF9, 0x80, 0x01,
|
||||||
|
0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x7E, 0x00, 0x00,
|
||||||
|
0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00,
|
||||||
|
0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x7E, 0x00, 0x00, 0xFF, 0x00, 0x01,
|
||||||
|
0xFF, 0x80, 0x7F, 0xFF, 0xF3, 0xFF, 0xFF, 0x9F, 0x01, 0xF8, 0xE0, 0x1F,
|
||||||
|
0x86, 0x01, 0xFC, 0x20, 0x0F, 0xC1, 0x00, 0xFC, 0x00, 0x07, 0xE0, 0x00,
|
||||||
|
0x7E, 0x00, 0x07, 0xE0, 0x00, 0x3F, 0x00, 0x03, 0xF0, 0x00, 0x3F, 0x80,
|
||||||
|
0x01, 0xF8, 0x00, 0x1F, 0x80, 0x01, 0xFC, 0x01, 0x0F, 0xC0, 0x18, 0xFC,
|
||||||
|
0x00, 0xC7, 0xE0, 0x06, 0x7E, 0x00, 0x77, 0xF0, 0x07, 0x3F, 0x00, 0xFB,
|
||||||
|
0xFF, 0xFF, 0xDF, 0xFF, 0xFE, 0xFF, 0xFF, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
|
||||||
|
0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
|
||||||
|
0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xFF, 0xFF, 0xE0, 0x1E,
|
||||||
|
0x01, 0xC0, 0x38, 0x07, 0x80, 0x70, 0x0E, 0x01, 0xC0, 0x1C, 0x03, 0x80,
|
||||||
|
0x70, 0x07, 0x00, 0xE0, 0x1C, 0x01, 0xC0, 0x38, 0x07, 0x00, 0x70, 0x0E,
|
||||||
|
0x01, 0xC0, 0x1C, 0x03, 0x80, 0x70, 0x0F, 0x00, 0xE0, 0xFF, 0xFF, 0x0F,
|
||||||
|
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||||
|
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
|
||||||
|
0xFF, 0xFF, 0x03, 0x80, 0x0F, 0x00, 0x1F, 0x00, 0x7E, 0x00, 0xEE, 0x03,
|
||||||
|
0x9C, 0x07, 0x1C, 0x1C, 0x38, 0x38, 0x38, 0xE0, 0x71, 0xC0, 0x77, 0x00,
|
||||||
|
0xEE, 0x00, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0xE0, 0xF0,
|
||||||
|
0x78, 0x3C, 0x0E, 0x07, 0x0F, 0xE0, 0x3F, 0xF0, 0x78, 0xF8, 0x78, 0x7C,
|
||||||
|
0x78, 0x7C, 0x38, 0x7C, 0x00, 0x7C, 0x03, 0xFC, 0x1E, 0x7C, 0x7C, 0x7C,
|
||||||
|
0xFC, 0x7C, 0xFC, 0x7C, 0xFC, 0xFC, 0xFF, 0xFD, 0x7F, 0x7F, 0x3C, 0x3C,
|
||||||
|
0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F,
|
||||||
|
0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0xF8, 0x1F, 0x7F, 0x87, 0xE3,
|
||||||
|
0xF1, 0xF0, 0x7E, 0x7C, 0x0F, 0x9F, 0x03, 0xF7, 0xC0, 0xFD, 0xF0, 0x3F,
|
||||||
|
0x7C, 0x0F, 0xDF, 0x03, 0xF7, 0xC0, 0xFD, 0xF0, 0x3E, 0x7C, 0x1F, 0x1F,
|
||||||
|
0x8F, 0xC6, 0x7F, 0xC1, 0x07, 0xC0, 0x07, 0xC0, 0x7F, 0xC3, 0xC7, 0x9F,
|
||||||
|
0x1E, 0x78, 0x7B, 0xE1, 0xCF, 0x80, 0x3E, 0x00, 0xF8, 0x03, 0xE0, 0x0F,
|
||||||
|
0x80, 0x3F, 0x00, 0x7C, 0x00, 0xFC, 0x61, 0xFF, 0x03, 0xF0, 0x00, 0x7F,
|
||||||
|
0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00, 0x1F, 0x00, 0x07, 0xC0,
|
||||||
|
0x01, 0xF0, 0x00, 0x7C, 0x07, 0x9F, 0x07, 0xF7, 0xC3, 0xE3, 0xF1, 0xF8,
|
||||||
|
0x7C, 0x7C, 0x1F, 0x3F, 0x07, 0xCF, 0xC1, 0xF3, 0xF0, 0x7C, 0xFC, 0x1F,
|
||||||
|
0x3F, 0x07, 0xCF, 0xC1, 0xF1, 0xF0, 0x7C, 0x7E, 0x1F, 0x0F, 0x8F, 0xC1,
|
||||||
|
0xFD, 0xFC, 0x3E, 0x70, 0x0F, 0xC0, 0x7F, 0xC3, 0xC7, 0x1E, 0x1E, 0xF8,
|
||||||
|
0x7B, 0xFF, 0xFF, 0xFF, 0xFE, 0x00, 0xF8, 0x03, 0xE0, 0x0F, 0xC0, 0x1F,
|
||||||
|
0x03, 0x7E, 0x18, 0xFF, 0xC1, 0xFE, 0x03, 0xF0, 0x0F, 0x83, 0xF8, 0xF3,
|
||||||
|
0xBE, 0xF7, 0xDC, 0xF8, 0x1F, 0x03, 0xE0, 0xFF, 0x1F, 0xE1, 0xF0, 0x3E,
|
||||||
|
0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07,
|
||||||
|
0xC0, 0xF8, 0x1F, 0x07, 0xF8, 0x0F, 0xC0, 0x1F, 0xFF, 0xDF, 0x1F, 0xFF,
|
||||||
|
0x07, 0x8F, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7C, 0x78, 0x3C,
|
||||||
|
0x1E, 0x3E, 0x03, 0xFC, 0x03, 0x00, 0x07, 0x00, 0x07, 0x80, 0x03, 0xFF,
|
||||||
|
0xF1, 0xFF, 0xFE, 0x7F, 0xFF, 0x8F, 0xFF, 0xF8, 0x01, 0xFC, 0x00, 0x7F,
|
||||||
|
0x00, 0x73, 0xFF, 0xF0, 0x7F, 0xC0, 0xFC, 0x00, 0x3E, 0x00, 0x1F, 0x00,
|
||||||
|
0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x00, 0xF8, 0x00, 0x7C,
|
||||||
|
0x7C, 0x3E, 0xFF, 0x1F, 0xCF, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9,
|
||||||
|
0xF0, 0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0x83,
|
||||||
|
0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xFC, 0x7F, 0x39, 0xFB, 0xF7,
|
||||||
|
0xE7, 0x80, 0x00, 0x00, 0xFC, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C,
|
||||||
|
0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x7F, 0x03, 0xC0, 0xFC, 0x1F, 0x83, 0xF0,
|
||||||
|
0x3C, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E,
|
||||||
|
0x07, 0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7C, 0x0F, 0x81, 0xF0, 0x3E, 0x07,
|
||||||
|
0xC0, 0xF8, 0x1F, 0x03, 0xE0, 0x7D, 0xCF, 0xF9, 0xEE, 0x7C, 0xFF, 0x0F,
|
||||||
|
0x80, 0xFC, 0x00, 0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x00,
|
||||||
|
0x1F, 0x00, 0x07, 0xC0, 0x01, 0xF0, 0x00, 0x7C, 0x7F, 0x9F, 0x07, 0x87,
|
||||||
|
0xC1, 0x81, 0xF0, 0xC0, 0x7C, 0x60, 0x1F, 0x30, 0x07, 0xDE, 0x01, 0xFF,
|
||||||
|
0xC0, 0x7F, 0xF0, 0x1F, 0x3E, 0x07, 0xCF, 0xC1, 0xF1, 0xF8, 0x7C, 0x3E,
|
||||||
|
0x1F, 0x07, 0xC7, 0xC1, 0xFB, 0xF9, 0xFF, 0xFC, 0xF9, 0xF3, 0xE7, 0xCF,
|
||||||
|
0x9F, 0x3E, 0x7C, 0xF9, 0xF3, 0xE7, 0xCF, 0x9F, 0x3E, 0x7C, 0xF9, 0xF3,
|
||||||
|
0xE7, 0xCF, 0x9F, 0x7F, 0xFC, 0x7C, 0x1F, 0x0F, 0xBF, 0xCF, 0xF1, 0xF8,
|
||||||
|
0xFF, 0x3F, 0x3E, 0x0F, 0x83, 0xE7, 0xC1, 0xF0, 0x7C, 0xF8, 0x3E, 0x0F,
|
||||||
|
0x9F, 0x07, 0xC1, 0xF3, 0xE0, 0xF8, 0x3E, 0x7C, 0x1F, 0x07, 0xCF, 0x83,
|
||||||
|
0xE0, 0xF9, 0xF0, 0x7C, 0x1F, 0x3E, 0x0F, 0x83, 0xE7, 0xC1, 0xF0, 0x7C,
|
||||||
|
0xF8, 0x3E, 0x0F, 0x9F, 0x07, 0xC1, 0xF7, 0xF1, 0xFC, 0x7F, 0xFC, 0x7C,
|
||||||
|
0x3E, 0xFF, 0x1F, 0xCF, 0xCF, 0x83, 0xE7, 0xC1, 0xF3, 0xE0, 0xF9, 0xF0,
|
||||||
|
0x7C, 0xF8, 0x3E, 0x7C, 0x1F, 0x3E, 0x0F, 0x9F, 0x07, 0xCF, 0x83, 0xE7,
|
||||||
|
0xC1, 0xF3, 0xE0, 0xF9, 0xF0, 0x7D, 0xFC, 0x7F, 0x07, 0xF0, 0x0F, 0xFE,
|
||||||
|
0x0F, 0x8F, 0x8F, 0x87, 0xE7, 0xC1, 0xF7, 0xE0, 0xFF, 0xF0, 0x7F, 0xF8,
|
||||||
|
0x3F, 0xFC, 0x1F, 0xFE, 0x0F, 0xFF, 0x07, 0xEF, 0x83, 0xE7, 0xC1, 0xF1,
|
||||||
|
0xF1, 0xF0, 0x7F, 0xF0, 0x0F, 0xE0, 0xFE, 0x7C, 0x07, 0xDF, 0xE0, 0xFE,
|
||||||
|
0x3E, 0x1F, 0x07, 0xE3, 0xE0, 0x7C, 0x7C, 0x0F, 0xCF, 0x81, 0xF9, 0xF0,
|
||||||
|
0x3F, 0x3E, 0x07, 0xE7, 0xC0, 0xFC, 0xF8, 0x1F, 0x9F, 0x03, 0xE3, 0xE0,
|
||||||
|
0xFC, 0x7E, 0x3F, 0x0F, 0xBF, 0xC1, 0xF3, 0xE0, 0x3E, 0x00, 0x07, 0xC0,
|
||||||
|
0x00, 0xF8, 0x00, 0x1F, 0x00, 0x03, 0xE0, 0x00, 0x7E, 0x00, 0x1F, 0xE0,
|
||||||
|
0x00, 0x07, 0xC1, 0x0F, 0xF9, 0x8F, 0xCD, 0xCF, 0xC3, 0xE7, 0xC1, 0xF7,
|
||||||
|
0xE0, 0xFB, 0xF0, 0x7D, 0xF8, 0x3E, 0xFC, 0x1F, 0x7E, 0x0F, 0xBF, 0x07,
|
||||||
|
0xDF, 0x83, 0xE7, 0xE1, 0xF1, 0xF1, 0xF8, 0x7F, 0x7C, 0x1F, 0x3E, 0x00,
|
||||||
|
0x1F, 0x00, 0x0F, 0x80, 0x07, 0xC0, 0x03, 0xE0, 0x01, 0xF0, 0x01, 0xF8,
|
||||||
|
0x01, 0xFE, 0xFC, 0x73, 0xEF, 0xDF, 0xFE, 0xFC, 0xF7, 0xC3, 0xBE, 0x01,
|
||||||
|
0xF0, 0x0F, 0x80, 0x7C, 0x03, 0xE0, 0x1F, 0x00, 0xF8, 0x07, 0xC0, 0x3E,
|
||||||
|
0x01, 0xF0, 0x1F, 0xE0, 0x1E, 0x23, 0xFE, 0x70, 0xEE, 0x06, 0xE0, 0x2F,
|
||||||
|
0x80, 0xFF, 0x07, 0xFC, 0x3F, 0xE0, 0xFF, 0x81, 0xF8, 0x07, 0xC0, 0x7E,
|
||||||
|
0x0E, 0xBF, 0xC8, 0xF8, 0x04, 0x03, 0x01, 0xC0, 0xF0, 0x7C, 0x3F, 0xEF,
|
||||||
|
0xF9, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0, 0x7C, 0x1F, 0x07, 0xC1, 0xF0,
|
||||||
|
0x7C, 0x5F, 0x37, 0xF8, 0xFE, 0x1E, 0x00, 0xFC, 0x7F, 0x1F, 0x07, 0xC7,
|
||||||
|
0xC1, 0xF1, 0xF0, 0x7C, 0x7C, 0x1F, 0x1F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0,
|
||||||
|
0x7C, 0x7C, 0x1F, 0x1F, 0x07, 0xC7, 0xC1, 0xF1, 0xF0, 0x7C, 0x7C, 0x1F,
|
||||||
|
0x1F, 0x8F, 0xC3, 0xFD, 0xFC, 0x7C, 0x60, 0xFF, 0x9F, 0xBF, 0x83, 0x0F,
|
||||||
|
0x81, 0x87, 0xE0, 0x81, 0xF0, 0x40, 0xF8, 0x40, 0x3E, 0x20, 0x1F, 0x30,
|
||||||
|
0x07, 0xD0, 0x03, 0xF8, 0x00, 0xF8, 0x00, 0x7C, 0x00, 0x3C, 0x00, 0x0E,
|
||||||
|
0x00, 0x07, 0x00, 0x01, 0x00, 0xFF, 0x3F, 0xCF, 0x7E, 0x1F, 0x06, 0x3E,
|
||||||
|
0x0F, 0x06, 0x3E, 0x0F, 0x84, 0x1F, 0x0F, 0x8C, 0x1F, 0x1F, 0x88, 0x0F,
|
||||||
|
0x17, 0xC8, 0x0F, 0x97, 0xD8, 0x0F, 0xB3, 0xD0, 0x07, 0xE3, 0xF0, 0x07,
|
||||||
|
0xE3, 0xE0, 0x03, 0xC1, 0xE0, 0x03, 0xC1, 0xE0, 0x03, 0x81, 0xC0, 0x01,
|
||||||
|
0x80, 0xC0, 0x01, 0x80, 0x80, 0xFF, 0x3F, 0x7E, 0x0C, 0x3E, 0x08, 0x3F,
|
||||||
|
0x18, 0x1F, 0x30, 0x0F, 0xE0, 0x0F, 0xC0, 0x07, 0xE0, 0x03, 0xE0, 0x03,
|
||||||
|
0xF0, 0x05, 0xF8, 0x0C, 0xF8, 0x18, 0xFC, 0x30, 0x7E, 0x70, 0x7E, 0xFC,
|
||||||
|
0xFF, 0xFF, 0x3F, 0x7E, 0x0C, 0x7C, 0x0C, 0x3E, 0x08, 0x3E, 0x08, 0x1E,
|
||||||
|
0x18, 0x1F, 0x10, 0x0F, 0x30, 0x0F, 0xA0, 0x0F, 0xA0, 0x07, 0xE0, 0x07,
|
||||||
|
0xC0, 0x03, 0xC0, 0x03, 0x80, 0x01, 0x80, 0x01, 0x80, 0x01, 0x00, 0x01,
|
||||||
|
0x00, 0x61, 0x00, 0xF2, 0x00, 0xF6, 0x00, 0xFC, 0x00, 0x78, 0x00, 0x7F,
|
||||||
|
0xFD, 0xFF, 0xF7, 0x0F, 0xD0, 0x3E, 0x01, 0xF0, 0x0F, 0xC0, 0x3E, 0x01,
|
||||||
|
0xF0, 0x0F, 0xC0, 0x3E, 0x01, 0xF8, 0x0F, 0xC1, 0x3E, 0x05, 0xF8, 0x7F,
|
||||||
|
0xFF, 0xFF, 0xFF, 0x01, 0xE0, 0xF8, 0x3E, 0x07, 0x80, 0xF0, 0x1E, 0x03,
|
||||||
|
0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x07, 0x87,
|
||||||
|
0x80, 0x1E, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78,
|
||||||
|
0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF8, 0x0F, 0x80, 0x78, 0xFF, 0xFF,
|
||||||
|
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xF0, 0x0F, 0x80, 0xF0,
|
||||||
|
0x0F, 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F,
|
||||||
|
0x01, 0xE0, 0x3C, 0x03, 0xC0, 0x0F, 0x0F, 0x03, 0xC0, 0x78, 0x0F, 0x01,
|
||||||
|
0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x03, 0xE0,
|
||||||
|
0xF8, 0x3C, 0x00, 0x3E, 0x00, 0x7F, 0xC6, 0xFF, 0xFF, 0x61, 0xFE, 0x00,
|
||||||
|
0x7C};
|
||||||
|
|
||||||
|
const GFXglyph FreeSerifBold18pt7bGlyphs[] PROGMEM = {
|
||||||
|
{0, 0, 0, 9, 0, 1}, // 0x20 ' '
|
||||||
|
{0, 6, 24, 12, 3, -23}, // 0x21 '!'
|
||||||
|
{18, 13, 10, 19, 3, -23}, // 0x22 '"'
|
||||||
|
{35, 18, 24, 17, 0, -23}, // 0x23 '#'
|
||||||
|
{89, 15, 28, 17, 1, -25}, // 0x24 '$'
|
||||||
|
{142, 27, 24, 35, 4, -23}, // 0x25 '%'
|
||||||
|
{223, 26, 25, 29, 2, -23}, // 0x26 '&'
|
||||||
|
{305, 4, 10, 10, 3, -23}, // 0x27 '''
|
||||||
|
{310, 9, 30, 12, 2, -23}, // 0x28 '('
|
||||||
|
{344, 9, 30, 12, 1, -23}, // 0x29 ')'
|
||||||
|
{378, 14, 15, 18, 2, -23}, // 0x2A '*'
|
||||||
|
{405, 19, 19, 24, 2, -17}, // 0x2B '+'
|
||||||
|
{451, 6, 12, 9, 1, -5}, // 0x2C ','
|
||||||
|
{460, 8, 4, 12, 2, -9}, // 0x2D '-'
|
||||||
|
{464, 6, 6, 9, 1, -5}, // 0x2E '.'
|
||||||
|
{469, 11, 25, 10, -1, -23}, // 0x2F '/'
|
||||||
|
{504, 16, 24, 18, 1, -23}, // 0x30 '0'
|
||||||
|
{552, 12, 24, 18, 3, -23}, // 0x31 '1'
|
||||||
|
{588, 16, 24, 17, 1, -23}, // 0x32 '2'
|
||||||
|
{636, 16, 24, 18, 0, -23}, // 0x33 '3'
|
||||||
|
{684, 15, 24, 18, 1, -23}, // 0x34 '4'
|
||||||
|
{729, 15, 24, 18, 1, -23}, // 0x35 '5'
|
||||||
|
{774, 16, 24, 18, 1, -23}, // 0x36 '6'
|
||||||
|
{822, 16, 24, 17, 1, -23}, // 0x37 '7'
|
||||||
|
{870, 16, 24, 17, 1, -23}, // 0x38 '8'
|
||||||
|
{918, 16, 24, 18, 1, -23}, // 0x39 '9'
|
||||||
|
{966, 6, 16, 12, 3, -15}, // 0x3A ':'
|
||||||
|
{978, 7, 22, 12, 2, -15}, // 0x3B ';'
|
||||||
|
{998, 19, 20, 24, 2, -18}, // 0x3C '<'
|
||||||
|
{1046, 19, 12, 24, 2, -14}, // 0x3D '='
|
||||||
|
{1075, 19, 20, 24, 3, -18}, // 0x3E '>'
|
||||||
|
{1123, 14, 24, 18, 2, -23}, // 0x3F '?'
|
||||||
|
{1165, 24, 25, 33, 4, -23}, // 0x40 '@'
|
||||||
|
{1240, 24, 24, 25, 1, -23}, // 0x41 'A'
|
||||||
|
{1312, 21, 24, 23, 1, -23}, // 0x42 'B'
|
||||||
|
{1375, 23, 25, 25, 1, -23}, // 0x43 'C'
|
||||||
|
{1447, 23, 24, 26, 1, -23}, // 0x44 'D'
|
||||||
|
{1516, 21, 24, 23, 2, -23}, // 0x45 'E'
|
||||||
|
{1579, 19, 24, 22, 2, -23}, // 0x46 'F'
|
||||||
|
{1636, 25, 25, 27, 1, -23}, // 0x47 'G'
|
||||||
|
{1715, 24, 24, 27, 2, -23}, // 0x48 'H'
|
||||||
|
{1787, 11, 24, 14, 2, -23}, // 0x49 'I'
|
||||||
|
{1820, 16, 27, 18, 0, -23}, // 0x4A 'J'
|
||||||
|
{1874, 25, 24, 27, 2, -23}, // 0x4B 'K'
|
||||||
|
{1949, 21, 24, 23, 2, -23}, // 0x4C 'L'
|
||||||
|
{2012, 31, 24, 33, 1, -23}, // 0x4D 'M'
|
||||||
|
{2105, 23, 24, 25, 1, -23}, // 0x4E 'N'
|
||||||
|
{2174, 25, 25, 27, 1, -23}, // 0x4F 'O'
|
||||||
|
{2253, 19, 24, 22, 2, -23}, // 0x50 'P'
|
||||||
|
{2310, 25, 30, 27, 1, -23}, // 0x51 'Q'
|
||||||
|
{2404, 23, 24, 25, 2, -23}, // 0x52 'R'
|
||||||
|
{2473, 16, 25, 20, 2, -23}, // 0x53 'S'
|
||||||
|
{2523, 21, 24, 23, 1, -23}, // 0x54 'T'
|
||||||
|
{2586, 22, 25, 25, 2, -23}, // 0x55 'U'
|
||||||
|
{2655, 24, 24, 25, 0, -23}, // 0x56 'V'
|
||||||
|
{2727, 34, 25, 34, 0, -23}, // 0x57 'W'
|
||||||
|
{2834, 24, 24, 25, 1, -23}, // 0x58 'X'
|
||||||
|
{2906, 24, 24, 25, 1, -23}, // 0x59 'Y'
|
||||||
|
{2978, 21, 24, 23, 1, -23}, // 0x5A 'Z'
|
||||||
|
{3041, 8, 29, 12, 2, -23}, // 0x5B '['
|
||||||
|
{3070, 11, 25, 10, -1, -23}, // 0x5C '\'
|
||||||
|
{3105, 8, 29, 12, 2, -23}, // 0x5D ']'
|
||||||
|
{3134, 15, 13, 20, 3, -23}, // 0x5E '^'
|
||||||
|
{3159, 18, 3, 17, 0, 3}, // 0x5F '_'
|
||||||
|
{3166, 8, 6, 12, 0, -23}, // 0x60 '`'
|
||||||
|
{3172, 16, 16, 18, 1, -15}, // 0x61 'a'
|
||||||
|
{3204, 18, 24, 19, 1, -23}, // 0x62 'b'
|
||||||
|
{3258, 14, 16, 15, 1, -15}, // 0x63 'c'
|
||||||
|
{3286, 18, 24, 19, 1, -23}, // 0x64 'd'
|
||||||
|
{3340, 14, 16, 16, 1, -15}, // 0x65 'e'
|
||||||
|
{3368, 11, 24, 14, 2, -23}, // 0x66 'f'
|
||||||
|
{3401, 17, 23, 17, 1, -15}, // 0x67 'g'
|
||||||
|
{3450, 17, 24, 19, 1, -23}, // 0x68 'h'
|
||||||
|
{3501, 7, 24, 10, 2, -23}, // 0x69 'i'
|
||||||
|
{3522, 11, 31, 14, 0, -23}, // 0x6A 'j'
|
||||||
|
{3565, 18, 24, 19, 1, -23}, // 0x6B 'k'
|
||||||
|
{3619, 7, 24, 10, 1, -23}, // 0x6C 'l'
|
||||||
|
{3640, 27, 16, 29, 1, -15}, // 0x6D 'm'
|
||||||
|
{3694, 17, 16, 19, 1, -15}, // 0x6E 'n'
|
||||||
|
{3728, 17, 16, 18, 1, -15}, // 0x6F 'o'
|
||||||
|
{3762, 19, 23, 19, 0, -15}, // 0x70 'p'
|
||||||
|
{3817, 17, 23, 19, 1, -15}, // 0x71 'q'
|
||||||
|
{3866, 13, 16, 15, 1, -15}, // 0x72 'r'
|
||||||
|
{3892, 12, 16, 14, 1, -15}, // 0x73 's'
|
||||||
|
{3916, 10, 21, 12, 1, -20}, // 0x74 't'
|
||||||
|
{3943, 18, 16, 20, 1, -15}, // 0x75 'u'
|
||||||
|
{3979, 17, 16, 17, 0, -15}, // 0x76 'v'
|
||||||
|
{4013, 24, 16, 25, 0, -15}, // 0x77 'w'
|
||||||
|
{4061, 16, 16, 18, 1, -15}, // 0x78 'x'
|
||||||
|
{4093, 16, 23, 17, 0, -15}, // 0x79 'y'
|
||||||
|
{4139, 14, 16, 16, 0, -15}, // 0x7A 'z'
|
||||||
|
{4167, 11, 31, 14, 1, -24}, // 0x7B '{'
|
||||||
|
{4210, 3, 25, 8, 2, -23}, // 0x7C '|'
|
||||||
|
{4220, 11, 31, 14, 3, -24}, // 0x7D '}'
|
||||||
|
{4263, 16, 5, 18, 1, -11}}; // 0x7E '~'
|
||||||
|
|
||||||
|
const GFXfont FreeSerifBold18pt7b PROGMEM = {
|
||||||
|
(uint8_t *)FreeSerifBold18pt7bBitmaps,
|
||||||
|
(GFXglyph *)FreeSerifBold18pt7bGlyphs, 0x20, 0x7E, 42};
|
||||||
|
|
||||||
|
// Approx. 4945 bytes
|
||||||
@@ -0,0 +1,376 @@
|
|||||||
|
#include <GxEPD2_BW.h>
|
||||||
|
#include <GxEPD2_3C.h>
|
||||||
|
//#include <Fonts/FreeSerifBold18pt7b.h>
|
||||||
|
#include <DSEG7_Classic_Bold_58.h>
|
||||||
|
#include <Fonts/FreeMono9pt7b.h> // For IP and sync time
|
||||||
|
#include <TimeLib.h>
|
||||||
|
#include <WiFi.h>
|
||||||
|
#include <WiFiUdp.h>
|
||||||
|
|
||||||
|
// ESP32S3 pins
|
||||||
|
#define CS_PIN (10)
|
||||||
|
#define BUSY_PIN (3)
|
||||||
|
#define RES_PIN (46)
|
||||||
|
#define DC_PIN (9)
|
||||||
|
|
||||||
|
// Wi-Fi credentials (replace with your own)
|
||||||
|
const char* ssid = "Livebox-7E76";
|
||||||
|
const char* password = "oLkR9ngFR6hGSruH4y";
|
||||||
|
|
||||||
|
// NTP settings
|
||||||
|
const char* ntpServer = "fr.pool.ntp.org";
|
||||||
|
const int timeZone = 1; // Adjust for your timezone (e.g., CET = 1, CEST = 2)
|
||||||
|
WiFiUDP Udp;
|
||||||
|
unsigned long lastSyncTime = 0; // Last successful NTP sync (Unix timestamp)
|
||||||
|
|
||||||
|
// Buffer for NTP packets
|
||||||
|
static uint8_t ntpPacketBuffer[48];
|
||||||
|
|
||||||
|
// 1.54'' EPD Module
|
||||||
|
GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(CS_PIN, DC_PIN, RES_PIN, BUSY_PIN));
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
display.init(115200, true, 50, false);
|
||||||
|
|
||||||
|
// Connect to Wi-Fi
|
||||||
|
WiFi.begin(ssid, password);
|
||||||
|
while (WiFi.status() != WL_CONNECTED) {
|
||||||
|
delay(500);
|
||||||
|
Serial.print(".");
|
||||||
|
}
|
||||||
|
Serial.println("\nWiFi connected. IP: " + WiFi.localIP().toString());
|
||||||
|
|
||||||
|
// Sync time with NTP
|
||||||
|
syncNTPTime();
|
||||||
|
lastSyncTime = now(); // Record sync time
|
||||||
|
|
||||||
|
// Initial full screen update
|
||||||
|
updateFullScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Global variables
|
||||||
|
static uint8_t lastMinute = 0;
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
uint8_t currentMinute = minute();
|
||||||
|
uint8_t currentSecond = second();
|
||||||
|
|
||||||
|
if (currentMinute != lastMinute && currentSecond == 0) {
|
||||||
|
lastMinute = currentMinute;
|
||||||
|
updateFullScreen();
|
||||||
|
}
|
||||||
|
|
||||||
|
delay(100); // Reduce CPU usage
|
||||||
|
}
|
||||||
|
|
||||||
|
// Sync time with NTP server
|
||||||
|
void syncNTPTime() {
|
||||||
|
Udp.begin(2390); // Local port for NTP
|
||||||
|
setSyncProvider(getNtpTime);
|
||||||
|
setSyncInterval(3600); // Sync every hour (optional)
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t stratum = 0;
|
||||||
|
float rootDelay = 0;
|
||||||
|
|
||||||
|
// Fetch NTP time (callback for TimeLib)
|
||||||
|
time_t getNtpTime() {
|
||||||
|
// Send NTP request
|
||||||
|
sendNTPpacket(ntpServer);
|
||||||
|
|
||||||
|
// Wait for response (1.5s timeout)
|
||||||
|
uint32_t beginWait = millis();
|
||||||
|
while (millis() - beginWait < 1500) {
|
||||||
|
int size = Udp.parsePacket();
|
||||||
|
if (size >= 48) {
|
||||||
|
Udp.read(ntpPacketBuffer, 48); // Read packet into buffer
|
||||||
|
|
||||||
|
// --- Debug output ---
|
||||||
|
Serial.println("--- NTP Packet Details (Fixed Decoding) ---");
|
||||||
|
|
||||||
|
// --- Extract and decode all fields ---
|
||||||
|
// LI
|
||||||
|
// 0 = no warning
|
||||||
|
// 1 = last minute has 61 seconds
|
||||||
|
// 2 = last minute has 59 seconds
|
||||||
|
// 3 = unknown (clock unsynchronized)
|
||||||
|
uint8_t li = (ntpPacketBuffer[0] >> 6) & 0x03; // Leap Indicator (2 bits)
|
||||||
|
Serial.print("Leap Indicator: "); Serial.println(li);
|
||||||
|
|
||||||
|
//NTP version number, typically 4.
|
||||||
|
uint8_t vn = (ntpPacketBuffer[0] >> 3) & 0x07; // Version Number (3 bits)
|
||||||
|
Serial.print("Version: "); Serial.println(vn);
|
||||||
|
|
||||||
|
//Association mode:
|
||||||
|
//0 = reserved
|
||||||
|
//1 = symmetric active
|
||||||
|
//2 = symmetric passive
|
||||||
|
//3 = client
|
||||||
|
//4 = server
|
||||||
|
//5 = broadcast
|
||||||
|
//6 = control
|
||||||
|
//7 = private
|
||||||
|
uint8_t mode = ntpPacketBuffer[0] & 0x07; // Mode (3 bits)
|
||||||
|
Serial.print("Mode: "); Serial.println(mode);
|
||||||
|
|
||||||
|
// Stratum (byte 1)
|
||||||
|
// Indicates the distance from the reference clock.
|
||||||
|
// 0 = invalid
|
||||||
|
// 1 = primary server
|
||||||
|
// 2–15 = secondary
|
||||||
|
// 16 = unsynchronized
|
||||||
|
stratum = ntpPacketBuffer[1];
|
||||||
|
Serial.print("Stratum: "); Serial.println(stratum);
|
||||||
|
|
||||||
|
// Poll Interval (byte 2)
|
||||||
|
// Maximum interval between successive messages, in log₂(seconds). Typical range is 6 to 10.
|
||||||
|
// Example RAW=0 means that the poll interval is 1 second
|
||||||
|
int8_t pollIntervalRaw = ntpPacketBuffer[2];
|
||||||
|
Serial.print("Poll Interval RAW: "); Serial.println(pollIntervalRaw);
|
||||||
|
|
||||||
|
// Precision (byte 3)
|
||||||
|
// Signed log₂(seconds) of system clock precision (e.g., –18 ≈ 1 microsecond).
|
||||||
|
int8_t precisionRaw = ~(ntpPacketBuffer[3]);
|
||||||
|
Serial.print("Precision RAW: "); Serial.println(precisionRaw);
|
||||||
|
|
||||||
|
// Root Delay (bytes 4-7, 16.16 fixed-point)
|
||||||
|
// Total round-trip delay to the reference clock, in NTP short format.
|
||||||
|
// The NTP Short Format is a uint32_t with the first 16 bits being the seconds
|
||||||
|
//(i.e seconds = format >> 16) and the other 16 bits being the fraction
|
||||||
|
// of a second (i.e fraction = format & 0xFFFF). After converting I'd like the output as a double.
|
||||||
|
uint32_t rootDelayRaw = (ntpPacketBuffer[4] << 24) |
|
||||||
|
(ntpPacketBuffer[5] << 16) |
|
||||||
|
(ntpPacketBuffer[6] << 8) |
|
||||||
|
ntpPacketBuffer[7];
|
||||||
|
rootDelay = (rootDelayRaw >> 16) + ((rootDelayRaw & 0xFFFF) / 65536.0);
|
||||||
|
Serial.print("Root Delay: "); Serial.println(rootDelay, 6);
|
||||||
|
|
||||||
|
// Root Dispersion (bytes 8-11, 16.16 fixed-point)
|
||||||
|
// Total dispersion to the reference clock, in NTP short format.
|
||||||
|
uint32_t rootDispersionRaw = (ntpPacketBuffer[8] << 24) |
|
||||||
|
(ntpPacketBuffer[9] << 16) |
|
||||||
|
(ntpPacketBuffer[10] << 8) |
|
||||||
|
ntpPacketBuffer[11];
|
||||||
|
float rootDispersion = (rootDispersionRaw >> 16) + ((rootDispersionRaw & 0xFFFF) / 65536.0);
|
||||||
|
Serial.print("Root Dispersion: "); Serial.println(rootDispersion, 6);
|
||||||
|
|
||||||
|
// Reference Identifier (bytes 12-16)
|
||||||
|
// Identifies the specific server or reference clock; interpretation depends on Stratum.
|
||||||
|
// For packet stratum 0 (unspecified or invalid), this
|
||||||
|
// is a four-character ASCII [RFC1345] string, called the "kiss code",
|
||||||
|
// used for debugging and monitoring purposes. For stratum 1 (reference
|
||||||
|
// clock), this is a four-octet, left-justified, zero-padded ASCII
|
||||||
|
// string assigned to the reference clock. The authoritative list of
|
||||||
|
// Reference Identifiers is maintained by IANA; however, any string
|
||||||
|
// beginning with the ASCII character "X" is reserved for unregistered
|
||||||
|
// experimentation and development. The identifiers in Figure 12 have
|
||||||
|
// been used as ASCII identifiers:
|
||||||
|
// +------+----------------------------------------------------------+
|
||||||
|
// | ID | Clock Source |
|
||||||
|
// +------+----------------------------------------------------------+
|
||||||
|
// | GOES | Geosynchronous Orbit Environment Satellite |
|
||||||
|
// | GPS | Global Position System |
|
||||||
|
// | GAL | Galileo Positioning System |
|
||||||
|
// | PPS | Generic pulse-per-second |
|
||||||
|
// | IRIG | Inter-Range Instrumentation Group |
|
||||||
|
// | WWVB | LF Radio WWVB Ft. Collins, CO 60 kHz |
|
||||||
|
// | DCF | LF Radio DCF77 Mainflingen, DE 77.5 kHz |
|
||||||
|
// | HBG | LF Radio HBG Prangins, HB 75 kHz |
|
||||||
|
// | MSF | LF Radio MSF Anthorn, UK 60 kHz |
|
||||||
|
// | JJY | LF Radio JJY Fukushima, JP 40 kHz, Saga, JP 60 kHz |
|
||||||
|
// | LORC | MF Radio LORAN C station, 100 kHz |
|
||||||
|
// | TDF | MF Radio Allouis, FR 162 kHz |
|
||||||
|
// | CHU | HF Radio CHU Ottawa, Ontario |
|
||||||
|
// | WWV | HF Radio WWV Ft. Collins, CO |
|
||||||
|
// | WWVH | HF Radio WWVH Kauai, HI |
|
||||||
|
// | NIST | NIST telephone modem |
|
||||||
|
// | ACTS | NIST telephone modem |
|
||||||
|
// | USNO | USNO telephone modem |
|
||||||
|
// | PTB | European telephone modem |
|
||||||
|
// +------+----------------------------------------------------------+
|
||||||
|
Serial.print("Reference ID: ");
|
||||||
|
if (stratum <= 1 ) {
|
||||||
|
Serial.printf("%c.%c.%c.%c\n",
|
||||||
|
ntpPacketBuffer[12],
|
||||||
|
ntpPacketBuffer[13],
|
||||||
|
ntpPacketBuffer[14],
|
||||||
|
ntpPacketBuffer[15]);
|
||||||
|
} else if (stratum >= 2 && stratum <= 15) {
|
||||||
|
// Stratum 2-15: IPv4 address of the reference server
|
||||||
|
Serial.printf("%d.%d.%d.%d\n",
|
||||||
|
ntpPacketBuffer[12],
|
||||||
|
ntpPacketBuffer[13],
|
||||||
|
ntpPacketBuffer[14],
|
||||||
|
ntpPacketBuffer[15]);
|
||||||
|
} else if (stratum == 16) {
|
||||||
|
// Stratum 16: Unsynchronized (reserved)
|
||||||
|
Serial.println("Unsynchronized");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reference Timestamp (bytes 16-23)
|
||||||
|
// Time when the system clock was last set or corrected, in NTP timestamp format.
|
||||||
|
uint32_t referenceTimestampRaw = (ntpPacketBuffer[16] << 24) |
|
||||||
|
(ntpPacketBuffer[17] << 16) |
|
||||||
|
(ntpPacketBuffer[18] << 8) |
|
||||||
|
ntpPacketBuffer[19]; //by reading the first four bytes we ignore the decimal seconds part of the timestamp
|
||||||
|
time_t referenceTimestamp = referenceTimestampRaw - 2208988800UL + (timeZone * 3600);
|
||||||
|
Serial.print("Reference Timestamp: "); Serial.println(referenceTimestamp);
|
||||||
|
|
||||||
|
// Origin Timestamp (bytes 24-31)
|
||||||
|
// Time at the client when the request departed, in NTP timestamp format.
|
||||||
|
uint32_t originTimestampRaw = (ntpPacketBuffer[24] << 24) |
|
||||||
|
(ntpPacketBuffer[25] << 16) |
|
||||||
|
(ntpPacketBuffer[26] << 8) |
|
||||||
|
ntpPacketBuffer[27]; //by reading the first four bytes we ignore the decimal seconds part of the timestamp
|
||||||
|
time_t originTimestamp = originTimestampRaw - 2208988800UL + (timeZone * 3600);
|
||||||
|
Serial.print("Origin Timestamp: "); Serial.println(originTimestamp);
|
||||||
|
|
||||||
|
// Receive Timestamp (bytes 32-39)
|
||||||
|
// The local time, in timestamp format, when the latest NTP message arrived.
|
||||||
|
uint32_t receiveTimestampRaw = (ntpPacketBuffer[32] << 24) |
|
||||||
|
(ntpPacketBuffer[33] << 16) |
|
||||||
|
(ntpPacketBuffer[34] << 8) |
|
||||||
|
ntpPacketBuffer[35]; //by reading the first four bytes we ignore the decimal seconds part of the timestamp
|
||||||
|
time_t receiveTimestamp = receiveTimestampRaw - 2208988800UL + (timeZone * 3600);
|
||||||
|
Serial.print("Receive Timestamp: "); Serial.println(receiveTimestamp);
|
||||||
|
|
||||||
|
// Transmit timestamp (bytes 40-47)
|
||||||
|
//Time at the server when the response left, in NTP timestamp format.
|
||||||
|
uint32_t transmitTimestampRaw = (ntpPacketBuffer[40] << 24) |
|
||||||
|
(ntpPacketBuffer[41] << 16) |
|
||||||
|
(ntpPacketBuffer[42] << 8) |
|
||||||
|
ntpPacketBuffer[43]; //by reading the first four bytes we ignore the decimal seconds part of the timestamp
|
||||||
|
// Convert to Unix time (NTP time is seconds since 1900)
|
||||||
|
time_t transmitTimestamp = transmitTimestampRaw - 2208988800UL + (timeZone * 3600);
|
||||||
|
lastSyncTime = transmitTimestamp;
|
||||||
|
setTime(transmitTimestamp);
|
||||||
|
Serial.print("Transmit Timestamp: "); Serial.println(transmitTimestamp);
|
||||||
|
return transmitTimestamp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0; // Failed to sync
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send NTP request
|
||||||
|
void sendNTPpacket(const char* address) {
|
||||||
|
memset(ntpPacketBuffer, 0, 48);
|
||||||
|
// NTP request packet (see RFC 5905)
|
||||||
|
ntpPacketBuffer[0] = 0x1B; // LI=0, VN=3, Mode=3 (client)
|
||||||
|
Udp.beginPacket(address, 123); // NTP port
|
||||||
|
Udp.write(ntpPacketBuffer, 48);
|
||||||
|
Udp.endPacket();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update the full screen (IP, clock, last sync)
|
||||||
|
void updateFullScreen() {
|
||||||
|
display.setRotation(1);
|
||||||
|
display.setFullWindow();
|
||||||
|
display.firstPage();
|
||||||
|
do {
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
|
||||||
|
// --- Top: IP Address ---
|
||||||
|
display.setFont(&FreeMono9pt7b);
|
||||||
|
display.setTextSize(1);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
char ipStr[16];
|
||||||
|
sprintf(ipStr, "%d.%d.%d.%d", WiFi.localIP()[0], WiFi.localIP()[1], WiFi.localIP()[2], WiFi.localIP()[3]);
|
||||||
|
int16_t ipX = 5;
|
||||||
|
display.setCursor(ipX, 15);
|
||||||
|
display.print(ipStr);
|
||||||
|
|
||||||
|
// Internal temperature
|
||||||
|
float internalTemp = temperatureRead();
|
||||||
|
sprintf(ipStr, "Internal: %.1f C", internalTemp);
|
||||||
|
display.setCursor(ipX, 30);
|
||||||
|
display.print(ipStr);
|
||||||
|
|
||||||
|
// --- Center: Clock (HH:MM) ---
|
||||||
|
//display.setFont(&FreeSerifBold18pt7b);
|
||||||
|
display.setFont(&DSEG7_Classic_Bold_58);
|
||||||
|
display.setTextSize(1);
|
||||||
|
char timeStr[6];
|
||||||
|
sprintf(timeStr, "%02d:%02d", hour(), minute());
|
||||||
|
int16_t tbx, tby;
|
||||||
|
uint16_t tbw, tbh;
|
||||||
|
display.getTextBounds(timeStr, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
uint16_t x = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
uint16_t y = ((display.height() - tbh) / 2) - tby;
|
||||||
|
display.setCursor(x, y);
|
||||||
|
display.print(timeStr);
|
||||||
|
|
||||||
|
// --- Bottom: Last NTP Sync ---
|
||||||
|
display.setFont(&FreeMono9pt7b);
|
||||||
|
display.setTextSize(1);
|
||||||
|
char syncStr[20];
|
||||||
|
sprintf(syncStr, "Last sync: %02d:%02d", hour(lastSyncTime), minute(lastSyncTime));
|
||||||
|
//int16_t syncX = (display.width() - strlen(syncStr) * 6) / 2;
|
||||||
|
int16_t syncX = 5;
|
||||||
|
display.setCursor(syncX, display.height() - 5);
|
||||||
|
display.print(syncStr);
|
||||||
|
|
||||||
|
sprintf(syncStr, "Stratum: %02d", stratum);
|
||||||
|
//int16_t syncX = (display.width() - strlen(syncStr) * 6) / 2;
|
||||||
|
display.setCursor(syncX, display.height() - 20);
|
||||||
|
display.print(syncStr);
|
||||||
|
|
||||||
|
sprintf(syncStr, "Root Del: %.5f", rootDelay);
|
||||||
|
//int16_t syncX = (display.width() - strlen(syncStr) * 6) / 2;
|
||||||
|
display.setCursor(syncX, display.height() - 35);
|
||||||
|
display.print(syncStr);
|
||||||
|
|
||||||
|
if (stratum <= 1 ) {
|
||||||
|
// Stratum 1: 4 char code of the reference clock
|
||||||
|
sprintf(syncStr, "R: %c%c%c%c",
|
||||||
|
ntpPacketBuffer[12],
|
||||||
|
ntpPacketBuffer[13],
|
||||||
|
ntpPacketBuffer[14],
|
||||||
|
ntpPacketBuffer[15]);
|
||||||
|
} else if (stratum >= 2 && stratum <= 15) {
|
||||||
|
// Stratum 2-15: IPv4 address of the reference server
|
||||||
|
int count = (ntpPacketBuffer[12] >= 100) +
|
||||||
|
(ntpPacketBuffer[13] >= 100) +
|
||||||
|
(ntpPacketBuffer[14] >= 100) +
|
||||||
|
(ntpPacketBuffer[15] >= 100);
|
||||||
|
|
||||||
|
if(count == 4) { //At last 4 values are above 100 and below 255
|
||||||
|
sprintf(syncStr, "R:%d.%d.%d.%d",
|
||||||
|
ntpPacketBuffer[12],
|
||||||
|
ntpPacketBuffer[13],
|
||||||
|
ntpPacketBuffer[14],
|
||||||
|
ntpPacketBuffer[15]);
|
||||||
|
} else if (count == 3)
|
||||||
|
{
|
||||||
|
sprintf(syncStr, "Re:%d.%d.%d.%d",
|
||||||
|
ntpPacketBuffer[12],
|
||||||
|
ntpPacketBuffer[13],
|
||||||
|
ntpPacketBuffer[14],
|
||||||
|
ntpPacketBuffer[15]);
|
||||||
|
}else if (count == 2)
|
||||||
|
{
|
||||||
|
sprintf(syncStr, "Ref:%d.%d.%d.%d",
|
||||||
|
ntpPacketBuffer[12],
|
||||||
|
ntpPacketBuffer[13],
|
||||||
|
ntpPacketBuffer[14],
|
||||||
|
ntpPacketBuffer[15]);
|
||||||
|
}
|
||||||
|
else if (count <= 1)
|
||||||
|
{
|
||||||
|
sprintf(syncStr, "Ref :%d.%d.%d.%d",
|
||||||
|
ntpPacketBuffer[12],
|
||||||
|
ntpPacketBuffer[13],
|
||||||
|
ntpPacketBuffer[14],
|
||||||
|
ntpPacketBuffer[15]);
|
||||||
|
}
|
||||||
|
} else if (stratum == 16) {
|
||||||
|
// Stratum 16: Unsynchronized (reserved)
|
||||||
|
sprintf(syncStr, "Unsynchronized");
|
||||||
|
}
|
||||||
|
|
||||||
|
//int16_t syncX = (display.width() - strlen(syncStr) * 6) / 2;
|
||||||
|
display.setCursor(syncX, display.height() - 50);
|
||||||
|
display.print(syncStr);
|
||||||
|
|
||||||
|
} while (display.nextPage());
|
||||||
|
}
|
||||||
@@ -1,3 +1,63 @@
|
|||||||
# HorlogeImprimante3D
|
# HorlogeImprimante3D
|
||||||
|
|
||||||
Une petite horloge afin d'avoir une autre vision sur les timelapse. Par défaut les imprimantes Bambu offrent un "layer lapse" mais ils n'est pas possible de voir le temps s'écouler.
|
Une petite horloge afin d'avoir une autre vision sur les timelapse. Par défaut les imprimantes Bambu offrent un "layer lapse" mais ils n'est pas possible de voir le temps s'écouler.
|
||||||
|
|
||||||
|
L'idée est de mettre une petite horloge dans le fond afin d'afficher un 'chrono' du timelapse. Le premier modèle utilise un Arduino Nano et un afficheur LED 7 segments. L'alimentation pour cet afficheur est prise en parallèle sur l’alimentation de la l'éclairage interne a l'imprimante 3D.
|
||||||
|
|
||||||
|
L'idée étant que dès que la lumière s'allume en début d'impression, alors le compter commence a compter les minutes et les heures.
|
||||||
|
|
||||||
|
La grande problématique que j'ai eu était le contraste. Les LED sont trop puissantes pour l'éclairage dans la chambre d'impression. J'ai donc tenté du PWM sans réel succès car mon afficheur utilisait déjà certains timers pour le multiplexage. J'ai donc fini par garder la pleine puissance et scotcher du scotch bleu par dessus pour réduire l'intensité. J'aurais aussi pu jouer sur les valeurs des résistantes.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
J'ai choisi une autre route qui me paraissait plus intéressante : le e-paper (l'écran des Kindle ou des étiquettes de prix que l'on retrouve en supermarché)
|
||||||
|
|
||||||
|
Pour les achats ils faut uniquement deux éléments, le microcontrôleur et l'écran
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
J'ai mis un peu de temps à trouver :
|
||||||
|
- Les branchements à faire
|
||||||
|
- La librairie pour piloter cet écran
|
||||||
|
|
||||||
|
En effet il y a plusieurs variantes de librairies, plusieurs blogs ou explications différentes sur internet, mais aucune qui ne correspondait à cette configuration. J'ai donc fini par chercher un peu plus large et j'ai pu trouver la librairie adéquat sur le GIT du fabriquant : https://github.com/WeActStudio/WeActStudio.EpaperModule
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
A cela j'ai du télécharger des polices de caractères, j'en ai trouvé une bien qui s'appelle DSEG7 Classic. Par ailleurs un outil très utile permet de la redimensionner au pixel près. J'ai donc fait plusieurs itérations jusqu’à ce que la police prennes bien toute la largeur de mon afficheur. Ce site permet de télécharger et redimensionner les font : https://oleddisplay.squix.ch/
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Finalement j'ai du faire appel à un peu d'IA (Mistral.ai) et a la page Wikipedia décrivant le protocole NTP (permet de récupérer l'heure de serveurs sur un réseau). Les réponses ne sont pas utilisables telles quelles mais cela donne une bonne direction.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Avec tout cela j'ai développé le code nécessaire au pilotage de mon module sous Arduino Studio.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Le code est disponible sur ce GIT dans le dossier NTPClockEpaper
|
||||||
|
|
||||||
|
L'assemblage réalisé ne doit pas dépasser 35 mm de hauteur, sinon cela ne passe pas sous les mouvements du Core-XY de l'imprimante. J'ai donc fait au plus simple. L'écran fait 33 mm de hauteur ça passe tout juste.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Le câblage à la volée :
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Le petit boitier imprimé sur l'imprimante 3D
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Une des particularité du e-paper c'est qu'il ne consomme de l'énergie que lorsque l'affichage est mis à jour. C'est pour cette raison qu'on l'utilise pour afficher les prix sous les paquets en magasin, ça ne consomme rien ;)
|
||||||
|
|
||||||
|
Par contre cela fait aussi que l'affichage reste "figé" sur une image lorsqu'il n'est pas mis à jour. Cela à tendance à "user" l'écran et à le maquer. Au bout d'un moment si tous les pixels ne sont pas utiliser on peut voir une image fantôme se faire car tous les petits pigments ne tournent plus bien.
|
||||||
|
|
||||||
|
Après pour le positionnement le jeu est de trouver le bon endroit sans reflets :
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|||||||
|
After Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 50 KiB |
|
After Width: | Height: | Size: 35 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 78 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 138 KiB |
|
After Width: | Height: | Size: 113 KiB |
@@ -0,0 +1,19 @@
|
|||||||
|
## Contributions are welcome. Keep It Simple is the Goal.
|
||||||
|
|
||||||
|
### enhancement suggestions:
|
||||||
|
- please use the Arduino Forum Displays for questions or enhancement suggestions.
|
||||||
|
- questions and enhancement suggestions are an important source of inspiration for me.
|
||||||
|
- the Arduino Forum is my favorite source for learning about displays and processor boards.
|
||||||
|
- Keep It Simple: I will try to add enhancements to separate classes or subclasses.
|
||||||
|
|
||||||
|
### issues:
|
||||||
|
- issues should be reported in the Arduino Forum Displays.
|
||||||
|
- issues on GitHub are disabled; there were too many false issues.
|
||||||
|
- please post only issues that are real issues with this library!
|
||||||
|
|
||||||
|
### pull requests:
|
||||||
|
- pull requests are not welcome, will not be merged.
|
||||||
|
- pull requests can't be disabled, but will be closed.
|
||||||
|
- please place information about interesting fork additions in the Arduino Forum Displays.
|
||||||
|
|
||||||
|
## Thank you for all the inspiration I get for this library.
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
# GxEPD2
|
||||||
|
## Arduino Display Library for SPI E-Paper Displays
|
||||||
|
|
||||||
|
- With full Graphics and Text support using Adafruit_GFX
|
||||||
|
|
||||||
|
- For SPI e-paper displays from Dalian Good Display
|
||||||
|
- and SPI e-paper boards from Waveshare
|
||||||
|
|
||||||
|
### important note :
|
||||||
|
- the display panels are for 3.3V supply and 3.3V data lines
|
||||||
|
- never connect data lines directly to 5V Arduino data pins, use e.g. 4k7/10k resistor divider
|
||||||
|
- series resistor only is not enough for reliable operation (back-feed effect through protection diodes)
|
||||||
|
- 4k7/10k resistor divider may not work with flat cable extensions or Waveshare 4.2 board, use level converter then
|
||||||
|
- do not forget to connect GND
|
||||||
|
- the actual Waveshare display boards now have level converters and series regulator, safe for 5V
|
||||||
|
- use 3k3 pull-down on SS for ESP8266 for boards with level converters
|
||||||
|
|
||||||
|
## mapping suggestions
|
||||||
|
|
||||||
|
#### mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
|
||||||
|
- BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
|
||||||
|
- NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
|
||||||
|
- NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
- NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
#### mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
|
||||||
|
- BUSY -> GPIO4, RST -> GPIO2, DC -> GPIO0, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
- NOTE: connect 3.3k pull-down from GPIO15 to GND if your board or shield has level converters
|
||||||
|
- NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
- NOTE: connect 1k pull-up from GPIO2 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
#### mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
- BUSY -> GPIO5, RST -> GPIO2, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
- NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
- the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
#### mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
- BUSY -> GPIO16, RST -> GPIO5, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
- NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
- the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
#### mapping suggestion for ESP32, e.g. LOLIN32, see .../variants/.../pins_arduino.h for your board
|
||||||
|
- NOTE: there are variants with different pins for SPI ! CHECK SPI PINS OF YOUR BOARD
|
||||||
|
- BUSY -> 4, RST -> 16, DC -> 17, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
|
||||||
|
#### mapping of Waveshare ESP32 Driver Board
|
||||||
|
- BUSY -> 25, RST -> 26, DC -> 27, CS-> 15, CLK -> 13, DIN -> 14
|
||||||
|
- NOTE: this board uses "unusual" SPI pins and requires re-mapping of HW SPI to these pins in SPIClass
|
||||||
|
- see example GxEPD2_WS_ESP32_Driver.ino, it shows how this can be done easily
|
||||||
|
|
||||||
|
#### mapping suggestion for ESP32, e.g. LOLIN32 D32 PRO
|
||||||
|
- BUSY -> 15, RST -> 2, DC -> 0, CS -> 5, CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
- note: use explicit value for CS, as SS is re-defined to TF_CS(4) in pins_arduino.h for Board: "LOLIN D32 PRO"
|
||||||
|
|
||||||
|
#### mapping suggestion for ESP32, e.g. TTGO T8 ESP32-WROVER
|
||||||
|
- BUSY -> 4, RST -> 0, DC -> 2, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
- for use with Board: "ESP32 Dev Module":
|
||||||
|
|
||||||
|
#### new mapping suggestion for STM32F1, e.g. STM32F103C8T6 "BluePill"
|
||||||
|
- BUSY -> A1, RST -> A2, DC -> A3, CS-> A4, CLK -> A5, DIN -> A7
|
||||||
|
|
||||||
|
#### mapping suggestion for AVR, UNO, NANO etc.
|
||||||
|
- BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
#### mapping suggestion for AVR, Arduino Micro, Leonardo
|
||||||
|
- note: on Leonardo board HW SPI pins are on 6-pin ICSP header
|
||||||
|
- BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 15, DIN -> 16
|
||||||
|
|
||||||
|
#### mapping of Waveshare Universal e-Paper Raw Panel Driver Shield for Arduino / NUCLEO
|
||||||
|
- BUSY -> 7, RST -> 8, DC -> 9, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
#### mapping suggestion for Arduino MEGA
|
||||||
|
- BUSY -> 7, RST -> 9, DC -> 8, CS-> 53, CLK -> 52, DIN -> 51
|
||||||
|
|
||||||
|
#### mapping suggestion for Arduino DUE, note: pin 77 is on board pin 10, SS is 10
|
||||||
|
- BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 76, DIN -> 75
|
||||||
|
- SPI pins are on 6 pin 2x3 SPI header, no SS on SPI header!
|
||||||
|
|
||||||
|
#### mapping suggestion for Arduino MKR1000 or MKRZERO
|
||||||
|
- note: can't use SS on MKR1000: is defined as 24, should be 4
|
||||||
|
- BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
|
||||||
|
|
||||||
|
#### mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
|
||||||
|
- BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
#### mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
|
||||||
|
- BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
|
||||||
|
|
||||||
|
#### mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
|
||||||
|
- BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3
|
||||||
|
|
||||||
|
## connection scheme for (discontinued) DESTM32-S2 connection board for e-paper panels:
|
||||||
|
|
||||||
|
```
|
||||||
|
connection to the e-Paper display is through DESTM32-S2 connection board, available from Good Display
|
||||||
|
|
||||||
|
DESTM32-S2 pinout (top, component side view, solder side of connector):
|
||||||
|
|
||||||
|
|-------------------------------------------------
|
||||||
|
| VCC |o o| VCC 5V not needed
|
||||||
|
| GND |o o| GND GND
|
||||||
|
| 3.3 |o o| 3.3 3.3V
|
||||||
|
| nc |o o| nc
|
||||||
|
| nc |o o| nc
|
||||||
|
| nc |o o| nc
|
||||||
|
MOSI | DIN |o o| CLK SCK
|
||||||
|
SS | CS |o o| DC e.g. D3
|
||||||
|
D4 | RST |o o| BUSY e.g. D2
|
||||||
|
| nc |o o| BS GND
|
||||||
|
|-------------------------------------------------
|
||||||
|
```
|
||||||
@@ -0,0 +1,674 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 3, 29 June 2007
|
||||||
|
|
||||||
|
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The GNU General Public License is a free, copyleft license for
|
||||||
|
software and other kinds of works.
|
||||||
|
|
||||||
|
The licenses for most software and other practical works are designed
|
||||||
|
to take away your freedom to share and change the works. By contrast,
|
||||||
|
the GNU General Public License is intended to guarantee your freedom to
|
||||||
|
share and change all versions of a program--to make sure it remains free
|
||||||
|
software for all its users. We, the Free Software Foundation, use the
|
||||||
|
GNU General Public License for most of our software; it applies also to
|
||||||
|
any other work released this way by its authors. You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
them if you wish), that you receive source code or can get it if you
|
||||||
|
want it, that you can change the software or use pieces of it in new
|
||||||
|
free programs, and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to prevent others from denying you
|
||||||
|
these rights or asking you to surrender the rights. Therefore, you have
|
||||||
|
certain responsibilities if you distribute copies of the software, or if
|
||||||
|
you modify it: responsibilities to respect the freedom of others.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must pass on to the recipients the same
|
||||||
|
freedoms that you received. You must make sure that they, too, receive
|
||||||
|
or can get the source code. And you must show them these terms so they
|
||||||
|
know their rights.
|
||||||
|
|
||||||
|
Developers that use the GNU GPL protect your rights with two steps:
|
||||||
|
(1) assert copyright on the software, and (2) offer you this License
|
||||||
|
giving you legal permission to copy, distribute and/or modify it.
|
||||||
|
|
||||||
|
For the developers' and authors' protection, the GPL clearly explains
|
||||||
|
that there is no warranty for this free software. For both users' and
|
||||||
|
authors' sake, the GPL requires that modified versions be marked as
|
||||||
|
changed, so that their problems will not be attributed erroneously to
|
||||||
|
authors of previous versions.
|
||||||
|
|
||||||
|
Some devices are designed to deny users access to install or run
|
||||||
|
modified versions of the software inside them, although the manufacturer
|
||||||
|
can do so. This is fundamentally incompatible with the aim of
|
||||||
|
protecting users' freedom to change the software. The systematic
|
||||||
|
pattern of such abuse occurs in the area of products for individuals to
|
||||||
|
use, which is precisely where it is most unacceptable. Therefore, we
|
||||||
|
have designed this version of the GPL to prohibit the practice for those
|
||||||
|
products. If such problems arise substantially in other domains, we
|
||||||
|
stand ready to extend this provision to those domains in future versions
|
||||||
|
of the GPL, as needed to protect the freedom of users.
|
||||||
|
|
||||||
|
Finally, every program is threatened constantly by software patents.
|
||||||
|
States should not allow patents to restrict development and use of
|
||||||
|
software on general-purpose computers, but in those that do, we wish to
|
||||||
|
avoid the special danger that patents applied to a free program could
|
||||||
|
make it effectively proprietary. To prevent this, the GPL assures that
|
||||||
|
patents cannot be used to render the program non-free.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
0. Definitions.
|
||||||
|
|
||||||
|
"This License" refers to version 3 of the GNU General Public License.
|
||||||
|
|
||||||
|
"Copyright" also means copyright-like laws that apply to other kinds of
|
||||||
|
works, such as semiconductor masks.
|
||||||
|
|
||||||
|
"The Program" refers to any copyrightable work licensed under this
|
||||||
|
License. Each licensee is addressed as "you". "Licensees" and
|
||||||
|
"recipients" may be individuals or organizations.
|
||||||
|
|
||||||
|
To "modify" a work means to copy from or adapt all or part of the work
|
||||||
|
in a fashion requiring copyright permission, other than the making of an
|
||||||
|
exact copy. The resulting work is called a "modified version" of the
|
||||||
|
earlier work or a work "based on" the earlier work.
|
||||||
|
|
||||||
|
A "covered work" means either the unmodified Program or a work based
|
||||||
|
on the Program.
|
||||||
|
|
||||||
|
To "propagate" a work means to do anything with it that, without
|
||||||
|
permission, would make you directly or secondarily liable for
|
||||||
|
infringement under applicable copyright law, except executing it on a
|
||||||
|
computer or modifying a private copy. Propagation includes copying,
|
||||||
|
distribution (with or without modification), making available to the
|
||||||
|
public, and in some countries other activities as well.
|
||||||
|
|
||||||
|
To "convey" a work means any kind of propagation that enables other
|
||||||
|
parties to make or receive copies. Mere interaction with a user through
|
||||||
|
a computer network, with no transfer of a copy, is not conveying.
|
||||||
|
|
||||||
|
An interactive user interface displays "Appropriate Legal Notices"
|
||||||
|
to the extent that it includes a convenient and prominently visible
|
||||||
|
feature that (1) displays an appropriate copyright notice, and (2)
|
||||||
|
tells the user that there is no warranty for the work (except to the
|
||||||
|
extent that warranties are provided), that licensees may convey the
|
||||||
|
work under this License, and how to view a copy of this License. If
|
||||||
|
the interface presents a list of user commands or options, such as a
|
||||||
|
menu, a prominent item in the list meets this criterion.
|
||||||
|
|
||||||
|
1. Source Code.
|
||||||
|
|
||||||
|
The "source code" for a work means the preferred form of the work
|
||||||
|
for making modifications to it. "Object code" means any non-source
|
||||||
|
form of a work.
|
||||||
|
|
||||||
|
A "Standard Interface" means an interface that either is an official
|
||||||
|
standard defined by a recognized standards body, or, in the case of
|
||||||
|
interfaces specified for a particular programming language, one that
|
||||||
|
is widely used among developers working in that language.
|
||||||
|
|
||||||
|
The "System Libraries" of an executable work include anything, other
|
||||||
|
than the work as a whole, that (a) is included in the normal form of
|
||||||
|
packaging a Major Component, but which is not part of that Major
|
||||||
|
Component, and (b) serves only to enable use of the work with that
|
||||||
|
Major Component, or to implement a Standard Interface for which an
|
||||||
|
implementation is available to the public in source code form. A
|
||||||
|
"Major Component", in this context, means a major essential component
|
||||||
|
(kernel, window system, and so on) of the specific operating system
|
||||||
|
(if any) on which the executable work runs, or a compiler used to
|
||||||
|
produce the work, or an object code interpreter used to run it.
|
||||||
|
|
||||||
|
The "Corresponding Source" for a work in object code form means all
|
||||||
|
the source code needed to generate, install, and (for an executable
|
||||||
|
work) run the object code and to modify the work, including scripts to
|
||||||
|
control those activities. However, it does not include the work's
|
||||||
|
System Libraries, or general-purpose tools or generally available free
|
||||||
|
programs which are used unmodified in performing those activities but
|
||||||
|
which are not part of the work. For example, Corresponding Source
|
||||||
|
includes interface definition files associated with source files for
|
||||||
|
the work, and the source code for shared libraries and dynamically
|
||||||
|
linked subprograms that the work is specifically designed to require,
|
||||||
|
such as by intimate data communication or control flow between those
|
||||||
|
subprograms and other parts of the work.
|
||||||
|
|
||||||
|
The Corresponding Source need not include anything that users
|
||||||
|
can regenerate automatically from other parts of the Corresponding
|
||||||
|
Source.
|
||||||
|
|
||||||
|
The Corresponding Source for a work in source code form is that
|
||||||
|
same work.
|
||||||
|
|
||||||
|
2. Basic Permissions.
|
||||||
|
|
||||||
|
All rights granted under this License are granted for the term of
|
||||||
|
copyright on the Program, and are irrevocable provided the stated
|
||||||
|
conditions are met. This License explicitly affirms your unlimited
|
||||||
|
permission to run the unmodified Program. The output from running a
|
||||||
|
covered work is covered by this License only if the output, given its
|
||||||
|
content, constitutes a covered work. This License acknowledges your
|
||||||
|
rights of fair use or other equivalent, as provided by copyright law.
|
||||||
|
|
||||||
|
You may make, run and propagate covered works that you do not
|
||||||
|
convey, without conditions so long as your license otherwise remains
|
||||||
|
in force. You may convey covered works to others for the sole purpose
|
||||||
|
of having them make modifications exclusively for you, or provide you
|
||||||
|
with facilities for running those works, provided that you comply with
|
||||||
|
the terms of this License in conveying all material for which you do
|
||||||
|
not control copyright. Those thus making or running the covered works
|
||||||
|
for you must do so exclusively on your behalf, under your direction
|
||||||
|
and control, on terms that prohibit them from making any copies of
|
||||||
|
your copyrighted material outside their relationship with you.
|
||||||
|
|
||||||
|
Conveying under any other circumstances is permitted solely under
|
||||||
|
the conditions stated below. Sublicensing is not allowed; section 10
|
||||||
|
makes it unnecessary.
|
||||||
|
|
||||||
|
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
||||||
|
|
||||||
|
No covered work shall be deemed part of an effective technological
|
||||||
|
measure under any applicable law fulfilling obligations under article
|
||||||
|
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
||||||
|
similar laws prohibiting or restricting circumvention of such
|
||||||
|
measures.
|
||||||
|
|
||||||
|
When you convey a covered work, you waive any legal power to forbid
|
||||||
|
circumvention of technological measures to the extent such circumvention
|
||||||
|
is effected by exercising rights under this License with respect to
|
||||||
|
the covered work, and you disclaim any intention to limit operation or
|
||||||
|
modification of the work as a means of enforcing, against the work's
|
||||||
|
users, your or third parties' legal rights to forbid circumvention of
|
||||||
|
technological measures.
|
||||||
|
|
||||||
|
4. Conveying Verbatim Copies.
|
||||||
|
|
||||||
|
You may convey verbatim copies of the Program's source code as you
|
||||||
|
receive it, in any medium, provided that you conspicuously and
|
||||||
|
appropriately publish on each copy an appropriate copyright notice;
|
||||||
|
keep intact all notices stating that this License and any
|
||||||
|
non-permissive terms added in accord with section 7 apply to the code;
|
||||||
|
keep intact all notices of the absence of any warranty; and give all
|
||||||
|
recipients a copy of this License along with the Program.
|
||||||
|
|
||||||
|
You may charge any price or no price for each copy that you convey,
|
||||||
|
and you may offer support or warranty protection for a fee.
|
||||||
|
|
||||||
|
5. Conveying Modified Source Versions.
|
||||||
|
|
||||||
|
You may convey a work based on the Program, or the modifications to
|
||||||
|
produce it from the Program, in the form of source code under the
|
||||||
|
terms of section 4, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) The work must carry prominent notices stating that you modified
|
||||||
|
it, and giving a relevant date.
|
||||||
|
|
||||||
|
b) The work must carry prominent notices stating that it is
|
||||||
|
released under this License and any conditions added under section
|
||||||
|
7. This requirement modifies the requirement in section 4 to
|
||||||
|
"keep intact all notices".
|
||||||
|
|
||||||
|
c) You must license the entire work, as a whole, under this
|
||||||
|
License to anyone who comes into possession of a copy. This
|
||||||
|
License will therefore apply, along with any applicable section 7
|
||||||
|
additional terms, to the whole of the work, and all its parts,
|
||||||
|
regardless of how they are packaged. This License gives no
|
||||||
|
permission to license the work in any other way, but it does not
|
||||||
|
invalidate such permission if you have separately received it.
|
||||||
|
|
||||||
|
d) If the work has interactive user interfaces, each must display
|
||||||
|
Appropriate Legal Notices; however, if the Program has interactive
|
||||||
|
interfaces that do not display Appropriate Legal Notices, your
|
||||||
|
work need not make them do so.
|
||||||
|
|
||||||
|
A compilation of a covered work with other separate and independent
|
||||||
|
works, which are not by their nature extensions of the covered work,
|
||||||
|
and which are not combined with it such as to form a larger program,
|
||||||
|
in or on a volume of a storage or distribution medium, is called an
|
||||||
|
"aggregate" if the compilation and its resulting copyright are not
|
||||||
|
used to limit the access or legal rights of the compilation's users
|
||||||
|
beyond what the individual works permit. Inclusion of a covered work
|
||||||
|
in an aggregate does not cause this License to apply to the other
|
||||||
|
parts of the aggregate.
|
||||||
|
|
||||||
|
6. Conveying Non-Source Forms.
|
||||||
|
|
||||||
|
You may convey a covered work in object code form under the terms
|
||||||
|
of sections 4 and 5, provided that you also convey the
|
||||||
|
machine-readable Corresponding Source under the terms of this License,
|
||||||
|
in one of these ways:
|
||||||
|
|
||||||
|
a) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by the
|
||||||
|
Corresponding Source fixed on a durable physical medium
|
||||||
|
customarily used for software interchange.
|
||||||
|
|
||||||
|
b) Convey the object code in, or embodied in, a physical product
|
||||||
|
(including a physical distribution medium), accompanied by a
|
||||||
|
written offer, valid for at least three years and valid for as
|
||||||
|
long as you offer spare parts or customer support for that product
|
||||||
|
model, to give anyone who possesses the object code either (1) a
|
||||||
|
copy of the Corresponding Source for all the software in the
|
||||||
|
product that is covered by this License, on a durable physical
|
||||||
|
medium customarily used for software interchange, for a price no
|
||||||
|
more than your reasonable cost of physically performing this
|
||||||
|
conveying of source, or (2) access to copy the
|
||||||
|
Corresponding Source from a network server at no charge.
|
||||||
|
|
||||||
|
c) Convey individual copies of the object code with a copy of the
|
||||||
|
written offer to provide the Corresponding Source. This
|
||||||
|
alternative is allowed only occasionally and noncommercially, and
|
||||||
|
only if you received the object code with such an offer, in accord
|
||||||
|
with subsection 6b.
|
||||||
|
|
||||||
|
d) Convey the object code by offering access from a designated
|
||||||
|
place (gratis or for a charge), and offer equivalent access to the
|
||||||
|
Corresponding Source in the same way through the same place at no
|
||||||
|
further charge. You need not require recipients to copy the
|
||||||
|
Corresponding Source along with the object code. If the place to
|
||||||
|
copy the object code is a network server, the Corresponding Source
|
||||||
|
may be on a different server (operated by you or a third party)
|
||||||
|
that supports equivalent copying facilities, provided you maintain
|
||||||
|
clear directions next to the object code saying where to find the
|
||||||
|
Corresponding Source. Regardless of what server hosts the
|
||||||
|
Corresponding Source, you remain obligated to ensure that it is
|
||||||
|
available for as long as needed to satisfy these requirements.
|
||||||
|
|
||||||
|
e) Convey the object code using peer-to-peer transmission, provided
|
||||||
|
you inform other peers where the object code and Corresponding
|
||||||
|
Source of the work are being offered to the general public at no
|
||||||
|
charge under subsection 6d.
|
||||||
|
|
||||||
|
A separable portion of the object code, whose source code is excluded
|
||||||
|
from the Corresponding Source as a System Library, need not be
|
||||||
|
included in conveying the object code work.
|
||||||
|
|
||||||
|
A "User Product" is either (1) a "consumer product", which means any
|
||||||
|
tangible personal property which is normally used for personal, family,
|
||||||
|
or household purposes, or (2) anything designed or sold for incorporation
|
||||||
|
into a dwelling. In determining whether a product is a consumer product,
|
||||||
|
doubtful cases shall be resolved in favor of coverage. For a particular
|
||||||
|
product received by a particular user, "normally used" refers to a
|
||||||
|
typical or common use of that class of product, regardless of the status
|
||||||
|
of the particular user or of the way in which the particular user
|
||||||
|
actually uses, or expects or is expected to use, the product. A product
|
||||||
|
is a consumer product regardless of whether the product has substantial
|
||||||
|
commercial, industrial or non-consumer uses, unless such uses represent
|
||||||
|
the only significant mode of use of the product.
|
||||||
|
|
||||||
|
"Installation Information" for a User Product means any methods,
|
||||||
|
procedures, authorization keys, or other information required to install
|
||||||
|
and execute modified versions of a covered work in that User Product from
|
||||||
|
a modified version of its Corresponding Source. The information must
|
||||||
|
suffice to ensure that the continued functioning of the modified object
|
||||||
|
code is in no case prevented or interfered with solely because
|
||||||
|
modification has been made.
|
||||||
|
|
||||||
|
If you convey an object code work under this section in, or with, or
|
||||||
|
specifically for use in, a User Product, and the conveying occurs as
|
||||||
|
part of a transaction in which the right of possession and use of the
|
||||||
|
User Product is transferred to the recipient in perpetuity or for a
|
||||||
|
fixed term (regardless of how the transaction is characterized), the
|
||||||
|
Corresponding Source conveyed under this section must be accompanied
|
||||||
|
by the Installation Information. But this requirement does not apply
|
||||||
|
if neither you nor any third party retains the ability to install
|
||||||
|
modified object code on the User Product (for example, the work has
|
||||||
|
been installed in ROM).
|
||||||
|
|
||||||
|
The requirement to provide Installation Information does not include a
|
||||||
|
requirement to continue to provide support service, warranty, or updates
|
||||||
|
for a work that has been modified or installed by the recipient, or for
|
||||||
|
the User Product in which it has been modified or installed. Access to a
|
||||||
|
network may be denied when the modification itself materially and
|
||||||
|
adversely affects the operation of the network or violates the rules and
|
||||||
|
protocols for communication across the network.
|
||||||
|
|
||||||
|
Corresponding Source conveyed, and Installation Information provided,
|
||||||
|
in accord with this section must be in a format that is publicly
|
||||||
|
documented (and with an implementation available to the public in
|
||||||
|
source code form), and must require no special password or key for
|
||||||
|
unpacking, reading or copying.
|
||||||
|
|
||||||
|
7. Additional Terms.
|
||||||
|
|
||||||
|
"Additional permissions" are terms that supplement the terms of this
|
||||||
|
License by making exceptions from one or more of its conditions.
|
||||||
|
Additional permissions that are applicable to the entire Program shall
|
||||||
|
be treated as though they were included in this License, to the extent
|
||||||
|
that they are valid under applicable law. If additional permissions
|
||||||
|
apply only to part of the Program, that part may be used separately
|
||||||
|
under those permissions, but the entire Program remains governed by
|
||||||
|
this License without regard to the additional permissions.
|
||||||
|
|
||||||
|
When you convey a copy of a covered work, you may at your option
|
||||||
|
remove any additional permissions from that copy, or from any part of
|
||||||
|
it. (Additional permissions may be written to require their own
|
||||||
|
removal in certain cases when you modify the work.) You may place
|
||||||
|
additional permissions on material, added by you to a covered work,
|
||||||
|
for which you have or can give appropriate copyright permission.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, for material you
|
||||||
|
add to a covered work, you may (if authorized by the copyright holders of
|
||||||
|
that material) supplement the terms of this License with terms:
|
||||||
|
|
||||||
|
a) Disclaiming warranty or limiting liability differently from the
|
||||||
|
terms of sections 15 and 16 of this License; or
|
||||||
|
|
||||||
|
b) Requiring preservation of specified reasonable legal notices or
|
||||||
|
author attributions in that material or in the Appropriate Legal
|
||||||
|
Notices displayed by works containing it; or
|
||||||
|
|
||||||
|
c) Prohibiting misrepresentation of the origin of that material, or
|
||||||
|
requiring that modified versions of such material be marked in
|
||||||
|
reasonable ways as different from the original version; or
|
||||||
|
|
||||||
|
d) Limiting the use for publicity purposes of names of licensors or
|
||||||
|
authors of the material; or
|
||||||
|
|
||||||
|
e) Declining to grant rights under trademark law for use of some
|
||||||
|
trade names, trademarks, or service marks; or
|
||||||
|
|
||||||
|
f) Requiring indemnification of licensors and authors of that
|
||||||
|
material by anyone who conveys the material (or modified versions of
|
||||||
|
it) with contractual assumptions of liability to the recipient, for
|
||||||
|
any liability that these contractual assumptions directly impose on
|
||||||
|
those licensors and authors.
|
||||||
|
|
||||||
|
All other non-permissive additional terms are considered "further
|
||||||
|
restrictions" within the meaning of section 10. If the Program as you
|
||||||
|
received it, or any part of it, contains a notice stating that it is
|
||||||
|
governed by this License along with a term that is a further
|
||||||
|
restriction, you may remove that term. If a license document contains
|
||||||
|
a further restriction but permits relicensing or conveying under this
|
||||||
|
License, you may add to a covered work material governed by the terms
|
||||||
|
of that license document, provided that the further restriction does
|
||||||
|
not survive such relicensing or conveying.
|
||||||
|
|
||||||
|
If you add terms to a covered work in accord with this section, you
|
||||||
|
must place, in the relevant source files, a statement of the
|
||||||
|
additional terms that apply to those files, or a notice indicating
|
||||||
|
where to find the applicable terms.
|
||||||
|
|
||||||
|
Additional terms, permissive or non-permissive, may be stated in the
|
||||||
|
form of a separately written license, or stated as exceptions;
|
||||||
|
the above requirements apply either way.
|
||||||
|
|
||||||
|
8. Termination.
|
||||||
|
|
||||||
|
You may not propagate or modify a covered work except as expressly
|
||||||
|
provided under this License. Any attempt otherwise to propagate or
|
||||||
|
modify it is void, and will automatically terminate your rights under
|
||||||
|
this License (including any patent licenses granted under the third
|
||||||
|
paragraph of section 11).
|
||||||
|
|
||||||
|
However, if you cease all violation of this License, then your
|
||||||
|
license from a particular copyright holder is reinstated (a)
|
||||||
|
provisionally, unless and until the copyright holder explicitly and
|
||||||
|
finally terminates your license, and (b) permanently, if the copyright
|
||||||
|
holder fails to notify you of the violation by some reasonable means
|
||||||
|
prior to 60 days after the cessation.
|
||||||
|
|
||||||
|
Moreover, your license from a particular copyright holder is
|
||||||
|
reinstated permanently if the copyright holder notifies you of the
|
||||||
|
violation by some reasonable means, this is the first time you have
|
||||||
|
received notice of violation of this License (for any work) from that
|
||||||
|
copyright holder, and you cure the violation prior to 30 days after
|
||||||
|
your receipt of the notice.
|
||||||
|
|
||||||
|
Termination of your rights under this section does not terminate the
|
||||||
|
licenses of parties who have received copies or rights from you under
|
||||||
|
this License. If your rights have been terminated and not permanently
|
||||||
|
reinstated, you do not qualify to receive new licenses for the same
|
||||||
|
material under section 10.
|
||||||
|
|
||||||
|
9. Acceptance Not Required for Having Copies.
|
||||||
|
|
||||||
|
You are not required to accept this License in order to receive or
|
||||||
|
run a copy of the Program. Ancillary propagation of a covered work
|
||||||
|
occurring solely as a consequence of using peer-to-peer transmission
|
||||||
|
to receive a copy likewise does not require acceptance. However,
|
||||||
|
nothing other than this License grants you permission to propagate or
|
||||||
|
modify any covered work. These actions infringe copyright if you do
|
||||||
|
not accept this License. Therefore, by modifying or propagating a
|
||||||
|
covered work, you indicate your acceptance of this License to do so.
|
||||||
|
|
||||||
|
10. Automatic Licensing of Downstream Recipients.
|
||||||
|
|
||||||
|
Each time you convey a covered work, the recipient automatically
|
||||||
|
receives a license from the original licensors, to run, modify and
|
||||||
|
propagate that work, subject to this License. You are not responsible
|
||||||
|
for enforcing compliance by third parties with this License.
|
||||||
|
|
||||||
|
An "entity transaction" is a transaction transferring control of an
|
||||||
|
organization, or substantially all assets of one, or subdividing an
|
||||||
|
organization, or merging organizations. If propagation of a covered
|
||||||
|
work results from an entity transaction, each party to that
|
||||||
|
transaction who receives a copy of the work also receives whatever
|
||||||
|
licenses to the work the party's predecessor in interest had or could
|
||||||
|
give under the previous paragraph, plus a right to possession of the
|
||||||
|
Corresponding Source of the work from the predecessor in interest, if
|
||||||
|
the predecessor has it or can get it with reasonable efforts.
|
||||||
|
|
||||||
|
You may not impose any further restrictions on the exercise of the
|
||||||
|
rights granted or affirmed under this License. For example, you may
|
||||||
|
not impose a license fee, royalty, or other charge for exercise of
|
||||||
|
rights granted under this License, and you may not initiate litigation
|
||||||
|
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
||||||
|
any patent claim is infringed by making, using, selling, offering for
|
||||||
|
sale, or importing the Program or any portion of it.
|
||||||
|
|
||||||
|
11. Patents.
|
||||||
|
|
||||||
|
A "contributor" is a copyright holder who authorizes use under this
|
||||||
|
License of the Program or a work on which the Program is based. The
|
||||||
|
work thus licensed is called the contributor's "contributor version".
|
||||||
|
|
||||||
|
A contributor's "essential patent claims" are all patent claims
|
||||||
|
owned or controlled by the contributor, whether already acquired or
|
||||||
|
hereafter acquired, that would be infringed by some manner, permitted
|
||||||
|
by this License, of making, using, or selling its contributor version,
|
||||||
|
but do not include claims that would be infringed only as a
|
||||||
|
consequence of further modification of the contributor version. For
|
||||||
|
purposes of this definition, "control" includes the right to grant
|
||||||
|
patent sublicenses in a manner consistent with the requirements of
|
||||||
|
this License.
|
||||||
|
|
||||||
|
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
||||||
|
patent license under the contributor's essential patent claims, to
|
||||||
|
make, use, sell, offer for sale, import and otherwise run, modify and
|
||||||
|
propagate the contents of its contributor version.
|
||||||
|
|
||||||
|
In the following three paragraphs, a "patent license" is any express
|
||||||
|
agreement or commitment, however denominated, not to enforce a patent
|
||||||
|
(such as an express permission to practice a patent or covenant not to
|
||||||
|
sue for patent infringement). To "grant" such a patent license to a
|
||||||
|
party means to make such an agreement or commitment not to enforce a
|
||||||
|
patent against the party.
|
||||||
|
|
||||||
|
If you convey a covered work, knowingly relying on a patent license,
|
||||||
|
and the Corresponding Source of the work is not available for anyone
|
||||||
|
to copy, free of charge and under the terms of this License, through a
|
||||||
|
publicly available network server or other readily accessible means,
|
||||||
|
then you must either (1) cause the Corresponding Source to be so
|
||||||
|
available, or (2) arrange to deprive yourself of the benefit of the
|
||||||
|
patent license for this particular work, or (3) arrange, in a manner
|
||||||
|
consistent with the requirements of this License, to extend the patent
|
||||||
|
license to downstream recipients. "Knowingly relying" means you have
|
||||||
|
actual knowledge that, but for the patent license, your conveying the
|
||||||
|
covered work in a country, or your recipient's use of the covered work
|
||||||
|
in a country, would infringe one or more identifiable patents in that
|
||||||
|
country that you have reason to believe are valid.
|
||||||
|
|
||||||
|
If, pursuant to or in connection with a single transaction or
|
||||||
|
arrangement, you convey, or propagate by procuring conveyance of, a
|
||||||
|
covered work, and grant a patent license to some of the parties
|
||||||
|
receiving the covered work authorizing them to use, propagate, modify
|
||||||
|
or convey a specific copy of the covered work, then the patent license
|
||||||
|
you grant is automatically extended to all recipients of the covered
|
||||||
|
work and works based on it.
|
||||||
|
|
||||||
|
A patent license is "discriminatory" if it does not include within
|
||||||
|
the scope of its coverage, prohibits the exercise of, or is
|
||||||
|
conditioned on the non-exercise of one or more of the rights that are
|
||||||
|
specifically granted under this License. You may not convey a covered
|
||||||
|
work if you are a party to an arrangement with a third party that is
|
||||||
|
in the business of distributing software, under which you make payment
|
||||||
|
to the third party based on the extent of your activity of conveying
|
||||||
|
the work, and under which the third party grants, to any of the
|
||||||
|
parties who would receive the covered work from you, a discriminatory
|
||||||
|
patent license (a) in connection with copies of the covered work
|
||||||
|
conveyed by you (or copies made from those copies), or (b) primarily
|
||||||
|
for and in connection with specific products or compilations that
|
||||||
|
contain the covered work, unless you entered into that arrangement,
|
||||||
|
or that patent license was granted, prior to 28 March 2007.
|
||||||
|
|
||||||
|
Nothing in this License shall be construed as excluding or limiting
|
||||||
|
any implied license or other defenses to infringement that may
|
||||||
|
otherwise be available to you under applicable patent law.
|
||||||
|
|
||||||
|
12. No Surrender of Others' Freedom.
|
||||||
|
|
||||||
|
If conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot convey a
|
||||||
|
covered work so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you may
|
||||||
|
not convey it at all. For example, if you agree to terms that obligate you
|
||||||
|
to collect a royalty for further conveying from those to whom you convey
|
||||||
|
the Program, the only way you could satisfy both those terms and this
|
||||||
|
License would be to refrain entirely from conveying the Program.
|
||||||
|
|
||||||
|
13. Use with the GNU Affero General Public License.
|
||||||
|
|
||||||
|
Notwithstanding any other provision of this License, you have
|
||||||
|
permission to link or combine any covered work with a work licensed
|
||||||
|
under version 3 of the GNU Affero General Public License into a single
|
||||||
|
combined work, and to convey the resulting work. The terms of this
|
||||||
|
License will continue to apply to the part which is the covered work,
|
||||||
|
but the special requirements of the GNU Affero General Public License,
|
||||||
|
section 13, concerning interaction through a network will apply to the
|
||||||
|
combination as such.
|
||||||
|
|
||||||
|
14. Revised Versions of this License.
|
||||||
|
|
||||||
|
The Free Software Foundation may publish revised and/or new versions of
|
||||||
|
the GNU General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the
|
||||||
|
Program specifies that a certain numbered version of the GNU General
|
||||||
|
Public License "or any later version" applies to it, you have the
|
||||||
|
option of following the terms and conditions either of that numbered
|
||||||
|
version or of any later version published by the Free Software
|
||||||
|
Foundation. If the Program does not specify a version number of the
|
||||||
|
GNU General Public License, you may choose any version ever published
|
||||||
|
by the Free Software Foundation.
|
||||||
|
|
||||||
|
If the Program specifies that a proxy can decide which future
|
||||||
|
versions of the GNU General Public License can be used, that proxy's
|
||||||
|
public statement of acceptance of a version permanently authorizes you
|
||||||
|
to choose that version for the Program.
|
||||||
|
|
||||||
|
Later license versions may give you additional or different
|
||||||
|
permissions. However, no additional obligations are imposed on any
|
||||||
|
author or copyright holder as a result of your choosing to follow a
|
||||||
|
later version.
|
||||||
|
|
||||||
|
15. Disclaimer of Warranty.
|
||||||
|
|
||||||
|
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
||||||
|
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
||||||
|
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
||||||
|
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
||||||
|
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
||||||
|
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
||||||
|
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
16. Limitation of Liability.
|
||||||
|
|
||||||
|
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
||||||
|
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
||||||
|
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
||||||
|
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
||||||
|
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
||||||
|
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
||||||
|
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGES.
|
||||||
|
|
||||||
|
17. Interpretation of Sections 15 and 16.
|
||||||
|
|
||||||
|
If the disclaimer of warranty and limitation of liability provided
|
||||||
|
above cannot be given local legal effect according to their terms,
|
||||||
|
reviewing courts shall apply local law that most closely approximates
|
||||||
|
an absolute waiver of all civil liability in connection with the
|
||||||
|
Program, unless a warranty or assumption of liability accompanies a
|
||||||
|
copy of the Program in return for a fee.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
state the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) <year> <name of author>
|
||||||
|
|
||||||
|
This program is free software: you can redistribute it and/or modify
|
||||||
|
it under the terms of the GNU General Public License as published by
|
||||||
|
the Free Software Foundation, either version 3 of the License, or
|
||||||
|
(at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program does terminal interaction, make it output a short
|
||||||
|
notice like this when it starts in an interactive mode:
|
||||||
|
|
||||||
|
<program> Copyright (C) <year> <name of author>
|
||||||
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, your program's commands
|
||||||
|
might be different; for a GUI interface, you would use an "about box".
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or school,
|
||||||
|
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
||||||
|
For more information on this, and how to apply and follow the GNU GPL, see
|
||||||
|
<http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
The GNU General Public License does not permit incorporating your program
|
||||||
|
into proprietary programs. If your program is a subroutine library, you
|
||||||
|
may consider it more useful to permit linking proprietary applications with
|
||||||
|
the library. If this is what you want to do, use the GNU Lesser General
|
||||||
|
Public License instead of this License. But first, please read
|
||||||
|
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
||||||
@@ -0,0 +1,608 @@
|
|||||||
|
# GxEPD2
|
||||||
|
## Arduino Display Library for SPI E-Paper Displays
|
||||||
|
|
||||||
|
- With full Graphics and Text support using Adafruit_GFX
|
||||||
|
|
||||||
|
- For SPI e-paper displays from Dalian Good Display
|
||||||
|
- and SPI e-paper boards from Waveshare having the same panels
|
||||||
|
|
||||||
|
### important note:
|
||||||
|
- the display panels are for 3.3V supply and 3.3V data lines
|
||||||
|
- never connect data lines directly to 5V Arduino data pins, use e.g. 4k7/10k resistor divider
|
||||||
|
- series resistor only is not enough for reliable operation (back-feed effect through protection diodes)
|
||||||
|
- 4k7/10k resistor divider may not work with flat cable extensions or Waveshare 4.2 board, use level converter then
|
||||||
|
- do not forget to connect GND
|
||||||
|
- the actual Waveshare display boards now have level converters and series regulator, safe for 5V
|
||||||
|
- use 3k3 pull-down on SS for ESP8266 for boards with level converters
|
||||||
|
- note that 7.5" e-paper displays don't work reliable if fed from 3.3V Arduino pin
|
||||||
|
- note that Waveshare boards with "clever" reset circuit may need shortened reset pulse
|
||||||
|
- use `init(115200, true, 2, false)` for Waveshare boards with "clever" reset circuit
|
||||||
|
- note that Waveshare boards with "clever" reset circuit need 1k pull-up on RST on ESP8266, or different pin
|
||||||
|
- note that the new Waveshare Universal e-Paper Raw Panel Driver HAT Rev 2.3 needs PWR connected to VCC or driven HIGH
|
||||||
|
- see https://www.waveshare.com/wiki/E-Paper_Driver_HAT
|
||||||
|
- some new Waveshare boards also have a PWR control pin, needs be pulled hight
|
||||||
|
|
||||||
|
### Paged Drawing, Picture Loop
|
||||||
|
- This library uses paged drawing to limit RAM use and cope with missing single pixel update support
|
||||||
|
- buffer size can be selected in the application by template parameter page_height, see GxEPD2_Example
|
||||||
|
- Paged drawing is implemented as picture loop, like in U8G2 (Oliver Kraus)
|
||||||
|
- see https://github.com/olikraus/u8glib/wiki/tpictureloop
|
||||||
|
- Paged drawing is also available using drawPaged() and drawCallback(), like in GxEPD
|
||||||
|
- ` // GxEPD style paged drawing; drawCallback() is called as many times as needed `
|
||||||
|
- ` void drawPaged(void (*drawCallback)(const void*), const void* pv) `
|
||||||
|
- paged drawing is done using Adafruit_GFX methods inside picture loop or drawCallback
|
||||||
|
|
||||||
|
### Full Screen Buffer Support
|
||||||
|
- full screen buffer is selected by setting template parameter page_height to display height
|
||||||
|
- drawing to full screen buffer can either be done using Adafruit_GFX methods without picture loop or drawCallback
|
||||||
|
- and then calling method display()
|
||||||
|
- or by still using the page loop or drawCallback
|
||||||
|
|
||||||
|
### Low Level Bitmap Drawing Support
|
||||||
|
- bitmap drawing support to the controller memory and screen is available:
|
||||||
|
- either through the template class instance methods that forward calls to the base display class
|
||||||
|
- or directly using an instance of a base display class and calling its methods directly
|
||||||
|
|
||||||
|
### Supporting Arduino Forum Topics:
|
||||||
|
|
||||||
|
- Waveshare e-paper displays with SPI: http://forum.arduino.cc/index.php?topic=487007.0
|
||||||
|
- Good Display ePaper for Arduino : https://forum.arduino.cc/index.php?topic=436411.0
|
||||||
|
- Note that these topics are closed. Use only for reference.
|
||||||
|
- The Arduino Forum is no longer watched and answered by the Author.
|
||||||
|
- New questions or issues should be posted on https://github.com/ZinggJM/GxEPD2/discussions
|
||||||
|
|
||||||
|
### Note on documentation
|
||||||
|
- GxEPD2 uses Adafruit_GFX for Graphics and Text support, which is well documented there
|
||||||
|
- GxEPD2 uses meaningful method names, and has some comments in the header files
|
||||||
|
- consult the header files GxEPD2_BW.h, GxEPD2_3C.h and GxEPD2_GFX.h
|
||||||
|
- for the concept of paged drawing and picture loop see:
|
||||||
|
- https://github.com/olikraus/u8glib/wiki/tpictureloop
|
||||||
|
|
||||||
|
### Note on issues and pull requests
|
||||||
|
- issues should be reported in https://github.com/ZinggJM/GxEPD2/discussions.
|
||||||
|
- issues on GitHub are disabled; there were too many false issues.
|
||||||
|
- pull requests are not welcome, will not be merged.
|
||||||
|
- pull requests can't be disabled, but will be closed.
|
||||||
|
- please place information about interesting fork additions in https://github.com/ZinggJM/GxEPD2/discussions.
|
||||||
|
|
||||||
|
### Supported SPI e-paper panels from Good Display:
|
||||||
|
- GDEW0102T4 1.02" b/w 80x128, UC8175
|
||||||
|
- DEPG0150BN 1.50" b/w 200x200, SSD1681, e.g. LILYGO® TTGO T5 V2.4.1 1.50 inch
|
||||||
|
- GDEP015OC1 1.54" b/w 200x200, IL3829, no longer available
|
||||||
|
- GDEH0154D67 1.54" b/w 200x200, SSD1681, replacement for GDEP015OC1
|
||||||
|
- GDEW0154T8 1.54" b/w 152x152, UC8151 (IL0373)
|
||||||
|
- GDEW0154M09 1.54" b/w 200x200, JD79653A
|
||||||
|
- GDEW0154M10 1.54" b/w 152x152, UC8151D, DES
|
||||||
|
- GDEY0154D67 1.54" b/w 200x200, SSD1681
|
||||||
|
- GDEW0154Z04 1.54" b/w/r 200x200, IL0376F, no longer available
|
||||||
|
- GDEH0154Z90 1.54" b/w/r 200x200, SSD1681, replacement for GDEW0154Z04
|
||||||
|
- GDEM0154F51H 1.54" 4-color 200x200, JD79660
|
||||||
|
- GDE0213B1 2.13" b/w 122x250, IL3895, phased out
|
||||||
|
- GDEH0213B72 2.13" b/w 122x250, SSD1675A (IL3897), replacement for GDE0213B1
|
||||||
|
- GDEH0213B73 2.13" b/w 122x250, SSD1675B, new replacement for GDE0213B1, GDEH0213B72
|
||||||
|
- GDEM0213B74 2.13" b/w 122x250, SSD1680
|
||||||
|
- GDEW0213I5F 2.13" b/w 104x212, UC8151 (IL0373), flexible
|
||||||
|
- GDEW0213T5D 2.13" b/w 104x212, UC8151 (IL0373)
|
||||||
|
- GDEW0213M21 2.13" b/w 104x212, UC8151 (IL0373), DES
|
||||||
|
- GDEW0213Z16 2.13" b/w/r 104x212, UC8151 (IL0373)
|
||||||
|
- GDEW0213Z19 2.13" b/w/r 104x212, UC8151D
|
||||||
|
- GDEY0213Z98 2.13" b/w/r 122x250, SSD1680
|
||||||
|
- GDEY0213F51 2.13" 4-color 122x250, JD79661
|
||||||
|
- DEPG0213BN 2.13" b/w 122x250, SSD1680, e.g. LILYGO® TTGO T5 V2.3.1 2.13 inch
|
||||||
|
- GDEY0213B74 2.13" b/w 122x250, SSD1680
|
||||||
|
- GDEW026T0 2.6" b/w 152x296, UC8151 (IL0373)
|
||||||
|
- GDEW026M01 2.6" b/w 152x296, UC8151 (IL0373), DES
|
||||||
|
- DEPG0266BN 2.66" b/w 152x296, SSD1680, e.g. LILYGO® TTGO T5 2.66 inch
|
||||||
|
- GDEY0266Z90 2.66" b/w/r 152x296, SSD1680
|
||||||
|
- GDEY0266F51H 2.66" 4-color 184x460, JD79667
|
||||||
|
- GDEW027C44 2.7" b/w/r 176x264, IL91874
|
||||||
|
- GDEW027W3 2.7" b/w 176x264, EK79652 (IL91874)
|
||||||
|
- GDEY027T91 2.7" b/w 176x264, SSD1680
|
||||||
|
- GDEH029A1 2.9" b/w 128x296, SSD1608 (IL3820)
|
||||||
|
- GDEW029T5 2.9" b/w 128x296, UC8151 (IL0373)
|
||||||
|
- GDEW029T5D 2.9" b/w 128x296, UC8151D
|
||||||
|
- GDEW029I6FD 2.9" b/w 128x296, UC8151D, flexible
|
||||||
|
- GDEM029T94 2.9" b/w 128x296, SSD1680
|
||||||
|
- GDEW029M06 2.9" b/w 128x296, UC8151D, DES
|
||||||
|
- GDEW029Z10 2.9" b/w/r 128x296, UC8151 (IL0373)
|
||||||
|
- GDEH029Z13 2.9" b/w/r 128x296, UC8151D
|
||||||
|
- GDEM029C90 2.9" b/w/y 128x296, SSD1680
|
||||||
|
- DEPG0290BS 2.9" b/w 128x296, SSD1680, e.g. LILYGO® TTGO T5 V2.4.1 2.9"
|
||||||
|
- GDEY029T94 2.9" b/w 128x296, SSD1680
|
||||||
|
- GDEY029T71H 2.9" b/w 168x384, SSD1685
|
||||||
|
- GDEY029F51H 2.9" 4-color 168x384, JD79667
|
||||||
|
- Waveshare3inch4color 3.0" 4-color 168x400
|
||||||
|
- GDEQ031T10 3.1" b/w 240x320, UC8253
|
||||||
|
- GDEM035F51 3.5" 4-color 184x384, JD79667
|
||||||
|
- GDEY037T03 3.7" b/w 240x416, UC8253
|
||||||
|
- ED037TC1 3.7" b/w 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
- GDEW0371W7 3.7" b/w 240x416, UC8171 (IL0324)
|
||||||
|
- GDEM0397T81 3.97" b/w 480x800, SSD1677
|
||||||
|
- GDEM0397F81 3.97" 4-color, 800x480, SSD2677
|
||||||
|
- GDEW042T2 4.2" b/w 400x300, UC8176 (IL0398)
|
||||||
|
- GDEW042M01 4.2" b/w 400x300, UC8176 (IL0398), DES
|
||||||
|
- GDEW042Z15 4.2" b/w/r 400x300, UC8176 (IL0398)
|
||||||
|
- GDEQ042Z21 4.2" b/w/r 400x300, UC8276, (Waveshare V2)
|
||||||
|
- GDEY042Z98 4.2" b/w/r 400x300, SSD1683
|
||||||
|
- GDEY042T81 4.2" b/w 400x300, SSD1683
|
||||||
|
- GDEY0420F51 4.2" 4-color 400x300, HX8717
|
||||||
|
- GDEQ0426T82 4.26" b/w 800x480, SSD1677
|
||||||
|
- Waveshare437inch4color Waveshare 4.37" 4-color e-paper display 512x368
|
||||||
|
- ACeP565 5.65" Waveshare 5.65" 7-color e-paper display 600x448
|
||||||
|
- GDEP0565D90 5.65" 7-color 600x448
|
||||||
|
- GDEH0576T81 5.76" b/w 920x680, SSD2677
|
||||||
|
- GDEY0579T93 5.79" b/w 792x272, SSD1683
|
||||||
|
- GDEY0579Z93 5.79" b/w/r 792x272, SSD1683
|
||||||
|
- GDEY0579F51 5.79" 4-color 792x272, HX8717
|
||||||
|
- GDEW0583T7 5.83" b/w 600x448, UC8159c (IL0371)
|
||||||
|
- GDEW0583T8 5.83" b/w 648x480, EK79655 (GD7965)
|
||||||
|
- GDEW0583Z83 5.83" b/w/r 648x480, EK79655 (GD7965)
|
||||||
|
- GDEQ0583T31 5.83" b/w 648x480, UC8179
|
||||||
|
- GDEQ0583Z31 5.83" b/w/r 648x480, UC8179C
|
||||||
|
- GDEY073D46 7.3" 800x480 7-color
|
||||||
|
- GDEP073E01 7.3" 800x480 7-color
|
||||||
|
- ACeP730 7.3" Waveshare 7-color e-paper display 800x480, PhotoPainter
|
||||||
|
- GDEW075T8 7.5" b/w 640x384, UC8159c (IL0371)
|
||||||
|
- GDEW075T7 7.5" b/w 800x480, EK79655 (GD7965)
|
||||||
|
- GDEY075T7 7.5" b/w 800x480, UC8179 (GD7965)
|
||||||
|
- GDEW075Z09 7.5" b/w/r 640x384, UC8159c (IL0371)
|
||||||
|
- GDEW075Z08 7.5" b/w/r 800x480, EK79655 (GD7965)
|
||||||
|
- GDEY075Z08 7.5" b/w/r 800x480, UC8179
|
||||||
|
- GDEH075Z90 7.5" b/w/r 880x528, SSD1677
|
||||||
|
- GDEM075F52 7.5" 4-color, 800x480, JD79665AA
|
||||||
|
- GDEM102T91 10.2" b/w 960x640, SSD1677
|
||||||
|
- GDEM1085T51 10.85 b/w 1360x480, JD79686AB
|
||||||
|
- GDEH116T91 11.6" b/w 960x640, SSD1677
|
||||||
|
- GDEY116Z91 11.6" b/w/r 960x640, SSD1677
|
||||||
|
- GDEY116F51 11.6" 4-color 960x640, SSD2677
|
||||||
|
- GDEW1248T3 12.48" b/w 1304x984, UC8179
|
||||||
|
- GDEY1248Z51 12.48" b/w/r 1304x984, UC8179
|
||||||
|
- GDEM133T91 13.3" b/w 960x680, SSD1677
|
||||||
|
- GDEM133Z91 13.3" b/w/r 960x680, SSD1677
|
||||||
|
#### Supported SPI e-paper panels & boards from Waveshare: compare with Good Display, same panel
|
||||||
|
#### other supported panels
|
||||||
|
- GYE042A87 4.2" b/w 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
- SE0420NQ04 4.2" b/w 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
- ED060SCT 6" grey levels, on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
- ED060KC1 6" grey levels, 1448x1072, on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
- ED078KC2 7.8" grey levels, 1872x1404, on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
- ES103TC1 10.3" grey levels, 1872x1404, on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
|
||||||
|
### I can and will only support e-paper panels I have!
|
||||||
|
- I accept panel donations to add support to GxEPD2 only on exception.
|
||||||
|
- I support only panels from known sources that are well documented.
|
||||||
|
- Let me know about interesting panels that fall into this category.
|
||||||
|
- I occasionally buy new panels, but adding support will take as much time as needed.
|
||||||
|
|
||||||
|
### Version 1.6.9
|
||||||
|
- added support for GDEH0576T81, 5.76" b/w 920x680, SSD2677
|
||||||
|
- the GDEH0576T81 has partial window addressing and partial window refresh
|
||||||
|
- the controller SSD2677 of GDEH0576T81 supports differential refresh with bit interleaved old/new per pixel
|
||||||
|
- the driver GxEPD2_576_GDEH0576T81 supports differential refresh through writeNative with previous/current bitmaps
|
||||||
|
- the new display class GxEPD2_BW_SHM supports GxEPD2 style fast partial update with a shadow buffer for previous
|
||||||
|
- the display class GxEPD2_BW_SHM uses a "malloc" allocated shadow buffer on processors with enough heap space
|
||||||
|
- class GxEPD2_BW_SHM falls back to GxEPD2_BW behavior if "malloc" fails, which results in full refresh on GDEH0576T81
|
||||||
|
- fixed controller name of GDEM0397T81 to SSD1677
|
||||||
|
#### Version 1.6.8
|
||||||
|
- added methods writeImageToPrevious and writeImagePartToPrevious to b/w driver classes
|
||||||
|
- added partial update support to GDEP073E01
|
||||||
|
- added partial window addressing to GDEY073D46, partial refresh not usable
|
||||||
|
#### Version 1.6.7
|
||||||
|
- added support for GDEW075Z08 fast b/w refresh in new class GxEPD2_750c_GDEW075Z08
|
||||||
|
- GxEPD2_750c_GDEW075Z08 uses a b/w waveform written to registers, none available in OTP
|
||||||
|
- added support for GDEY075Z08 fast b/w refresh in new class GxEPD2_750c_GDEY075Z08
|
||||||
|
- GxEPD2_750c_GDEY075Z08 uses a b/w waveform written to registers, OTP version is faulty
|
||||||
|
- GDEW075Z08 and GDEY075Z08 both have distortion on borders between black and white
|
||||||
|
- therefore narrow or small fonts are barely readable with fast b/w refresh
|
||||||
|
- renamed method writeImagePrevious to writeImageToPrevious
|
||||||
|
- renamed method writeImageNew to writeImageToCurrent
|
||||||
|
#### Version 1.6.6
|
||||||
|
- added support for GDEM0154F51H, 1.54" 4-color 200x200, JD79660
|
||||||
|
- added support for GDEM035F51, 3.5" 4-color 184x384, JD79667
|
||||||
|
- added support for GDEM0397F81, 3.97" 4-color, 800x480, SSD2677
|
||||||
|
- added support for GDEM075F52, 7.5" 4-color, 800x480, JD79665AA
|
||||||
|
- added method writeImageToPrevious to class GxEPD2_750_GDEY075T7 and nextPageToPrevious to GxEPD2_BW
|
||||||
|
- renamed class GxEPD2_0579c_GDEY0579F51 to GxEPD2_579c_GDEY0579F51
|
||||||
|
#### Version 1.6.5
|
||||||
|
- added support for GDEM0397T81, 3.97" b/w 480x800, SSD1677
|
||||||
|
- fixed GxEPD2_290_T94 partial refresh
|
||||||
|
#### Version 1.6.4
|
||||||
|
- added support for GDEY037T03 3.7" b/w 240x416, UC8253
|
||||||
|
#### Version 1.6.3
|
||||||
|
- updated GxEPD2_4C.h with WIDTH_VISIBLE (for GDEY0213F51)
|
||||||
|
- updated GxEPD2_154_Z90c.cpp powerOff() handling
|
||||||
|
- updated powerOff() handling for other 3-color displays
|
||||||
|
#### Version 1.6.2
|
||||||
|
- fixed support for GDEY029T71H 2.9" b/w 168x384, SSD1685
|
||||||
|
- GxEPD2_WiFi_Example: added direct (non-buffered) BMP download to 7-color displays
|
||||||
|
- some minor fixes
|
||||||
|
#### Version 1.6.1
|
||||||
|
- fixed and updated GxEPD2_WiFi_Example
|
||||||
|
#### Version 1.6.0
|
||||||
|
- updated support for GDEY029T94: fixed a partial refresh issue
|
||||||
|
- updated support for GDEY042T81: fixed fast full refresh for 2024 panel version
|
||||||
|
- updated support for GDEP073E01: fixed color mapping for its native color values
|
||||||
|
- updated GxEPD2_display_selection_new_style.h: added Arduino Nano Every, Arduino Nano ESP32, Arduino Nano IoT.
|
||||||
|
#### Version 1.5.9
|
||||||
|
- added Power Save command (PWS) to GDEY075T7 init (issue with dithered bitmaps)
|
||||||
|
- added support for GDEY0579T93 5.79" b/w 792x272, SSD1683
|
||||||
|
- added support for GDEY0579Z93 5.79" b/w/r 792x272, SSD1683
|
||||||
|
- added support for GDEY0579F51 5.79" 4-color 792x272, HX8717
|
||||||
|
- the GDEY0579F51 has partial window addressing capability,
|
||||||
|
- but of little use, because the controller buffer is modified during refresh
|
||||||
|
- partial window refresh can't be used on GDEY0579F51, refresh is full screen
|
||||||
|
- added support for GDEY042Z98 4.2" b/w/r 400x300, SSD1683
|
||||||
|
- GDEY042Z98 has "fast" full refresh and supports fast b/w partial refresh
|
||||||
|
- added support for GDEP073E01 7.3" 800x480 7-color
|
||||||
|
#### Version 1.5.8
|
||||||
|
- added support for GDEP0565D90 5.65" 7-color 600x448
|
||||||
|
- added support for GDEY116F51 11.6" 4-color 960x640, SSD2677
|
||||||
|
- added support for GDEY029T71H 2.9" b/w 168x384, SSD1685
|
||||||
|
#### Version 1.5.7
|
||||||
|
- added support for GDEY0213F51 2.13" 4-color 122x250, JD79661
|
||||||
|
- added support for GDEM1085T51 10.85 b/w 1360x480, JD79686AB
|
||||||
|
#### Version 1.5.6
|
||||||
|
- version for ongoing fixes and additions
|
||||||
|
- added support for GYE042A87 4.2" b/w 400x300
|
||||||
|
- added support for SE0420NQ04 4.2" b/w 400x300
|
||||||
|
- added support for GDEQ0583Z31 5.83" b/w/r 648x480
|
||||||
|
- added support for GDEM102T91 10.2" b/w 960x640, SSD1677
|
||||||
|
- added support for GDEY116Z91 11.6" b/w/r 960x640, SSD1677
|
||||||
|
- added support for GDEM133T91 13.3" b/w 960x680, SSD1677
|
||||||
|
- added support for GDEM133Z91 13.3" b/w/r 960x680, SSD1677
|
||||||
|
- improved differential refresh for SE0420NQ04
|
||||||
|
- improved full refresh for SE0420NQ04
|
||||||
|
- fixed driver class GxEPD2_213.cpp
|
||||||
|
#### Version 1.5.5
|
||||||
|
- updated 7-color driver classes (design cleanup fixed)
|
||||||
|
- note: Waveshare PhotoPainter doesn't work with MBED Pico package
|
||||||
|
- note: use package https://github.com/earlephilhower/arduino-pico for PhotoPainter
|
||||||
|
#### Version 1.5.4
|
||||||
|
- added support for GDEQ031T10 3.1" b/w 240x320
|
||||||
|
- updated support for GDEY075T7 7.5" b/w 800x480
|
||||||
|
- renamed driver class GxEPD2_750_YT7 to GxEPD2_750_GDEY075T7
|
||||||
|
- the actual GDEY075T7 panels have fast full refresh capability
|
||||||
|
- added support for Waveshare 7.3" 7-color, driver class GxEPD2_730c_ACeP_730
|
||||||
|
- added support for Waveshare 7.3" 7-color PhotoPainter with RPi Pico RP2040
|
||||||
|
- updated b/w driver classes for SSD controllers
|
||||||
|
- updated 7-color driver classes (design cleanup)
|
||||||
|
#### Version 1.5.3
|
||||||
|
- added support for GDEQ0426T82 4.26" b/w 800x480
|
||||||
|
- added support for GDEY0266F51H 2.66" 4-color 184x460
|
||||||
|
- added support for GDEY029F51H 2.9" 4-color 168x384
|
||||||
|
- added support for GDEY0420F51 4.2" 4-color 400x300
|
||||||
|
- added support for Waveshare 3.00" 4-color e-paper display 168x400
|
||||||
|
- updated support for Waveshare 4.37" 4-color e-paper display 512x368
|
||||||
|
- the 4-color displays have partial window addressing and refresh
|
||||||
|
- renamed GDEY042T91 to its new official name GDEY042T81
|
||||||
|
#### Version 1.5.2
|
||||||
|
- added support for Waveshare 4.37" 4-color e-paper display 512x368
|
||||||
|
- fixed __has_include test (for packages that don't support __has_include)
|
||||||
|
- added WIDTH_VISIBLE for correct graphics width for 2.13" b/w 122x250
|
||||||
|
- added end() method, to release SPI and reset all pins to INPUT
|
||||||
|
#### Version 1.5.1
|
||||||
|
- added support for GDEY0154D67 1.54" b/w 200x200
|
||||||
|
- added support for GDEY0213B74 2.13" b/w 128x250
|
||||||
|
- updated support for GDEY027T91 2.7" b/w 176x264
|
||||||
|
- renamed driver class for GDEY027T91 to GxEPD2_270_GDEY027T91
|
||||||
|
- added support for GDEY029T94 2.9" b/w 128x296
|
||||||
|
- added support for GDEY042T91 4.2" b/w 400x300
|
||||||
|
- added support for GDEQ0583T31 5.83" b/w 648x480
|
||||||
|
- these panels have fast full refresh capability
|
||||||
|
- fast full refresh can be disabled in the class header for low temperature use
|
||||||
|
- added support for GDEY073D46 7.3" 800x480 7-color
|
||||||
|
- all these new panels have been donated by Good Display
|
||||||
|
- added __has_include test to GxEPD2_BW.h, GxEPD2_3C.h, GxEPD2_7C
|
||||||
|
- this allows to remove or put aside unused driver classes for faster compile
|
||||||
|
- several fixes and improvements
|
||||||
|
#### Version 1.5.0
|
||||||
|
- added support for GDEY075T7 7.5" b/w 800x480
|
||||||
|
- updated GxEPD2_Example, added HSPI use for Waveshare ESP32 Driver Board
|
||||||
|
- updated GxEPD2_SD_AVR_Example, fixes for BMP handling
|
||||||
|
- updated GxEPD2_SD_Example, fixes for BMP handling, added HSPI use for Waveshare ESP32 Driver Board
|
||||||
|
- updated GxEPD2_SerialFlash_Example, fixes for BMP handling
|
||||||
|
- updated GxEPD2_SerialFlash_Loader, updated https certificates and use
|
||||||
|
- updated GxEPD2_Spiffs_Example, fixes for BMP handling
|
||||||
|
- updated GxEPD2_Spiffs_Loader, updated https certificates and use
|
||||||
|
- added GxEPD2_WiFi_CertStore_Example, use of a BearSSL CertStore on ESP8266, like a browser
|
||||||
|
- added GxEPD2_WiFi_CertStore_Loader, download root certificates (from Mozilla) to ESP8266 flash
|
||||||
|
- updated GxEPD2_WiFi_Example, fixes for BMP handling, updated https certificates and use
|
||||||
|
- updated GxEPD2_WS_ESP32_Driver, added HSPI use for Waveshare ESP32 Driver Board
|
||||||
|
#### Version 1.4.9
|
||||||
|
- added missing constructor lines to GxEPD2_display_selection.h
|
||||||
|
- added panel details to comments in GxEPD2_display_selection.h
|
||||||
|
- added panel details to Supported SPI e-paper panels in README.md
|
||||||
|
#### Version 1.4.8
|
||||||
|
- added support for GDEY027T91 2.7" b/w 176x264
|
||||||
|
- added support for GDEY1248Z51 12.48" b/w/r 1304x984
|
||||||
|
- fixed name of panel DEPG0150BN
|
||||||
|
- updated certificate and fingerprint for GitHub download in GxEPD2_WiFi_Example
|
||||||
|
#### Version 1.4.7
|
||||||
|
- added support for DEPG0150BN 1.50" b/w 200x200, e.g. LILYGO® TTGO T5 V2.4.1 1.50 inch
|
||||||
|
- added support for DEPG0213BN 2.13" b/w 128x250, e.g. LILYGO® TTGO T5 V2.3.1 2.13 inch
|
||||||
|
- added support for DEPG0266BN 2.66" b/w 152x296, e.g. LILYGO® TTGO T5 2.66 inch
|
||||||
|
- added support for DEPG0290BS 2.9" b/w 128x296, e.g. LILYGO® TTGO T5 V2.4.1 2.9"
|
||||||
|
- added support for ES103TC1 10.3" grey levels, 1872x1404, on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
#### Version 1.4.6
|
||||||
|
- added support for GDEY0266Z90 2.66" b/w/r 152x296
|
||||||
|
- added support for GDEW0583Z83 5.83" b/w/r 648x460
|
||||||
|
#### Version 1.4.5
|
||||||
|
- added support for GDEY0213Z98 2.13" b/w/r 122x250
|
||||||
|
- tested with LOLIN 2.13" Tri-Color eInk / ePaper 250x122 Display Shield
|
||||||
|
- https://www.aliexpress.com/item/1005003020667903.html
|
||||||
|
#### Version 1.4.4
|
||||||
|
- interim update to solve compiler warnings (ALL for GCC for AVR)
|
||||||
|
#### Version 1.4.3
|
||||||
|
- added option to select an alternate HW SPI channel and/or SPI settings
|
||||||
|
- by method selectSPI(SPIClass& spi, SPISettings spi_settings) of driver base class GxEPD2_EPD
|
||||||
|
- by calling selectSPI before calling init() of display class
|
||||||
|
- or by calling extended init() method that has these parameters added
|
||||||
|
- tested with RPi Pico RP2040 using Good Display DESPI-PICO connection shield
|
||||||
|
- updated GxEPD2_Example to show use with DESPI-PICO
|
||||||
|
- DESPI-PICO: see https://www.good-display.com/product/393.html
|
||||||
|
#### Version 1.4.2
|
||||||
|
- added support for Waveshare 3.7" b/w board and panel ED037TC1
|
||||||
|
- waveform tables for ED037TC1 are taken unmodified from Waveshare demo code
|
||||||
|
- refresh behavior with ED037TC1 with GxEPD2 is not perfect, could not be resolved
|
||||||
|
- ISSUE RESOLVED: RESE needs to be 3 ohms on DESPI-C02 for this panel, Waveshare schematics is wrong
|
||||||
|
- added differential refresh for GDEH116T91, waveform table taken from ED037TC1
|
||||||
|
- differential refresh for GDEH116T91 looks ok; can be disabled with hasFastPartialUpdate = false
|
||||||
|
- increased sustain phase for differential refresh on GDEW042T2
|
||||||
|
#### Version 1.4.1
|
||||||
|
- fix for Waveshare "clever" reset circuit: power controller before reset pulse
|
||||||
|
#### Version 1.4.0
|
||||||
|
- changed the default reset duration to 10ms instead of 20ms
|
||||||
|
- changed the delay after reset to 10ms or reset duration, whichever is higher, instead of 200ms
|
||||||
|
- added a busyCallback feature, to allow to service periodic actions during wait for BUSY termination
|
||||||
|
- ` // register a callback function to be called during _waitWhileBusy continuously. `
|
||||||
|
- ` void setBusyCallback(void (*busyCallback)(const void*), const void* busy_callback_parameter = 0); `
|
||||||
|
- added example GxEPD2_RotaryUsingBusyCallback.ino
|
||||||
|
#### Version 1.3.9
|
||||||
|
- fix for STM32 official package pin number range (int16_t)
|
||||||
|
- fix for refresh(int16_t x, int16_t y, int16_t w, int16_t h) methods screen intersection
|
||||||
|
#### Version 1.3.8
|
||||||
|
- added support for GDEQ042Z21 4.2" b/w/r 400x300 panel or Waveshare 4.2" V2 b/w/r board
|
||||||
|
- the Waveshare 4.2" V2 b/w/r board requires the shortened reset pulse
|
||||||
|
- added support for GDEW029I6FD 2.9" b/w 128x296 flexible board
|
||||||
|
- some fixes and improvement for the new style panel selection
|
||||||
|
#### Version 1.3.7
|
||||||
|
- added support for GDEW0102T4 1.02" b/w 80x128 panel or Waveshare 1.02" b/w board
|
||||||
|
- the GDEW0102T4 panel has a different connector than the other SPI panels
|
||||||
|
- the GDEW0102T4 panel can be used with the DESPI-C102 connection module
|
||||||
|
- https://buy-lcd.com/products/connection-board-demo-kit-for-102-inch-e-ink-display-despi-c102
|
||||||
|
- my test have been done with the Waveshare 1.02" b/w board
|
||||||
|
#### Version 1.3.6
|
||||||
|
- added support for Waveshare 2.9" b/w V2, driver class GxEPD2_290_T94_V2
|
||||||
|
- Waveshare 2.9" b/w V2 uses a GDEM029T94 variant without partial update wft in OTP
|
||||||
|
- driver class GxEPD2_290_T94_V2 uses partial update wft written to registers
|
||||||
|
- added NOTE for RST pull-up on ESP8266 with "clever" reset circuit, or alternate pin
|
||||||
|
#### Version 1.3.5
|
||||||
|
- added support for GDEM0213B74 122x250 b/w e-paper panel
|
||||||
|
- added support for ED078KC2, 7.8" grey levels, 1872x1404, on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
#### Version 1.3.4
|
||||||
|
- added support for GDEH116T91 960x640 b/w e-paper panel
|
||||||
|
- GDEH116T91 has only full screen refresh, no wavetable for differential refresh yet
|
||||||
|
- added support for processor Arduino Nano RP2040 Connect to the examples
|
||||||
|
- added general fast b/w refresh for capable 3-color displays GDEW0213Z19, GDEW029Z13
|
||||||
|
- added example GxEPD2x_FastBlackWhiteOnColor.ino for GDEW0213Z19, GDEW029Z13
|
||||||
|
- evaluation of other fast b/w capable 3-color panels may follow
|
||||||
|
#### Version 1.3.3
|
||||||
|
- added b/w differential refresh method to GDEW0213Z19
|
||||||
|
- added b/w differential refresh method to GDEW029Z13
|
||||||
|
- up to 100 b/w fast refreshes have been possible (resulting in slightly reddish background)
|
||||||
|
- added experimental example GxEPD2x_MixedTest for proof of concept
|
||||||
|
- GxEPD2x_MixedTest needs enough RAM for 2 GFXCanvas1 objects
|
||||||
|
- general 3-color mixed refresh in GxEPD2 is in evaluation, for capable panels
|
||||||
|
#### Version 1.3.2
|
||||||
|
- added support for GDEW0213T5D 104x212 b/w e-paper panel
|
||||||
|
- added support for GDEW029T5D 128x296 b/w e-paper panel
|
||||||
|
- added support for GDEW0213Z19 104x212 b/w/r e-paper panel
|
||||||
|
- added support for GDEW029Z13 128x296 b/w/r e-paper panel
|
||||||
|
- both GDEW0213Z19 and GDEW029Z13 support only full screen refresh (controller issue)
|
||||||
|
#### Version 1.3.1
|
||||||
|
- added support for GDEM029C90 128x296 b/w/y e-paper panel
|
||||||
|
- GDEM029C90 has a very long refresh time of about 27 seconds
|
||||||
|
- GDEM029C90 has partial update (window addressing) of controller memory
|
||||||
|
- GDEM029C90 supports only full refresh of screen
|
||||||
|
#### Version 1.3.0
|
||||||
|
- added support for GDEM029T94 128x296 b/w e-paper panel
|
||||||
|
- added support for GDEW026M01 152x296 b/w new DES e-paper panel
|
||||||
|
- the new GDEW026M01 DES b/w e-paper panel has higher contrast and wide temperature range
|
||||||
|
- differential refresh (fast partial update) is supported for normal temperature range
|
||||||
|
- disable differential refresh for extended temperatures by setting hasFastPartialUpdate = false;
|
||||||
|
- the differential waveform table for GDEW026M01 is experimental and may need improvement
|
||||||
|
- major update of display selection in the examples to make additions easier:
|
||||||
|
- old style selection is now in separate include files GxEPD2_display_selection.h
|
||||||
|
- and GxEPD2_display_selection_added.h
|
||||||
|
- added new style display selection in include file GxEPD2_display_selection_new_style.h
|
||||||
|
- either selection style can be used. old style is intended for easy copying of constructor lines.
|
||||||
|
#### Version 1.2.16
|
||||||
|
- fix for GDEH0154D67, to work independent of OTP version (ping-pong issue)
|
||||||
|
#### Version 1.2.15
|
||||||
|
- added support for GDEW0213M21 2.13" 104x212 b/w new DES e-paper panel
|
||||||
|
- added support for GDEW029M06 2.9" 128x296 b/w new DES e-paper panel
|
||||||
|
- added support for GDEW042M01 4.2" 400x300 b/w new DES e-paper panel
|
||||||
|
- these new DES b/w e-paper panels have higher contrast and wide temperature range
|
||||||
|
- differential refresh (fast partial update) is supported for normal temperature range
|
||||||
|
- disable differential refresh for extended temperatures by setting hasFastPartialUpdate = false;
|
||||||
|
- the GDEW042M01 I have is a preliminary version, differential waveform may need update
|
||||||
|
#### Version 1.2.14
|
||||||
|
- added support for 6" 1448x1072 ED060KC1 on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
- fixed GxEPD2_WiFi_Example.ino: new GitHub fingerprint for ESP8266, certificate for ESP32
|
||||||
|
- fixed color discriminator for 7-color display in GxEPD2_7C.h
|
||||||
|
- added multicolor support for 7-color display in GxEPD2_WiFi_Example, GxEPD2_Spiffs_Example,
|
||||||
|
- and GxEPD2_SD_Example, GxEPD2_SerialFlash_Example
|
||||||
|
- fixed paged write to 7-color display controller (transaction and CS handling issue)
|
||||||
|
- some more fixes
|
||||||
|
#### Version 1.2.13
|
||||||
|
- added support for GDEH0154Z90 1.54" 200x200 b/w/r, replacement for GDEW0154Z04
|
||||||
|
- GDEH0154Z90 has partial window addressing, but no partial window refresh
|
||||||
|
- added some missing constructor examples, e.g. for IT8951 Driver HAT on Due
|
||||||
|
- cleaned-up wiring information in the examples
|
||||||
|
#### Version 1.2.12
|
||||||
|
- fixed GxEPD2_MinimumExample.ino to draw black on white (white on white was invisible)
|
||||||
|
- added example GxEPD2_HelloWorld.ino
|
||||||
|
- updated wiring info and constructor parameters for the actual Waveshare e-Paper ESP8266 Driver Board
|
||||||
|
- added some missing explicit initializers (nobody noticed as compilers usually initialize simple members)
|
||||||
|
#### Version 1.2.11
|
||||||
|
- added support for Waveshare 5.65" 7-color e-paper display 600x448
|
||||||
|
- the unknown controller of this display doesn't support partial update, as far as known
|
||||||
|
- 7-color graphics support is available with class GxEPD2_7C
|
||||||
|
- 7-color graphics support requires paging even on ESP32
|
||||||
|
- 7-color graphics support causes heavy paging on Arduino UNO, gets very slow
|
||||||
|
- refresh is quite fast for a color e-paper display: 12 seconds
|
||||||
|
#### Version 1.2.10
|
||||||
|
- added support for GDEH075Z90 7.5" b/w/r 880x528
|
||||||
|
- the controller of GDEH075Z90 supports partial update, but refesh is full screen
|
||||||
|
- the controller of GDEH075Z90 doesn't support differential update (not possible on 3-color anyway)
|
||||||
|
- note: the connector of the GDEH075Z90 is mirrored; connects downward on DESPI-C02
|
||||||
|
- added optional init parameter "reset_duration" in ms, same default 20ms as before
|
||||||
|
- reset_duration = 2 may help with "clever" reset circuit of newer boards from Waveshare
|
||||||
|
#### Version 1.2.9
|
||||||
|
- added support for GDEW0154T8 1.54" b/w 152x152
|
||||||
|
- added support for GDEW0154M09 1.54" b/w 200x200
|
||||||
|
- added support for GDEW0154M10 1.54" b/w 152x152 DES
|
||||||
|
- added support for GDEW0583T8 5.83" b/w 648x460
|
||||||
|
- added option to use class GFX of library GFX_Root instead of Adafruit_GFX
|
||||||
|
- differential update on GDEW0154M10 is experimental, there is no partial update demo yet
|
||||||
|
#### Version 1.2.8
|
||||||
|
- improved transfer speed for the bigger displays (3.71" and up)
|
||||||
|
#### Version 1.2.7
|
||||||
|
- fix paged drawing of initial screen on GDEH029A1
|
||||||
|
- sometimes true is false, if applied the wrong way round
|
||||||
|
#### Version 1.2.6
|
||||||
|
- slightly improved differential refresh for GDEW1248T3
|
||||||
|
- minor fixes
|
||||||
|
#### Version 1.2.5
|
||||||
|
- added support for GDEW1248T3 12.84" b/w panel on Waveshare 12.48 e-paper display frame
|
||||||
|
- tested with Waveshare Epaper ESP32 Driver Board mounted on connection board
|
||||||
|
- tested with Arduino UNO mounted on connection board, is extremely slow
|
||||||
|
- doesn't work with Arduino MEGA on connection board with switch set to ICSP and pins bent out of way, reason unknown
|
||||||
|
- not tested with other processors
|
||||||
|
- caution: wiring connector is on 5V side of level converters!
|
||||||
|
#### Version 1.2.4
|
||||||
|
- added support for GDEH0154D67 1.54" b/w, replacement for GDEP015OC1
|
||||||
|
- added GxEPD2_SerialFlash_Loader, WiFi bitmap downloader for SPI-flash
|
||||||
|
- added GxEPD2_SerialFlash_Example, SPI-flash example, e.g. for Winbond 25Q16BVSIG
|
||||||
|
- minor fixes and comment cleanups
|
||||||
|
- fix refresh(false) in upper layer: add powerOff() after full refresh
|
||||||
|
#### Version 1.2.3
|
||||||
|
- fixed partial update for 2.13" 3-color and 2.9" 3-color e-paper
|
||||||
|
- partial update can be disabled with attribute usePartialUpdateWindow = false
|
||||||
|
- added GxEPD2_GFX_Example to show uses of GxEPD2_GFX base class
|
||||||
|
- replaced GxEPD2_MultiDisplayExample code, same code as GxEPD2_GFX_MultiDisplayExample
|
||||||
|
- added extras/examples/GxEPD2_T_MultiDisplayExample, alternate example using template functions
|
||||||
|
- major and minor fixes, such as typos that survived too long
|
||||||
|
#### Version 1.2.2
|
||||||
|
- fixed BMP handling, e.g. for BMPs created by ImageMagick
|
||||||
|
- see also Arduino Forum Topic https://forum.arduino.cc/index.php?topic=642343.0
|
||||||
|
#### Version 1.2.1
|
||||||
|
- added support for GDEW075T7 7.5" b/w 800x480
|
||||||
|
- GDEW075T7 has differential update (1.6s) using a charge balancing waveform
|
||||||
|
- added optional SW SPI support, see /extras/sw_spi/README
|
||||||
|
- added /extras/tests/GxEPD2_RefreshTests/GxEPD2_RefreshTests.ino, for waveform tuning
|
||||||
|
- minor fixes
|
||||||
|
- note that 7.5" e-paper displays don't work reliable if fed from 3.3V Arduino pin
|
||||||
|
#### Version 1.2.0
|
||||||
|
- added "fast partial update" (differential update) for GDEW0371W7 3.7" b/w 240x416
|
||||||
|
- improved differential update waveform for GDEW026T0 2.6" b/w 152x256
|
||||||
|
- fixed init code & improved differential update for GDEW042T2 4.2" b/w 300x400
|
||||||
|
- note that all differential refresh waveforms are a compromise (ghosting, big font use)
|
||||||
|
- parameters for differential waveform for these display can easily be changed for experimenting
|
||||||
|
- GDEW042T2 would have greyed background without sustain phase
|
||||||
|
- GDEW042T2 needs multiple full refreshes after extended use of partial updates
|
||||||
|
#### Version 1.1.10
|
||||||
|
- added support for GDEH0213B73 2.13" b/w, replacement for GDE0213B1, GDEH0213B72
|
||||||
|
- added support for GDEW026T0 2.6" b/w 152x256
|
||||||
|
- added support for GDEW0371W7 3.7" b/w 240x416
|
||||||
|
- added support for GDEW075Z08 7.5" b/w/r 800x480
|
||||||
|
- GDEW075Z08 does allow (slow) partial update, set usePartialUpdate = false to disable for better image
|
||||||
|
- changed 4.2" b/w waveform table, for better result with actual panels
|
||||||
|
#### Version 1.1.9
|
||||||
|
- note for ESP8266 when using SS for CS: (wiring suggestion)
|
||||||
|
- connect 4.7k pull-down from GPIO15 to GND if your board or shield has level converters
|
||||||
|
- fixes for large displays (use uint16_t for buffer index)
|
||||||
|
#### Version 1.1.8
|
||||||
|
- fix for incomplete download in GxEPD2_WiFi_Example
|
||||||
|
- added missing method displayWindow() to GxEPD2_GFX base class
|
||||||
|
- fix and clean up of initial refresh for panels with differential update
|
||||||
|
- initial refresh needs to be full update, not "fast partial update", for these panels,
|
||||||
|
- as the screen content may differ from the "previous buffer" content.
|
||||||
|
- add clean of controller buffer(s) on initial write to controller, for partial update.
|
||||||
|
#### Version 1.1.7
|
||||||
|
- enhanced support for full buffered, non-paged use, for processors with enough RAM
|
||||||
|
- use void display(bool partial_update_mode = false); corresponds to update() in GxEPD
|
||||||
|
- use added void displayWindow(uint16_t x, uint16_t y, uint16_t w, uint16_t h);
|
||||||
|
- use added writeImagePart(...), drawImagePart(...), used by displayWindow()
|
||||||
|
- added example GxEPD2_NotPagedExample.ino
|
||||||
|
- several fixes, e.g. parameter range check in setPartialWindow()
|
||||||
|
#### Version 1.1.6
|
||||||
|
- added support for GDEH0213B72 2.13" b/w, replacement for GDE0213B1
|
||||||
|
- changed SPI speed for IT8951 Driver HAT to 24MHz for write, 10MHz for read
|
||||||
|
- minor fixes, e.g. centering of text bounding box in GxEPD2_Example
|
||||||
|
#### Version 1.1.5
|
||||||
|
- added support for 6" ED060SCT on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
- uses 3.3V data lines, but 5V supply (~80mA active, ~20mA stand-by, sleep doesn't work)
|
||||||
|
- note: 5V supply needs to be exact and strong; 5V over diode from USB (e.g. Wemos D1 mini) doesn't work!
|
||||||
|
- note that the IT8951 Driver HAT is panel specific, with flash parameterized by supplier
|
||||||
|
- this is an initial version
|
||||||
|
#### Version 1.1.4+
|
||||||
|
- added GxEPD2_WS_ESP32_Driver example for Waveshare ESP32 Driver Board
|
||||||
|
#### Version 1.1.4
|
||||||
|
- eliminated double refresh for "fast partial update"
|
||||||
|
- moved wavetables to the driver classes
|
||||||
|
- added one explicit drawImage(...) and writeImage(...) method (for removed default paramter values for 1.1.3)
|
||||||
|
- added init method with added parameter initial, for re-init after processor deep sleep wakeup
|
||||||
|
- added init parameter pulldown_rst_mode, for special RST handling (not needed for waveshare shield)
|
||||||
|
#### Version 1.1.3
|
||||||
|
- fixed wavetables for GDEW029T5 and GDEW0213I5F
|
||||||
|
- fixed drawImage(...) overloaded methods signature matching ambiguity
|
||||||
|
#### Version 1.1.2
|
||||||
|
- added support for GDEW029T5
|
||||||
|
- fixed (added) clipping for partial window
|
||||||
|
- fixed (added) powerOff() after full update (partial update keeps power on)
|
||||||
|
- added hibernate() for minimum power use by displays that support it
|
||||||
|
#### Version 1.1.1
|
||||||
|
- 2.7" b/w GDEW027W3 with fast partial update support, based on new demo code wavetable
|
||||||
|
- mapping suggestion added for Arduino MEGA
|
||||||
|
- NOTE: use voltage divider resistors for 5V Arduinos, series resistor is not reliable enough
|
||||||
|
- ConnectingHardware.md updated
|
||||||
|
#### Version 1.1.0
|
||||||
|
- added support for GDEW0213I5F for 2.13" b/w 104x212 flexible display
|
||||||
|
- updated GxEPD2_WiFi_Example and GxEPD2_Spiffs_Loader to use BearSSL on ESP8266, for large bitmap downloads
|
||||||
|
#### Version 1.0.9
|
||||||
|
- add GxEPD2_U8G2_Fonts_Example, e.g. for use of Umlauts ÄÖÜäéöü
|
||||||
|
- NOTE: you need to SAVE the modified example to a saveable location for UTF-8 characters to work
|
||||||
|
#### Version 1.0.8
|
||||||
|
- add GxEPD2_SD_AVR_boards_added.h to GxEPD2_SD_AVR_Example
|
||||||
|
- with example definitions for non-AVR boards (low level display class use example)
|
||||||
|
#### Version 1.0.7
|
||||||
|
- add GxEPD2_boards_added.h to GxEPD2_Example
|
||||||
|
- with example definitions for Arduino DUE and MKR1000
|
||||||
|
#### Version 1.0.6
|
||||||
|
- add buffered drawing option to GxEPD2_WiFi_Example
|
||||||
|
- allows use with 1.54" 3-color 200x200 display, may also be useful for small bitmaps
|
||||||
|
#### Version 1.0.5
|
||||||
|
- add buffered drawing option to GxEPD2_SD_Example and GxEPD2_Spiffs_Example
|
||||||
|
- allows use with 1.54" 3-color 200x200 display, may also be useful for small bitmaps
|
||||||
|
#### Version 1.0.4
|
||||||
|
- add GxEPD2_GFX base class support (optional, selectable, uses slightly more code)
|
||||||
|
- base class GxEPD2_GFX can be used to pass references or pointers to the display instance as parameter
|
||||||
|
- add GxEPD2_GFX_MultiDisplayExample, uses GxEPD2_GFX reference parameter
|
||||||
|
- modify GxEPD2_MultiDisplayExample for ESP8266 (template issue: class expected instead of typename)
|
||||||
|
#### Version 1.0.3
|
||||||
|
- fix GxEPD2_SD_Example & GxEPD2_SD_AVR_Example
|
||||||
|
- add GxEPD2_MultiDisplayExample (preliminary version)
|
||||||
|
#### Version 1.0.2
|
||||||
|
- initial release version 1.0.2
|
||||||
|
- tested with ESP8266, ESP32, STM32F103C8T6, AVR Arduino (Pro Mini 3.3V)
|
||||||
|
- 1.54" 3-color GxEPD2_154c can be used with paging for AVR
|
||||||
|
- wave tables in program space, 4.2" b/w can be used with GxEPD2_SD_AVR_Example
|
||||||
|
- issues enabled and welcome, please use Forum Topic for enhancement suggestions
|
||||||
|
#### Version 1.0.1
|
||||||
|
- pre-release test version
|
||||||
|
- GxEPD2_SD_AVR_Example added, has no graphics buffer to reduce RAM usage (base display class use)
|
||||||
|
- issues disabled so far, use Arduino Forum Topics instead
|
||||||
|
- in this version 1.54" 3-color GxEPD2_154c can only be used with full size buffer (or with no buffer base display class)
|
||||||
|
#### Version 1.0.0
|
||||||
|
- preliminary version, under construction
|
||||||
@@ -0,0 +1,785 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
#if defined (ESP8266)
|
||||||
|
// select one and adapt to your mapping, can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_102, GxEPD2_102::HEIGHT> display(GxEPD2_102(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, GxEPD2_290_GDEY029T71H::HEIGHT> display(GxEPD2_290_GDEY029T71H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_BW<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT / 2 > display(GxEPD2_583_GDEQ0583T31(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW < GxEPD2_750, GxEPD2_750::HEIGHT / 2 > display(GxEPD2_750(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT / 2 > display(GxEPD2_750_T7(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT / 2 > display(GxEPD2_750_GDEY075T7(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1085_GDEM1085T51, GxEPD2_1085_GDEM1085T51::HEIGHT / 2> display(GxEPD2_1085_GDEM1085T51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4, /*CS2=*/ 3)); // GDEM1085T51 1360x480, JD79686AB, (FPC8617)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM029C90 128x296, SSD1680
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT / 2> display(GxEPD2_420c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT / 2> display(GxEPD2_420c_Z21(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, GxEPD2_420c_GDEY042Z98::HEIGHT> display(GxEPD2_420c_GDEY042Z98(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_579c_GDEY0579Z93, GxEPD2_579c_GDEY0579Z93::HEIGHT / 2> display(GxEPD2_579c_GDEY0579Z93(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
// can use only quarter buffer size
|
||||||
|
//GxEPD2_3C < GxEPD2_583c, GxEPD2_583c::HEIGHT / 4 > display(GxEPD2_583c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C < GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT / 4 > display(GxEPD2_583c_Z83(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 4> display(GxEPD2_583c_GDEQ0583Z31(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT / 4> display(GxEPD2_750c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C < GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4 > display(GxEPD2_750c_Z08(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C < GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4 > display(GxEPD2_750c_Z90(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, GxEPD2_750c_GDEW075Z08::HEIGHT / 4> display(GxEPD2_750c_GDEW075Z08(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, GxEPD2_750c_GDEY075Z08::HEIGHT / 4> display(GxEPD2_750c_GDEY075Z08(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 4> display(GxEPD2_1160c_GDEY116Z91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 4> display(GxEPD2_1330c_GDEM133Z91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, GxEPD2_154c_GDEM0154F51H::HEIGHT> display(GxEPD2_154c_GDEM0154F51H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, GxEPD2_350c_GDEM035F51::HEIGHT> display(GxEPD2_350c_GDEM035F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, GxEPD2_397c_GDEM0397F81::HEIGHT> display(GxEPD2_397c_GDEM0397F81(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 2 > display(GxEPD2_437c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, GxEPD2_579c_GDEY0579F51::HEIGHT / 2> display(GxEPD2_579c_GDEY0579F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, GxEPD2_750c_GDEM075F52::HEIGHT / 2> display(GxEPD2_750c_GDEM075F52(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, GxEPD2_1160c_GDEY116F51::HEIGHT / 4> display(GxEPD2_1160c_GDEY116F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 5.65" 7-color (3C graphics)
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 6 > display(GxEPD2_730c_GDEY073D46(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEP073E01, GxEPD2_730c_GDEP073E01::HEIGHT / 6 > display(GxEPD2_730c_GDEP073E01(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 4, RST -> 2, CS -> SS(15), SCK -> SCK(14), MOSI -> MOSI(D7(13)), MISO -> MISO(D6(12)), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V pin of USB powered Wemos D1 mini doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, GxEPD2_it60::HEIGHT / 8> display(GxEPD2_it60(/*CS=5*/ SS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it60_1448x1072, GxEPD2_it60_1448x1072::HEIGHT / 8 > display(GxEPD2_it60_1448x1072(/*CS=5*/ SS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it78_1872x1404, GxEPD2_it78_1872x1404::HEIGHT / 8 > display(GxEPD2_it78_1872x1404(/*CS=5*/ SS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it103_1872x1404, GxEPD2_it103_1872x1404::HEIGHT / 8 > display(GxEPD2_it103_1872x1404(/*CS=5*/ SS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 4));
|
||||||
|
|
||||||
|
// ***** for mapping of Waveshare e-Paper ESP8266 Driver Board *****
|
||||||
|
// select one , can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, GxEPD2_290_GDEY029T71H::HEIGHT> display(GxEPD2_290_GDEY029T71H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_BW_<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT / 2 > display(GxEPD2_583_GDEQ0583T31(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW < GxEPD2_750, GxEPD2_750::HEIGHT / 2 > display(GxEPD2_750(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT / 2 > display(GxEPD2_750_T7(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT / 2 > display(GxEPD2_750_GDEY075T7(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM029C90 128x296, SSD1680
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT / 2> display(GxEPD2_420c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT / 2> display(GxEPD2_420c_Z21(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, GxEPD2_420c_GDEY042Z98::HEIGHT> display(GxEPD2_420c_GDEY042Z98(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
// can use only quarter buffer size
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT / 4> display(GxEPD2_583c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT / 4> display(GxEPD2_583c_Z83(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 4> display(GxEPD2_583c_GDEQ0583Z31(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT / 4> display(GxEPD2_750c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4> display(GxEPD2_750c_Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4> display(GxEPD2_750c_Z90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, GxEPD2_750c_GDEW075Z08::HEIGHT / 4> display(GxEPD2_750c_GDEW075Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, GxEPD2_750c_GDEY075Z08::HEIGHT / 4> display(GxEPD2_750c_GDEY075Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 4> display(GxEPD2_1160c_GDEY116Z91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 4> display(GxEPD2_1330c_GDEM133Z91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, GxEPD2_154c_GDEM0154F51H::HEIGHT> display(GxEPD2_154c_GDEM0154F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, GxEPD2_350c_GDEM035F51::HEIGHT> display(GxEPD2_350c_GDEM035F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, GxEPD2_397c_GDEM0397F81::HEIGHT> display(GxEPD2_397c_GDEM0397F81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, GxEPD2_579c_GDEY0579F51::HEIGHT / 2> display(GxEPD2_579c_GDEY0579F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, GxEPD2_750c_GDEM075F52::HEIGHT / 2> display(GxEPD2_750c_GDEM075F52(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, GxEPD2_1160c_GDEY116F51::HEIGHT / 4> display(GxEPD2_1160c_GDEY116F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 6 > display(GxEPD2_730c_GDEY073D46(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ESP32)
|
||||||
|
// select one and adapt to your mapping, can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_102, GxEPD2_102::HEIGHT> display(GxEPD2_102(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, GxEPD2_290_GDEY029T71H::HEIGHT> display(GxEPD2_290_GDEY029T71H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT> display(GxEPD2_576_GDEH0576T81(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, GxEPD2_750::HEIGHT> display(GxEPD2_750(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT> display(GxEPD2_750_T7(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT> display(GxEPD2_750_GDEY075T7(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1085_GDEM1085T51, GxEPD2_1085_GDEM1085T51::HEIGHT / 2> display(GxEPD2_1085_GDEM1085T51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4, /*CS2=*/ 2)); // GDEM1085T51 1360x480, JD79686AB, (FPC8617)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// next line is for Good Display ESP32 Development board wiring, CS2 connected to GPIO4
|
||||||
|
//GxEPD2_BW < GxEPD2_1085_GDEM1085T51, GxEPD2_1085_GDEM1085T51::HEIGHT / 2> display(GxEPD2_1085_GDEM1085T51(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13, /*CS2=*/ 4)); // GDEM1085T51 1360x480, JD79686AB, (FPC8617)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT> display(GxEPD2_420c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT> display(GxEPD2_420c_Z21(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, GxEPD2_420c_GDEY042Z98::HEIGHT> display(GxEPD2_420c_GDEY042Z98(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_579c_GDEY0579Z93, GxEPD2_579c_GDEY0579Z93::HEIGHT> display(GxEPD2_579c_GDEY0579Z93(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT> display(GxEPD2_583c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT> display(GxEPD2_583c_Z83(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 2> display(GxEPD2_583c_GDEQ0583Z31(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT> display(GxEPD2_750c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 2> display(GxEPD2_750c_Z90(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, GxEPD2_750c_GDEW075Z08::HEIGHT / 2> display(GxEPD2_750c_GDEW075Z08(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, GxEPD2_750c_GDEY075Z08::HEIGHT / 2> display(GxEPD2_750c_GDEY075Z08(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 2> display(GxEPD2_1160c_GDEY116Z91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 2> display(GxEPD2_1330c_GDEM133Z91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, GxEPD2_154c_GDEM0154F51H::HEIGHT> display(GxEPD2_154c_GDEM0154F51H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, GxEPD2_350c_GDEM035F51::HEIGHT> display(GxEPD2_350c_GDEM035F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, GxEPD2_397c_GDEM0397F81::HEIGHT> display(GxEPD2_397c_GDEM0397F81(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C<GxEPD2_437c, GxEPD2_437c::HEIGHT> display(GxEPD2_437c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, GxEPD2_579c_GDEY0579F51::HEIGHT> display(GxEPD2_579c_GDEY0579F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, GxEPD2_750c_GDEM075F52::HEIGHT / 2> display(GxEPD2_750c_GDEM075F52(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, GxEPD2_1160c_GDEY116F51::HEIGHT / 2> display(GxEPD2_1160c_GDEY116F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color (3C graphics)
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 4 > display(GxEPD2_730c_GDEY073D46(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEP073E01, GxEPD2_730c_GDEP073E01::HEIGHT / 4 > display(GxEPD2_730c_GDEP073E01(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 4, RST -> 16, CS -> SS(5), SCK -> SCK(18), MOSI -> MOSI(23), MISO -> MISO(19), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V over diode from USB (e.g. Wemos D1 mini) doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, GxEPD2_it60::HEIGHT> display(GxEPD2_it60(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it60_1448x1072, GxEPD2_it60_1448x1072::HEIGHT / 4 > display(GxEPD2_it60_1448x1072(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it78_1872x1404, GxEPD2_it78_1872x1404::HEIGHT / 8 > display(GxEPD2_it78_1872x1404(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it103_1872x1404, GxEPD2_it103_1872x1404::HEIGHT / 8 > display(GxEPD2_it103_1872x1404(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||||
|
|
||||||
|
// Waveshare 12.48 b/w SPI display board and frame or Good Display 12.48 b/w panel GDEW1248T3
|
||||||
|
// general constructor for use with all parameters, e.g. for Waveshare ESP32 driver board mounted on connection board
|
||||||
|
//GxEPD2_BW < GxEPD2_1248, GxEPD2_1248::HEIGHT / 4 >
|
||||||
|
//display(GxEPD2_1248(/*sck=*/ 13, /*miso=*/ 12, /*mosi=*/ 14, /*cs_m1=*/ 23, /*cs_s1=*/ 22, /*cs_m2=*/ 16, /*cs_s2=*/ 19,
|
||||||
|
// /*dc1=*/ 25, /*dc2=*/ 17, /*rst1=*/ 33, /*rst2=*/ 5, /*busy_m1=*/ 32, /*busy_s1=*/ 26, /*busy_m2=*/ 18, /*busy_s2=*/ 4));
|
||||||
|
// Waveshare 12.48 b/w/r SPI display board and frame or Good Display 12.48 b/w/r panel GDEY1248Z51
|
||||||
|
// general constructor for use with all parameters, e.g. for Waveshare ESP32 driver board mounted on connection board
|
||||||
|
//GxEPD2_3C < GxEPD2_1248c, GxEPD2_1248c::HEIGHT / 4 >
|
||||||
|
//display(GxEPD2_1248c(/*sck=*/ 13, /*miso=*/ 12, /*mosi=*/ 14, /*cs_m1=*/ 23, /*cs_s1=*/ 22, /*cs_m2=*/ 16, /*cs_s2=*/ 19,
|
||||||
|
// /*dc1=*/ 25, /*dc2=*/ 17, /*rst1=*/ 33, /*rst2=*/ 5, /*busy_m1=*/ 32, /*busy_s1=*/ 26, /*busy_m2=*/ 18, /*busy_s2=*/ 4));
|
||||||
|
|
||||||
|
// ***** for mapping of Waveshare ESP32 Driver Board *****
|
||||||
|
// use Board "ESP32 Dev Module" to build with Arduino IDE
|
||||||
|
// uncomment next line to use HSPI for EPD (and e.g VSPI for SD), e.g. with Waveshare ESP32 Driver Board
|
||||||
|
//#define USE_HSPI_FOR_EPD
|
||||||
|
// select one, can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_102, GxEPD2_102::HEIGHT> display(GxEPD2_102(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, GxEPD2_290_GDEY029T71H::HEIGHT> display(GxEPD2_290_GDEY029T71H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, GxEPD2_750::HEIGHT> display(GxEPD2_750(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT> display(GxEPD2_750_T7(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT> display(GxEPD2_750_GDEY075T7(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT> display(GxEPD2_420c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT> display(GxEPD2_420c_Z21(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, GxEPD2_420c_GDEY042Z98::HEIGHT> display(GxEPD2_420c_GDEY042Z98(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT> display(GxEPD2_583c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT> display(GxEPD2_583c_Z83(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 2> display(GxEPD2_583c_GDEQ0583Z31(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT> display(GxEPD2_750c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 2> display(GxEPD2_750c_Z90(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, GxEPD2_750c_GDEW075Z08::HEIGHT / 2> display(GxEPD2_750c_GDEW075Z08(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, GxEPD2_750c_GDEY075Z08::HEIGHT / 2> display(GxEPD2_750c_GDEY075Z08(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 2> display(GxEPD2_1160c_GDEY116Z91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 2> display(GxEPD2_1330c_GDEM133Z91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, GxEPD2_154c_GDEM0154F51H::HEIGHT> display(GxEPD2_154c_GDEM0154F51H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, GxEPD2_350c_GDEM035F51::HEIGHT> display(GxEPD2_350c_GDEM035F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, GxEPD2_397c_GDEM0397F81::HEIGHT> display(GxEPD2_397c_GDEM0397F81(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, GxEPD2_579c_GDEY0579F51::HEIGHT> display(GxEPD2_579c_GDEY0579F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, GxEPD2_750c_GDEM075F52::HEIGHT / 2> display(GxEPD2_750c_GDEM075F52(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, GxEPD2_1160c_GDEY116F51::HEIGHT / 4> display(GxEPD2_1160c_GDEY116F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 5.65" 7-color (3C graphics)
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 4 > display(GxEPD2_730c_GDEY073D46(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// can't use package "STMF1 Boards (STM32Duino.com)" (Roger Clark) anymore with Adafruit_GFX, use "STM32 Boards (selected from submenu)" (STMicroelectronics)
|
||||||
|
#if defined(ARDUINO_ARCH_STM32)
|
||||||
|
//#define Serial Serial1 // for my proto board
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 16384ul // ~16k is a good compromise
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_102, MAX_HEIGHT(GxEPD2_102)> display(GxEPD2_102(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, MAX_HEIGHT(GxEPD2_290_GDEY029T71H)> display(GxEPD2_290_GDEY029T71H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, MAX_HEIGHT(GxEPD2_579_GDEY0579T93)> display(GxEPD2_579_GDEY0579T93(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW <GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// next line is for Good Display DESPI-M02L Development board wiring, CS2 connected to GPIOD12
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
//GxEPD2_BW < GxEPD2_1085_GDEM1085T51, MAX_HEIGHT(GxEPD2_1085_GDEM1085T51)> display(GxEPD2_1085_GDEM1085T51(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13, /*CS2=*/ PD12)); // GDEM1085T51 1360x480, JD79686AB, (FPC8617)
|
||||||
|
// 3-color e-papers
|
||||||
|
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, MAX_HEIGHT_3C(GxEPD2_420c_GDEY042Z98)> display(GxEPD2_420c_GDEY042Z98(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_579c_GDEY0579Z93, MAX_HEIGHT_3C((GxEPD2_579c_GDEY0579Z93)> display(GxEPD2_579c_GDEY0579Z93(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEW075Z08)> display(GxEPD2_750c_GDEW075Z08(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEY075Z08)> display(GxEPD2_750c_GDEY075Z08(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, MAX_HEIGHT_3C(GxEPD2_154c_GDEM0154F51H)> display(GxEPD2_154c_GDEM0154F51H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT_3C((GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, MAX_HEIGHT_3C(GxEPD2_350c_GDEM035F51)> display(GxEPD2_350c_GDEM035F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, MAX_HEIGHT_3C(GxEPD2_397c_GDEM0397F81)> display(GxEPD2_397c_GDEM0397F81(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, MAX_HEIGHT_3C(GxEPD2_579c_GDEY0579F51)> display(GxEPD2_579c_GDEY0579F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, MAX_HEIGHT_3C(GxEPD2_750c_GDEM075F52)> display(GxEPD2_750c_GDEM075F52(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116F51)> display(GxEPD2_1160c_GDEY116F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
#define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEP073E01, MAX_HEIGHT_7C(GxEPD2_730c_GDEP073E01> display(GxEPD2_730c_GDEP073E01(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#undef MAX_HEIGHT_3C
|
||||||
|
#undef MAX_HEIGHT_7C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__AVR)
|
||||||
|
#if defined (ARDUINO_AVR_MEGA2560) // Note: SS is on 53 on MEGA
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#else // Note: SS is on 10 on UNO, NANO
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 800
|
||||||
|
#endif
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_102, MAX_HEIGHT(GxEPD2_102)> display(GxEPD2_102(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, MAX_HEIGHT(GxEPD2_290_GDEY029T71H)> display(GxEPD2_290_GDEY029T71H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, MAX_HEIGHT(GxEPD2_420_GYE042A87)> display(GxEPD2_420_GYE042A87(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, MAX_HEIGHT(GxEPD2_420_SE0420NQ04)> display(GxEPD2_420_SE0420NQ04(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, MAX_HEIGHT(GxEPD2_579_GDEY0579T93)> display(GxEPD2_579_GDEY0579T93(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1085_GDEM1085T51, MAX_HEIGHT(GxEPD2_1085_GDEM1085T51)> display(GxEPD2_1085_GDEM1085T51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7, /*CS2=*/ 6)); // GDEM1085T51 1360x480, JD79686AB, (FPC8617)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, MAX_HEIGHT_3C(GxEPD2_420c_GDEY042Z98)> display(GxEPD2_420c_GDEY042Z98(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_579c_GDEY0579Z93, MAX_HEIGHT_3C(GxEPD2_579c_GDEY0579Z93)> display(GxEPD2_579c_GDEY0579Z93(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEW075Z08)> display(GxEPD2_750c_GDEW075Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEY075Z08)> display(GxEPD2_750c_GDEY075Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, MAX_HEIGHT_3C(GxEPD2_154c_GDEM0154F51H)> display(GxEPD2_154c_GDEM0154F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT_3C(GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, MAX_HEIGHT_3C(GxEPD2_350c_GDEM035F51)> display(GxEPD2_350c_GDEM035F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, MAX_HEIGHT_3C(GxEPD2_397c_GDEM0397F81)> display(GxEPD2_397c_GDEM0397F81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, MAX_HEIGHT_3C(GxEPD2_750c_GDEM075F52)> display(GxEPD2_750c_GDEM075F52(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, MAX_HEIGHT_3C(GxEPD2_579c_GDEY0579F51)> display(GxEPD2_579c_GDEY0579F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116F51)> display(GxEPD2_1160c_GDEY116F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
#define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEP073E01, MAX_HEIGHT_7C(GxEPD2_730c_GDEP073E01)> display(GxEPD2_730c_GDEP073E01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
|
||||||
|
// ***** for mapping of Waveshare Universal e-Paper Raw Panel Driver Shield for Arduino / NUCLEO *****
|
||||||
|
// the RST line is not connected through level converter, but has a pull up resistor and a pull down diode to the Arduino pin; this is safe for 5V Arduino
|
||||||
|
// NOTE: the 11-pinholes for pin connectors are not through level converter, and the VCC pin is ~4.2V, only FCP connector pins are through level converter
|
||||||
|
// NOTE: the VCC pin on the 11-pinholes for pin connectors shouldn't be used, it seems to get back-fed from Arduino data pins through protection diodes of the level converter
|
||||||
|
// NOTE: the VCC pin should be fed from Arduino 5V pin for use on any 5V Arduino (did they forget to add this connection or add a jumper?)
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, MAX_HEIGHT(GxEPD2_290_GDEY029T71H)> display(GxEPD2_290_GDEY029T71H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, MAX_HEIGHT(GxEPD2_420_GYE042A87)> display(GxEPD2_420_GYE042A87(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, MAX_HEIGHT(GxEPD2_420_SE0420NQ04)> display(GxEPD2_420_SE0420NQ04(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, MAX_HEIGHT(GxEPD2_579_GDEY0579T93)> display(GxEPD2_579_GDEY0579T93(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, MAX_HEIGHT_3C(GxEPD2_420c_GDEY042Z98)> display(GxEPD2_420c_GDEY042Z98(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_579c_GDEY0579Z93, MAX_HEIGHT_3C(GxEPD2_579c_GDEY0579Z93)> display(GxEPD2_579c_GDEY0579Z93(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); //GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEW075Z08)> display(GxEPD2_750c_GDEW075Z08(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEY075Z08)> display(GxEPD2_750c_GDEY075Z08(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, MAX_HEIGHT_3C(GxEPD2_154c_GDEM0154F51H)> display(GxEPD2_154c_GDEM0154F51H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT_3C((GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, MAX_HEIGHT_3C(GxEPD2_350c_GDEM035F51)> display(GxEPD2_350c_GDEM035F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, MAX_HEIGHT_3C(GxEPD2_397c_GDEM0397F81)> display(GxEPD2_397c_GDEM0397F81(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, MAX_HEIGHT_3C(GxEPD2_579c_GDEY0579F51)> display(GxEPD2_579c_GDEY0579F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, MAX_HEIGHT_3C(GxEPD2_750c_GDEM075F52)> display(GxEPD2_750c_GDEM075F52(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116F51::HEIGHT)> display(GxEPD2_1160c_GDEY116F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEP073E01, MAX_HEIGHT_7C(GxEPD2_730c_GDEP073E01)> display(GxEPD2_730c_GDEP073E01(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
|
||||||
|
// Waveshare 12.48 b/w SPI display board and frame or Good Display 12.48 b/w panel GDEW1248T3
|
||||||
|
// general constructor for use with standard SPI pins, default SCK, MISO and MOSI, for UNO on UNO connectors
|
||||||
|
//GxEPD2_BW < GxEPD2_1248, MAX_HEIGHT(GxEPD2_1248)>
|
||||||
|
//display(GxEPD2_1248(/*cs_m1=*/ 2, /*cs_s1=*/ 3, /*cs_m2=*/ A4, /*cs_s2=*/ A0, /*dc1=*/ 6, /*dc2=*/ A3, /*rst1=*/ 5, /*rst2=*/ A2,
|
||||||
|
// /*busy_m1=*/ 4, /*busy_s1=*/ 7, /*busy_m2=*/ A1, /*busy_s2=*/ A5));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#undef MAX_HEIGHT_3C
|
||||||
|
#undef MAX_HEIGHT_7C
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,612 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
#ifndef _GxEPD2_boards_added_H_
|
||||||
|
#define _GxEPD2_boards_added_H_
|
||||||
|
|
||||||
|
// Arduino DUE
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino DUE, note: pin 77 is on board pin 10, SS is 10
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 76, DIN -> 75
|
||||||
|
// SPI pins are on 6 pin 2x3 SPI header, no SS on SPI header!
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAM)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_102, MAX_HEIGHT(GxEPD2_102)> display(GxEPD2_102(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, MAX_HEIGHT(GxEPD2_420_GYE042A87)> display(GxEPD2_420_GYE042A87(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, MAX_HEIGHT(GxEPD2_420_SE0420NQ04)> display(GxEPD2_420_SE0420NQ04(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT(GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
#define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 7, RST -> 9, CS -> SS(77), SCK -> SCK(76), MOSI -> MOSI(75), MISO -> MISO(74), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V over diode from USB (e.g. Wemos D1 mini) doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, MAX_HEIGHT(GxEPD2_it60)> display(GxEPD2_it60(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
//GxEPD2_BW<GxEPD2_it60_1448x1072, MAX_HEIGHT(GxEPD2_it60_1448x1072)> display(GxEPD2_it60_1448x1072(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
//GxEPD2_BW<GxEPD2_it78_1872x1404, MAX_HEIGHT(GxEPD2_it78_1872x1404)> display(GxEPD2_it78_1872x1404(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#undef MAX_HEIGHT_3C
|
||||||
|
#undef MAX_HEIGHT_7C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Arduino MKR1000 or MKRZERO
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MKR1000 or MKRZERO
|
||||||
|
// note: can't use SS on MKR1000: is defined as 24, should be 4
|
||||||
|
// BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAMD)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_102, MAX_HEIGHT(GxEPD2_102)> display(GxEPD2_102(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, MAX_HEIGHT(GxEPD2_420_GYE042A87)> display(GxEPD2_420_GYE042A87(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, MAX_HEIGHT(GxEPD2_420_SE0420NQ04)> display(GxEPD2_420_SE0420NQ04(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT(GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
#define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 5, RST -> 6, CS -> 4, SCK -> SCK(9), MOSI -> MOSI(8), MISO -> MISO(10), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V over diode from USB (e.g. Wemos D1 mini) doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, MAX_HEIGHT(GxEPD2_it60)> display(GxEPD2_it60(/*CS=*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
//GxEPD2_BW<GxEPD2_it60_1448x1072, MAX_HEIGHT(GxEPD2_it60_1448x1072)> display(GxEPD2_it60_1448x1072(/*CS=*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
//GxEPD2_BW<GxEPD2_it78_1872x1404, MAX_HEIGHT(GxEPD2_it78_1872x1404)> display(GxEPD2_it78_1872x1404(/*CS=*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#undef MAX_HEIGHT_3C
|
||||||
|
#undef MAX_HEIGHT_7C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32 D32 PRO
|
||||||
|
// BUSY -> 15, RST -> 2, DC -> 0, CS -> 5, CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// note: use explicit value for CS, as SS is re-defined to TF_CS(4) in pins_arduino.h for Board: "LOLIN D32 PRO"
|
||||||
|
|
||||||
|
#if defined(ESP32) && defined(ARDUINO_LOLIN_D32_PRO)
|
||||||
|
// select one and adapt to your mapping, can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_102, GxEPD2_102::HEIGHT> display(GxEPD2_102(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, GxEPD2_750::HEIGHT> display(GxEPD2_750(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT> display(GxEPD2_750_T7(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT> display(GxEPD2_750_GDEY075T7(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT> display(GxEPD2_420c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT> display(GxEPD2_420c_Z21(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT> display(GxEPD2_583c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT> display(GxEPD2_583c_Z83(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 2> display(GxEPD2_583c_GDEQ0583Z31(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT> display(GxEPD2_750c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT> display(GxEPD2_750c_Z90(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 2> display(GxEPD2_1160c_GDEY116Z91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 2> display(GxEPD2_1330c_GDEM133Z91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 4 > display(GxEPD2_730c_GDEY073D46(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 4, RST -> 16, CS -> 5, SCK -> SCK(18), MOSI -> MOSI(23), MISO -> MISO(19), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V over diode from USB (e.g. Wemos D1 mini) doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, GxEPD2_it60::HEIGHT> display(GxEPD2_it60(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15));
|
||||||
|
//GxEPD2_BW < GxEPD2_it60_1448x1072, GxEPD2_it60_1448x1072::HEIGHT / 4 > display(GxEPD2_it60_1448x1072(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15));
|
||||||
|
//GxEPD2_BW < GxEPD2_it78_1872x1404, GxEPD2_it78_1872x1404::HEIGHT / 8 > display(GxEPD2_it78_1872x1404(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. TTGO T8 ESP32-WROVER
|
||||||
|
// BUSY -> 4, RST -> 0, DC -> 2, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "ESP32 Dev Module":
|
||||||
|
|
||||||
|
#if defined(ESP32) && defined(ARDUINO_ESP32_DEV)
|
||||||
|
// select one and adapt to your mapping, can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_102, GxEPD2_102::HEIGHT> display(GxEPD2_102(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, GxEPD2_750::HEIGHT> display(GxEPD2_750(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT> display(GxEPD2_750_T7(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT> display(GxEPD2_750_GDEY075T7(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT> display(GxEPD2_420c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT> display(GxEPD2_420c_Z21(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT> display(GxEPD2_583c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT> display(GxEPD2_583c_Z83(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 2> display(GxEPD2_583c_GDEQ0583Z31(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT> display(GxEPD2_750c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT> display(GxEPD2_750c_Z90(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 2> display(GxEPD2_1160c_GDEY116Z91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 2> display(GxEPD2_1330c_GDEM133Z91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 4 > display(GxEPD2_730c_GDEY073D46(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 4, RST -> 16, CS -> SS(5), SCK -> SCK(18), MOSI -> MOSI(23), MISO -> MISO(19), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V over diode from USB (e.g. Wemos D1 mini) doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, GxEPD2_it60::HEIGHT> display(GxEPD2_it60(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it60_1448x1072, GxEPD2_it60_1448x1072::HEIGHT / 4 > display(GxEPD2_it60_1448x1072(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it78_1872x1404, GxEPD2_it78_1872x1404::HEIGHT / 8 > display(GxEPD2_it78_1872x1404(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
// BUSY -> GPIO16, RST -> GPIO5, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
#if defined (ESP8266)
|
||||||
|
// select one , can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT / 2 > display(GxEPD2_583_GDEQ0583T31(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW < GxEPD2_750, GxEPD2_750::HEIGHT / 2 > display(GxEPD2_750(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT / 2 > display(GxEPD2_750_T7(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT / 2 > display(GxEPD2_750_GDEY075T7(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM029C90 128x296, SSD1680
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT / 2> display(GxEPD2_420c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT / 2> display(GxEPD2_420c_Z21(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
// can use only quarter buffer size
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT / 4> display(GxEPD2_583c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT / 4> display(GxEPD2_583c_Z83(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 4> display(GxEPD2_583c_GDEQ0583Z31(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT / 4> display(GxEPD2_750c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4> display(GxEPD2_750c_Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4> display(GxEPD2_750c_Z90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 4> display(GxEPD2_1160c_GDEY116Z91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 4> display(GxEPD2_1330c_GDEM133Z91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 6 > display(GxEPD2_730c_GDEY073D46(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RP2040)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 131072ul // e.g. half of available ram
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_102, MAX_HEIGHT(GxEPD2_102)> display(GxEPD2_102(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, MAX_HEIGHT(GxEPD2_420_GYE042A87)> display(GxEPD2_420_GYE042A87(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, MAX_HEIGHT(GxEPD2_420_SE0420NQ04)> display(GxEPD2_420_SE0420NQ04(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT(GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
#define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#undef MAX_HEIGHT_3C
|
||||||
|
#undef MAX_HEIGHT_7C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,374 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// NOTE: you may need to adapt or select for your wiring in the processor specific conditional compile sections below
|
||||||
|
|
||||||
|
// select the display class (only one), matching the kind of display panel
|
||||||
|
#define GxEPD2_DISPLAY_CLASS GxEPD2_BW
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_3C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_4C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_7C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_BW_SHM
|
||||||
|
|
||||||
|
// select the display driver class (only one) for your panel
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_102 // GDEW0102T4 80x128, UC8175, (WFT0102CZA2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_150_BN // DEPG0150BN 200x200, SSD1681, (FPC8101), TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154 // GDEP015OC1 200x200, IL3829, (WFC0000CZ07), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_D67 // GDEH0154D67 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_T8 // GDEW0154T8 152x152, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M09 // GDEW0154M09 200x200, JD79653A, (WFT0154CZB3)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M10 // GDEW0154M10 152x152, UC8151D, (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_GDEY0154D67 // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213 // GDE0213B1 122x250, IL3895, (HINK-E0213-G01), phased out
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B72 // GDEH0213B72 122x250, SSD1675A (IL3897), (HINK-E0213A22-A0 SLH1852)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B73 // GDEH0213B73 122x250, SSD1675B, (HINK-E0213A22-A0 SLH1914)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B74 // GDEM0213B74 122x250, SSD1680, FPC-7528B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_flex // GDEW0213I5F 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_M21 // GDEW0213M21 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_T5D // GDEW0213T5D 104x212, UC8151D, (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_BN // DEPG0213BN 122x250, SSD1680, (FPC-7528B), TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_GDEY0213B74 // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260 // GDEW026T0 152x296, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260_M01 // GDEW026M01 152x296, UC8151 (IL0373), (WFT0260CZB2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_BN // DEPG0266BN 152x296, SSD1680, (FPC7510), TTGO T5 V2.66, TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_GDEY0266T90 // GDEY0266T90 152x296, SSD1680, (FPC-A003 HB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270 // GDEW027W3 176x264, EK79652 (IL91874), (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270_GDEY027T91 // GDEY027T91 176x264, SSD1680, (FB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290 // GDEH029A1 128x296, SSD1608 (IL3820), (E029A01-FPC-A1 SYX1553)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5 // GDEW029T5 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5D // GDEW029T5D 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_I6FD // GDEW029I6FD 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94_V2 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b), Waveshare 2.9" V2 variant
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_BS // DEPG0290BS 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_M06 // GDEW029M06 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T94 // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T71H // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_310_GDEQ031T10 // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_GDEY037T03 // GDEY037T03 240x416, UC8253, (FPC-F002, hidden on CrowPanel)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1 280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_371 // GDEW0371W7 240x416, UC8171 (IL0324), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397_GDEM0397T81 // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420 // GDEW042T2 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GYE042A87 // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_SE0420NQ04 // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_576_GDEH0576T81 // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579_GDEY0579T93 // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583 // GDEW0583T7 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8 // GDEW0583T8 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750 // GDEW075T8 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_T7 // GDEW075T7 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_GDEY075T7 // GDEY075T7 800x480, UC8179 (GD7965), (FPC-C001 20.08.20)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1020_GDEM102T91 // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1085_GDEM1085T51 // GDEM1085T51 1360x480, JD79686AB, (FPC8617) *** needs CS2 ***
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160_T91 // GDEH116T91 960x640, SSD1677, (none or hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248 // GDEW1248T3 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330_GDEM133T91 // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c // GDEW0154Z04 200x200, IL0376F, (WFT0000CZ04), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_Z90c // GDEH0154Z90 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c // GDEW0213Z16 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z19c // GDEH0213Z19 104x212, UC8151D, (HINK-E0213A20-A2 2020-11-19)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z98c // GDEY0213Z98 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c // GDEY0266Z90 152x296, SSD1680, (FPC-7510)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270c // GDEW027C44 176x264, IL91874, (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c // GDEW029Z10 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_Z13c // GDEH029Z13 128x296, UC8151D, (HINK-E029A10-A3 20160809)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_C90c // GDEM029C90 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c // GDEW042Z15 400x300, UC8176 (IL0398), (WFT0420CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_Z21 // GDEQ042Z21 400x300, UC8276, (hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY042Z98 // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579Z93 // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c // GDEW0583Z21 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_Z83 // GDEW0583Z83 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_GDEQ0583Z31 // GDEQ0583Z31 648x480, UC8179C,
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c // GDEW075Z09 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z08 // GDEW075Z08 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90 880x528, SSD1677, (HINK-E075A07-A0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEW075Z08 // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEY075Z08 // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116Z91 // GDEY116Z91 960x640, SSD1677, (FPV-K002 22.04.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248c // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330c_GDEM133Z91 // GDEM133Z91 960x680, SSD1677 (FPC-7701 REV.B)
|
||||||
|
// 4-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c_GDEM0154F51H // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c_GDEY0213F51 // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_300c // Waveshare 3.00" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_350c_GDEM035F51 // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397c_GDEM0397F81 // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_437c // Waveshare 4.37" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579F51 // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEM075F52 // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116F51 // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c_GDEP0565D90 // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEY073D46 // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_ACeP_730 // Waveshare 7.3" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEP073E01 // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60 // ED060SCT 800x600
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60_1448x1072 // ED060KC1 1448x1072
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it78_1872x1404 // ED078KC2 1872x1404
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it103_1872x1404 // ES103TC1 1872x1404
|
||||||
|
|
||||||
|
// SS is usually used for CS. define here for easy change
|
||||||
|
#ifndef EPD_CS
|
||||||
|
#define EPD_CS SS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
||||||
|
|
||||||
|
// somehow there should be an easier way to do this
|
||||||
|
#define GxEPD2_BW_IS_GxEPD2_BW true
|
||||||
|
#define GxEPD2_3C_IS_GxEPD2_3C true
|
||||||
|
#define GxEPD2_4C_IS_GxEPD2_4C true
|
||||||
|
#define GxEPD2_7C_IS_GxEPD2_7C true
|
||||||
|
#define GxEPD2_BW_SHM_IS_GxEPD2_BW_SHM true
|
||||||
|
#define GxEPD2_1248_IS_GxEPD2_1248 true
|
||||||
|
#define GxEPD2_1248c_IS_GxEPD2_1248c true
|
||||||
|
#define IS_GxEPD(c, x) (c##x)
|
||||||
|
#define IS_GxEPD2_BW(x) IS_GxEPD(GxEPD2_BW_IS_, x)
|
||||||
|
#define IS_GxEPD2_3C(x) IS_GxEPD(GxEPD2_3C_IS_, x)
|
||||||
|
#define IS_GxEPD2_4C(x) IS_GxEPD(GxEPD2_4C_IS_, x)
|
||||||
|
#define IS_GxEPD2_7C(x) IS_GxEPD(GxEPD2_7C_IS_, x)
|
||||||
|
#define IS_GxEPD2_BW_SHM(x) IS_GxEPD(GxEPD2_BW_SHM_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248(x) IS_GxEPD(GxEPD2_1248_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248c(x) IS_GxEPD(GxEPD2_1248c_IS_, x)
|
||||||
|
|
||||||
|
#include "GxEPD2_selection_check.h"
|
||||||
|
|
||||||
|
// for my test use only
|
||||||
|
//#if defined(_AVR)
|
||||||
|
//#warning "defined(_AVR)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ESP32)
|
||||||
|
//#warning "defined(ESP32)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
//#warning "defined(ARDUINO_ARCH_ESP32)"
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_AVR)
|
||||||
|
#if defined (ARDUINO_AVR_MEGA2560) // Note: SS is on 53 on MEGA
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#elif defined(ARDUINO_AVR_NANO_EVERY)
|
||||||
|
#define EPD_CS 10
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#else // Note: SS is on 10 on UNO, NANO
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 800 //
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
// for Arduino Micro or Arduino Leonardo with CS on 10 on my proto boards (SS would be 17) uncomment instead:
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_MEGAAVR)
|
||||||
|
#if defined(ARDUINO_AVR_NANO_EVERY) || defined(ARDUINO_AVR_UNO_WIFI_REV2)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 65536ul // e.g.
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
#if !IS_GxEPD2_1248(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_1248c(GxEPD2_DRIVER_CLASS)
|
||||||
|
#if defined(ARDUINO_NANO_ESP32) // uses Dx pin names
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ D10, /*DC=*/ D8, /*RST=*/ D9, /*BUSY=*/ D7));
|
||||||
|
#elif defined(ARDUINO_LOLIN_D32_PRO)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // my LOLIN_D32_PRO proto board
|
||||||
|
#elif defined(ARDUINO_LOLIN_S2_MINI)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 33, /*DC=*/ 35, /*RST=*/ 37, /*BUSY=*/ 39)); // my LOLIN ESP32 S2 mini connection
|
||||||
|
#elif defined(ARDUINO_ESP32S3_DEV)
|
||||||
|
// ESP32E6-E01 : only 50 pin FPC works on actual version (11.1.2025)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 2, /*DC=*/ 3, /*RST=*/ 4, /*BUSY=*/ 5)); // Good Display ESP32E6-E01 board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 45, /*DC=*/ 46, /*RST=*/ 47, /*BUSY=*/ 48)); // CrowPanel wiring
|
||||||
|
#else
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13)); // Good Display ESP32 Development Kit ESP32-L
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13, /*CS2=*/ 4)); // for GDEM1085T51 with ESP32-L
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // my suggested wiring and proto board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ 5, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // LILYGO_T5_V2.4.1
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 19, /*RST=*/ 4, /*BUSY=*/ 34)); // LILYGO® TTGO T5 2.66
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // e.g. TTGO T8 ESP32-WROVER
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare ESP32 Driver Board
|
||||||
|
#endif
|
||||||
|
#else // GxEPD2_1248 or GxEPD2_1248c
|
||||||
|
// Waveshare 12.48 b/w or b/w/r SPI display board and frame or Good Display 12.48 b/w panel GDEW1248T3 or b/w/r panel GDEY1248Z51
|
||||||
|
// general constructor for use with all parameters, e.g. for Waveshare ESP32 driver board mounted on connection board
|
||||||
|
GxEPD2_DISPLAY_CLASS < GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS) > display(GxEPD2_DRIVER_CLASS(/*sck=*/ 13, /*miso=*/ 12, /*mosi=*/ 14,
|
||||||
|
/*cs_m1=*/ 23, /*cs_s1=*/ 22, /*cs_m2=*/ 16, /*cs_s2=*/ 19,
|
||||||
|
/*dc1=*/ 25, /*dc2=*/ 17, /*rst1=*/ 33, /*rst2=*/ 5,
|
||||||
|
/*busy_m1=*/ 32, /*busy_s1=*/ 26, /*busy_m2=*/ 18, /*busy_s2=*/ 4));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (ARDUINO_ARCH_ESP8266)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE (81920ul-34000ul-5000ul) // ~34000 base use, change 5000 to your application use
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=D8*/ EPD_CS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// can't use package "STMF1 Boards (STM32Duino.com)" (Roger Clark) anymore with Adafruit_GFX, use "STM32 Boards (selected from submenu)" (STMicroelectronics)
|
||||||
|
#if defined(ARDUINO_ARCH_STM32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
// for Good Display STM32 Development Kit DESPI-L.
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13, /*CS2=*/ PD12)); // for GDEM1085T51
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=PA4*/ EPD_CS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // my proto board
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RENESAS)
|
||||||
|
#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAM)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAMD)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_SAMD_NANO_33_IOT)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#else
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 3, /*RST=*/ 2, /*BUSY=*/ 1)); // my Seed XIOA0
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // my other Seed XIOA0
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RP2040)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 131072ul // e.g. half of available ram
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_NANO_RP2040_CONNECT)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 5, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // my proto board
|
||||||
|
// mapping of GoodDisplay DESPI-PICO. NOTE: uses alternate HW SPI pins!
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
|
||||||
|
// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,165 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
#define GxEPD2_102_IS_BW true
|
||||||
|
#define GxEPD2_150_BN_IS_BW true
|
||||||
|
#define GxEPD2_154_IS_BW true
|
||||||
|
#define GxEPD2_154_D67_IS_BW true
|
||||||
|
#define GxEPD2_154_T8_IS_BW true
|
||||||
|
#define GxEPD2_154_M09_IS_BW true
|
||||||
|
#define GxEPD2_154_M10_IS_BW true
|
||||||
|
#define GxEPD2_154_GDEY0154D67_IS_BW true
|
||||||
|
#define GxEPD2_213_IS_BW true
|
||||||
|
#define GxEPD2_213_B72_IS_BW true
|
||||||
|
#define GxEPD2_213_B73_IS_BW true
|
||||||
|
#define GxEPD2_213_B74_IS_BW true
|
||||||
|
#define GxEPD2_213_flex_IS_BW true
|
||||||
|
#define GxEPD2_213_M21_IS_BW true
|
||||||
|
#define GxEPD2_213_T5D_IS_BW true
|
||||||
|
#define GxEPD2_213_BN_IS_BW true
|
||||||
|
#define GxEPD2_213_GDEY0213B74_IS_BW true
|
||||||
|
#define GxEPD2_260_IS_BW true
|
||||||
|
#define GxEPD2_260_M01_IS_BW true
|
||||||
|
#define GxEPD2_266_BN_IS_BW true
|
||||||
|
#define GxEPD2_266_GDEY0266T90_IS_BW true
|
||||||
|
#define GxEPD2_270_IS_BW true
|
||||||
|
#define GxEPD2_270_GDEY027T91_IS_BW true
|
||||||
|
#define GxEPD2_290_IS_BW true
|
||||||
|
#define GxEPD2_290_T5_IS_BW true
|
||||||
|
#define GxEPD2_290_T5D_IS_BW true
|
||||||
|
#define GxEPD2_290_I6FD_IS_BW true
|
||||||
|
#define GxEPD2_290_T94_IS_BW true
|
||||||
|
#define GxEPD2_290_T94_V2_IS_BW true
|
||||||
|
#define GxEPD2_290_BS_IS_BW true
|
||||||
|
#define GxEPD2_290_M06_IS_BW true
|
||||||
|
#define GxEPD2_290_GDEY029T94_IS_BW true
|
||||||
|
#define GxEPD2_290_GDEY029T71H_IS_BW true
|
||||||
|
#define GxEPD2_310_GDEQ031T10_IS_BW true
|
||||||
|
#define GxEPD2_371_IS_BW true
|
||||||
|
#define GxEPD2_370_TC1_IS_BW true
|
||||||
|
#define GxEPD2_370_GDEY037T03_IS_BW true
|
||||||
|
#define GxEPD2_397_GDEM0397T81_IS_BW true
|
||||||
|
#define GxEPD2_420_IS_BW true
|
||||||
|
#define GxEPD2_420_M01_IS_BW true
|
||||||
|
#define GxEPD2_420_GDEY042T81_IS_BW true
|
||||||
|
#define GxEPD2_420_GYE042A87_IS_BW true
|
||||||
|
#define GxEPD2_420_SE0420NQ04_IS_BW true
|
||||||
|
#define GxEPD2_426_GDEQ0426T82_IS_BW true
|
||||||
|
#define GxEPD2_576_GDEH0576T81_IS_BW true
|
||||||
|
#define GxEPD2_579_GDEY0579T93_IS_BW true
|
||||||
|
#define GxEPD2_583_IS_BW true
|
||||||
|
#define GxEPD2_583_T8_IS_BW true
|
||||||
|
#define GxEPD2_583_GDEQ0583T31_IS_BW true
|
||||||
|
#define GxEPD2_750_IS_BW true
|
||||||
|
#define GxEPD2_750_T7_IS_BW true
|
||||||
|
#define GxEPD2_750_GDEY075T7_IS_BW true
|
||||||
|
#define GxEPD2_1020_GDEM102T91_IS_BW true
|
||||||
|
#define GxEPD2_1085_GDEM1085T51_IS_BW true
|
||||||
|
#define GxEPD2_1160_T91_IS_BW true
|
||||||
|
#define GxEPD2_1248_IS_BW true
|
||||||
|
#define GxEPD2_1330_GDEM133T91_IS_BW true
|
||||||
|
#define GxEPD2_it60_IS_BW true
|
||||||
|
#define GxEPD2_it60_1448x1072_IS_BW true
|
||||||
|
#define GxEPD2_it78_1872x1404_IS_BW true
|
||||||
|
#define GxEPD2_it103_1872x1404_IS_BW true
|
||||||
|
// 3-color e-papers
|
||||||
|
#define GxEPD2_154c_IS_3C true
|
||||||
|
#define GxEPD2_154_Z90c_IS_3C true
|
||||||
|
#define GxEPD2_213c_IS_3C true
|
||||||
|
#define GxEPD2_213_Z19c_IS_3C true
|
||||||
|
#define GxEPD2_213_Z98c_IS_3C true
|
||||||
|
#define GxEPD2_266c_IS_3C true
|
||||||
|
#define GxEPD2_270c_IS_3C true
|
||||||
|
#define GxEPD2_290c_IS_3C true
|
||||||
|
#define GxEPD2_290_Z13c_IS_3C true
|
||||||
|
#define GxEPD2_290_C90c_IS_3C true
|
||||||
|
#define GxEPD2_420c_IS_3C true
|
||||||
|
#define GxEPD2_420c_Z21_IS_3C true
|
||||||
|
#define GxEPD2_420c_GDEY042Z98_IS_3C true
|
||||||
|
#define GxEPD2_579c_GDEY0579Z93_IS_3C true
|
||||||
|
#define GxEPD2_583c_IS_3C true
|
||||||
|
#define GxEPD2_583c_Z83_IS_3C true
|
||||||
|
#define GxEPD2_583c_GDEQ0583Z31_IS_3C true
|
||||||
|
#define GxEPD2_750c_IS_3C true
|
||||||
|
#define GxEPD2_750c_Z08_IS_3C true
|
||||||
|
#define GxEPD2_750c_Z90_IS_3C true
|
||||||
|
#define GxEPD2_750c_GDEW075Z08_IS_3C true
|
||||||
|
#define GxEPD2_750c_GDEY075Z08_IS_3C true
|
||||||
|
#define GxEPD2_1160c_GDEY116Z91_IS_3C true
|
||||||
|
#define GxEPD2_1248c_IS_3C true
|
||||||
|
#define GxEPD2_1330c_GDEM133Z91_IS_3C true
|
||||||
|
// 4-color e-paper
|
||||||
|
#define GxEPD2_154c_GDEM0154F51H_IS_4C true
|
||||||
|
#define GxEPD2_213c_GDEY0213F51_IS_4C true
|
||||||
|
#define GxEPD2_266c_GDEY0266F51H_IS_4C true
|
||||||
|
#define GxEPD2_290c_GDEY029F51H_IS_4C true
|
||||||
|
#define GxEPD2_300c_IS_4C true
|
||||||
|
#define GxEPD2_350c_GDEM035F51_IS_4C true
|
||||||
|
#define GxEPD2_397c_GDEM0397F81_IS_4C true
|
||||||
|
#define GxEPD2_420c_GDEY0420F51_IS_4C true
|
||||||
|
#define GxEPD2_437c_IS_4C true
|
||||||
|
#define GxEPD2_579c_GDEY0579F51_IS_4C true
|
||||||
|
#define GxEPD2_750c_GDEM075F52_IS_4C true
|
||||||
|
#define GxEPD2_1160c_GDEY116F51_IS_4C true
|
||||||
|
// 7-color e-paper
|
||||||
|
#define GxEPD2_565c_IS_7C true
|
||||||
|
#define GxEPD2_565c_GDEP0565D90_IS_7C true
|
||||||
|
#define GxEPD2_730c_GDEY073D46_IS_7C true
|
||||||
|
#define GxEPD2_730c_ACeP_730_IS_7C true
|
||||||
|
#define GxEPD2_730c_GDEP073E01_IS_7C true
|
||||||
|
|
||||||
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
||||||
|
#define IS_GxEPD2_DRIVER(c, x) (c##x)
|
||||||
|
#define IS_GxEPD2_DRIVER_BW(x) IS_GxEPD2_DRIVER(x, _IS_BW)
|
||||||
|
#define IS_GxEPD2_DRIVER_3C(x) IS_GxEPD2_DRIVER(x, _IS_3C)
|
||||||
|
#define IS_GxEPD2_DRIVER_4C(x) IS_GxEPD2_DRIVER(x, _IS_4C)
|
||||||
|
#define IS_GxEPD2_DRIVER_7C(x) IS_GxEPD2_DRIVER(x, _IS_7C)
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 3-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 4-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with b/w driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with 4-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with b/w driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with 3-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS) && !IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_7C used with less colors driver class"
|
||||||
|
#endif
|
||||||
|
#if !IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "neither BW nor 3C nor 4C nor 7C kind defined for driver class (error in GxEPD2_selection_check.h)"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// mapping of Good Display Arduino UNO Development Kit DEArduino-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> 4, RES -> 5, D/C -> 6, CS-> 7, SCK -> 13, SDI -> 11
|
||||||
|
|
||||||
|
// mapping of Good Display ESP8266 Development Kit ESP8266-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO16, RES -> GPIO5, D/C -> GPIO4, CS-> GPIO2, SCK -> GPIO14, SDI -> GPIO13
|
||||||
|
|
||||||
|
// mapping of Good Display ESP32 Development Kit ESP32-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO13, RES -> GPIO12, D/C -> GPIO14, CS-> GPIO27, SCK -> GPIO18, SDI -> GPIO23
|
||||||
|
|
||||||
|
// mapping of Good Display STM32 Development Kit DESPI-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PD9, SDI -> PD10
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PA5, SDI -> PA7 // for HW SPI with GxEPD2
|
||||||
|
|
||||||
|
// connection suggestions concerning Waveshare e-paper HAT Rev 2.3:
|
||||||
|
// DON'T FORGET to connect the PWR pin to VCC, to enable power to the board.
|
||||||
|
// RST is no longer used to disable power to the board, as with earlier revisions.
|
||||||
|
// Note, for 3.3V processors, no level converters are needed. Use DESPI-C02 instead. Uses less power.
|
||||||
|
// See https://www.buyepaper.com/products/development-kit-connection-adapter-board-for-eaper-display-demo-kit
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
|
||||||
|
// BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
|
||||||
|
// BUSY -> GPIO4, RST -> GPIO2, DC -> GPIO0, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from GPIO15 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from GPIO2 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
// BUSY -> GPIO5, RST -> GPIO2, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
// BUSY -> GPIO16, RST -> GPIO5, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32, see .../variants/.../pins_arduino.h for your board
|
||||||
|
// NOTE: there are variants with different pins for SPI ! CHECK SPI PINS OF YOUR BOARD
|
||||||
|
// BUSY -> 4, RST -> 16, DC -> 17, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
|
||||||
|
// mapping of Waveshare ESP32 Driver Board
|
||||||
|
// BUSY -> 25, RST -> 26, DC -> 27, CS-> 15, CLK -> 13, DIN -> 14
|
||||||
|
// NOTE: this board uses "unusual" SPI pins and requires re-mapping of HW SPI to these pins in SPIClass
|
||||||
|
// see example GxEPD2_WS_ESP32_Driver.ino, it shows how this can be done easily
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32 D32 PRO
|
||||||
|
// BUSY -> 15, RST -> 2, DC -> 0, CS -> 5, CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// note: use explicit value for CS, as SS is re-defined to TF_CS(4) in pins_arduino.h for Board: "LOLIN D32 PRO"
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. TTGO T8 ESP32-WROVER
|
||||||
|
// BUSY -> 4, RST -> 0, DC -> 2, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "ESP32 Dev Module":
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32S2, e.g. LOLIN ESP32 S2 mini, direct connection of DESPI-C02
|
||||||
|
// BUSY -> 39, RST -> 37, DC -> 35, CS -> 33, CLK -> 18, DIN -> 16, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "LOLIN S2 MINI":
|
||||||
|
|
||||||
|
// new mapping suggestion for STM32F1, e.g. STM32F103C8T6 "BluePill"
|
||||||
|
// BUSY -> A1, RST -> A2, DC -> A3, CS-> A4, CLK -> A5, DIN -> A7
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, UNO, NANO etc.
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, Arduino Micro, Leonardo
|
||||||
|
// note: on Leonardo board HW SPI pins are on 6-pin ICSP header
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 15, DIN -> 16
|
||||||
|
|
||||||
|
// mapping of Waveshare Universal e-Paper Raw Panel Driver Shield for Arduino / NUCLEO
|
||||||
|
// BUSY -> 7, RST -> 8, DC -> 9, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MEGA
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 53, CLK -> 52, DIN -> 51
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino DUE, note: pin 77 is on board pin 10, SS is 10
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 76, DIN -> 75
|
||||||
|
// SPI pins are on 6 pin 2x3 SPI header, no SS on SPI header!
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MKR1000 or MKRZERO
|
||||||
|
// note: can't use SS on MKR1000: is defined as 24, should be 4
|
||||||
|
// BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
|
||||||
|
|
||||||
|
// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3
|
||||||
|
|
||||||
|
// mapping of my new proto board like Waveshare Pico-ePaper-2.9
|
||||||
|
// needs 10k pull-up on RST when used with Arduino MBED OS RP2040 Boards
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
|
|
||||||
|
// mapping of Waveshare Pico-ePaper-2.9
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
@@ -0,0 +1,768 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
//
|
||||||
|
// Purpose: show uses of GxEPD2_GFX base class for references to a display instance
|
||||||
|
//
|
||||||
|
// BitmapDisplay shows the use of the display instance reference as a class member
|
||||||
|
|
||||||
|
#include "BitmapDisplay.h"
|
||||||
|
|
||||||
|
#if !defined(__AVR) && !defined(STM32F1xx)
|
||||||
|
|
||||||
|
// note 16.11.2019: the compiler may exclude code based on constant if statements (display.epd2.panel == constant),
|
||||||
|
// therefore bitmaps may get optimized out by the linker
|
||||||
|
// but here display.epd2.panel is not known at compile time.
|
||||||
|
|
||||||
|
// comment out unused bitmaps to reduce code space used
|
||||||
|
#include "bitmaps/Bitmaps200x200.h" // 1.54" b/w
|
||||||
|
#include "bitmaps/Bitmaps104x212.h" // 2.13" b/w flexible GDEW0213I5F
|
||||||
|
#include "bitmaps/Bitmaps128x250.h" // 2.13" b/w
|
||||||
|
#include "bitmaps/Bitmaps128x296.h" // 2.9" b/w
|
||||||
|
#include "bitmaps/Bitmaps152x296.h" // 2.6" b/w
|
||||||
|
#include "bitmaps/Bitmaps176x264.h" // 2.7" b/w
|
||||||
|
#include "bitmaps/Bitmaps240x416.h" // 3.71" b/w
|
||||||
|
#include "bitmaps/Bitmaps400x300.h" // 4.2" b/w
|
||||||
|
#include "bitmaps/Bitmaps640x384.h" // 7.5" b/w
|
||||||
|
//#include "bitmaps/Bitmaps800x480.h" // 7.5" b/w
|
||||||
|
// 3-color
|
||||||
|
#include "bitmaps/Bitmaps3c200x200.h" // 1.54" b/w/r
|
||||||
|
#include "bitmaps/Bitmaps3c104x212.h" // 2.13" b/w/r
|
||||||
|
#include "bitmaps/Bitmaps3c128x296.h" // 2.9" b/w/r
|
||||||
|
#include "bitmaps/Bitmaps3c176x264.h" // 2.7" b/w/r
|
||||||
|
#include "bitmaps/Bitmaps3c400x300.h" // 4.2" b/w/r
|
||||||
|
#if defined(ESP8266) || defined(ESP32)
|
||||||
|
//#include "bitmaps/Bitmaps3c800x480.h" // 7.5" b/w/r // not enough code space for all
|
||||||
|
#endif
|
||||||
|
#if defined(ESP32)
|
||||||
|
#include "bitmaps/WS_Bitmaps800x600.h" // 6.0" grey
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#elif !defined(__AVR) // Sketch too big for AVR
|
||||||
|
|
||||||
|
// select only one to fit in code space
|
||||||
|
#include "bitmaps/Bitmaps200x200.h" // 1.54" b/w
|
||||||
|
//#include "bitmaps/Bitmaps104x212.h" // 2.13" b/w flexible GDEW0213I5F
|
||||||
|
//#include "bitmaps/Bitmaps128x250.h" // 2.13" b/w
|
||||||
|
//#include "bitmaps/Bitmaps128x296.h" // 2.9" b/w
|
||||||
|
//#include "bitmaps/Bitmaps176x264.h" // 2.7" b/w
|
||||||
|
////#include "bitmaps/Bitmaps400x300.h" // 4.2" b/w // not enough code space
|
||||||
|
////#include "bitmaps/Bitmaps640x384.h" // 7.5" b/w // not enough code space
|
||||||
|
// 3-color
|
||||||
|
//#include "bitmaps/Bitmaps3c200x200.h" // 1.54" b/w/r
|
||||||
|
//#include "bitmaps/Bitmaps3c104x212.h" // 2.13" b/w/r
|
||||||
|
//#include "bitmaps/Bitmaps3c128x296.h" // 2.9" b/w/r
|
||||||
|
//#include "bitmaps/Bitmaps3c176x264.h" // 2.7" b/w/r
|
||||||
|
////#include "bitmaps/Bitmaps3c400x300.h" // 4.2" b/w/r // not enough code space
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void BitmapDisplay::drawBitmaps()
|
||||||
|
{
|
||||||
|
display.setFullWindow();
|
||||||
|
#ifdef _GxBitmaps104x212_H_
|
||||||
|
drawBitmaps104x212();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps128x250_H_
|
||||||
|
drawBitmaps128x250();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps128x296_H_
|
||||||
|
drawBitmaps128x296();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps176x264_H_
|
||||||
|
drawBitmaps176x264();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps400x300_H_
|
||||||
|
drawBitmaps400x300();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps640x384_H_
|
||||||
|
drawBitmaps640x384();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps800x480_H_
|
||||||
|
drawBitmaps800x480();
|
||||||
|
#endif
|
||||||
|
#ifdef _WS_Bitmaps800x600_H_
|
||||||
|
drawBitmaps800x600();
|
||||||
|
#endif
|
||||||
|
// 3-color
|
||||||
|
#ifdef _GxBitmaps3c104x212_H_
|
||||||
|
drawBitmaps3c104x212();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps3c128x296_H_
|
||||||
|
drawBitmaps3c128x296();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps152x296_H_
|
||||||
|
drawBitmaps152x296();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps3c176x264_H_
|
||||||
|
drawBitmaps3c176x264();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps240x416_H_
|
||||||
|
drawBitmaps240x416();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps3c400x300_H_
|
||||||
|
drawBitmaps3c400x300();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps3c800x480_H_
|
||||||
|
drawBitmaps3c800x480();
|
||||||
|
#endif
|
||||||
|
// show these after the specific bitmaps
|
||||||
|
#ifdef _GxBitmaps200x200_H_
|
||||||
|
drawBitmaps200x200();
|
||||||
|
#endif
|
||||||
|
// 3-color
|
||||||
|
#ifdef _GxBitmaps3c200x200_H_
|
||||||
|
drawBitmaps3c200x200();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps200x200_H_
|
||||||
|
void BitmapDisplay::drawBitmaps200x200()
|
||||||
|
{
|
||||||
|
#if defined(ARDUINO_AVR_PRO)
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
logo200x200
|
||||||
|
};
|
||||||
|
#elif defined(__AVR)
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
logo200x200, first200x200
|
||||||
|
};
|
||||||
|
#elif defined(_BOARD_GENERIC_STM32F103C_H_)
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
logo200x200, first200x200, second200x200, third200x200, fourth200x200, fifth200x200 //, sixth200x200, senventh200x200, eighth200x200
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
logo200x200, first200x200, second200x200, third200x200, fourth200x200, fifth200x200, sixth200x200, senventh200x200, eighth200x200
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
if ((display.epd2.panel == GxEPD2::GDEP015OC1) || (display.epd2.panel == GxEPD2::GDEH0154D67))
|
||||||
|
{
|
||||||
|
bool m = display.mirror(true);
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmaps[i], display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
display.mirror(m);
|
||||||
|
}
|
||||||
|
//else
|
||||||
|
{
|
||||||
|
bool mirror_y = (display.epd2.panel != GxEPD2::GDE0213B1);
|
||||||
|
display.clearScreen(); // use default for white
|
||||||
|
int16_t x = (int16_t(display.epd2.WIDTH) - 200) / 2;
|
||||||
|
int16_t y = (int16_t(display.epd2.HEIGHT) - 200) / 2;
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.drawImage(bitmaps[i], x, y, 200, 200, false, mirror_y, true);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bool mirror_y = (display.epd2.panel != GxEPD2::GDE0213B1);
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
int16_t x = -60;
|
||||||
|
int16_t y = -60;
|
||||||
|
for (uint16_t j = 0; j < 10; j++)
|
||||||
|
{
|
||||||
|
display.writeScreenBuffer(); // use default for white
|
||||||
|
display.writeImage(bitmaps[i], x, y, 200, 200, false, mirror_y, true);
|
||||||
|
display.refresh(true);
|
||||||
|
if (display.epd2.hasFastPartialUpdate)
|
||||||
|
{
|
||||||
|
// for differential update: set previous buffer equal to current buffer in controller
|
||||||
|
display.epd2.writeScreenBufferAgain(); // use default for white
|
||||||
|
display.epd2.writeImageAgain(bitmaps[i], x, y, 200, 200, false, mirror_y, true);
|
||||||
|
}
|
||||||
|
delay(2000);
|
||||||
|
x += 40;
|
||||||
|
y += 40;
|
||||||
|
if ((x >= int16_t(display.epd2.WIDTH)) || (y >= int16_t(display.epd2.HEIGHT))) break;
|
||||||
|
}
|
||||||
|
if (!display.epd2.hasFastPartialUpdate) break; // comment out for full show
|
||||||
|
break; // comment out for full show
|
||||||
|
}
|
||||||
|
display.writeScreenBuffer(); // use default for white
|
||||||
|
display.writeImage(bitmaps[0], int16_t(0), 0, 200, 200, false, mirror_y, true);
|
||||||
|
display.writeImage(bitmaps[0], int16_t(int16_t(display.epd2.WIDTH) - 200), int16_t(display.epd2.HEIGHT) - 200, 200, 200, false, mirror_y, true);
|
||||||
|
display.refresh(true);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps104x212_H_
|
||||||
|
void BitmapDisplay::drawBitmaps104x212()
|
||||||
|
{
|
||||||
|
#if !defined(__AVR)
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
WS_Bitmap104x212, Bitmap104x212_1, Bitmap104x212_2, Bitmap104x212_3
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
WS_Bitmap104x212, Bitmap104x212_1, Bitmap104x212_2, Bitmap104x212_3
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW0213I5F)
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawBitmap(0, 0, bitmaps[i], display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps128x250_H_
|
||||||
|
void BitmapDisplay::drawBitmaps128x250()
|
||||||
|
{
|
||||||
|
#if !defined(__AVR)
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap128x250_1, logo128x250, first128x250, second128x250, third128x250
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap128x250_1, logo128x250, first128x250, second128x250, third128x250
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
if ((display.epd2.panel == GxEPD2::GDE0213B1) || (display.epd2.panel == GxEPD2::GDEH0213B72))
|
||||||
|
{
|
||||||
|
bool m = display.mirror(true);
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmaps[i], display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
display.mirror(m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps128x296_H_
|
||||||
|
void BitmapDisplay::drawBitmaps128x296()
|
||||||
|
{
|
||||||
|
#if !defined(__AVR)
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap128x296_1, logo128x296, first128x296, second128x296, third128x296
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap128x296_1, logo128x296 //, first128x296, second128x296, third128x296
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEH029A1)
|
||||||
|
{
|
||||||
|
bool m = display.mirror(true);
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmaps[i], display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
display.mirror(m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps152x296_H_
|
||||||
|
void BitmapDisplay::drawBitmaps152x296()
|
||||||
|
{
|
||||||
|
#if !defined(__AVR)
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap152x296_1, Bitmap152x296_2, Bitmap152x296_3
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap152x296_1, Bitmap152x296_2, Bitmap152x296_3
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW026T0)
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmaps[i], display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps176x264_H_
|
||||||
|
void BitmapDisplay::drawBitmaps176x264()
|
||||||
|
{
|
||||||
|
#if !defined(__AVR)
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap176x264_1, Bitmap176x264_2, Bitmap176x264_3, Bitmap176x264_4, Bitmap176x264_5
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap176x264_1, Bitmap176x264_2 //, Bitmap176x264_3, Bitmap176x264_4, Bitmap176x264_5
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW027W3)
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmaps[i], display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps240x416_H_
|
||||||
|
void BitmapDisplay::drawBitmaps240x416()
|
||||||
|
{
|
||||||
|
#if !defined(__AVR)
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap240x416_1, Bitmap240x416_2, Bitmap240x416_3
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap240x460_1, Bitmap240x460_2, Bitmap240x460_3
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW0371W7)
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmaps[i], display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps400x300_H_
|
||||||
|
void BitmapDisplay::drawBitmaps400x300()
|
||||||
|
{
|
||||||
|
#if !defined(__AVR)
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap400x300_1, Bitmap400x300_2
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
const unsigned char* bitmaps[] = {}; // not enough code space
|
||||||
|
#endif
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW042T2)
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmaps[i], display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps640x384_H_
|
||||||
|
void BitmapDisplay::drawBitmaps640x384()
|
||||||
|
{
|
||||||
|
#if !defined(__AVR)
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap640x384_1, Bitmap640x384_2
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
const unsigned char* bitmaps[] = {}; // not enough code space
|
||||||
|
#endif
|
||||||
|
if ((display.epd2.panel == GxEPD2::GDEW075T8) || (display.epd2.panel == GxEPD2::GDEW075Z09))
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmaps[i], display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps800x480_H_
|
||||||
|
void BitmapDisplay::drawBitmaps800x480()
|
||||||
|
{
|
||||||
|
#if !defined(__AVR)
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap800x480_1, Bitmap800x480_2, Bitmap800x480_3, Bitmap800x480_4
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
const unsigned char* bitmaps[] = {}; // not enough code space
|
||||||
|
#endif
|
||||||
|
if ((display.epd2.panel == GxEPD2::GDEW075T7) || (display.epd2.panel == GxEPD2::GDEW075Z08))
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
//display.drawInvertedBitmap(0, 0, bitmaps[i], display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
display.drawBitmap(0, 0, bitmaps[i], display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW075T7)
|
||||||
|
{
|
||||||
|
// avoid ghosting caused by OTP waveform
|
||||||
|
display.clearScreen();
|
||||||
|
display.refresh(false); // full update
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _WS_Bitmaps800x600_H_
|
||||||
|
void BitmapDisplay::drawBitmaps800x600()
|
||||||
|
{
|
||||||
|
#if defined(ESP8266) || defined(ESP32)
|
||||||
|
if (display.epd2.panel == GxEPD2::ED060SCT)
|
||||||
|
{
|
||||||
|
// Serial.print("sizeof(WS_zoo_800x600) is "); Serial.println(sizeof(WS_zoo_800x600));
|
||||||
|
display.drawNative(WS_zoo_800x600, 0, 0, 0, 800, 600, false, false, true);
|
||||||
|
delay(2000);
|
||||||
|
// Serial.print("sizeof(WS_pic_1200x825) is "); Serial.println(sizeof(WS_pic_1200x825));
|
||||||
|
// display.drawNative((const uint8_t*)WS_pic_1200x825, 0, 0, 0, 1200, 825, false, false, true);
|
||||||
|
// delay(2000);
|
||||||
|
// Serial.print("sizeof(WS_acaa_1024x731) is "); Serial.println(sizeof(WS_acaa_1024x731));
|
||||||
|
// display.drawNative(WS_acaa_1024x731, 0, 0, 0, 1024, 731, false, false, true);
|
||||||
|
// delay(2000);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct bitmap_pair
|
||||||
|
{
|
||||||
|
const unsigned char* black;
|
||||||
|
const unsigned char* red;
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps3c200x200_H_
|
||||||
|
void BitmapDisplay::drawBitmaps3c200x200()
|
||||||
|
{
|
||||||
|
bitmap_pair bitmap_pairs[] =
|
||||||
|
{
|
||||||
|
//{Bitmap3c200x200_black, Bitmap3c200x200_red},
|
||||||
|
{WS_Bitmap3c200x200_black, WS_Bitmap3c200x200_red}
|
||||||
|
};
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW0154Z04)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
// Bitmap3c200x200_black has 2 bits per pixel
|
||||||
|
// taken from Adafruit_GFX.cpp, modified
|
||||||
|
int16_t byteWidth = (display.epd2.WIDTH + 7) / 8; // Bitmap scanline pad = whole byte
|
||||||
|
uint8_t byte = 0;
|
||||||
|
for (int16_t j = 0; j < display.epd2.HEIGHT; j++)
|
||||||
|
{
|
||||||
|
for (int16_t i = 0; i < display.epd2.WIDTH; i++)
|
||||||
|
{
|
||||||
|
if (i & 3) byte <<= 2;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
|
||||||
|
byte = pgm_read_byte(&Bitmap3c200x200_black[j * byteWidth * 2 + i / 4]);
|
||||||
|
#else
|
||||||
|
byte = Bitmap3c200x200_black[j * byteWidth * 2 + i / 4];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
if (!(byte & 0x80))
|
||||||
|
{
|
||||||
|
display.drawPixel(i, j, GxEPD_BLACK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
display.drawInvertedBitmap(0, 0, Bitmap3c200x200_red, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_RED);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmap_pairs) / sizeof(bitmap_pair); i++)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmap_pairs[i].black, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmap_pairs[i].red, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_RED);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (display.epd2.hasColor)
|
||||||
|
{
|
||||||
|
display.clearScreen(); // use default for white
|
||||||
|
int16_t x = (int16_t(display.epd2.WIDTH) - 200) / 2;
|
||||||
|
int16_t y = (int16_t(display.epd2.HEIGHT) - 200) / 2;
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmap_pairs) / sizeof(bitmap_pair); i++)
|
||||||
|
{
|
||||||
|
display.drawImage(bitmap_pairs[i].black, bitmap_pairs[i].red, x, y, 200, 200, false, false, true);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmap_pairs) / sizeof(bitmap_pair); i++)
|
||||||
|
{
|
||||||
|
int16_t x = -60;
|
||||||
|
int16_t y = -60;
|
||||||
|
for (uint16_t j = 0; j < 10; j++)
|
||||||
|
{
|
||||||
|
display.writeScreenBuffer(); // use default for white
|
||||||
|
display.writeImage(bitmap_pairs[i].black, bitmap_pairs[i].red, x, y, 200, 200, false, false, true);
|
||||||
|
display.refresh();
|
||||||
|
delay(1000);
|
||||||
|
x += 40;
|
||||||
|
y += 40;
|
||||||
|
if ((x >= int16_t(display.epd2.WIDTH)) || (y >= int16_t(display.epd2.HEIGHT))) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
display.writeScreenBuffer(); // use default for white
|
||||||
|
display.writeImage(bitmap_pairs[0].black, bitmap_pairs[0].red, 0, 0, 200, 200, false, false, true);
|
||||||
|
display.writeImage(bitmap_pairs[0].black, bitmap_pairs[0].red, int16_t(display.epd2.WIDTH) - 200, int16_t(display.epd2.HEIGHT) - 200, 200, 200, false, false, true);
|
||||||
|
display.refresh();
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps3c104x212_H_
|
||||||
|
void BitmapDisplay::drawBitmaps3c104x212()
|
||||||
|
{
|
||||||
|
#if !defined(__AVR)
|
||||||
|
bitmap_pair bitmap_pairs[] =
|
||||||
|
{
|
||||||
|
{Bitmap3c104x212_1_black, Bitmap3c104x212_1_red},
|
||||||
|
{Bitmap3c104x212_2_black, Bitmap3c104x212_2_red},
|
||||||
|
{WS_Bitmap3c104x212_black, WS_Bitmap3c104x212_red}
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
bitmap_pair bitmap_pairs[] =
|
||||||
|
{
|
||||||
|
{Bitmap3c104x212_1_black, Bitmap3c104x212_1_red},
|
||||||
|
//{Bitmap3c104x212_2_black, Bitmap3c104x212_2_red},
|
||||||
|
{WS_Bitmap3c104x212_black, WS_Bitmap3c104x212_red}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW0213Z16)
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmap_pairs) / sizeof(bitmap_pair); i++)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmap_pairs[i].black, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
if (bitmap_pairs[i].red == WS_Bitmap3c104x212_red)
|
||||||
|
{
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmap_pairs[i].red, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_RED);
|
||||||
|
}
|
||||||
|
else display.drawBitmap(0, 0, bitmap_pairs[i].red, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_RED);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps3c128x296_H_
|
||||||
|
void BitmapDisplay::drawBitmaps3c128x296()
|
||||||
|
{
|
||||||
|
#if !defined(__AVR)
|
||||||
|
bitmap_pair bitmap_pairs[] =
|
||||||
|
{
|
||||||
|
{Bitmap3c128x296_1_black, Bitmap3c128x296_1_red},
|
||||||
|
{Bitmap3c128x296_2_black, Bitmap3c128x296_2_red},
|
||||||
|
{WS_Bitmap3c128x296_black, WS_Bitmap3c128x296_red}
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
bitmap_pair bitmap_pairs[] =
|
||||||
|
{
|
||||||
|
//{Bitmap3c128x296_1_black, Bitmap3c128x296_1_red},
|
||||||
|
//{Bitmap3c128x296_2_black, Bitmap3c128x296_2_red},
|
||||||
|
{WS_Bitmap3c128x296_black, WS_Bitmap3c128x296_red}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW029Z10)
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmap_pairs) / sizeof(bitmap_pair); i++)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmap_pairs[i].black, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
if (bitmap_pairs[i].red == WS_Bitmap3c128x296_red)
|
||||||
|
{
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmap_pairs[i].red, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_RED);
|
||||||
|
}
|
||||||
|
else display.drawBitmap(0, 0, bitmap_pairs[i].red, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_RED);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps3c176x264_H_
|
||||||
|
void BitmapDisplay::drawBitmaps3c176x264()
|
||||||
|
{
|
||||||
|
bitmap_pair bitmap_pairs[] =
|
||||||
|
{
|
||||||
|
{Bitmap3c176x264_black, Bitmap3c176x264_red}
|
||||||
|
};
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW027C44)
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmap_pairs) / sizeof(bitmap_pair); i++)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawBitmap(0, 0, bitmap_pairs[i].black, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
display.drawBitmap(0, 0, bitmap_pairs[i].red, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_RED);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps3c400x300_H_
|
||||||
|
void BitmapDisplay::drawBitmaps3c400x300()
|
||||||
|
{
|
||||||
|
#if !defined(__AVR)
|
||||||
|
bitmap_pair bitmap_pairs[] =
|
||||||
|
{
|
||||||
|
{Bitmap3c400x300_1_black, Bitmap3c400x300_1_red},
|
||||||
|
{Bitmap3c400x300_2_black, Bitmap3c400x300_2_red},
|
||||||
|
{WS_Bitmap3c400x300_black, WS_Bitmap3c400x300_red}
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
bitmap_pair bitmap_pairs[] = {}; // not enough code space
|
||||||
|
#endif
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW042Z15)
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmap_pairs) / sizeof(bitmap_pair); i++)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmap_pairs[i].black, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmap_pairs[i].red, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_RED);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps3c800x480_H_
|
||||||
|
void BitmapDisplay::drawBitmaps3c800x480()
|
||||||
|
{
|
||||||
|
#if !defined(__AVR)
|
||||||
|
bitmap_pair bitmap_pairs[] =
|
||||||
|
{
|
||||||
|
{Bitmap3c800x480_1_black, Bitmap3c800x480_1_red}
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
bitmap_pair bitmap_pairs[] = {}; // not enough code space
|
||||||
|
#endif
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW075Z08)
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmap_pairs) / sizeof(bitmap_pair); i++)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawBitmap(0, 0, bitmap_pairs[i].black, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
display.drawBitmap(0, 0, bitmap_pairs[i].red, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_RED);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
//
|
||||||
|
// Purpose: show uses of GxEPD2_GFX base class for references to a display instance
|
||||||
|
//
|
||||||
|
// BitmapDisplay shows the use of the display instance reference as a class member
|
||||||
|
|
||||||
|
#ifndef _BitmapDisplay_H_
|
||||||
|
#define _BitmapDisplay_H_
|
||||||
|
|
||||||
|
#include "GxEPD2_GFX.h"
|
||||||
|
|
||||||
|
class BitmapDisplay
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
GxEPD2_GFX& display;
|
||||||
|
public:
|
||||||
|
BitmapDisplay(GxEPD2_GFX& _display) : display(_display) {};
|
||||||
|
void drawBitmaps();
|
||||||
|
private:
|
||||||
|
void drawBitmaps200x200();
|
||||||
|
void drawBitmaps104x212();
|
||||||
|
void drawBitmaps128x250();
|
||||||
|
void drawBitmaps128x296();
|
||||||
|
void drawBitmaps152x296();
|
||||||
|
void drawBitmaps176x264();
|
||||||
|
void drawBitmaps240x416();
|
||||||
|
void drawBitmaps400x300();
|
||||||
|
void drawBitmaps640x384();
|
||||||
|
void drawBitmaps800x480();
|
||||||
|
void drawBitmaps800x600();
|
||||||
|
void drawBitmaps3c200x200();
|
||||||
|
void drawBitmaps3c104x212();
|
||||||
|
void drawBitmaps3c128x296();
|
||||||
|
void drawBitmaps3c176x264();
|
||||||
|
void drawBitmaps3c400x300();
|
||||||
|
void drawBitmaps3c800x480();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,273 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
//
|
||||||
|
// Purpose: show uses of GxEPD2_GFX base class for references to a display instance
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// see GxEPD2_wiring_examples.h for wiring suggestions and examples
|
||||||
|
|
||||||
|
// base class GxEPD2_GFX can be used to pass references or pointers to the display instance as parameter, uses ~1.2k more code
|
||||||
|
// enable GxEPD2_GFX base class
|
||||||
|
#define ENABLE_GxEPD2_GFX 1
|
||||||
|
|
||||||
|
// uncomment next line to use class GFX of library GFX_Root instead of Adafruit_GFX
|
||||||
|
//#include <GFX.h>
|
||||||
|
// Note: if you use this with ENABLE_GxEPD2_GFX 1:
|
||||||
|
// uncomment it in GxEPD2_GFX.h too, or add #include <GFX.h> before any #include <GxEPD2_GFX.h>
|
||||||
|
// !!!! ============================================================================================ !!!!
|
||||||
|
|
||||||
|
#include <GxEPD2_BW.h>
|
||||||
|
#include <GxEPD2_3C.h>
|
||||||
|
#include <GxEPD2_4C.h>
|
||||||
|
#include <GxEPD2_7C.h>
|
||||||
|
#include <Fonts/FreeMonoBold9pt7b.h>
|
||||||
|
|
||||||
|
#include "BitmapDisplay.h"
|
||||||
|
#include "TextDisplay.h"
|
||||||
|
|
||||||
|
// select the display constructor line in one of the following files (old style):
|
||||||
|
#include "GxEPD2_display_selection.h"
|
||||||
|
#include "GxEPD2_display_selection_added.h"
|
||||||
|
//#include "GxEPD2_display_selection_more.h" // private
|
||||||
|
|
||||||
|
// or select the display class and display driver class in the following file (new style):
|
||||||
|
#include "GxEPD2_display_selection_new_style.h"
|
||||||
|
|
||||||
|
// for handling alternative SPI pins (ESP32, RP2040) see example GxEPD2_Example.ino
|
||||||
|
|
||||||
|
BitmapDisplay bitmaps(display);
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.println();
|
||||||
|
Serial.println("setup");
|
||||||
|
delay(100);
|
||||||
|
//display.init(115200); // default 10ms reset pulse, e.g. for bare panels with DESPI-C02
|
||||||
|
display.init(115200, true, 2, false); // USE THIS for Waveshare boards with "clever" reset circuit, 2ms reset pulse
|
||||||
|
// first update should be full refresh
|
||||||
|
helloWorld(display);
|
||||||
|
delay(1000);
|
||||||
|
// partial refresh mode can be used to full screen,
|
||||||
|
// effective if display panel hasFastPartialUpdate
|
||||||
|
helloFullScreenPartialMode(display);
|
||||||
|
delay(1000);
|
||||||
|
helloArduino(display);
|
||||||
|
delay(1000);
|
||||||
|
helloEpaper(display);
|
||||||
|
delay(1000);
|
||||||
|
//helloValue(display, 123.9, 1);
|
||||||
|
//delay(1000);
|
||||||
|
showFont(display, "FreeMonoBold9pt7b", &FreeMonoBold9pt7b);
|
||||||
|
delay(1000);
|
||||||
|
//BitmapDisplay(display).drawBitmaps();
|
||||||
|
bitmaps.drawBitmaps();
|
||||||
|
//return;
|
||||||
|
if (display.epd2.hasPartialUpdate)
|
||||||
|
{
|
||||||
|
showPartialUpdate();
|
||||||
|
delay(1000);
|
||||||
|
} // else // on GDEW0154Z04 only full update available, doesn't look nice
|
||||||
|
//drawCornerTest();
|
||||||
|
//showBox(16, 16, 48, 32, false);
|
||||||
|
//showBox(16, 56, 48, 32, true);
|
||||||
|
display.powerOff();
|
||||||
|
deepSleepTest();
|
||||||
|
Serial.println("setup done");
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void deepSleepTest()
|
||||||
|
{
|
||||||
|
//Serial.println("deepSleepTest");
|
||||||
|
const char hibernating[] = "hibernating ...";
|
||||||
|
const char wokeup[] = "woke up";
|
||||||
|
const char from[] = "from deep sleep";
|
||||||
|
const char again[] = "again";
|
||||||
|
display.setRotation(1);
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
int16_t tbx, tby; uint16_t tbw, tbh;
|
||||||
|
// center text
|
||||||
|
display.getTextBounds(hibernating, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
uint16_t x = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
uint16_t y = ((display.height() - tbh) / 2) - tby;
|
||||||
|
display.setFullWindow();
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.setCursor(x, y);
|
||||||
|
display.print(hibernating);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
display.hibernate();
|
||||||
|
delay(5000);
|
||||||
|
display.getTextBounds(wokeup, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
uint16_t wx = (display.width() - tbw) / 2;
|
||||||
|
uint16_t wy = (display.height() / 3) + tbh / 2; // y is base line!
|
||||||
|
display.getTextBounds(from, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
uint16_t fx = (display.width() - tbw) / 2;
|
||||||
|
uint16_t fy = (display.height() * 2 / 3) + tbh / 2; // y is base line!
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.setCursor(wx, wy);
|
||||||
|
display.print(wokeup);
|
||||||
|
display.setCursor(fx, fy);
|
||||||
|
display.print(from);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(5000);
|
||||||
|
display.getTextBounds(hibernating, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
uint16_t hx = (display.width() - tbw) / 2;
|
||||||
|
uint16_t hy = (display.height() / 3) + tbh / 2; // y is base line!
|
||||||
|
display.getTextBounds(again, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
uint16_t ax = (display.width() - tbw) / 2;
|
||||||
|
uint16_t ay = (display.height() * 2 / 3) + tbh / 2; // y is base line!
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.setCursor(hx, hy);
|
||||||
|
display.print(hibernating);
|
||||||
|
display.setCursor(ax, ay);
|
||||||
|
display.print(again);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
display.hibernate();
|
||||||
|
//Serial.println("deepSleepTest done");
|
||||||
|
}
|
||||||
|
|
||||||
|
void showBox(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool partial)
|
||||||
|
{
|
||||||
|
//Serial.println("showBox");
|
||||||
|
display.setRotation(1);
|
||||||
|
if (partial)
|
||||||
|
{
|
||||||
|
display.setPartialWindow(x, y, w, h);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
display.setFullWindow();
|
||||||
|
}
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.fillRect(x, y, w, h, GxEPD_BLACK);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
//Serial.println("showBox done");
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawCornerTest()
|
||||||
|
{
|
||||||
|
display.setFullWindow();
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
for (uint16_t r = 0; r <= 4; r++)
|
||||||
|
{
|
||||||
|
display.setRotation(r);
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.fillRect(0, 0, 8, 8, GxEPD_BLACK);
|
||||||
|
display.fillRect(display.width() - 18, 0, 16, 16, GxEPD_BLACK);
|
||||||
|
display.fillRect(display.width() - 25, display.height() - 25, 24, 24, GxEPD_BLACK);
|
||||||
|
display.fillRect(0, display.height() - 33, 32, 32, GxEPD_BLACK);
|
||||||
|
display.setCursor(display.width() / 2, display.height() / 2);
|
||||||
|
display.print(display.getRotation());
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// note for partial update window and setPartialWindow() method:
|
||||||
|
// partial update window size and position is on byte boundary in physical x direction
|
||||||
|
// the size is increased in setPartialWindow() if x or w are not multiple of 8 for even rotation, y or h for odd rotation
|
||||||
|
// see also comment in GxEPD2_BW.h, GxEPD2_3C.h or GxEPD2_GFX.h for method setPartialWindow()
|
||||||
|
// showPartialUpdate() purposely uses values that are not multiples of 8 to test this
|
||||||
|
|
||||||
|
void showPartialUpdate()
|
||||||
|
{
|
||||||
|
// some useful background
|
||||||
|
helloWorld(display);
|
||||||
|
// use asymmetric values for test
|
||||||
|
uint16_t box_x = 10;
|
||||||
|
uint16_t box_y = 15;
|
||||||
|
uint16_t box_w = 70;
|
||||||
|
uint16_t box_h = 20;
|
||||||
|
uint16_t cursor_y = box_y + box_h - 6;
|
||||||
|
float value = 13.95;
|
||||||
|
uint16_t incr = display.epd2.hasFastPartialUpdate ? 1 : 3;
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
// show where the update box is
|
||||||
|
for (uint16_t r = 0; r < 4; r++)
|
||||||
|
{
|
||||||
|
display.setRotation(r);
|
||||||
|
display.setPartialWindow(box_x, box_y, box_w, box_h);
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillRect(box_x, box_y, box_w, box_h, GxEPD_BLACK);
|
||||||
|
//display.fillScreen(GxEPD_BLACK);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillRect(box_x, box_y, box_w, box_h, GxEPD_WHITE);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(1000);
|
||||||
|
}
|
||||||
|
//return;
|
||||||
|
// show updates in the update box
|
||||||
|
for (uint16_t r = 0; r < 4; r++)
|
||||||
|
{
|
||||||
|
display.setRotation(r);
|
||||||
|
display.setPartialWindow(box_x, box_y, box_w, box_h);
|
||||||
|
for (uint16_t i = 1; i <= 10; i += incr)
|
||||||
|
{
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillRect(box_x, box_y, box_w, box_h, GxEPD_WHITE);
|
||||||
|
display.setCursor(box_x, cursor_y);
|
||||||
|
display.print(value * i, 2);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(500);
|
||||||
|
}
|
||||||
|
delay(1000);
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillRect(box_x, box_y, box_w, box_h, GxEPD_WHITE);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,785 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
#if defined (ESP8266)
|
||||||
|
// select one and adapt to your mapping, can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_102, GxEPD2_102::HEIGHT> display(GxEPD2_102(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, GxEPD2_290_GDEY029T71H::HEIGHT> display(GxEPD2_290_GDEY029T71H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_BW<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT / 2 > display(GxEPD2_583_GDEQ0583T31(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW < GxEPD2_750, GxEPD2_750::HEIGHT / 2 > display(GxEPD2_750(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT / 2 > display(GxEPD2_750_T7(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT / 2 > display(GxEPD2_750_GDEY075T7(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1085_GDEM1085T51, GxEPD2_1085_GDEM1085T51::HEIGHT / 2> display(GxEPD2_1085_GDEM1085T51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4, /*CS2=*/ 3)); // GDEM1085T51 1360x480, JD79686AB, (FPC8617)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM029C90 128x296, SSD1680
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT / 2> display(GxEPD2_420c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT / 2> display(GxEPD2_420c_Z21(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, GxEPD2_420c_GDEY042Z98::HEIGHT> display(GxEPD2_420c_GDEY042Z98(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_579c_GDEY0579Z93, GxEPD2_579c_GDEY0579Z93::HEIGHT / 2> display(GxEPD2_579c_GDEY0579Z93(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
// can use only quarter buffer size
|
||||||
|
//GxEPD2_3C < GxEPD2_583c, GxEPD2_583c::HEIGHT / 4 > display(GxEPD2_583c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C < GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT / 4 > display(GxEPD2_583c_Z83(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 4> display(GxEPD2_583c_GDEQ0583Z31(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT / 4> display(GxEPD2_750c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C < GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4 > display(GxEPD2_750c_Z08(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C < GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4 > display(GxEPD2_750c_Z90(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, GxEPD2_750c_GDEW075Z08::HEIGHT / 4> display(GxEPD2_750c_GDEW075Z08(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, GxEPD2_750c_GDEY075Z08::HEIGHT / 4> display(GxEPD2_750c_GDEY075Z08(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 4> display(GxEPD2_1160c_GDEY116Z91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 4> display(GxEPD2_1330c_GDEM133Z91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, GxEPD2_154c_GDEM0154F51H::HEIGHT> display(GxEPD2_154c_GDEM0154F51H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, GxEPD2_350c_GDEM035F51::HEIGHT> display(GxEPD2_350c_GDEM035F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, GxEPD2_397c_GDEM0397F81::HEIGHT> display(GxEPD2_397c_GDEM0397F81(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 2 > display(GxEPD2_437c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, GxEPD2_579c_GDEY0579F51::HEIGHT / 2> display(GxEPD2_579c_GDEY0579F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, GxEPD2_750c_GDEM075F52::HEIGHT / 2> display(GxEPD2_750c_GDEM075F52(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, GxEPD2_1160c_GDEY116F51::HEIGHT / 4> display(GxEPD2_1160c_GDEY116F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 5.65" 7-color (3C graphics)
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 6 > display(GxEPD2_730c_GDEY073D46(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEP073E01, GxEPD2_730c_GDEP073E01::HEIGHT / 6 > display(GxEPD2_730c_GDEP073E01(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 4, RST -> 2, CS -> SS(15), SCK -> SCK(14), MOSI -> MOSI(D7(13)), MISO -> MISO(D6(12)), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V pin of USB powered Wemos D1 mini doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, GxEPD2_it60::HEIGHT / 8> display(GxEPD2_it60(/*CS=5*/ SS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it60_1448x1072, GxEPD2_it60_1448x1072::HEIGHT / 8 > display(GxEPD2_it60_1448x1072(/*CS=5*/ SS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it78_1872x1404, GxEPD2_it78_1872x1404::HEIGHT / 8 > display(GxEPD2_it78_1872x1404(/*CS=5*/ SS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it103_1872x1404, GxEPD2_it103_1872x1404::HEIGHT / 8 > display(GxEPD2_it103_1872x1404(/*CS=5*/ SS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 4));
|
||||||
|
|
||||||
|
// ***** for mapping of Waveshare e-Paper ESP8266 Driver Board *****
|
||||||
|
// select one , can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, GxEPD2_290_GDEY029T71H::HEIGHT> display(GxEPD2_290_GDEY029T71H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_BW_<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT / 2 > display(GxEPD2_583_GDEQ0583T31(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW < GxEPD2_750, GxEPD2_750::HEIGHT / 2 > display(GxEPD2_750(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT / 2 > display(GxEPD2_750_T7(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT / 2 > display(GxEPD2_750_GDEY075T7(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM029C90 128x296, SSD1680
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT / 2> display(GxEPD2_420c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT / 2> display(GxEPD2_420c_Z21(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, GxEPD2_420c_GDEY042Z98::HEIGHT> display(GxEPD2_420c_GDEY042Z98(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
// can use only quarter buffer size
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT / 4> display(GxEPD2_583c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT / 4> display(GxEPD2_583c_Z83(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 4> display(GxEPD2_583c_GDEQ0583Z31(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT / 4> display(GxEPD2_750c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4> display(GxEPD2_750c_Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4> display(GxEPD2_750c_Z90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, GxEPD2_750c_GDEW075Z08::HEIGHT / 4> display(GxEPD2_750c_GDEW075Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, GxEPD2_750c_GDEY075Z08::HEIGHT / 4> display(GxEPD2_750c_GDEY075Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 4> display(GxEPD2_1160c_GDEY116Z91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 4> display(GxEPD2_1330c_GDEM133Z91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, GxEPD2_154c_GDEM0154F51H::HEIGHT> display(GxEPD2_154c_GDEM0154F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, GxEPD2_350c_GDEM035F51::HEIGHT> display(GxEPD2_350c_GDEM035F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, GxEPD2_397c_GDEM0397F81::HEIGHT> display(GxEPD2_397c_GDEM0397F81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, GxEPD2_579c_GDEY0579F51::HEIGHT / 2> display(GxEPD2_579c_GDEY0579F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, GxEPD2_750c_GDEM075F52::HEIGHT / 2> display(GxEPD2_750c_GDEM075F52(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, GxEPD2_1160c_GDEY116F51::HEIGHT / 4> display(GxEPD2_1160c_GDEY116F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 6 > display(GxEPD2_730c_GDEY073D46(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ESP32)
|
||||||
|
// select one and adapt to your mapping, can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_102, GxEPD2_102::HEIGHT> display(GxEPD2_102(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, GxEPD2_290_GDEY029T71H::HEIGHT> display(GxEPD2_290_GDEY029T71H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT> display(GxEPD2_576_GDEH0576T81(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, GxEPD2_750::HEIGHT> display(GxEPD2_750(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT> display(GxEPD2_750_T7(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT> display(GxEPD2_750_GDEY075T7(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1085_GDEM1085T51, GxEPD2_1085_GDEM1085T51::HEIGHT / 2> display(GxEPD2_1085_GDEM1085T51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4, /*CS2=*/ 2)); // GDEM1085T51 1360x480, JD79686AB, (FPC8617)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// next line is for Good Display ESP32 Development board wiring, CS2 connected to GPIO4
|
||||||
|
//GxEPD2_BW < GxEPD2_1085_GDEM1085T51, GxEPD2_1085_GDEM1085T51::HEIGHT / 2> display(GxEPD2_1085_GDEM1085T51(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13, /*CS2=*/ 4)); // GDEM1085T51 1360x480, JD79686AB, (FPC8617)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT> display(GxEPD2_420c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT> display(GxEPD2_420c_Z21(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, GxEPD2_420c_GDEY042Z98::HEIGHT> display(GxEPD2_420c_GDEY042Z98(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_579c_GDEY0579Z93, GxEPD2_579c_GDEY0579Z93::HEIGHT> display(GxEPD2_579c_GDEY0579Z93(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT> display(GxEPD2_583c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT> display(GxEPD2_583c_Z83(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 2> display(GxEPD2_583c_GDEQ0583Z31(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT> display(GxEPD2_750c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 2> display(GxEPD2_750c_Z90(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, GxEPD2_750c_GDEW075Z08::HEIGHT / 2> display(GxEPD2_750c_GDEW075Z08(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, GxEPD2_750c_GDEY075Z08::HEIGHT / 2> display(GxEPD2_750c_GDEY075Z08(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 2> display(GxEPD2_1160c_GDEY116Z91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 2> display(GxEPD2_1330c_GDEM133Z91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, GxEPD2_154c_GDEM0154F51H::HEIGHT> display(GxEPD2_154c_GDEM0154F51H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, GxEPD2_350c_GDEM035F51::HEIGHT> display(GxEPD2_350c_GDEM035F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, GxEPD2_397c_GDEM0397F81::HEIGHT> display(GxEPD2_397c_GDEM0397F81(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C<GxEPD2_437c, GxEPD2_437c::HEIGHT> display(GxEPD2_437c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, GxEPD2_579c_GDEY0579F51::HEIGHT> display(GxEPD2_579c_GDEY0579F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, GxEPD2_750c_GDEM075F52::HEIGHT / 2> display(GxEPD2_750c_GDEM075F52(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, GxEPD2_1160c_GDEY116F51::HEIGHT / 2> display(GxEPD2_1160c_GDEY116F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color (3C graphics)
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 4 > display(GxEPD2_730c_GDEY073D46(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEP073E01, GxEPD2_730c_GDEP073E01::HEIGHT / 4 > display(GxEPD2_730c_GDEP073E01(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 4, RST -> 16, CS -> SS(5), SCK -> SCK(18), MOSI -> MOSI(23), MISO -> MISO(19), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V over diode from USB (e.g. Wemos D1 mini) doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, GxEPD2_it60::HEIGHT> display(GxEPD2_it60(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it60_1448x1072, GxEPD2_it60_1448x1072::HEIGHT / 4 > display(GxEPD2_it60_1448x1072(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it78_1872x1404, GxEPD2_it78_1872x1404::HEIGHT / 8 > display(GxEPD2_it78_1872x1404(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it103_1872x1404, GxEPD2_it103_1872x1404::HEIGHT / 8 > display(GxEPD2_it103_1872x1404(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||||
|
|
||||||
|
// Waveshare 12.48 b/w SPI display board and frame or Good Display 12.48 b/w panel GDEW1248T3
|
||||||
|
// general constructor for use with all parameters, e.g. for Waveshare ESP32 driver board mounted on connection board
|
||||||
|
//GxEPD2_BW < GxEPD2_1248, GxEPD2_1248::HEIGHT / 4 >
|
||||||
|
//display(GxEPD2_1248(/*sck=*/ 13, /*miso=*/ 12, /*mosi=*/ 14, /*cs_m1=*/ 23, /*cs_s1=*/ 22, /*cs_m2=*/ 16, /*cs_s2=*/ 19,
|
||||||
|
// /*dc1=*/ 25, /*dc2=*/ 17, /*rst1=*/ 33, /*rst2=*/ 5, /*busy_m1=*/ 32, /*busy_s1=*/ 26, /*busy_m2=*/ 18, /*busy_s2=*/ 4));
|
||||||
|
// Waveshare 12.48 b/w/r SPI display board and frame or Good Display 12.48 b/w/r panel GDEY1248Z51
|
||||||
|
// general constructor for use with all parameters, e.g. for Waveshare ESP32 driver board mounted on connection board
|
||||||
|
//GxEPD2_3C < GxEPD2_1248c, GxEPD2_1248c::HEIGHT / 4 >
|
||||||
|
//display(GxEPD2_1248c(/*sck=*/ 13, /*miso=*/ 12, /*mosi=*/ 14, /*cs_m1=*/ 23, /*cs_s1=*/ 22, /*cs_m2=*/ 16, /*cs_s2=*/ 19,
|
||||||
|
// /*dc1=*/ 25, /*dc2=*/ 17, /*rst1=*/ 33, /*rst2=*/ 5, /*busy_m1=*/ 32, /*busy_s1=*/ 26, /*busy_m2=*/ 18, /*busy_s2=*/ 4));
|
||||||
|
|
||||||
|
// ***** for mapping of Waveshare ESP32 Driver Board *****
|
||||||
|
// use Board "ESP32 Dev Module" to build with Arduino IDE
|
||||||
|
// uncomment next line to use HSPI for EPD (and e.g VSPI for SD), e.g. with Waveshare ESP32 Driver Board
|
||||||
|
//#define USE_HSPI_FOR_EPD
|
||||||
|
// select one, can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_102, GxEPD2_102::HEIGHT> display(GxEPD2_102(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, GxEPD2_290_GDEY029T71H::HEIGHT> display(GxEPD2_290_GDEY029T71H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, GxEPD2_750::HEIGHT> display(GxEPD2_750(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT> display(GxEPD2_750_T7(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT> display(GxEPD2_750_GDEY075T7(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT> display(GxEPD2_420c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT> display(GxEPD2_420c_Z21(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, GxEPD2_420c_GDEY042Z98::HEIGHT> display(GxEPD2_420c_GDEY042Z98(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT> display(GxEPD2_583c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT> display(GxEPD2_583c_Z83(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 2> display(GxEPD2_583c_GDEQ0583Z31(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT> display(GxEPD2_750c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 2> display(GxEPD2_750c_Z90(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, GxEPD2_750c_GDEW075Z08::HEIGHT / 2> display(GxEPD2_750c_GDEW075Z08(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, GxEPD2_750c_GDEY075Z08::HEIGHT / 2> display(GxEPD2_750c_GDEY075Z08(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 2> display(GxEPD2_1160c_GDEY116Z91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 2> display(GxEPD2_1330c_GDEM133Z91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, GxEPD2_154c_GDEM0154F51H::HEIGHT> display(GxEPD2_154c_GDEM0154F51H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, GxEPD2_350c_GDEM035F51::HEIGHT> display(GxEPD2_350c_GDEM035F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, GxEPD2_397c_GDEM0397F81::HEIGHT> display(GxEPD2_397c_GDEM0397F81(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, GxEPD2_579c_GDEY0579F51::HEIGHT> display(GxEPD2_579c_GDEY0579F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, GxEPD2_750c_GDEM075F52::HEIGHT / 2> display(GxEPD2_750c_GDEM075F52(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, GxEPD2_1160c_GDEY116F51::HEIGHT / 4> display(GxEPD2_1160c_GDEY116F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 5.65" 7-color (3C graphics)
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 4 > display(GxEPD2_730c_GDEY073D46(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// can't use package "STMF1 Boards (STM32Duino.com)" (Roger Clark) anymore with Adafruit_GFX, use "STM32 Boards (selected from submenu)" (STMicroelectronics)
|
||||||
|
#if defined(ARDUINO_ARCH_STM32)
|
||||||
|
//#define Serial Serial1 // for my proto board
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 16384ul // ~16k is a good compromise
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_102, MAX_HEIGHT(GxEPD2_102)> display(GxEPD2_102(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, MAX_HEIGHT(GxEPD2_290_GDEY029T71H)> display(GxEPD2_290_GDEY029T71H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, MAX_HEIGHT(GxEPD2_579_GDEY0579T93)> display(GxEPD2_579_GDEY0579T93(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW <GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// next line is for Good Display DESPI-M02L Development board wiring, CS2 connected to GPIOD12
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
//GxEPD2_BW < GxEPD2_1085_GDEM1085T51, MAX_HEIGHT(GxEPD2_1085_GDEM1085T51)> display(GxEPD2_1085_GDEM1085T51(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13, /*CS2=*/ PD12)); // GDEM1085T51 1360x480, JD79686AB, (FPC8617)
|
||||||
|
// 3-color e-papers
|
||||||
|
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, MAX_HEIGHT_3C(GxEPD2_420c_GDEY042Z98)> display(GxEPD2_420c_GDEY042Z98(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_579c_GDEY0579Z93, MAX_HEIGHT_3C((GxEPD2_579c_GDEY0579Z93)> display(GxEPD2_579c_GDEY0579Z93(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEW075Z08)> display(GxEPD2_750c_GDEW075Z08(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEY075Z08)> display(GxEPD2_750c_GDEY075Z08(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, MAX_HEIGHT_3C(GxEPD2_154c_GDEM0154F51H)> display(GxEPD2_154c_GDEM0154F51H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT_3C((GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, MAX_HEIGHT_3C(GxEPD2_350c_GDEM035F51)> display(GxEPD2_350c_GDEM035F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, MAX_HEIGHT_3C(GxEPD2_397c_GDEM0397F81)> display(GxEPD2_397c_GDEM0397F81(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, MAX_HEIGHT_3C(GxEPD2_579c_GDEY0579F51)> display(GxEPD2_579c_GDEY0579F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, MAX_HEIGHT_3C(GxEPD2_750c_GDEM075F52)> display(GxEPD2_750c_GDEM075F52(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116F51)> display(GxEPD2_1160c_GDEY116F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
#define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEP073E01, MAX_HEIGHT_7C(GxEPD2_730c_GDEP073E01> display(GxEPD2_730c_GDEP073E01(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#undef MAX_HEIGHT_3C
|
||||||
|
#undef MAX_HEIGHT_7C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__AVR)
|
||||||
|
#if defined (ARDUINO_AVR_MEGA2560) // Note: SS is on 53 on MEGA
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#else // Note: SS is on 10 on UNO, NANO
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 800
|
||||||
|
#endif
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_102, MAX_HEIGHT(GxEPD2_102)> display(GxEPD2_102(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, MAX_HEIGHT(GxEPD2_290_GDEY029T71H)> display(GxEPD2_290_GDEY029T71H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, MAX_HEIGHT(GxEPD2_420_GYE042A87)> display(GxEPD2_420_GYE042A87(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, MAX_HEIGHT(GxEPD2_420_SE0420NQ04)> display(GxEPD2_420_SE0420NQ04(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, MAX_HEIGHT(GxEPD2_579_GDEY0579T93)> display(GxEPD2_579_GDEY0579T93(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1085_GDEM1085T51, MAX_HEIGHT(GxEPD2_1085_GDEM1085T51)> display(GxEPD2_1085_GDEM1085T51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7, /*CS2=*/ 6)); // GDEM1085T51 1360x480, JD79686AB, (FPC8617)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, MAX_HEIGHT_3C(GxEPD2_420c_GDEY042Z98)> display(GxEPD2_420c_GDEY042Z98(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_579c_GDEY0579Z93, MAX_HEIGHT_3C(GxEPD2_579c_GDEY0579Z93)> display(GxEPD2_579c_GDEY0579Z93(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEW075Z08)> display(GxEPD2_750c_GDEW075Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEY075Z08)> display(GxEPD2_750c_GDEY075Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, MAX_HEIGHT_3C(GxEPD2_154c_GDEM0154F51H)> display(GxEPD2_154c_GDEM0154F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT_3C(GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, MAX_HEIGHT_3C(GxEPD2_350c_GDEM035F51)> display(GxEPD2_350c_GDEM035F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, MAX_HEIGHT_3C(GxEPD2_397c_GDEM0397F81)> display(GxEPD2_397c_GDEM0397F81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, MAX_HEIGHT_3C(GxEPD2_750c_GDEM075F52)> display(GxEPD2_750c_GDEM075F52(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, MAX_HEIGHT_3C(GxEPD2_579c_GDEY0579F51)> display(GxEPD2_579c_GDEY0579F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116F51)> display(GxEPD2_1160c_GDEY116F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
#define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEP073E01, MAX_HEIGHT_7C(GxEPD2_730c_GDEP073E01)> display(GxEPD2_730c_GDEP073E01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
|
||||||
|
// ***** for mapping of Waveshare Universal e-Paper Raw Panel Driver Shield for Arduino / NUCLEO *****
|
||||||
|
// the RST line is not connected through level converter, but has a pull up resistor and a pull down diode to the Arduino pin; this is safe for 5V Arduino
|
||||||
|
// NOTE: the 11-pinholes for pin connectors are not through level converter, and the VCC pin is ~4.2V, only FCP connector pins are through level converter
|
||||||
|
// NOTE: the VCC pin on the 11-pinholes for pin connectors shouldn't be used, it seems to get back-fed from Arduino data pins through protection diodes of the level converter
|
||||||
|
// NOTE: the VCC pin should be fed from Arduino 5V pin for use on any 5V Arduino (did they forget to add this connection or add a jumper?)
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, MAX_HEIGHT(GxEPD2_290_GDEY029T71H)> display(GxEPD2_290_GDEY029T71H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, MAX_HEIGHT(GxEPD2_420_GYE042A87)> display(GxEPD2_420_GYE042A87(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, MAX_HEIGHT(GxEPD2_420_SE0420NQ04)> display(GxEPD2_420_SE0420NQ04(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, MAX_HEIGHT(GxEPD2_579_GDEY0579T93)> display(GxEPD2_579_GDEY0579T93(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, MAX_HEIGHT_3C(GxEPD2_420c_GDEY042Z98)> display(GxEPD2_420c_GDEY042Z98(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_579c_GDEY0579Z93, MAX_HEIGHT_3C(GxEPD2_579c_GDEY0579Z93)> display(GxEPD2_579c_GDEY0579Z93(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); //GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEW075Z08)> display(GxEPD2_750c_GDEW075Z08(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEY075Z08)> display(GxEPD2_750c_GDEY075Z08(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, MAX_HEIGHT_3C(GxEPD2_154c_GDEM0154F51H)> display(GxEPD2_154c_GDEM0154F51H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT_3C((GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, MAX_HEIGHT_3C(GxEPD2_350c_GDEM035F51)> display(GxEPD2_350c_GDEM035F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, MAX_HEIGHT_3C(GxEPD2_397c_GDEM0397F81)> display(GxEPD2_397c_GDEM0397F81(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, MAX_HEIGHT_3C(GxEPD2_579c_GDEY0579F51)> display(GxEPD2_579c_GDEY0579F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, MAX_HEIGHT_3C(GxEPD2_750c_GDEM075F52)> display(GxEPD2_750c_GDEM075F52(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116F51::HEIGHT)> display(GxEPD2_1160c_GDEY116F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEP073E01, MAX_HEIGHT_7C(GxEPD2_730c_GDEP073E01)> display(GxEPD2_730c_GDEP073E01(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
|
||||||
|
// Waveshare 12.48 b/w SPI display board and frame or Good Display 12.48 b/w panel GDEW1248T3
|
||||||
|
// general constructor for use with standard SPI pins, default SCK, MISO and MOSI, for UNO on UNO connectors
|
||||||
|
//GxEPD2_BW < GxEPD2_1248, MAX_HEIGHT(GxEPD2_1248)>
|
||||||
|
//display(GxEPD2_1248(/*cs_m1=*/ 2, /*cs_s1=*/ 3, /*cs_m2=*/ A4, /*cs_s2=*/ A0, /*dc1=*/ 6, /*dc2=*/ A3, /*rst1=*/ 5, /*rst2=*/ A2,
|
||||||
|
// /*busy_m1=*/ 4, /*busy_s1=*/ 7, /*busy_m2=*/ A1, /*busy_s2=*/ A5));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#undef MAX_HEIGHT_3C
|
||||||
|
#undef MAX_HEIGHT_7C
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,612 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
#ifndef _GxEPD2_boards_added_H_
|
||||||
|
#define _GxEPD2_boards_added_H_
|
||||||
|
|
||||||
|
// Arduino DUE
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino DUE, note: pin 77 is on board pin 10, SS is 10
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 76, DIN -> 75
|
||||||
|
// SPI pins are on 6 pin 2x3 SPI header, no SS on SPI header!
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAM)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_102, MAX_HEIGHT(GxEPD2_102)> display(GxEPD2_102(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, MAX_HEIGHT(GxEPD2_420_GYE042A87)> display(GxEPD2_420_GYE042A87(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, MAX_HEIGHT(GxEPD2_420_SE0420NQ04)> display(GxEPD2_420_SE0420NQ04(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT(GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
#define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 7, RST -> 9, CS -> SS(77), SCK -> SCK(76), MOSI -> MOSI(75), MISO -> MISO(74), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V over diode from USB (e.g. Wemos D1 mini) doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, MAX_HEIGHT(GxEPD2_it60)> display(GxEPD2_it60(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
//GxEPD2_BW<GxEPD2_it60_1448x1072, MAX_HEIGHT(GxEPD2_it60_1448x1072)> display(GxEPD2_it60_1448x1072(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
//GxEPD2_BW<GxEPD2_it78_1872x1404, MAX_HEIGHT(GxEPD2_it78_1872x1404)> display(GxEPD2_it78_1872x1404(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#undef MAX_HEIGHT_3C
|
||||||
|
#undef MAX_HEIGHT_7C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Arduino MKR1000 or MKRZERO
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MKR1000 or MKRZERO
|
||||||
|
// note: can't use SS on MKR1000: is defined as 24, should be 4
|
||||||
|
// BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAMD)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_102, MAX_HEIGHT(GxEPD2_102)> display(GxEPD2_102(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, MAX_HEIGHT(GxEPD2_420_GYE042A87)> display(GxEPD2_420_GYE042A87(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, MAX_HEIGHT(GxEPD2_420_SE0420NQ04)> display(GxEPD2_420_SE0420NQ04(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT(GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
#define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 5, RST -> 6, CS -> 4, SCK -> SCK(9), MOSI -> MOSI(8), MISO -> MISO(10), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V over diode from USB (e.g. Wemos D1 mini) doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, MAX_HEIGHT(GxEPD2_it60)> display(GxEPD2_it60(/*CS=*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
//GxEPD2_BW<GxEPD2_it60_1448x1072, MAX_HEIGHT(GxEPD2_it60_1448x1072)> display(GxEPD2_it60_1448x1072(/*CS=*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
//GxEPD2_BW<GxEPD2_it78_1872x1404, MAX_HEIGHT(GxEPD2_it78_1872x1404)> display(GxEPD2_it78_1872x1404(/*CS=*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#undef MAX_HEIGHT_3C
|
||||||
|
#undef MAX_HEIGHT_7C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32 D32 PRO
|
||||||
|
// BUSY -> 15, RST -> 2, DC -> 0, CS -> 5, CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// note: use explicit value for CS, as SS is re-defined to TF_CS(4) in pins_arduino.h for Board: "LOLIN D32 PRO"
|
||||||
|
|
||||||
|
#if defined(ESP32) && defined(ARDUINO_LOLIN_D32_PRO)
|
||||||
|
// select one and adapt to your mapping, can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_102, GxEPD2_102::HEIGHT> display(GxEPD2_102(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, GxEPD2_750::HEIGHT> display(GxEPD2_750(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT> display(GxEPD2_750_T7(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT> display(GxEPD2_750_GDEY075T7(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT> display(GxEPD2_420c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT> display(GxEPD2_420c_Z21(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT> display(GxEPD2_583c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT> display(GxEPD2_583c_Z83(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 2> display(GxEPD2_583c_GDEQ0583Z31(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT> display(GxEPD2_750c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT> display(GxEPD2_750c_Z90(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 2> display(GxEPD2_1160c_GDEY116Z91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 2> display(GxEPD2_1330c_GDEM133Z91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 4 > display(GxEPD2_730c_GDEY073D46(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 4, RST -> 16, CS -> 5, SCK -> SCK(18), MOSI -> MOSI(23), MISO -> MISO(19), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V over diode from USB (e.g. Wemos D1 mini) doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, GxEPD2_it60::HEIGHT> display(GxEPD2_it60(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15));
|
||||||
|
//GxEPD2_BW < GxEPD2_it60_1448x1072, GxEPD2_it60_1448x1072::HEIGHT / 4 > display(GxEPD2_it60_1448x1072(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15));
|
||||||
|
//GxEPD2_BW < GxEPD2_it78_1872x1404, GxEPD2_it78_1872x1404::HEIGHT / 8 > display(GxEPD2_it78_1872x1404(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. TTGO T8 ESP32-WROVER
|
||||||
|
// BUSY -> 4, RST -> 0, DC -> 2, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "ESP32 Dev Module":
|
||||||
|
|
||||||
|
#if defined(ESP32) && defined(ARDUINO_ESP32_DEV)
|
||||||
|
// select one and adapt to your mapping, can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_102, GxEPD2_102::HEIGHT> display(GxEPD2_102(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, GxEPD2_750::HEIGHT> display(GxEPD2_750(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT> display(GxEPD2_750_T7(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT> display(GxEPD2_750_GDEY075T7(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT> display(GxEPD2_420c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT> display(GxEPD2_420c_Z21(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT> display(GxEPD2_583c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT> display(GxEPD2_583c_Z83(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 2> display(GxEPD2_583c_GDEQ0583Z31(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT> display(GxEPD2_750c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT> display(GxEPD2_750c_Z90(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 2> display(GxEPD2_1160c_GDEY116Z91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 2> display(GxEPD2_1330c_GDEM133Z91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 4 > display(GxEPD2_730c_GDEY073D46(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 4, RST -> 16, CS -> SS(5), SCK -> SCK(18), MOSI -> MOSI(23), MISO -> MISO(19), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V over diode from USB (e.g. Wemos D1 mini) doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, GxEPD2_it60::HEIGHT> display(GxEPD2_it60(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it60_1448x1072, GxEPD2_it60_1448x1072::HEIGHT / 4 > display(GxEPD2_it60_1448x1072(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it78_1872x1404, GxEPD2_it78_1872x1404::HEIGHT / 8 > display(GxEPD2_it78_1872x1404(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
// BUSY -> GPIO16, RST -> GPIO5, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
#if defined (ESP8266)
|
||||||
|
// select one , can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT / 2 > display(GxEPD2_583_GDEQ0583T31(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW < GxEPD2_750, GxEPD2_750::HEIGHT / 2 > display(GxEPD2_750(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT / 2 > display(GxEPD2_750_T7(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT / 2 > display(GxEPD2_750_GDEY075T7(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM029C90 128x296, SSD1680
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT / 2> display(GxEPD2_420c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT / 2> display(GxEPD2_420c_Z21(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
// can use only quarter buffer size
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT / 4> display(GxEPD2_583c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT / 4> display(GxEPD2_583c_Z83(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 4> display(GxEPD2_583c_GDEQ0583Z31(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT / 4> display(GxEPD2_750c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4> display(GxEPD2_750c_Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4> display(GxEPD2_750c_Z90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 4> display(GxEPD2_1160c_GDEY116Z91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 4> display(GxEPD2_1330c_GDEM133Z91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 6 > display(GxEPD2_730c_GDEY073D46(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RP2040)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 131072ul // e.g. half of available ram
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_102, MAX_HEIGHT(GxEPD2_102)> display(GxEPD2_102(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, MAX_HEIGHT(GxEPD2_420_GYE042A87)> display(GxEPD2_420_GYE042A87(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, MAX_HEIGHT(GxEPD2_420_SE0420NQ04)> display(GxEPD2_420_SE0420NQ04(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT(GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
#define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#undef MAX_HEIGHT_3C
|
||||||
|
#undef MAX_HEIGHT_7C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,374 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// NOTE: you may need to adapt or select for your wiring in the processor specific conditional compile sections below
|
||||||
|
|
||||||
|
// select the display class (only one), matching the kind of display panel
|
||||||
|
#define GxEPD2_DISPLAY_CLASS GxEPD2_BW
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_3C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_4C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_7C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_BW_SHM
|
||||||
|
|
||||||
|
// select the display driver class (only one) for your panel
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_102 // GDEW0102T4 80x128, UC8175, (WFT0102CZA2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_150_BN // DEPG0150BN 200x200, SSD1681, (FPC8101), TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154 // GDEP015OC1 200x200, IL3829, (WFC0000CZ07), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_D67 // GDEH0154D67 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_T8 // GDEW0154T8 152x152, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M09 // GDEW0154M09 200x200, JD79653A, (WFT0154CZB3)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M10 // GDEW0154M10 152x152, UC8151D, (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_GDEY0154D67 // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213 // GDE0213B1 122x250, IL3895, (HINK-E0213-G01), phased out
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B72 // GDEH0213B72 122x250, SSD1675A (IL3897), (HINK-E0213A22-A0 SLH1852)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B73 // GDEH0213B73 122x250, SSD1675B, (HINK-E0213A22-A0 SLH1914)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B74 // GDEM0213B74 122x250, SSD1680, FPC-7528B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_flex // GDEW0213I5F 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_M21 // GDEW0213M21 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_T5D // GDEW0213T5D 104x212, UC8151D, (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_BN // DEPG0213BN 122x250, SSD1680, (FPC-7528B), TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_GDEY0213B74 // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260 // GDEW026T0 152x296, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260_M01 // GDEW026M01 152x296, UC8151 (IL0373), (WFT0260CZB2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_BN // DEPG0266BN 152x296, SSD1680, (FPC7510), TTGO T5 V2.66, TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_GDEY0266T90 // GDEY0266T90 152x296, SSD1680, (FPC-A003 HB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270 // GDEW027W3 176x264, EK79652 (IL91874), (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270_GDEY027T91 // GDEY027T91 176x264, SSD1680, (FB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290 // GDEH029A1 128x296, SSD1608 (IL3820), (E029A01-FPC-A1 SYX1553)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5 // GDEW029T5 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5D // GDEW029T5D 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_I6FD // GDEW029I6FD 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94_V2 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b), Waveshare 2.9" V2 variant
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_BS // DEPG0290BS 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_M06 // GDEW029M06 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T94 // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T71H // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_310_GDEQ031T10 // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_GDEY037T03 // GDEY037T03 240x416, UC8253, (FPC-F002, hidden on CrowPanel)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1 280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_371 // GDEW0371W7 240x416, UC8171 (IL0324), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397_GDEM0397T81 // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420 // GDEW042T2 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GYE042A87 // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_SE0420NQ04 // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_576_GDEH0576T81 // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579_GDEY0579T93 // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583 // GDEW0583T7 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8 // GDEW0583T8 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750 // GDEW075T8 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_T7 // GDEW075T7 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_GDEY075T7 // GDEY075T7 800x480, UC8179 (GD7965), (FPC-C001 20.08.20)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1020_GDEM102T91 // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1085_GDEM1085T51 // GDEM1085T51 1360x480, JD79686AB, (FPC8617) *** needs CS2 ***
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160_T91 // GDEH116T91 960x640, SSD1677, (none or hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248 // GDEW1248T3 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330_GDEM133T91 // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c // GDEW0154Z04 200x200, IL0376F, (WFT0000CZ04), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_Z90c // GDEH0154Z90 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c // GDEW0213Z16 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z19c // GDEH0213Z19 104x212, UC8151D, (HINK-E0213A20-A2 2020-11-19)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z98c // GDEY0213Z98 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c // GDEY0266Z90 152x296, SSD1680, (FPC-7510)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270c // GDEW027C44 176x264, IL91874, (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c // GDEW029Z10 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_Z13c // GDEH029Z13 128x296, UC8151D, (HINK-E029A10-A3 20160809)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_C90c // GDEM029C90 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c // GDEW042Z15 400x300, UC8176 (IL0398), (WFT0420CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_Z21 // GDEQ042Z21 400x300, UC8276, (hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY042Z98 // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579Z93 // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c // GDEW0583Z21 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_Z83 // GDEW0583Z83 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_GDEQ0583Z31 // GDEQ0583Z31 648x480, UC8179C,
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c // GDEW075Z09 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z08 // GDEW075Z08 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90 880x528, SSD1677, (HINK-E075A07-A0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEW075Z08 // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEY075Z08 // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116Z91 // GDEY116Z91 960x640, SSD1677, (FPV-K002 22.04.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248c // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330c_GDEM133Z91 // GDEM133Z91 960x680, SSD1677 (FPC-7701 REV.B)
|
||||||
|
// 4-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c_GDEM0154F51H // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c_GDEY0213F51 // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_300c // Waveshare 3.00" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_350c_GDEM035F51 // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397c_GDEM0397F81 // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_437c // Waveshare 4.37" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579F51 // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEM075F52 // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116F51 // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c_GDEP0565D90 // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEY073D46 // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_ACeP_730 // Waveshare 7.3" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEP073E01 // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60 // ED060SCT 800x600
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60_1448x1072 // ED060KC1 1448x1072
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it78_1872x1404 // ED078KC2 1872x1404
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it103_1872x1404 // ES103TC1 1872x1404
|
||||||
|
|
||||||
|
// SS is usually used for CS. define here for easy change
|
||||||
|
#ifndef EPD_CS
|
||||||
|
#define EPD_CS SS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
||||||
|
|
||||||
|
// somehow there should be an easier way to do this
|
||||||
|
#define GxEPD2_BW_IS_GxEPD2_BW true
|
||||||
|
#define GxEPD2_3C_IS_GxEPD2_3C true
|
||||||
|
#define GxEPD2_4C_IS_GxEPD2_4C true
|
||||||
|
#define GxEPD2_7C_IS_GxEPD2_7C true
|
||||||
|
#define GxEPD2_BW_SHM_IS_GxEPD2_BW_SHM true
|
||||||
|
#define GxEPD2_1248_IS_GxEPD2_1248 true
|
||||||
|
#define GxEPD2_1248c_IS_GxEPD2_1248c true
|
||||||
|
#define IS_GxEPD(c, x) (c##x)
|
||||||
|
#define IS_GxEPD2_BW(x) IS_GxEPD(GxEPD2_BW_IS_, x)
|
||||||
|
#define IS_GxEPD2_3C(x) IS_GxEPD(GxEPD2_3C_IS_, x)
|
||||||
|
#define IS_GxEPD2_4C(x) IS_GxEPD(GxEPD2_4C_IS_, x)
|
||||||
|
#define IS_GxEPD2_7C(x) IS_GxEPD(GxEPD2_7C_IS_, x)
|
||||||
|
#define IS_GxEPD2_BW_SHM(x) IS_GxEPD(GxEPD2_BW_SHM_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248(x) IS_GxEPD(GxEPD2_1248_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248c(x) IS_GxEPD(GxEPD2_1248c_IS_, x)
|
||||||
|
|
||||||
|
#include "GxEPD2_selection_check.h"
|
||||||
|
|
||||||
|
// for my test use only
|
||||||
|
//#if defined(_AVR)
|
||||||
|
//#warning "defined(_AVR)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ESP32)
|
||||||
|
//#warning "defined(ESP32)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
//#warning "defined(ARDUINO_ARCH_ESP32)"
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_AVR)
|
||||||
|
#if defined (ARDUINO_AVR_MEGA2560) // Note: SS is on 53 on MEGA
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#elif defined(ARDUINO_AVR_NANO_EVERY)
|
||||||
|
#define EPD_CS 10
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#else // Note: SS is on 10 on UNO, NANO
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 800 //
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
// for Arduino Micro or Arduino Leonardo with CS on 10 on my proto boards (SS would be 17) uncomment instead:
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_MEGAAVR)
|
||||||
|
#if defined(ARDUINO_AVR_NANO_EVERY) || defined(ARDUINO_AVR_UNO_WIFI_REV2)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 65536ul // e.g.
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
#if !IS_GxEPD2_1248(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_1248c(GxEPD2_DRIVER_CLASS)
|
||||||
|
#if defined(ARDUINO_NANO_ESP32) // uses Dx pin names
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ D10, /*DC=*/ D8, /*RST=*/ D9, /*BUSY=*/ D7));
|
||||||
|
#elif defined(ARDUINO_LOLIN_D32_PRO)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // my LOLIN_D32_PRO proto board
|
||||||
|
#elif defined(ARDUINO_LOLIN_S2_MINI)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 33, /*DC=*/ 35, /*RST=*/ 37, /*BUSY=*/ 39)); // my LOLIN ESP32 S2 mini connection
|
||||||
|
#elif defined(ARDUINO_ESP32S3_DEV)
|
||||||
|
// ESP32E6-E01 : only 50 pin FPC works on actual version (11.1.2025)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 2, /*DC=*/ 3, /*RST=*/ 4, /*BUSY=*/ 5)); // Good Display ESP32E6-E01 board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 45, /*DC=*/ 46, /*RST=*/ 47, /*BUSY=*/ 48)); // CrowPanel wiring
|
||||||
|
#else
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13)); // Good Display ESP32 Development Kit ESP32-L
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13, /*CS2=*/ 4)); // for GDEM1085T51 with ESP32-L
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // my suggested wiring and proto board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ 5, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // LILYGO_T5_V2.4.1
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 19, /*RST=*/ 4, /*BUSY=*/ 34)); // LILYGO® TTGO T5 2.66
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // e.g. TTGO T8 ESP32-WROVER
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare ESP32 Driver Board
|
||||||
|
#endif
|
||||||
|
#else // GxEPD2_1248 or GxEPD2_1248c
|
||||||
|
// Waveshare 12.48 b/w or b/w/r SPI display board and frame or Good Display 12.48 b/w panel GDEW1248T3 or b/w/r panel GDEY1248Z51
|
||||||
|
// general constructor for use with all parameters, e.g. for Waveshare ESP32 driver board mounted on connection board
|
||||||
|
GxEPD2_DISPLAY_CLASS < GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS) > display(GxEPD2_DRIVER_CLASS(/*sck=*/ 13, /*miso=*/ 12, /*mosi=*/ 14,
|
||||||
|
/*cs_m1=*/ 23, /*cs_s1=*/ 22, /*cs_m2=*/ 16, /*cs_s2=*/ 19,
|
||||||
|
/*dc1=*/ 25, /*dc2=*/ 17, /*rst1=*/ 33, /*rst2=*/ 5,
|
||||||
|
/*busy_m1=*/ 32, /*busy_s1=*/ 26, /*busy_m2=*/ 18, /*busy_s2=*/ 4));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (ARDUINO_ARCH_ESP8266)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE (81920ul-34000ul-5000ul) // ~34000 base use, change 5000 to your application use
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=D8*/ EPD_CS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// can't use package "STMF1 Boards (STM32Duino.com)" (Roger Clark) anymore with Adafruit_GFX, use "STM32 Boards (selected from submenu)" (STMicroelectronics)
|
||||||
|
#if defined(ARDUINO_ARCH_STM32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
// for Good Display STM32 Development Kit DESPI-L.
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13, /*CS2=*/ PD12)); // for GDEM1085T51
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=PA4*/ EPD_CS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // my proto board
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RENESAS)
|
||||||
|
#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAM)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAMD)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_SAMD_NANO_33_IOT)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#else
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 3, /*RST=*/ 2, /*BUSY=*/ 1)); // my Seed XIOA0
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // my other Seed XIOA0
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RP2040)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 131072ul // e.g. half of available ram
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_NANO_RP2040_CONNECT)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 5, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // my proto board
|
||||||
|
// mapping of GoodDisplay DESPI-PICO. NOTE: uses alternate HW SPI pins!
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
|
||||||
|
// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,165 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
#define GxEPD2_102_IS_BW true
|
||||||
|
#define GxEPD2_150_BN_IS_BW true
|
||||||
|
#define GxEPD2_154_IS_BW true
|
||||||
|
#define GxEPD2_154_D67_IS_BW true
|
||||||
|
#define GxEPD2_154_T8_IS_BW true
|
||||||
|
#define GxEPD2_154_M09_IS_BW true
|
||||||
|
#define GxEPD2_154_M10_IS_BW true
|
||||||
|
#define GxEPD2_154_GDEY0154D67_IS_BW true
|
||||||
|
#define GxEPD2_213_IS_BW true
|
||||||
|
#define GxEPD2_213_B72_IS_BW true
|
||||||
|
#define GxEPD2_213_B73_IS_BW true
|
||||||
|
#define GxEPD2_213_B74_IS_BW true
|
||||||
|
#define GxEPD2_213_flex_IS_BW true
|
||||||
|
#define GxEPD2_213_M21_IS_BW true
|
||||||
|
#define GxEPD2_213_T5D_IS_BW true
|
||||||
|
#define GxEPD2_213_BN_IS_BW true
|
||||||
|
#define GxEPD2_213_GDEY0213B74_IS_BW true
|
||||||
|
#define GxEPD2_260_IS_BW true
|
||||||
|
#define GxEPD2_260_M01_IS_BW true
|
||||||
|
#define GxEPD2_266_BN_IS_BW true
|
||||||
|
#define GxEPD2_266_GDEY0266T90_IS_BW true
|
||||||
|
#define GxEPD2_270_IS_BW true
|
||||||
|
#define GxEPD2_270_GDEY027T91_IS_BW true
|
||||||
|
#define GxEPD2_290_IS_BW true
|
||||||
|
#define GxEPD2_290_T5_IS_BW true
|
||||||
|
#define GxEPD2_290_T5D_IS_BW true
|
||||||
|
#define GxEPD2_290_I6FD_IS_BW true
|
||||||
|
#define GxEPD2_290_T94_IS_BW true
|
||||||
|
#define GxEPD2_290_T94_V2_IS_BW true
|
||||||
|
#define GxEPD2_290_BS_IS_BW true
|
||||||
|
#define GxEPD2_290_M06_IS_BW true
|
||||||
|
#define GxEPD2_290_GDEY029T94_IS_BW true
|
||||||
|
#define GxEPD2_290_GDEY029T71H_IS_BW true
|
||||||
|
#define GxEPD2_310_GDEQ031T10_IS_BW true
|
||||||
|
#define GxEPD2_371_IS_BW true
|
||||||
|
#define GxEPD2_370_TC1_IS_BW true
|
||||||
|
#define GxEPD2_370_GDEY037T03_IS_BW true
|
||||||
|
#define GxEPD2_397_GDEM0397T81_IS_BW true
|
||||||
|
#define GxEPD2_420_IS_BW true
|
||||||
|
#define GxEPD2_420_M01_IS_BW true
|
||||||
|
#define GxEPD2_420_GDEY042T81_IS_BW true
|
||||||
|
#define GxEPD2_420_GYE042A87_IS_BW true
|
||||||
|
#define GxEPD2_420_SE0420NQ04_IS_BW true
|
||||||
|
#define GxEPD2_426_GDEQ0426T82_IS_BW true
|
||||||
|
#define GxEPD2_576_GDEH0576T81_IS_BW true
|
||||||
|
#define GxEPD2_579_GDEY0579T93_IS_BW true
|
||||||
|
#define GxEPD2_583_IS_BW true
|
||||||
|
#define GxEPD2_583_T8_IS_BW true
|
||||||
|
#define GxEPD2_583_GDEQ0583T31_IS_BW true
|
||||||
|
#define GxEPD2_750_IS_BW true
|
||||||
|
#define GxEPD2_750_T7_IS_BW true
|
||||||
|
#define GxEPD2_750_GDEY075T7_IS_BW true
|
||||||
|
#define GxEPD2_1020_GDEM102T91_IS_BW true
|
||||||
|
#define GxEPD2_1085_GDEM1085T51_IS_BW true
|
||||||
|
#define GxEPD2_1160_T91_IS_BW true
|
||||||
|
#define GxEPD2_1248_IS_BW true
|
||||||
|
#define GxEPD2_1330_GDEM133T91_IS_BW true
|
||||||
|
#define GxEPD2_it60_IS_BW true
|
||||||
|
#define GxEPD2_it60_1448x1072_IS_BW true
|
||||||
|
#define GxEPD2_it78_1872x1404_IS_BW true
|
||||||
|
#define GxEPD2_it103_1872x1404_IS_BW true
|
||||||
|
// 3-color e-papers
|
||||||
|
#define GxEPD2_154c_IS_3C true
|
||||||
|
#define GxEPD2_154_Z90c_IS_3C true
|
||||||
|
#define GxEPD2_213c_IS_3C true
|
||||||
|
#define GxEPD2_213_Z19c_IS_3C true
|
||||||
|
#define GxEPD2_213_Z98c_IS_3C true
|
||||||
|
#define GxEPD2_266c_IS_3C true
|
||||||
|
#define GxEPD2_270c_IS_3C true
|
||||||
|
#define GxEPD2_290c_IS_3C true
|
||||||
|
#define GxEPD2_290_Z13c_IS_3C true
|
||||||
|
#define GxEPD2_290_C90c_IS_3C true
|
||||||
|
#define GxEPD2_420c_IS_3C true
|
||||||
|
#define GxEPD2_420c_Z21_IS_3C true
|
||||||
|
#define GxEPD2_420c_GDEY042Z98_IS_3C true
|
||||||
|
#define GxEPD2_579c_GDEY0579Z93_IS_3C true
|
||||||
|
#define GxEPD2_583c_IS_3C true
|
||||||
|
#define GxEPD2_583c_Z83_IS_3C true
|
||||||
|
#define GxEPD2_583c_GDEQ0583Z31_IS_3C true
|
||||||
|
#define GxEPD2_750c_IS_3C true
|
||||||
|
#define GxEPD2_750c_Z08_IS_3C true
|
||||||
|
#define GxEPD2_750c_Z90_IS_3C true
|
||||||
|
#define GxEPD2_750c_GDEW075Z08_IS_3C true
|
||||||
|
#define GxEPD2_750c_GDEY075Z08_IS_3C true
|
||||||
|
#define GxEPD2_1160c_GDEY116Z91_IS_3C true
|
||||||
|
#define GxEPD2_1248c_IS_3C true
|
||||||
|
#define GxEPD2_1330c_GDEM133Z91_IS_3C true
|
||||||
|
// 4-color e-paper
|
||||||
|
#define GxEPD2_154c_GDEM0154F51H_IS_4C true
|
||||||
|
#define GxEPD2_213c_GDEY0213F51_IS_4C true
|
||||||
|
#define GxEPD2_266c_GDEY0266F51H_IS_4C true
|
||||||
|
#define GxEPD2_290c_GDEY029F51H_IS_4C true
|
||||||
|
#define GxEPD2_300c_IS_4C true
|
||||||
|
#define GxEPD2_350c_GDEM035F51_IS_4C true
|
||||||
|
#define GxEPD2_397c_GDEM0397F81_IS_4C true
|
||||||
|
#define GxEPD2_420c_GDEY0420F51_IS_4C true
|
||||||
|
#define GxEPD2_437c_IS_4C true
|
||||||
|
#define GxEPD2_579c_GDEY0579F51_IS_4C true
|
||||||
|
#define GxEPD2_750c_GDEM075F52_IS_4C true
|
||||||
|
#define GxEPD2_1160c_GDEY116F51_IS_4C true
|
||||||
|
// 7-color e-paper
|
||||||
|
#define GxEPD2_565c_IS_7C true
|
||||||
|
#define GxEPD2_565c_GDEP0565D90_IS_7C true
|
||||||
|
#define GxEPD2_730c_GDEY073D46_IS_7C true
|
||||||
|
#define GxEPD2_730c_ACeP_730_IS_7C true
|
||||||
|
#define GxEPD2_730c_GDEP073E01_IS_7C true
|
||||||
|
|
||||||
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
||||||
|
#define IS_GxEPD2_DRIVER(c, x) (c##x)
|
||||||
|
#define IS_GxEPD2_DRIVER_BW(x) IS_GxEPD2_DRIVER(x, _IS_BW)
|
||||||
|
#define IS_GxEPD2_DRIVER_3C(x) IS_GxEPD2_DRIVER(x, _IS_3C)
|
||||||
|
#define IS_GxEPD2_DRIVER_4C(x) IS_GxEPD2_DRIVER(x, _IS_4C)
|
||||||
|
#define IS_GxEPD2_DRIVER_7C(x) IS_GxEPD2_DRIVER(x, _IS_7C)
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 3-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 4-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with b/w driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with 4-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with b/w driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with 3-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS) && !IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_7C used with less colors driver class"
|
||||||
|
#endif
|
||||||
|
#if !IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "neither BW nor 3C nor 4C nor 7C kind defined for driver class (error in GxEPD2_selection_check.h)"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// mapping of Good Display Arduino UNO Development Kit DEArduino-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> 4, RES -> 5, D/C -> 6, CS-> 7, SCK -> 13, SDI -> 11
|
||||||
|
|
||||||
|
// mapping of Good Display ESP8266 Development Kit ESP8266-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO16, RES -> GPIO5, D/C -> GPIO4, CS-> GPIO2, SCK -> GPIO14, SDI -> GPIO13
|
||||||
|
|
||||||
|
// mapping of Good Display ESP32 Development Kit ESP32-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO13, RES -> GPIO12, D/C -> GPIO14, CS-> GPIO27, SCK -> GPIO18, SDI -> GPIO23
|
||||||
|
|
||||||
|
// mapping of Good Display STM32 Development Kit DESPI-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PD9, SDI -> PD10
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PA5, SDI -> PA7 // for HW SPI with GxEPD2
|
||||||
|
|
||||||
|
// connection suggestions concerning Waveshare e-paper HAT Rev 2.3:
|
||||||
|
// DON'T FORGET to connect the PWR pin to VCC, to enable power to the board.
|
||||||
|
// RST is no longer used to disable power to the board, as with earlier revisions.
|
||||||
|
// Note, for 3.3V processors, no level converters are needed. Use DESPI-C02 instead. Uses less power.
|
||||||
|
// See https://www.buyepaper.com/products/development-kit-connection-adapter-board-for-eaper-display-demo-kit
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
|
||||||
|
// BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
|
||||||
|
// BUSY -> GPIO4, RST -> GPIO2, DC -> GPIO0, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from GPIO15 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from GPIO2 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
// BUSY -> GPIO5, RST -> GPIO2, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
// BUSY -> GPIO16, RST -> GPIO5, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32, see .../variants/.../pins_arduino.h for your board
|
||||||
|
// NOTE: there are variants with different pins for SPI ! CHECK SPI PINS OF YOUR BOARD
|
||||||
|
// BUSY -> 4, RST -> 16, DC -> 17, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
|
||||||
|
// mapping of Waveshare ESP32 Driver Board
|
||||||
|
// BUSY -> 25, RST -> 26, DC -> 27, CS-> 15, CLK -> 13, DIN -> 14
|
||||||
|
// NOTE: this board uses "unusual" SPI pins and requires re-mapping of HW SPI to these pins in SPIClass
|
||||||
|
// see example GxEPD2_WS_ESP32_Driver.ino, it shows how this can be done easily
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32 D32 PRO
|
||||||
|
// BUSY -> 15, RST -> 2, DC -> 0, CS -> 5, CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// note: use explicit value for CS, as SS is re-defined to TF_CS(4) in pins_arduino.h for Board: "LOLIN D32 PRO"
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. TTGO T8 ESP32-WROVER
|
||||||
|
// BUSY -> 4, RST -> 0, DC -> 2, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "ESP32 Dev Module":
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32S2, e.g. LOLIN ESP32 S2 mini, direct connection of DESPI-C02
|
||||||
|
// BUSY -> 39, RST -> 37, DC -> 35, CS -> 33, CLK -> 18, DIN -> 16, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "LOLIN S2 MINI":
|
||||||
|
|
||||||
|
// new mapping suggestion for STM32F1, e.g. STM32F103C8T6 "BluePill"
|
||||||
|
// BUSY -> A1, RST -> A2, DC -> A3, CS-> A4, CLK -> A5, DIN -> A7
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, UNO, NANO etc.
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, Arduino Micro, Leonardo
|
||||||
|
// note: on Leonardo board HW SPI pins are on 6-pin ICSP header
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 15, DIN -> 16
|
||||||
|
|
||||||
|
// mapping of Waveshare Universal e-Paper Raw Panel Driver Shield for Arduino / NUCLEO
|
||||||
|
// BUSY -> 7, RST -> 8, DC -> 9, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MEGA
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 53, CLK -> 52, DIN -> 51
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino DUE, note: pin 77 is on board pin 10, SS is 10
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 76, DIN -> 75
|
||||||
|
// SPI pins are on 6 pin 2x3 SPI header, no SS on SPI header!
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MKR1000 or MKRZERO
|
||||||
|
// note: can't use SS on MKR1000: is defined as 24, should be 4
|
||||||
|
// BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
|
||||||
|
|
||||||
|
// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3
|
||||||
|
|
||||||
|
// mapping of my new proto board like Waveshare Pico-ePaper-2.9
|
||||||
|
// needs 10k pull-up on RST when used with Arduino MBED OS RP2040 Boards
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
|
|
||||||
|
// mapping of Waveshare Pico-ePaper-2.9
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
@@ -0,0 +1,302 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
//
|
||||||
|
// Purpose: show uses of GxEPD2_GFX base class for references to a display instance
|
||||||
|
//
|
||||||
|
// TextDisplay shows the use of the display instance reference as a function parameter
|
||||||
|
|
||||||
|
// note for partial update window and setPartialWindow() method:
|
||||||
|
// partial update window size and position is on byte boundary in physical x direction
|
||||||
|
// the size is increased in setPartialWindow() if x or w are not multiple of 8 for even rotation, y or h for odd rotation
|
||||||
|
// see also comment in GxEPD2_BW.h, GxEPD2_3C.h or GxEPD2_GFX.h for method setPartialWindow()
|
||||||
|
|
||||||
|
#include "TextDisplay.h"
|
||||||
|
#include <Fonts/FreeMonoBold9pt7b.h>
|
||||||
|
|
||||||
|
const char HelloWorld[] = "Hello World!";
|
||||||
|
const char HelloArduino[] = "Hello Arduino!";
|
||||||
|
const char HelloEpaper[] = "Hello E-Paper!";
|
||||||
|
|
||||||
|
void helloWorld(GxEPD2_GFX& display)
|
||||||
|
{
|
||||||
|
//Serial.println("helloWorld");
|
||||||
|
display.setRotation(1);
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
int16_t tbx, tby; uint16_t tbw, tbh;
|
||||||
|
display.getTextBounds(HelloWorld, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
// center bounding box by transposition of origin:
|
||||||
|
uint16_t x = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
uint16_t y = ((display.height() - tbh) / 2) - tby;
|
||||||
|
display.setFullWindow();
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.setCursor(x, y);
|
||||||
|
display.print(HelloWorld);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
//Serial.println("helloWorld done");
|
||||||
|
}
|
||||||
|
|
||||||
|
void helloWorldForDummies(GxEPD2_GFX& display)
|
||||||
|
{
|
||||||
|
//Serial.println("helloWorld");
|
||||||
|
const char text[] = "Hello World!";
|
||||||
|
// most e-papers have width < height (portrait) as native orientation, especially the small ones
|
||||||
|
// in GxEPD2 rotation 0 is used for native orientation (most TFT libraries use 0 fix for portrait orientation)
|
||||||
|
// set rotation to 1 (rotate right 90 degrees) to have enough space on small displays (landscape)
|
||||||
|
display.setRotation(1);
|
||||||
|
// select a suitable font in Adafruit_GFX
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
// on e-papers black on white is more pleasant to read
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
// Adafruit_GFX has a handy method getTextBounds() to determine the boundary box for a text for the actual font
|
||||||
|
int16_t tbx, tby; uint16_t tbw, tbh; // boundary box window
|
||||||
|
display.getTextBounds(text, 0, 0, &tbx, &tby, &tbw, &tbh); // it works for origin 0, 0, fortunately (negative tby!)
|
||||||
|
// center bounding box by transposition of origin:
|
||||||
|
uint16_t x = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
uint16_t y = ((display.height() - tbh) / 2) - tby;
|
||||||
|
// full window mode is the initial mode, set it anyway
|
||||||
|
display.setFullWindow();
|
||||||
|
// here we use paged drawing, even if the processor has enough RAM for full buffer
|
||||||
|
// so this can be used with any supported processor board.
|
||||||
|
// the cost in code overhead and execution time penalty is marginal
|
||||||
|
// tell the graphics class to use paged drawing mode
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
// this part of code is executed multiple times, as many as needed,
|
||||||
|
// in case of full buffer it is executed once
|
||||||
|
// IMPORTANT: each iteration needs to draw the same, to avoid strange effects
|
||||||
|
// use a copy of values that might change, don't read e.g. from analog or pins in the loop!
|
||||||
|
display.fillScreen(GxEPD_WHITE); // set the background to white (fill the buffer with value for white)
|
||||||
|
display.setCursor(x, y); // set the postition to start printing text
|
||||||
|
display.print(text); // print some text
|
||||||
|
// end of part executed multiple times
|
||||||
|
}
|
||||||
|
// tell the graphics class to transfer the buffer content (page) to the controller buffer
|
||||||
|
// the graphics class will command the controller to refresh to the screen when the last page has been transferred
|
||||||
|
// returns true if more pages need be drawn and transferred
|
||||||
|
// returns false if the last page has been transferred and the screen refreshed for panels without fast partial update
|
||||||
|
// returns false for panels with fast partial update when the controller buffer has been written once more, to make the differential buffers equal
|
||||||
|
// (for full buffered with fast partial update the (full) buffer is just transferred again, and false returned)
|
||||||
|
while (display.nextPage());
|
||||||
|
//Serial.println("helloWorld done");
|
||||||
|
}
|
||||||
|
|
||||||
|
void helloFullScreenPartialMode(GxEPD2_GFX& display)
|
||||||
|
{
|
||||||
|
//Serial.println("helloFullScreenPartialMode");
|
||||||
|
const char fullscreen[] = "full screen update";
|
||||||
|
const char fpm[] = "fast partial mode";
|
||||||
|
const char spm[] = "slow partial mode";
|
||||||
|
const char npm[] = "no partial mode";
|
||||||
|
display.setPartialWindow(0, 0, display.width(), display.height());
|
||||||
|
display.setRotation(1);
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
const char* updatemode;
|
||||||
|
if (display.epd2.hasFastPartialUpdate)
|
||||||
|
{
|
||||||
|
updatemode = fpm;
|
||||||
|
}
|
||||||
|
else if (display.epd2.hasPartialUpdate)
|
||||||
|
{
|
||||||
|
updatemode = spm;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
updatemode = npm;
|
||||||
|
}
|
||||||
|
// do this outside of the loop
|
||||||
|
int16_t tbx, tby; uint16_t tbw, tbh;
|
||||||
|
// center update text
|
||||||
|
display.getTextBounds(fullscreen, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
uint16_t utx = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
uint16_t uty = ((display.height() / 4) - tbh / 2) - tby;
|
||||||
|
// center update mode
|
||||||
|
display.getTextBounds(updatemode, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
uint16_t umx = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
uint16_t umy = ((display.height() * 3 / 4) - tbh / 2) - tby;
|
||||||
|
// center HelloWorld
|
||||||
|
display.getTextBounds(HelloWorld, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
uint16_t hwx = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
uint16_t hwy = ((display.height() - tbh) / 2) - tby;
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.setCursor(hwx, hwy);
|
||||||
|
display.print(HelloWorld);
|
||||||
|
display.setCursor(utx, uty);
|
||||||
|
display.print(fullscreen);
|
||||||
|
display.setCursor(umx, umy);
|
||||||
|
display.print(updatemode);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
//Serial.println("helloFullScreenPartialMode done");
|
||||||
|
}
|
||||||
|
|
||||||
|
void helloArduino(GxEPD2_GFX& display)
|
||||||
|
{
|
||||||
|
//Serial.println("helloArduino");
|
||||||
|
display.setRotation(1);
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
display.setTextColor(display.epd2.hasColor ? GxEPD_RED : GxEPD_BLACK);
|
||||||
|
int16_t tbx, tby; uint16_t tbw, tbh;
|
||||||
|
// align with centered HelloWorld
|
||||||
|
display.getTextBounds(HelloWorld, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
uint16_t x = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
// height might be different
|
||||||
|
display.getTextBounds(HelloArduino, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
uint16_t y = ((display.height() / 4) - tbh / 2) - tby; // y is base line!
|
||||||
|
// make the window big enough to cover (overwrite) descenders of previous text
|
||||||
|
uint16_t wh = FreeMonoBold9pt7b.yAdvance;
|
||||||
|
uint16_t wy = (display.height() / 4) - wh / 2;
|
||||||
|
display.setPartialWindow(0, wy, display.width(), wh);
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
//display.drawRect(x, y - tbh, tbw, tbh, GxEPD_BLACK);
|
||||||
|
display.setCursor(x, y);
|
||||||
|
display.print(HelloArduino);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(1000);
|
||||||
|
//Serial.println("helloArduino done");
|
||||||
|
}
|
||||||
|
|
||||||
|
void helloEpaper(GxEPD2_GFX& display)
|
||||||
|
{
|
||||||
|
//Serial.println("helloEpaper");
|
||||||
|
display.setRotation(1);
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
display.setTextColor(display.epd2.hasColor ? GxEPD_RED : GxEPD_BLACK);
|
||||||
|
int16_t tbx, tby; uint16_t tbw, tbh;
|
||||||
|
// align with centered HelloWorld
|
||||||
|
display.getTextBounds(HelloWorld, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
uint16_t x = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
// height might be different
|
||||||
|
display.getTextBounds(HelloEpaper, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
uint16_t y = (display.height() * 3 / 4) + tbh / 2; // y is base line!
|
||||||
|
// make the window big enough to cover (overwrite) descenders of previous text
|
||||||
|
uint16_t wh = FreeMonoBold9pt7b.yAdvance;
|
||||||
|
uint16_t wy = (display.height() * 3 / 4) - wh / 2;
|
||||||
|
display.setPartialWindow(0, wy, display.width(), wh);
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.setCursor(x, y);
|
||||||
|
display.print(HelloEpaper);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
//Serial.println("helloEpaper done");
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(ESP8266) || defined(ESP32)
|
||||||
|
#include <StreamString.h>
|
||||||
|
#define PrintString StreamString
|
||||||
|
#else
|
||||||
|
class PrintString : public Print, public String
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
size_t write(uint8_t data) override
|
||||||
|
{
|
||||||
|
return concat(char(data));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void helloValue(GxEPD2_GFX& display, double v, int digits)
|
||||||
|
{
|
||||||
|
//Serial.println("helloValue");
|
||||||
|
display.setRotation(1);
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
display.setTextColor(display.epd2.hasColor ? GxEPD_RED : GxEPD_BLACK);
|
||||||
|
PrintString valueString;
|
||||||
|
valueString.print(v, digits);
|
||||||
|
int16_t tbx, tby; uint16_t tbw, tbh;
|
||||||
|
display.getTextBounds(valueString, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
uint16_t x = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
uint16_t y = (display.height() * 3 / 4) + tbh / 2; // y is base line!
|
||||||
|
// show what happens, if we use the bounding box for partial window
|
||||||
|
uint16_t wx = (display.width() - tbw) / 2;
|
||||||
|
uint16_t wy = (display.height() * 3 / 4) - tbh / 2;
|
||||||
|
display.setPartialWindow(wx, wy, tbw, tbh);
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.setCursor(x, y);
|
||||||
|
display.print(valueString);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(2000);
|
||||||
|
// make the partial window big enough to cover the previous text
|
||||||
|
uint16_t ww = tbw; // remember window width
|
||||||
|
display.getTextBounds(HelloEpaper, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
// adjust, because HelloEpaper was aligned, not centered (could calculate this to be precise)
|
||||||
|
ww = max(ww, uint16_t(tbw + 12)); // 12 seems ok
|
||||||
|
wx = (display.width() - tbw) / 2;
|
||||||
|
// make the window big enough to cover (overwrite) descenders of previous text
|
||||||
|
uint16_t wh = FreeMonoBold9pt7b.yAdvance;
|
||||||
|
wy = (display.height() * 3 / 4) - wh / 2;
|
||||||
|
display.setPartialWindow(wx, wy, ww, wh);
|
||||||
|
// alternately use the whole width for partial window
|
||||||
|
//display.setPartialWindow(0, wy, display.width(), wh);
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.setCursor(x, y);
|
||||||
|
display.print(valueString);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
//Serial.println("helloValue done");
|
||||||
|
}
|
||||||
|
|
||||||
|
void showFont(GxEPD2_GFX& display, const char name[], const GFXfont* f)
|
||||||
|
{
|
||||||
|
display.setFullWindow();
|
||||||
|
display.setRotation(0);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
drawFont(display, name, f);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawFont(GxEPD2_GFX& display, const char name[], const GFXfont* f)
|
||||||
|
{
|
||||||
|
//display.setRotation(0);
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
display.setFont(f);
|
||||||
|
display.setCursor(0, 0);
|
||||||
|
display.println();
|
||||||
|
display.println(name);
|
||||||
|
display.println(" !\"#$%&'()*+,-./");
|
||||||
|
display.println("0123456789:;<=>?");
|
||||||
|
display.println("@ABCDEFGHIJKLMNO");
|
||||||
|
display.println("PQRSTUVWXYZ[\\]^_");
|
||||||
|
if (display.epd2.hasColor)
|
||||||
|
{
|
||||||
|
display.setTextColor(GxEPD_RED);
|
||||||
|
}
|
||||||
|
display.println("`abcdefghijklmno");
|
||||||
|
display.println("pqrstuvwxyz{|}~ ");
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
//
|
||||||
|
// Purpose: show uses of GxEPD2_GFX base class for references to a display instance
|
||||||
|
//
|
||||||
|
// TextDisplay shows the use of the display instance reference as a function parameter
|
||||||
|
|
||||||
|
#ifndef _TextDisplay_H_
|
||||||
|
#define _TextDisplay_H_
|
||||||
|
|
||||||
|
#include "GxEPD2_GFX.h"
|
||||||
|
|
||||||
|
void helloWorld(GxEPD2_GFX& display);
|
||||||
|
void helloWorldForDummies(GxEPD2_GFX& display);
|
||||||
|
void helloFullScreenPartialMode(GxEPD2_GFX& display);
|
||||||
|
void helloArduino(GxEPD2_GFX& display);
|
||||||
|
void helloEpaper(GxEPD2_GFX& display);
|
||||||
|
void helloValue(GxEPD2_GFX& display, double v, int digits);
|
||||||
|
void showFont(GxEPD2_GFX& display, const char name[], const GFXfont* f);
|
||||||
|
void drawFont(GxEPD2_GFX& display, const char name[], const GFXfont* f);
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
// GxEPD2_HelloWorld.ino by Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// see GxEPD2_wiring_examples.h for wiring suggestions and examples
|
||||||
|
// if you use a different wiring, you need to adapt the constructor parameters!
|
||||||
|
|
||||||
|
// uncomment next line to use class GFX of library GFX_Root instead of Adafruit_GFX
|
||||||
|
//#include <GFX.h>
|
||||||
|
|
||||||
|
#include <GxEPD2_BW.h>
|
||||||
|
#include <GxEPD2_3C.h>
|
||||||
|
#include <GxEPD2_4C.h>
|
||||||
|
#include <GxEPD2_7C.h>
|
||||||
|
#include <Fonts/FreeMonoBold9pt7b.h>
|
||||||
|
|
||||||
|
// select the display class and display driver class in the following file (new style):
|
||||||
|
#include "GxEPD2_display_selection_new_style.h"
|
||||||
|
|
||||||
|
// or select the display constructor line in one of the following files (old style):
|
||||||
|
#include "GxEPD2_display_selection.h"
|
||||||
|
#include "GxEPD2_display_selection_added.h"
|
||||||
|
|
||||||
|
// alternately you can copy the constructor from GxEPD2_display_selection.h or GxEPD2_display_selection_added.h to here
|
||||||
|
// e.g. for Wemos D1 mini:
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0154D67
|
||||||
|
|
||||||
|
// for handling alternative SPI pins (ESP32, RP2040) see example GxEPD2_Example.ino
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
//display.init(115200); // default 10ms reset pulse, e.g. for bare panels with DESPI-C02
|
||||||
|
display.init(115200, true, 2, false); // USE THIS for Waveshare boards with "clever" reset circuit, 2ms reset pulse
|
||||||
|
helloWorld();
|
||||||
|
display.hibernate();
|
||||||
|
}
|
||||||
|
|
||||||
|
const char HelloWorld[] = "Hello World!";
|
||||||
|
|
||||||
|
void helloWorld()
|
||||||
|
{
|
||||||
|
display.setRotation(1);
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
int16_t tbx, tby; uint16_t tbw, tbh;
|
||||||
|
display.getTextBounds(HelloWorld, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
// center the bounding box by transposition of the origin:
|
||||||
|
uint16_t x = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
uint16_t y = ((display.height() - tbh) / 2) - tby;
|
||||||
|
display.setFullWindow();
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.setCursor(x, y);
|
||||||
|
display.print(HelloWorld);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {};
|
||||||
@@ -0,0 +1,785 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
#if defined (ESP8266)
|
||||||
|
// select one and adapt to your mapping, can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_102, GxEPD2_102::HEIGHT> display(GxEPD2_102(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, GxEPD2_290_GDEY029T71H::HEIGHT> display(GxEPD2_290_GDEY029T71H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_BW<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT / 2 > display(GxEPD2_583_GDEQ0583T31(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW < GxEPD2_750, GxEPD2_750::HEIGHT / 2 > display(GxEPD2_750(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT / 2 > display(GxEPD2_750_T7(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT / 2 > display(GxEPD2_750_GDEY075T7(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1085_GDEM1085T51, GxEPD2_1085_GDEM1085T51::HEIGHT / 2> display(GxEPD2_1085_GDEM1085T51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4, /*CS2=*/ 3)); // GDEM1085T51 1360x480, JD79686AB, (FPC8617)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM029C90 128x296, SSD1680
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT / 2> display(GxEPD2_420c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT / 2> display(GxEPD2_420c_Z21(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, GxEPD2_420c_GDEY042Z98::HEIGHT> display(GxEPD2_420c_GDEY042Z98(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_579c_GDEY0579Z93, GxEPD2_579c_GDEY0579Z93::HEIGHT / 2> display(GxEPD2_579c_GDEY0579Z93(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
// can use only quarter buffer size
|
||||||
|
//GxEPD2_3C < GxEPD2_583c, GxEPD2_583c::HEIGHT / 4 > display(GxEPD2_583c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C < GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT / 4 > display(GxEPD2_583c_Z83(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 4> display(GxEPD2_583c_GDEQ0583Z31(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT / 4> display(GxEPD2_750c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C < GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4 > display(GxEPD2_750c_Z08(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C < GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4 > display(GxEPD2_750c_Z90(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, GxEPD2_750c_GDEW075Z08::HEIGHT / 4> display(GxEPD2_750c_GDEW075Z08(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, GxEPD2_750c_GDEY075Z08::HEIGHT / 4> display(GxEPD2_750c_GDEY075Z08(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 4> display(GxEPD2_1160c_GDEY116Z91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 4> display(GxEPD2_1330c_GDEM133Z91(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, GxEPD2_154c_GDEM0154F51H::HEIGHT> display(GxEPD2_154c_GDEM0154F51H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, GxEPD2_350c_GDEM035F51::HEIGHT> display(GxEPD2_350c_GDEM035F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, GxEPD2_397c_GDEM0397F81::HEIGHT> display(GxEPD2_397c_GDEM0397F81(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 2 > display(GxEPD2_437c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, GxEPD2_579c_GDEY0579F51::HEIGHT / 2> display(GxEPD2_579c_GDEY0579F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, GxEPD2_750c_GDEM075F52::HEIGHT / 2> display(GxEPD2_750c_GDEM075F52(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, GxEPD2_1160c_GDEY116F51::HEIGHT / 4> display(GxEPD2_1160c_GDEY116F51(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 5.65" 7-color (3C graphics)
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 6 > display(GxEPD2_730c_GDEY073D46(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEP073E01, GxEPD2_730c_GDEP073E01::HEIGHT / 6 > display(GxEPD2_730c_GDEP073E01(/*CS=D8*/ SS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4)); // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 4, RST -> 2, CS -> SS(15), SCK -> SCK(14), MOSI -> MOSI(D7(13)), MISO -> MISO(D6(12)), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V pin of USB powered Wemos D1 mini doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, GxEPD2_it60::HEIGHT / 8> display(GxEPD2_it60(/*CS=5*/ SS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it60_1448x1072, GxEPD2_it60_1448x1072::HEIGHT / 8 > display(GxEPD2_it60_1448x1072(/*CS=5*/ SS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it78_1872x1404, GxEPD2_it78_1872x1404::HEIGHT / 8 > display(GxEPD2_it78_1872x1404(/*CS=5*/ SS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it103_1872x1404, GxEPD2_it103_1872x1404::HEIGHT / 8 > display(GxEPD2_it103_1872x1404(/*CS=5*/ SS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 4));
|
||||||
|
|
||||||
|
// ***** for mapping of Waveshare e-Paper ESP8266 Driver Board *****
|
||||||
|
// select one , can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, GxEPD2_290_GDEY029T71H::HEIGHT> display(GxEPD2_290_GDEY029T71H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_BW_<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT / 2 > display(GxEPD2_583_GDEQ0583T31(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW < GxEPD2_750, GxEPD2_750::HEIGHT / 2 > display(GxEPD2_750(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT / 2 > display(GxEPD2_750_T7(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT / 2 > display(GxEPD2_750_GDEY075T7(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM029C90 128x296, SSD1680
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT / 2> display(GxEPD2_420c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT / 2> display(GxEPD2_420c_Z21(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, GxEPD2_420c_GDEY042Z98::HEIGHT> display(GxEPD2_420c_GDEY042Z98(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
// can use only quarter buffer size
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT / 4> display(GxEPD2_583c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT / 4> display(GxEPD2_583c_Z83(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 4> display(GxEPD2_583c_GDEQ0583Z31(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT / 4> display(GxEPD2_750c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4> display(GxEPD2_750c_Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4> display(GxEPD2_750c_Z90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, GxEPD2_750c_GDEW075Z08::HEIGHT / 4> display(GxEPD2_750c_GDEW075Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, GxEPD2_750c_GDEY075Z08::HEIGHT / 4> display(GxEPD2_750c_GDEY075Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 4> display(GxEPD2_1160c_GDEY116Z91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 4> display(GxEPD2_1330c_GDEM133Z91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, GxEPD2_154c_GDEM0154F51H::HEIGHT> display(GxEPD2_154c_GDEM0154F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, GxEPD2_350c_GDEM035F51::HEIGHT> display(GxEPD2_350c_GDEM035F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, GxEPD2_397c_GDEM0397F81::HEIGHT> display(GxEPD2_397c_GDEM0397F81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, GxEPD2_579c_GDEY0579F51::HEIGHT / 2> display(GxEPD2_579c_GDEY0579F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, GxEPD2_750c_GDEM075F52::HEIGHT / 2> display(GxEPD2_750c_GDEM075F52(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, GxEPD2_1160c_GDEY116F51::HEIGHT / 4> display(GxEPD2_1160c_GDEY116F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 6 > display(GxEPD2_730c_GDEY073D46(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ESP32)
|
||||||
|
// select one and adapt to your mapping, can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_102, GxEPD2_102::HEIGHT> display(GxEPD2_102(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, GxEPD2_290_GDEY029T71H::HEIGHT> display(GxEPD2_290_GDEY029T71H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT> display(GxEPD2_576_GDEH0576T81(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, GxEPD2_750::HEIGHT> display(GxEPD2_750(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT> display(GxEPD2_750_T7(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT> display(GxEPD2_750_GDEY075T7(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1085_GDEM1085T51, GxEPD2_1085_GDEM1085T51::HEIGHT / 2> display(GxEPD2_1085_GDEM1085T51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4, /*CS2=*/ 2)); // GDEM1085T51 1360x480, JD79686AB, (FPC8617)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// next line is for Good Display ESP32 Development board wiring, CS2 connected to GPIO4
|
||||||
|
//GxEPD2_BW < GxEPD2_1085_GDEM1085T51, GxEPD2_1085_GDEM1085T51::HEIGHT / 2> display(GxEPD2_1085_GDEM1085T51(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13, /*CS2=*/ 4)); // GDEM1085T51 1360x480, JD79686AB, (FPC8617)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT> display(GxEPD2_420c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT> display(GxEPD2_420c_Z21(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, GxEPD2_420c_GDEY042Z98::HEIGHT> display(GxEPD2_420c_GDEY042Z98(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_579c_GDEY0579Z93, GxEPD2_579c_GDEY0579Z93::HEIGHT> display(GxEPD2_579c_GDEY0579Z93(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT> display(GxEPD2_583c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT> display(GxEPD2_583c_Z83(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 2> display(GxEPD2_583c_GDEQ0583Z31(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT> display(GxEPD2_750c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 2> display(GxEPD2_750c_Z90(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, GxEPD2_750c_GDEW075Z08::HEIGHT / 2> display(GxEPD2_750c_GDEW075Z08(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, GxEPD2_750c_GDEY075Z08::HEIGHT / 2> display(GxEPD2_750c_GDEY075Z08(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 2> display(GxEPD2_1160c_GDEY116Z91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 2> display(GxEPD2_1330c_GDEM133Z91(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, GxEPD2_154c_GDEM0154F51H::HEIGHT> display(GxEPD2_154c_GDEM0154F51H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, GxEPD2_350c_GDEM035F51::HEIGHT> display(GxEPD2_350c_GDEM035F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, GxEPD2_397c_GDEM0397F81::HEIGHT> display(GxEPD2_397c_GDEM0397F81(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C<GxEPD2_437c, GxEPD2_437c::HEIGHT> display(GxEPD2_437c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, GxEPD2_579c_GDEY0579F51::HEIGHT> display(GxEPD2_579c_GDEY0579F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, GxEPD2_750c_GDEM075F52::HEIGHT / 2> display(GxEPD2_750c_GDEM075F52(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, GxEPD2_1160c_GDEY116F51::HEIGHT / 2> display(GxEPD2_1160c_GDEY116F51(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color (3C graphics)
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 4 > display(GxEPD2_730c_GDEY073D46(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEP073E01, GxEPD2_730c_GDEP073E01::HEIGHT / 4 > display(GxEPD2_730c_GDEP073E01(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 4, RST -> 16, CS -> SS(5), SCK -> SCK(18), MOSI -> MOSI(23), MISO -> MISO(19), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V over diode from USB (e.g. Wemos D1 mini) doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, GxEPD2_it60::HEIGHT> display(GxEPD2_it60(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it60_1448x1072, GxEPD2_it60_1448x1072::HEIGHT / 4 > display(GxEPD2_it60_1448x1072(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it78_1872x1404, GxEPD2_it78_1872x1404::HEIGHT / 8 > display(GxEPD2_it78_1872x1404(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it103_1872x1404, GxEPD2_it103_1872x1404::HEIGHT / 8 > display(GxEPD2_it103_1872x1404(/*CS=5*/ SS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4));
|
||||||
|
|
||||||
|
// Waveshare 12.48 b/w SPI display board and frame or Good Display 12.48 b/w panel GDEW1248T3
|
||||||
|
// general constructor for use with all parameters, e.g. for Waveshare ESP32 driver board mounted on connection board
|
||||||
|
//GxEPD2_BW < GxEPD2_1248, GxEPD2_1248::HEIGHT / 4 >
|
||||||
|
//display(GxEPD2_1248(/*sck=*/ 13, /*miso=*/ 12, /*mosi=*/ 14, /*cs_m1=*/ 23, /*cs_s1=*/ 22, /*cs_m2=*/ 16, /*cs_s2=*/ 19,
|
||||||
|
// /*dc1=*/ 25, /*dc2=*/ 17, /*rst1=*/ 33, /*rst2=*/ 5, /*busy_m1=*/ 32, /*busy_s1=*/ 26, /*busy_m2=*/ 18, /*busy_s2=*/ 4));
|
||||||
|
// Waveshare 12.48 b/w/r SPI display board and frame or Good Display 12.48 b/w/r panel GDEY1248Z51
|
||||||
|
// general constructor for use with all parameters, e.g. for Waveshare ESP32 driver board mounted on connection board
|
||||||
|
//GxEPD2_3C < GxEPD2_1248c, GxEPD2_1248c::HEIGHT / 4 >
|
||||||
|
//display(GxEPD2_1248c(/*sck=*/ 13, /*miso=*/ 12, /*mosi=*/ 14, /*cs_m1=*/ 23, /*cs_s1=*/ 22, /*cs_m2=*/ 16, /*cs_s2=*/ 19,
|
||||||
|
// /*dc1=*/ 25, /*dc2=*/ 17, /*rst1=*/ 33, /*rst2=*/ 5, /*busy_m1=*/ 32, /*busy_s1=*/ 26, /*busy_m2=*/ 18, /*busy_s2=*/ 4));
|
||||||
|
|
||||||
|
// ***** for mapping of Waveshare ESP32 Driver Board *****
|
||||||
|
// use Board "ESP32 Dev Module" to build with Arduino IDE
|
||||||
|
// uncomment next line to use HSPI for EPD (and e.g VSPI for SD), e.g. with Waveshare ESP32 Driver Board
|
||||||
|
//#define USE_HSPI_FOR_EPD
|
||||||
|
// select one, can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_102, GxEPD2_102::HEIGHT> display(GxEPD2_102(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, GxEPD2_290_GDEY029T71H::HEIGHT> display(GxEPD2_290_GDEY029T71H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, GxEPD2_750::HEIGHT> display(GxEPD2_750(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT> display(GxEPD2_750_T7(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT> display(GxEPD2_750_GDEY075T7(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT> display(GxEPD2_420c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT> display(GxEPD2_420c_Z21(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, GxEPD2_420c_GDEY042Z98::HEIGHT> display(GxEPD2_420c_GDEY042Z98(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT> display(GxEPD2_583c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT> display(GxEPD2_583c_Z83(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 2> display(GxEPD2_583c_GDEQ0583Z31(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT> display(GxEPD2_750c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 2> display(GxEPD2_750c_Z90(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, GxEPD2_750c_GDEW075Z08::HEIGHT / 2> display(GxEPD2_750c_GDEW075Z08(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, GxEPD2_750c_GDEY075Z08::HEIGHT / 2> display(GxEPD2_750c_GDEY075Z08(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 2> display(GxEPD2_1160c_GDEY116Z91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 2> display(GxEPD2_1330c_GDEM133Z91(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, GxEPD2_154c_GDEM0154F51H::HEIGHT> display(GxEPD2_154c_GDEM0154F51H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, GxEPD2_350c_GDEM035F51::HEIGHT> display(GxEPD2_350c_GDEM035F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, GxEPD2_397c_GDEM0397F81::HEIGHT> display(GxEPD2_397c_GDEM0397F81(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, GxEPD2_579c_GDEY0579F51::HEIGHT> display(GxEPD2_579c_GDEY0579F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, GxEPD2_750c_GDEM075F52::HEIGHT / 2> display(GxEPD2_750c_GDEM075F52(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, GxEPD2_1160c_GDEY116F51::HEIGHT / 4> display(GxEPD2_1160c_GDEY116F51(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_3C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 5.65" 7-color (3C graphics)
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 4 > display(GxEPD2_730c_GDEY073D46(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// can't use package "STMF1 Boards (STM32Duino.com)" (Roger Clark) anymore with Adafruit_GFX, use "STM32 Boards (selected from submenu)" (STMicroelectronics)
|
||||||
|
#if defined(ARDUINO_ARCH_STM32)
|
||||||
|
//#define Serial Serial1 // for my proto board
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 16384ul // ~16k is a good compromise
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_102, MAX_HEIGHT(GxEPD2_102)> display(GxEPD2_102(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, MAX_HEIGHT(GxEPD2_290_GDEY029T71H)> display(GxEPD2_290_GDEY029T71H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, MAX_HEIGHT(GxEPD2_579_GDEY0579T93)> display(GxEPD2_579_GDEY0579T93(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW <GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// next line is for Good Display DESPI-M02L Development board wiring, CS2 connected to GPIOD12
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
//GxEPD2_BW < GxEPD2_1085_GDEM1085T51, MAX_HEIGHT(GxEPD2_1085_GDEM1085T51)> display(GxEPD2_1085_GDEM1085T51(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13, /*CS2=*/ PD12)); // GDEM1085T51 1360x480, JD79686AB, (FPC8617)
|
||||||
|
// 3-color e-papers
|
||||||
|
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, MAX_HEIGHT_3C(GxEPD2_420c_GDEY042Z98)> display(GxEPD2_420c_GDEY042Z98(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_579c_GDEY0579Z93, MAX_HEIGHT_3C((GxEPD2_579c_GDEY0579Z93)> display(GxEPD2_579c_GDEY0579Z93(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEW075Z08)> display(GxEPD2_750c_GDEW075Z08(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEY075Z08)> display(GxEPD2_750c_GDEY075Z08(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, MAX_HEIGHT_3C(GxEPD2_154c_GDEM0154F51H)> display(GxEPD2_154c_GDEM0154F51H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT_3C((GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, MAX_HEIGHT_3C(GxEPD2_350c_GDEM035F51)> display(GxEPD2_350c_GDEM035F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, MAX_HEIGHT_3C(GxEPD2_397c_GDEM0397F81)> display(GxEPD2_397c_GDEM0397F81(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, MAX_HEIGHT_3C(GxEPD2_579c_GDEY0579F51)> display(GxEPD2_579c_GDEY0579F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, MAX_HEIGHT_3C(GxEPD2_750c_GDEM075F52)> display(GxEPD2_750c_GDEM075F52(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116F51)> display(GxEPD2_1160c_GDEY116F51(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
#define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEP073E01, MAX_HEIGHT_7C(GxEPD2_730c_GDEP073E01> display(GxEPD2_730c_GDEP073E01(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#undef MAX_HEIGHT_3C
|
||||||
|
#undef MAX_HEIGHT_7C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__AVR)
|
||||||
|
#if defined (ARDUINO_AVR_MEGA2560) // Note: SS is on 53 on MEGA
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#else // Note: SS is on 10 on UNO, NANO
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 800
|
||||||
|
#endif
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_102, MAX_HEIGHT(GxEPD2_102)> display(GxEPD2_102(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, MAX_HEIGHT(GxEPD2_290_GDEY029T71H)> display(GxEPD2_290_GDEY029T71H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, MAX_HEIGHT(GxEPD2_420_GYE042A87)> display(GxEPD2_420_GYE042A87(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, MAX_HEIGHT(GxEPD2_420_SE0420NQ04)> display(GxEPD2_420_SE0420NQ04(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, MAX_HEIGHT(GxEPD2_579_GDEY0579T93)> display(GxEPD2_579_GDEY0579T93(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1085_GDEM1085T51, MAX_HEIGHT(GxEPD2_1085_GDEM1085T51)> display(GxEPD2_1085_GDEM1085T51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7, /*CS2=*/ 6)); // GDEM1085T51 1360x480, JD79686AB, (FPC8617)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, MAX_HEIGHT_3C(GxEPD2_420c_GDEY042Z98)> display(GxEPD2_420c_GDEY042Z98(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_579c_GDEY0579Z93, MAX_HEIGHT_3C(GxEPD2_579c_GDEY0579Z93)> display(GxEPD2_579c_GDEY0579Z93(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEW075Z08)> display(GxEPD2_750c_GDEW075Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEY075Z08)> display(GxEPD2_750c_GDEY075Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, MAX_HEIGHT_3C(GxEPD2_154c_GDEM0154F51H)> display(GxEPD2_154c_GDEM0154F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT_3C(GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, MAX_HEIGHT_3C(GxEPD2_350c_GDEM035F51)> display(GxEPD2_350c_GDEM035F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, MAX_HEIGHT_3C(GxEPD2_397c_GDEM0397F81)> display(GxEPD2_397c_GDEM0397F81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, MAX_HEIGHT_3C(GxEPD2_750c_GDEM075F52)> display(GxEPD2_750c_GDEM075F52(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, MAX_HEIGHT_3C(GxEPD2_579c_GDEY0579F51)> display(GxEPD2_579c_GDEY0579F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116F51)> display(GxEPD2_1160c_GDEY116F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
#define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEP073E01, MAX_HEIGHT_7C(GxEPD2_730c_GDEP073E01)> display(GxEPD2_730c_GDEP073E01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
|
||||||
|
// ***** for mapping of Waveshare Universal e-Paper Raw Panel Driver Shield for Arduino / NUCLEO *****
|
||||||
|
// the RST line is not connected through level converter, but has a pull up resistor and a pull down diode to the Arduino pin; this is safe for 5V Arduino
|
||||||
|
// NOTE: the 11-pinholes for pin connectors are not through level converter, and the VCC pin is ~4.2V, only FCP connector pins are through level converter
|
||||||
|
// NOTE: the VCC pin on the 11-pinholes for pin connectors shouldn't be used, it seems to get back-fed from Arduino data pins through protection diodes of the level converter
|
||||||
|
// NOTE: the VCC pin should be fed from Arduino 5V pin for use on any 5V Arduino (did they forget to add this connection or add a jumper?)
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T71H, MAX_HEIGHT(GxEPD2_290_GDEY029T71H)> display(GxEPD2_290_GDEY029T71H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, MAX_HEIGHT(GxEPD2_420_GYE042A87)> display(GxEPD2_420_GYE042A87(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, MAX_HEIGHT(GxEPD2_420_SE0420NQ04)> display(GxEPD2_420_SE0420NQ04(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, MAX_HEIGHT(GxEPD2_579_GDEY0579T93)> display(GxEPD2_579_GDEY0579T93(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_GDEY042Z98, MAX_HEIGHT_3C(GxEPD2_420c_GDEY042Z98)> display(GxEPD2_420c_GDEY042Z98(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_3C<GxEPD2_579c_GDEY0579Z93, MAX_HEIGHT_3C(GxEPD2_579c_GDEY0579Z93)> display(GxEPD2_579c_GDEY0579Z93(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); //GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEW075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEW075Z08)> display(GxEPD2_750c_GDEW075Z08(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_GDEY075Z08, MAX_HEIGHT_3C(GxEPD2_750c_GDEY075Z08)> display(GxEPD2_750c_GDEY075Z08(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_154c_GDEM0154F51H, MAX_HEIGHT_3C(GxEPD2_154c_GDEM0154F51H)> display(GxEPD2_154c_GDEM0154F51H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT_3C((GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_350c_GDEM035F51, MAX_HEIGHT_3C(GxEPD2_350c_GDEM035F51)> display(GxEPD2_350c_GDEM035F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//GxEPD2_4C<GxEPD2_397c_GDEM0397F81, MAX_HEIGHT_3C(GxEPD2_397c_GDEM0397F81)> display(GxEPD2_397c_GDEM0397F81(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_579c_GDEY0579F51, MAX_HEIGHT_3C(GxEPD2_579c_GDEY0579F51)> display(GxEPD2_579c_GDEY0579F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//GxEPD2_4C<GxEPD2_750c_GDEM075F52, MAX_HEIGHT_3C(GxEPD2_750c_GDEM075F52)> display(GxEPD2_750c_GDEM075F52(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//GxEPD2_4C<GxEPD2_1160c_GDEY116F51, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116F51::HEIGHT)> display(GxEPD2_1160c_GDEY116F51(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_565c_GDEP0565D90, GxEPD2_565c_GDEP0565D90::HEIGHT / 2 > display(GxEPD2_565c_GDEP0565D90(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEP073E01, MAX_HEIGHT_7C(GxEPD2_730c_GDEP073E01)> display(GxEPD2_730c_GDEP073E01(/*CS=10*/ SS, /*DC=*/ 9, /*RST=*/ 8, /*BUSY=*/ 7)); // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
|
||||||
|
// Waveshare 12.48 b/w SPI display board and frame or Good Display 12.48 b/w panel GDEW1248T3
|
||||||
|
// general constructor for use with standard SPI pins, default SCK, MISO and MOSI, for UNO on UNO connectors
|
||||||
|
//GxEPD2_BW < GxEPD2_1248, MAX_HEIGHT(GxEPD2_1248)>
|
||||||
|
//display(GxEPD2_1248(/*cs_m1=*/ 2, /*cs_s1=*/ 3, /*cs_m2=*/ A4, /*cs_s2=*/ A0, /*dc1=*/ 6, /*dc2=*/ A3, /*rst1=*/ 5, /*rst2=*/ A2,
|
||||||
|
// /*busy_m1=*/ 4, /*busy_s1=*/ 7, /*busy_m2=*/ A1, /*busy_s2=*/ A5));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#undef MAX_HEIGHT_3C
|
||||||
|
#undef MAX_HEIGHT_7C
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,612 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
#ifndef _GxEPD2_boards_added_H_
|
||||||
|
#define _GxEPD2_boards_added_H_
|
||||||
|
|
||||||
|
// Arduino DUE
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino DUE, note: pin 77 is on board pin 10, SS is 10
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 76, DIN -> 75
|
||||||
|
// SPI pins are on 6 pin 2x3 SPI header, no SS on SPI header!
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAM)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_102, MAX_HEIGHT(GxEPD2_102)> display(GxEPD2_102(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, MAX_HEIGHT(GxEPD2_420_GYE042A87)> display(GxEPD2_420_GYE042A87(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, MAX_HEIGHT(GxEPD2_420_SE0420NQ04)> display(GxEPD2_420_SE0420NQ04(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT(GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
#define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 7, RST -> 9, CS -> SS(77), SCK -> SCK(76), MOSI -> MOSI(75), MISO -> MISO(74), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V over diode from USB (e.g. Wemos D1 mini) doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, MAX_HEIGHT(GxEPD2_it60)> display(GxEPD2_it60(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
//GxEPD2_BW<GxEPD2_it60_1448x1072, MAX_HEIGHT(GxEPD2_it60_1448x1072)> display(GxEPD2_it60_1448x1072(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
//GxEPD2_BW<GxEPD2_it78_1872x1404, MAX_HEIGHT(GxEPD2_it78_1872x1404)> display(GxEPD2_it78_1872x1404(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#undef MAX_HEIGHT_3C
|
||||||
|
#undef MAX_HEIGHT_7C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Arduino MKR1000 or MKRZERO
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MKR1000 or MKRZERO
|
||||||
|
// note: can't use SS on MKR1000: is defined as 24, should be 4
|
||||||
|
// BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAMD)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_102, MAX_HEIGHT(GxEPD2_102)> display(GxEPD2_102(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, MAX_HEIGHT(GxEPD2_420_GYE042A87)> display(GxEPD2_420_GYE042A87(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, MAX_HEIGHT(GxEPD2_420_SE0420NQ04)> display(GxEPD2_420_SE0420NQ04(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT(GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
#define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 5, RST -> 6, CS -> 4, SCK -> SCK(9), MOSI -> MOSI(8), MISO -> MISO(10), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V over diode from USB (e.g. Wemos D1 mini) doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, MAX_HEIGHT(GxEPD2_it60)> display(GxEPD2_it60(/*CS=*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
//GxEPD2_BW<GxEPD2_it60_1448x1072, MAX_HEIGHT(GxEPD2_it60_1448x1072)> display(GxEPD2_it60_1448x1072(/*CS=*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
//GxEPD2_BW<GxEPD2_it78_1872x1404, MAX_HEIGHT(GxEPD2_it78_1872x1404)> display(GxEPD2_it78_1872x1404(/*CS=*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#undef MAX_HEIGHT_3C
|
||||||
|
#undef MAX_HEIGHT_7C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32 D32 PRO
|
||||||
|
// BUSY -> 15, RST -> 2, DC -> 0, CS -> 5, CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// note: use explicit value for CS, as SS is re-defined to TF_CS(4) in pins_arduino.h for Board: "LOLIN D32 PRO"
|
||||||
|
|
||||||
|
#if defined(ESP32) && defined(ARDUINO_LOLIN_D32_PRO)
|
||||||
|
// select one and adapt to your mapping, can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_102, GxEPD2_102::HEIGHT> display(GxEPD2_102(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, GxEPD2_750::HEIGHT> display(GxEPD2_750(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT> display(GxEPD2_750_T7(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT> display(GxEPD2_750_GDEY075T7(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT> display(GxEPD2_420c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT> display(GxEPD2_420c_Z21(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT> display(GxEPD2_583c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT> display(GxEPD2_583c_Z83(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 2> display(GxEPD2_583c_GDEQ0583Z31(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT> display(GxEPD2_750c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT> display(GxEPD2_750c_Z90(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 2> display(GxEPD2_1160c_GDEY116Z91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 2> display(GxEPD2_1330c_GDEM133Z91(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 4 > display(GxEPD2_730c_GDEY073D46(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 4, RST -> 16, CS -> 5, SCK -> SCK(18), MOSI -> MOSI(23), MISO -> MISO(19), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V over diode from USB (e.g. Wemos D1 mini) doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, GxEPD2_it60::HEIGHT> display(GxEPD2_it60(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15));
|
||||||
|
//GxEPD2_BW < GxEPD2_it60_1448x1072, GxEPD2_it60_1448x1072::HEIGHT / 4 > display(GxEPD2_it60_1448x1072(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15));
|
||||||
|
//GxEPD2_BW < GxEPD2_it78_1872x1404, GxEPD2_it78_1872x1404::HEIGHT / 8 > display(GxEPD2_it78_1872x1404(/*CS=5*/ 5, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. TTGO T8 ESP32-WROVER
|
||||||
|
// BUSY -> 4, RST -> 0, DC -> 2, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "ESP32 Dev Module":
|
||||||
|
|
||||||
|
#if defined(ESP32) && defined(ARDUINO_ESP32_DEV)
|
||||||
|
// select one and adapt to your mapping, can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_102, GxEPD2_102::HEIGHT> display(GxEPD2_102(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, GxEPD2_583::HEIGHT> display(GxEPD2_583(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT> display(GxEPD2_583_T8(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT> display(GxEPD2_583_GDEQ0583T31(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, GxEPD2_750::HEIGHT> display(GxEPD2_750(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT> display(GxEPD2_750_T7(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT> display(GxEPD2_750_GDEY075T7(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT> display(GxEPD2_420c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT> display(GxEPD2_420c_Z21(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT> display(GxEPD2_583c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT> display(GxEPD2_583c_Z83(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 2> display(GxEPD2_583c_GDEQ0583Z31(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT> display(GxEPD2_750c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT> display(GxEPD2_750c_Z08(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT> display(GxEPD2_750c_Z90(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 2> display(GxEPD2_1160c_GDEY116Z91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 2> display(GxEPD2_1330c_GDEM133Z91(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 2 > display(GxEPD2_565c(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 4 > display(GxEPD2_730c_GDEY073D46(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
// HRDY -> 4, RST -> 16, CS -> SS(5), SCK -> SCK(18), MOSI -> MOSI(23), MISO -> MISO(19), GND -> GND, 5V -> 5V
|
||||||
|
// note: 5V supply needs to be exact and strong; 5V over diode from USB (e.g. Wemos D1 mini) doesn't work!
|
||||||
|
//GxEPD2_BW<GxEPD2_it60, GxEPD2_it60::HEIGHT> display(GxEPD2_it60(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it60_1448x1072, GxEPD2_it60_1448x1072::HEIGHT / 4 > display(GxEPD2_it60_1448x1072(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4));
|
||||||
|
//GxEPD2_BW < GxEPD2_it78_1872x1404, GxEPD2_it78_1872x1404::HEIGHT / 8 > display(GxEPD2_it78_1872x1404(/*CS=5*/ 5, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
// BUSY -> GPIO16, RST -> GPIO5, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
#if defined (ESP8266)
|
||||||
|
// select one , can use full buffer size (full HEIGHT)
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, GxEPD2_150_BN::HEIGHT> display(GxEPD2_150_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, GxEPD2_154::HEIGHT> display(GxEPD2_154(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, GxEPD2_154_D67::HEIGHT> display(GxEPD2_154_D67(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, GxEPD2_154_T8::HEIGHT> display(GxEPD2_154_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, GxEPD2_154_M09::HEIGHT> display(GxEPD2_154_M09(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, GxEPD2_154_M10::HEIGHT> display(GxEPD2_154_M10(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, GxEPD2_154_GDEY0154D67::HEIGHT> display(GxEPD2_154_GDEY0154D67(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, GxEPD2_213::HEIGHT> display(GxEPD2_213(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, GxEPD2_213_B72::HEIGHT> display(GxEPD2_213_B72(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, GxEPD2_213_B73::HEIGHT> display(GxEPD2_213_B73(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, GxEPD2_213_B74::HEIGHT> display(GxEPD2_213_B74(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, GxEPD2_213_flex::HEIGHT> display(GxEPD2_213_flex(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, GxEPD2_213_M21::HEIGHT> display(GxEPD2_213_M21(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, GxEPD2_213_T5D::HEIGHT> display(GxEPD2_213_T5D(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, GxEPD2_213_BN::HEIGHT> display(GxEPD2_213_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, GxEPD2_213_GDEY0213B74::HEIGHT> display(GxEPD2_213_GDEY0213B74(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, GxEPD2_260::HEIGHT> display(GxEPD2_260(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, GxEPD2_260_M01::HEIGHT> display(GxEPD2_260_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, GxEPD2_266_BN::HEIGHT> display(GxEPD2_266_BN(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, GxEPD2_270::HEIGHT> display(GxEPD2_270(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, GxEPD2_270_GDEY027T91::HEIGHT> display(GxEPD2_270_GDEY027T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY027T91 176x264, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290, GxEPD2_290::HEIGHT> display(GxEPD2_290(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, GxEPD2_290_T5::HEIGHT> display(GxEPD2_290_T5(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, GxEPD2_290_T5D::HEIGHT> display(GxEPD2_290_T5D(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, GxEPD2_290_I6FD::HEIGHT> display(GxEPD2_290_I6FD(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, GxEPD2_290_T94::HEIGHT> display(GxEPD2_290_T94(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, GxEPD2_290_T94_V2::HEIGHT> display(GxEPD2_290_T94_V2(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, GxEPD2_290_BS::HEIGHT> display(GxEPD2_290_BS(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, GxEPD2_290_M06::HEIGHT> display(GxEPD2_290_M06(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, GxEPD2_290_GDEY029T94::HEIGHT> display(GxEPD2_290_GDEY029T94(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, GxEPD2_310_GDEQ031T10::HEIGHT> display(GxEPD2_310_GDEQ031T10(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, GxEPD2_371::HEIGHT> display(GxEPD2_371(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, GxEPD2_370_TC1::HEIGHT> display(GxEPD2_370_TC1(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, GxEPD2_397_GDEM0397T81::HEIGHT> display(GxEPD2_397_GDEM0397T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, GxEPD2_420::HEIGHT> display(GxEPD2_420(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, GxEPD2_420_M01::HEIGHT> display(GxEPD2_420_M01(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, GxEPD2_420_GDEY042T81::HEIGHT> display(GxEPD2_420_GDEY042T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, GxEPD2_420_GYE042A87::HEIGHT> display(GxEPD2_420_GYE042A87(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, GxEPD2_420_SE0420NQ04::HEIGHT> display(GxEPD2_420_SE0420NQ04(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, GxEPD2_426_GDEQ0426T82::HEIGHT> display(GxEPD2_426_GDEQ0426T82(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW < GxEPD2_583, GxEPD2_583::HEIGHT / 2 > display(GxEPD2_583(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_T8, GxEPD2_583_T8::HEIGHT / 2 > display(GxEPD2_583_T8(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_583_GDEQ0583T31, GxEPD2_583_GDEQ0583T31::HEIGHT / 2 > display(GxEPD2_583_GDEQ0583T31(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW < GxEPD2_750, GxEPD2_750::HEIGHT / 2 > display(GxEPD2_750(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_T7, GxEPD2_750_T7::HEIGHT / 2 > display(GxEPD2_750_T7(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW075T7 800x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_750_GDEY075T7, GxEPD2_750_GDEY075T7::HEIGHT / 2 > display(GxEPD2_750_GDEY075T7(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, GxEPD2_1020_GDEM102T91::HEIGHT / 2> display(GxEPD2_1020_GDEM102T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, GxEPD2_1160_T91::HEIGHT / 2> display(GxEPD2_1160_T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, GxEPD2_1330_GDEM133T91::HEIGHT / 2> display(GxEPD2_1330_GDEM133T91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, GxEPD2_154c::HEIGHT> display(GxEPD2_154c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, GxEPD2_154_Z90c::HEIGHT> display(GxEPD2_154_Z90c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, GxEPD2_213c::HEIGHT> display(GxEPD2_213c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, GxEPD2_213_Z19c::HEIGHT> display(GxEPD2_213_Z19c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, GxEPD2_213_Z98c::HEIGHT> display(GxEPD2_213_Z98c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, GxEPD2_266c::HEIGHT> display(GxEPD2_266c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, GxEPD2_270c::HEIGHT> display(GxEPD2_270c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, GxEPD2_290c::HEIGHT> display(GxEPD2_290c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, GxEPD2_290_Z13c::HEIGHT> display(GxEPD2_290_Z13c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, GxEPD2_290_C90c::HEIGHT> display(GxEPD2_290_C90c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM029C90 128x296, SSD1680
|
||||||
|
// can use only half buffer size
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, GxEPD2_420c::HEIGHT / 2> display(GxEPD2_420c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, GxEPD2_420c_Z21::HEIGHT / 2> display(GxEPD2_420c_Z21(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
// can use only quarter buffer size
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, GxEPD2_583c::HEIGHT / 4> display(GxEPD2_583c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, GxEPD2_583c_Z83::HEIGHT / 4> display(GxEPD2_583c_Z83(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, GxEPD2_583c_GDEQ0583Z31::HEIGHT / 4> display(GxEPD2_583c_GDEQ0583Z31(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, GxEPD2_750c::HEIGHT / 4> display(GxEPD2_750c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, GxEPD2_750c_Z08::HEIGHT / 4> display(GxEPD2_750c_Z08(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, GxEPD2_750c_Z90::HEIGHT / 4> display(GxEPD2_750c_Z90(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, GxEPD2_1160c_GDEY116Z91::HEIGHT / 4> display(GxEPD2_1160c_GDEY116Z91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, GxEPD2_1330c_GDEM133Z91::HEIGHT / 4> display(GxEPD2_1330c_GDEM133Z91(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, GxEPD2_213c_GDEY0213F51::HEIGHT> display(GxEPD2_213c_GDEY0213F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, GxEPD2_266c_GDEY0266F51H::HEIGHT> display(GxEPD2_266c_GDEY0266F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, GxEPD2_290c_GDEY029F51H::HEIGHT> display(GxEPD2_290c_GDEY029F51H(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, GxEPD2_300c::HEIGHT> display(GxEPD2_300c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, GxEPD2_420c_GDEY0420F51::HEIGHT> display(GxEPD2_420c_GDEY0420F51(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C < GxEPD2_437c, GxEPD2_437c::HEIGHT / 4 > display(GxEPD2_437c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
//GxEPD2_7C < GxEPD2_565c, GxEPD2_565c::HEIGHT / 4 > display(GxEPD2_565c(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C < GxEPD2_730c_GDEY073D46, GxEPD2_730c_GDEY073D46::HEIGHT / 6 > display(GxEPD2_730c_GDEY073D46(/*CS=15*/ SS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RP2040)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 131072ul // e.g. half of available ram
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
// select one and adapt to your mapping
|
||||||
|
//GxEPD2_BW<GxEPD2_102, MAX_HEIGHT(GxEPD2_102)> display(GxEPD2_102(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0102T4 80x128, UC8175
|
||||||
|
//GxEPD2_BW<GxEPD2_150_BN, MAX_HEIGHT(GxEPD2_150_BN)> display(GxEPD2_150_BN(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0150BN 200x200, SSD1681, TTGO T5 V2.4.1
|
||||||
|
//GxEPD2_BW<GxEPD2_154, MAX_HEIGHT(GxEPD2_154)> display(GxEPD2_154(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEP015OC1 200x200, IL3829, no longer available
|
||||||
|
//GxEPD2_BW<GxEPD2_154_D67, MAX_HEIGHT(GxEPD2_154_D67)> display(GxEPD2_154_D67(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154D67 200x200, SSD1681
|
||||||
|
//GxEPD2_BW<GxEPD2_154_T8, MAX_HEIGHT(GxEPD2_154_T8)> display(GxEPD2_154_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154T8 152x152, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M09, MAX_HEIGHT(GxEPD2_154_M09)> display(GxEPD2_154_M09(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M09 200x200, JD79653A
|
||||||
|
//GxEPD2_BW<GxEPD2_154_M10, MAX_HEIGHT(GxEPD2_154_M10)> display(GxEPD2_154_M10(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154M10 152x152, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_154_GDEY0154D67, MAX_HEIGHT(GxEPD2_154_GDEY0154D67)> display(GxEPD2_154_GDEY0154D67(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//GxEPD2_BW<GxEPD2_213, MAX_HEIGHT(GxEPD2_213)> display(GxEPD2_213(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDE0213B1 122x250, IL3895, phased out
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B72, MAX_HEIGHT(GxEPD2_213_B72)> display(GxEPD2_213_B72(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B72 122x250, SSD1675A (IL3897)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B73, MAX_HEIGHT(GxEPD2_213_B73)> display(GxEPD2_213_B73(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213B73 122x250, SSD1675B
|
||||||
|
//GxEPD2_BW<GxEPD2_213_B74, MAX_HEIGHT(GxEPD2_213_B74)> display(GxEPD2_213_B74(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0213B74 122x250, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_213_flex, MAX_HEIGHT(GxEPD2_213_flex)> display(GxEPD2_213_flex(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213I5F 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_M21, MAX_HEIGHT(GxEPD2_213_M21)> display(GxEPD2_213_M21(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213M21 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_213_T5D, MAX_HEIGHT(GxEPD2_213_T5D)> display(GxEPD2_213_T5D(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213T5D 104x212, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_213_BN, MAX_HEIGHT(GxEPD2_213_BN)> display(GxEPD2_213_BN(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0213BN 122x250, SSD1680, TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//GxEPD2_BW<GxEPD2_213_GDEY0213B74, MAX_HEIGHT(GxEPD2_213_GDEY0213B74)> display(GxEPD2_213_GDEY0213B74(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_BW<GxEPD2_260, MAX_HEIGHT(GxEPD2_260)> display(GxEPD2_260(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026T0 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_260_M01, MAX_HEIGHT(GxEPD2_260_M01)> display(GxEPD2_260_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW026M01 152x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_266_BN, MAX_HEIGHT(GxEPD2_266_BN)> display(GxEPD2_266_BN(/*CS=PA4*/ SS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // DEPG0266BN 152x296, SSD1680, TTGO T5 V2.66 / T92_V1.0
|
||||||
|
//GxEPD2_BW<GxEPD2_270, MAX_HEIGHT(GxEPD2_270)> display(GxEPD2_270(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_270_GDEY027T91, MAX_HEIGHT(GxEPD2_270_GDEY027T91)> display(GxEPD2_270_GDEY027T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027W3 176x264, EK79652 (IL91874)
|
||||||
|
//GxEPD2_BW<GxEPD2_290, MAX_HEIGHT(GxEPD2_290)> display(GxEPD2_290(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029A1 128x296, SSD1608 (IL3820)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5, MAX_HEIGHT(GxEPD2_290_T5)> display(GxEPD2_290_T5(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T5D, MAX_HEIGHT(GxEPD2_290_T5D)> display(GxEPD2_290_T5D(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5D 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_I6FD, MAX_HEIGHT(GxEPD2_290_I6FD)> display(GxEPD2_290_I6FD(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029I6FD 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94, MAX_HEIGHT(GxEPD2_290_T94)> display(GxEPD2_290_T94(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_T94_V2, MAX_HEIGHT(GxEPD2_290_T94_V2)> display(GxEPD2_290_T94_V2(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029T94 128x296, SSD1680, Waveshare 2.9" V2 variant
|
||||||
|
//GxEPD2_BW<GxEPD2_290_BS, MAX_HEIGHT(GxEPD2_290_BS)> display(GxEPD2_290_BS(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // DEPG0290BS 128x296, SSD1680
|
||||||
|
//GxEPD2_BW<GxEPD2_290_M06, MAX_HEIGHT(GxEPD2_290_M06)> display(GxEPD2_290_M06(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029M06 128x296, UC8151D
|
||||||
|
//GxEPD2_BW<GxEPD2_290_GDEY029T94, MAX_HEIGHT(GxEPD2_290_GDEY029T94)> display(GxEPD2_290_GDEY029T94(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//GxEPD2_BW<GxEPD2_310_GDEQ031T10, MAX_HEIGHT(GxEPD2_310_GDEQ031T10)> display(GxEPD2_310_GDEQ031T10(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//GxEPD2_BW<GxEPD2_371, MAX_HEIGHT(GxEPD2_371)> display(GxEPD2_371(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0371W7 240x416, UC8171 (IL0324)
|
||||||
|
//GxEPD2_BW<GxEPD2_370_TC1, MAX_HEIGHT(GxEPD2_370_TC1)> display(GxEPD2_370_TC1(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // ED037TC1 280x480, SSD1677, Waveshare 3.7"
|
||||||
|
//GxEPD2_BW<GxEPD2_397_GDEM0397T81, MAX_HEIGHT(GxEPD2_397_GDEM0397T81)> display(GxEPD2_397_GDEM0397T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//GxEPD2_BW<GxEPD2_420, MAX_HEIGHT(GxEPD2_420)> display(GxEPD2_420(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042T2 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_M01, MAX_HEIGHT(GxEPD2_420_M01)> display(GxEPD2_420_M01(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042M01 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GDEY042T81, MAX_HEIGHT(GxEPD2_420_GDEY042T81)> display(GxEPD2_420_GDEY042T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY042T81, 400x300, SSD1683 (no inking)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_GYE042A87, MAX_HEIGHT(GxEPD2_420_GYE042A87)> display(GxEPD2_420_GYE042A87(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_420_SE0420NQ04, MAX_HEIGHT(GxEPD2_420_SE0420NQ04)> display(GxEPD2_420_SE0420NQ04(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//GxEPD2_BW<GxEPD2_426_GDEQ0426T82, MAX_HEIGHT(GxEPD2_426_GDEQ0426T82)> display(GxEPD2_426_GDEQ0426T82(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//GxEPD2_BW_SHM<GxEPD2_576_GDEH0576T81, GxEPD2_576_GDEH0576T81::HEIGHT / 2> display(GxEPD2_576_GDEH0576T81(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//GxEPD2_BW<GxEPD2_579_GDEY0579T93, GxEPD2_579_GDEY0579T93::HEIGHT> display(GxEPD2_579_GDEY0579T93(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//GxEPD2_BW<GxEPD2_583, MAX_HEIGHT(GxEPD2_583)> display(GxEPD2_583(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T7 600x448, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_T8, MAX_HEIGHT(GxEPD2_583_T8)> display(GxEPD2_583_T8(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583T8 648x480, EK79655 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_583_GDEQ0583T31, MAX_HEIGHT(GxEPD2_583_GDEQ0583T31)> display(GxEPD2_583_GDEQ0583T31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//GxEPD2_BW<GxEPD2_750, MAX_HEIGHT(GxEPD2_750)> display(GxEPD2_750(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075T8 640x384, UC8159c (IL0371)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_T7, MAX_HEIGHT(GxEPD2_750_T7)> display(GxEPD2_750_T7(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW<GxEPD2_750_GDEY075T7, MAX_HEIGHT(GxEPD2_750_GDEY075T7)> display(GxEPD2_750_GDEY075T7(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY075T7 800x480, UC8179 (GD7965)
|
||||||
|
//GxEPD2_BW < GxEPD2_1020_GDEM102T91, MAX_HEIGHT(GxEPD2_1020_GDEM102T91)> display(GxEPD2_1020_GDEM102T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//GxEPD2_BW < GxEPD2_1160_T91, MAX_HEIGHT(GxEPD2_1160_T91)> display(GxEPD2_1160_T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH116T91 960x640, SSD1677
|
||||||
|
//GxEPD2_BW < GxEPD2_1330_GDEM133T91, MAX_HEIGHT(GxEPD2_1330_GDEM133T91)> display(GxEPD2_1330_GDEM133T91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
#define MAX_HEIGHT_3C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
//GxEPD2_3C<GxEPD2_154c, MAX_HEIGHT_3C(GxEPD2_154c)> display(GxEPD2_154c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0154Z04 200x200, IL0376F, no longer available
|
||||||
|
//GxEPD2_3C<GxEPD2_154_Z90c, MAX_HEIGHT_3C(GxEPD2_154_Z90c)> display(GxEPD2_154_Z90c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0154Z90 200x200, SSD1681
|
||||||
|
//GxEPD2_3C<GxEPD2_213c, MAX_HEIGHT_3C(GxEPD2_213c)> display(GxEPD2_213c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0213Z16 104x212, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z19c, MAX_HEIGHT_3C(GxEPD2_213_Z19c)> display(GxEPD2_213_Z19c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH0213Z19 104x212, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_213_Z98c, MAX_HEIGHT_3C(GxEPD2_213_Z98c)> display(GxEPD2_213_Z98c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213Z98 122x250, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_266c, MAX_HEIGHT_3C(GxEPD2_266c)> display(GxEPD2_266c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266Z90 152x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_270c, MAX_HEIGHT_3C(GxEPD2_270c)> display(GxEPD2_270c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW027C44 176x264, IL91874
|
||||||
|
//GxEPD2_3C<GxEPD2_290c, MAX_HEIGHT_3C(GxEPD2_290c)> display(GxEPD2_290c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029Z10 128x296, UC8151 (IL0373)
|
||||||
|
//GxEPD2_3C<GxEPD2_290_Z13c, MAX_HEIGHT_3C(GxEPD2_290_Z13c)> display(GxEPD2_290_Z13c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH029Z13 128x296, UC8151D
|
||||||
|
//GxEPD2_3C<GxEPD2_290_C90c, MAX_HEIGHT_3C(GxEPD2_290_C90c)> display(GxEPD2_290_C90c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM029C90 128x296, SSD1680
|
||||||
|
//GxEPD2_3C<GxEPD2_420c, MAX_HEIGHT_3C(GxEPD2_420c)> display(GxEPD2_420c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW042Z15 400x300, UC8176 (IL0398)
|
||||||
|
//GxEPD2_3C<GxEPD2_420c_Z21, MAX_HEIGHT_3C(GxEPD2_420c_Z21)> display(GxEPD2_420c_Z21(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ042Z21 400x300, UC8276
|
||||||
|
//GxEPD2_3C<GxEPD2_583c, MAX_HEIGHT_3C(GxEPD2_583c)> display(GxEPD2_583c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z21 600x448, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_Z83, MAX_HEIGHT_3C(GxEPD2_583c_Z83)> display(GxEPD2_583c_Z83(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW0583Z83 648x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_583c_GDEQ0583Z31, MAX_HEIGHT_3C(GxEPD2_583c_GDEQ0583Z31)> display(GxEPD2_583c_GDEQ0583Z31(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEQ0583Z31 648x480, UC8179C
|
||||||
|
//GxEPD2_3C<GxEPD2_750c, MAX_HEIGHT_3C(GxEPD2_750c)> display(GxEPD2_750c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z09 640x384, UC8179 (IL0371)
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z08, MAX_HEIGHT_3C(GxEPD2_750c_Z08)> display(GxEPD2_750c_Z08(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW075Z08 800x480, GD7965
|
||||||
|
//GxEPD2_3C<GxEPD2_750c_Z90, MAX_HEIGHT_3C(GxEPD2_750c_Z90)> display(GxEPD2_750c_Z90(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEH075Z90 880x528, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1160c_GDEY116Z91, MAX_HEIGHT_3C(GxEPD2_1160c_GDEY116Z91)> display(GxEPD2_1160c_GDEY116Z91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY116Z91 960x640, SSD1677
|
||||||
|
//GxEPD2_3C<GxEPD2_1330c_GDEM133Z91, MAX_HEIGHT_3C(GxEPD2_1330c_GDEM133Z91)> display(GxEPD2_1330c_GDEM133Z91(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEM133Z91 960x680, SSD1677
|
||||||
|
// 4-color e-paper
|
||||||
|
//GxEPD2_4C<GxEPD2_213c_GDEY0213F51, MAX_HEIGHT(GxEPD2_213c_GDEY0213F51)> display(GxEPD2_213c_GDEY0213F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//GxEPD2_4C<GxEPD2_266c_GDEY0266F51H, MAX_HEIGHT_3C(GxEPD2_266c_GDEY0266F51H)> display(GxEPD2_266c_GDEY0266F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//GxEPD2_4C<GxEPD2_290c_GDEY029F51H, MAX_HEIGHT_3C(GxEPD2_290c_GDEY029F51H)> display(GxEPD2_290c_GDEY029F51H(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//GxEPD2_4C<GxEPD2_300c, MAX_HEIGHT_3C(GxEPD2_300c)> display(GxEPD2_300c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 3.00" 4-color
|
||||||
|
//GxEPD2_4C<GxEPD2_420c_GDEY0420F51, MAX_HEIGHT_3C(GxEPD2_420c_GDEY0420F51)> display(GxEPD2_420c_GDEY0420F51(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//GxEPD2_4C <GxEPD2_437c, MAX_HEIGHT_3C(GxEPD2_437c)> display(GxEPD2_437c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
#define MAX_HEIGHT_7C(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2)) // 2 pixel per byte
|
||||||
|
//GxEPD2_7C<GxEPD2_565c, MAX_HEIGHT_7C(GxEPD2_565c)> display(GxEPD2_565c(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // Waveshare 5.65" 7-color
|
||||||
|
//GxEPD2_7C<GxEPD2_730c_GDEY073D46, MAX_HEIGHT_7C(GxEPD2_730c_GDEY073D46)> display(GxEPD2_730c_GDEY073D46(/*CS=*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#undef MAX_HEIGHT_3C
|
||||||
|
#undef MAX_HEIGHT_7C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,374 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// NOTE: you may need to adapt or select for your wiring in the processor specific conditional compile sections below
|
||||||
|
|
||||||
|
// select the display class (only one), matching the kind of display panel
|
||||||
|
#define GxEPD2_DISPLAY_CLASS GxEPD2_BW
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_3C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_4C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_7C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_BW_SHM
|
||||||
|
|
||||||
|
// select the display driver class (only one) for your panel
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_102 // GDEW0102T4 80x128, UC8175, (WFT0102CZA2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_150_BN // DEPG0150BN 200x200, SSD1681, (FPC8101), TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154 // GDEP015OC1 200x200, IL3829, (WFC0000CZ07), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_D67 // GDEH0154D67 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_T8 // GDEW0154T8 152x152, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M09 // GDEW0154M09 200x200, JD79653A, (WFT0154CZB3)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M10 // GDEW0154M10 152x152, UC8151D, (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_GDEY0154D67 // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213 // GDE0213B1 122x250, IL3895, (HINK-E0213-G01), phased out
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B72 // GDEH0213B72 122x250, SSD1675A (IL3897), (HINK-E0213A22-A0 SLH1852)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B73 // GDEH0213B73 122x250, SSD1675B, (HINK-E0213A22-A0 SLH1914)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B74 // GDEM0213B74 122x250, SSD1680, FPC-7528B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_flex // GDEW0213I5F 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_M21 // GDEW0213M21 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_T5D // GDEW0213T5D 104x212, UC8151D, (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_BN // DEPG0213BN 122x250, SSD1680, (FPC-7528B), TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_GDEY0213B74 // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260 // GDEW026T0 152x296, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260_M01 // GDEW026M01 152x296, UC8151 (IL0373), (WFT0260CZB2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_BN // DEPG0266BN 152x296, SSD1680, (FPC7510), TTGO T5 V2.66, TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_GDEY0266T90 // GDEY0266T90 152x296, SSD1680, (FPC-A003 HB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270 // GDEW027W3 176x264, EK79652 (IL91874), (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270_GDEY027T91 // GDEY027T91 176x264, SSD1680, (FB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290 // GDEH029A1 128x296, SSD1608 (IL3820), (E029A01-FPC-A1 SYX1553)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5 // GDEW029T5 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5D // GDEW029T5D 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_I6FD // GDEW029I6FD 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94_V2 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b), Waveshare 2.9" V2 variant
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_BS // DEPG0290BS 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_M06 // GDEW029M06 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T94 // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T71H // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_310_GDEQ031T10 // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_GDEY037T03 // GDEY037T03 240x416, UC8253, (FPC-F002, hidden on CrowPanel)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1 280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_371 // GDEW0371W7 240x416, UC8171 (IL0324), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397_GDEM0397T81 // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420 // GDEW042T2 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GYE042A87 // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_SE0420NQ04 // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_576_GDEH0576T81 // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579_GDEY0579T93 // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583 // GDEW0583T7 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8 // GDEW0583T8 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750 // GDEW075T8 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_T7 // GDEW075T7 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_GDEY075T7 // GDEY075T7 800x480, UC8179 (GD7965), (FPC-C001 20.08.20)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1020_GDEM102T91 // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1085_GDEM1085T51 // GDEM1085T51 1360x480, JD79686AB, (FPC8617) *** needs CS2 ***
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160_T91 // GDEH116T91 960x640, SSD1677, (none or hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248 // GDEW1248T3 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330_GDEM133T91 // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c // GDEW0154Z04 200x200, IL0376F, (WFT0000CZ04), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_Z90c // GDEH0154Z90 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c // GDEW0213Z16 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z19c // GDEH0213Z19 104x212, UC8151D, (HINK-E0213A20-A2 2020-11-19)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z98c // GDEY0213Z98 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c // GDEY0266Z90 152x296, SSD1680, (FPC-7510)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270c // GDEW027C44 176x264, IL91874, (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c // GDEW029Z10 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_Z13c // GDEH029Z13 128x296, UC8151D, (HINK-E029A10-A3 20160809)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_C90c // GDEM029C90 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c // GDEW042Z15 400x300, UC8176 (IL0398), (WFT0420CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_Z21 // GDEQ042Z21 400x300, UC8276, (hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY042Z98 // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579Z93 // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c // GDEW0583Z21 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_Z83 // GDEW0583Z83 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_GDEQ0583Z31 // GDEQ0583Z31 648x480, UC8179C,
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c // GDEW075Z09 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z08 // GDEW075Z08 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90 880x528, SSD1677, (HINK-E075A07-A0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEW075Z08 // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEY075Z08 // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116Z91 // GDEY116Z91 960x640, SSD1677, (FPV-K002 22.04.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248c // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330c_GDEM133Z91 // GDEM133Z91 960x680, SSD1677 (FPC-7701 REV.B)
|
||||||
|
// 4-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c_GDEM0154F51H // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c_GDEY0213F51 // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_300c // Waveshare 3.00" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_350c_GDEM035F51 // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397c_GDEM0397F81 // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_437c // Waveshare 4.37" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579F51 // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEM075F52 // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116F51 // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c_GDEP0565D90 // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEY073D46 // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_ACeP_730 // Waveshare 7.3" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEP073E01 // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60 // ED060SCT 800x600
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60_1448x1072 // ED060KC1 1448x1072
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it78_1872x1404 // ED078KC2 1872x1404
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it103_1872x1404 // ES103TC1 1872x1404
|
||||||
|
|
||||||
|
// SS is usually used for CS. define here for easy change
|
||||||
|
#ifndef EPD_CS
|
||||||
|
#define EPD_CS SS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
||||||
|
|
||||||
|
// somehow there should be an easier way to do this
|
||||||
|
#define GxEPD2_BW_IS_GxEPD2_BW true
|
||||||
|
#define GxEPD2_3C_IS_GxEPD2_3C true
|
||||||
|
#define GxEPD2_4C_IS_GxEPD2_4C true
|
||||||
|
#define GxEPD2_7C_IS_GxEPD2_7C true
|
||||||
|
#define GxEPD2_BW_SHM_IS_GxEPD2_BW_SHM true
|
||||||
|
#define GxEPD2_1248_IS_GxEPD2_1248 true
|
||||||
|
#define GxEPD2_1248c_IS_GxEPD2_1248c true
|
||||||
|
#define IS_GxEPD(c, x) (c##x)
|
||||||
|
#define IS_GxEPD2_BW(x) IS_GxEPD(GxEPD2_BW_IS_, x)
|
||||||
|
#define IS_GxEPD2_3C(x) IS_GxEPD(GxEPD2_3C_IS_, x)
|
||||||
|
#define IS_GxEPD2_4C(x) IS_GxEPD(GxEPD2_4C_IS_, x)
|
||||||
|
#define IS_GxEPD2_7C(x) IS_GxEPD(GxEPD2_7C_IS_, x)
|
||||||
|
#define IS_GxEPD2_BW_SHM(x) IS_GxEPD(GxEPD2_BW_SHM_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248(x) IS_GxEPD(GxEPD2_1248_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248c(x) IS_GxEPD(GxEPD2_1248c_IS_, x)
|
||||||
|
|
||||||
|
#include "GxEPD2_selection_check.h"
|
||||||
|
|
||||||
|
// for my test use only
|
||||||
|
//#if defined(_AVR)
|
||||||
|
//#warning "defined(_AVR)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ESP32)
|
||||||
|
//#warning "defined(ESP32)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
//#warning "defined(ARDUINO_ARCH_ESP32)"
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_AVR)
|
||||||
|
#if defined (ARDUINO_AVR_MEGA2560) // Note: SS is on 53 on MEGA
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#elif defined(ARDUINO_AVR_NANO_EVERY)
|
||||||
|
#define EPD_CS 10
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#else // Note: SS is on 10 on UNO, NANO
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 800 //
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
// for Arduino Micro or Arduino Leonardo with CS on 10 on my proto boards (SS would be 17) uncomment instead:
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_MEGAAVR)
|
||||||
|
#if defined(ARDUINO_AVR_NANO_EVERY) || defined(ARDUINO_AVR_UNO_WIFI_REV2)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 65536ul // e.g.
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
#if !IS_GxEPD2_1248(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_1248c(GxEPD2_DRIVER_CLASS)
|
||||||
|
#if defined(ARDUINO_NANO_ESP32) // uses Dx pin names
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ D10, /*DC=*/ D8, /*RST=*/ D9, /*BUSY=*/ D7));
|
||||||
|
#elif defined(ARDUINO_LOLIN_D32_PRO)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // my LOLIN_D32_PRO proto board
|
||||||
|
#elif defined(ARDUINO_LOLIN_S2_MINI)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 33, /*DC=*/ 35, /*RST=*/ 37, /*BUSY=*/ 39)); // my LOLIN ESP32 S2 mini connection
|
||||||
|
#elif defined(ARDUINO_ESP32S3_DEV)
|
||||||
|
// ESP32E6-E01 : only 50 pin FPC works on actual version (11.1.2025)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 2, /*DC=*/ 3, /*RST=*/ 4, /*BUSY=*/ 5)); // Good Display ESP32E6-E01 board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 45, /*DC=*/ 46, /*RST=*/ 47, /*BUSY=*/ 48)); // CrowPanel wiring
|
||||||
|
#else
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13)); // Good Display ESP32 Development Kit ESP32-L
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13, /*CS2=*/ 4)); // for GDEM1085T51 with ESP32-L
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // my suggested wiring and proto board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ 5, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // LILYGO_T5_V2.4.1
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 19, /*RST=*/ 4, /*BUSY=*/ 34)); // LILYGO® TTGO T5 2.66
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // e.g. TTGO T8 ESP32-WROVER
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare ESP32 Driver Board
|
||||||
|
#endif
|
||||||
|
#else // GxEPD2_1248 or GxEPD2_1248c
|
||||||
|
// Waveshare 12.48 b/w or b/w/r SPI display board and frame or Good Display 12.48 b/w panel GDEW1248T3 or b/w/r panel GDEY1248Z51
|
||||||
|
// general constructor for use with all parameters, e.g. for Waveshare ESP32 driver board mounted on connection board
|
||||||
|
GxEPD2_DISPLAY_CLASS < GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS) > display(GxEPD2_DRIVER_CLASS(/*sck=*/ 13, /*miso=*/ 12, /*mosi=*/ 14,
|
||||||
|
/*cs_m1=*/ 23, /*cs_s1=*/ 22, /*cs_m2=*/ 16, /*cs_s2=*/ 19,
|
||||||
|
/*dc1=*/ 25, /*dc2=*/ 17, /*rst1=*/ 33, /*rst2=*/ 5,
|
||||||
|
/*busy_m1=*/ 32, /*busy_s1=*/ 26, /*busy_m2=*/ 18, /*busy_s2=*/ 4));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (ARDUINO_ARCH_ESP8266)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE (81920ul-34000ul-5000ul) // ~34000 base use, change 5000 to your application use
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=D8*/ EPD_CS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// can't use package "STMF1 Boards (STM32Duino.com)" (Roger Clark) anymore with Adafruit_GFX, use "STM32 Boards (selected from submenu)" (STMicroelectronics)
|
||||||
|
#if defined(ARDUINO_ARCH_STM32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
// for Good Display STM32 Development Kit DESPI-L.
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13, /*CS2=*/ PD12)); // for GDEM1085T51
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=PA4*/ EPD_CS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // my proto board
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RENESAS)
|
||||||
|
#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAM)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAMD)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_SAMD_NANO_33_IOT)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#else
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 3, /*RST=*/ 2, /*BUSY=*/ 1)); // my Seed XIOA0
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // my other Seed XIOA0
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RP2040)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 131072ul // e.g. half of available ram
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_NANO_RP2040_CONNECT)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 5, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // my proto board
|
||||||
|
// mapping of GoodDisplay DESPI-PICO. NOTE: uses alternate HW SPI pins!
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
|
||||||
|
// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,165 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
#define GxEPD2_102_IS_BW true
|
||||||
|
#define GxEPD2_150_BN_IS_BW true
|
||||||
|
#define GxEPD2_154_IS_BW true
|
||||||
|
#define GxEPD2_154_D67_IS_BW true
|
||||||
|
#define GxEPD2_154_T8_IS_BW true
|
||||||
|
#define GxEPD2_154_M09_IS_BW true
|
||||||
|
#define GxEPD2_154_M10_IS_BW true
|
||||||
|
#define GxEPD2_154_GDEY0154D67_IS_BW true
|
||||||
|
#define GxEPD2_213_IS_BW true
|
||||||
|
#define GxEPD2_213_B72_IS_BW true
|
||||||
|
#define GxEPD2_213_B73_IS_BW true
|
||||||
|
#define GxEPD2_213_B74_IS_BW true
|
||||||
|
#define GxEPD2_213_flex_IS_BW true
|
||||||
|
#define GxEPD2_213_M21_IS_BW true
|
||||||
|
#define GxEPD2_213_T5D_IS_BW true
|
||||||
|
#define GxEPD2_213_BN_IS_BW true
|
||||||
|
#define GxEPD2_213_GDEY0213B74_IS_BW true
|
||||||
|
#define GxEPD2_260_IS_BW true
|
||||||
|
#define GxEPD2_260_M01_IS_BW true
|
||||||
|
#define GxEPD2_266_BN_IS_BW true
|
||||||
|
#define GxEPD2_266_GDEY0266T90_IS_BW true
|
||||||
|
#define GxEPD2_270_IS_BW true
|
||||||
|
#define GxEPD2_270_GDEY027T91_IS_BW true
|
||||||
|
#define GxEPD2_290_IS_BW true
|
||||||
|
#define GxEPD2_290_T5_IS_BW true
|
||||||
|
#define GxEPD2_290_T5D_IS_BW true
|
||||||
|
#define GxEPD2_290_I6FD_IS_BW true
|
||||||
|
#define GxEPD2_290_T94_IS_BW true
|
||||||
|
#define GxEPD2_290_T94_V2_IS_BW true
|
||||||
|
#define GxEPD2_290_BS_IS_BW true
|
||||||
|
#define GxEPD2_290_M06_IS_BW true
|
||||||
|
#define GxEPD2_290_GDEY029T94_IS_BW true
|
||||||
|
#define GxEPD2_290_GDEY029T71H_IS_BW true
|
||||||
|
#define GxEPD2_310_GDEQ031T10_IS_BW true
|
||||||
|
#define GxEPD2_371_IS_BW true
|
||||||
|
#define GxEPD2_370_TC1_IS_BW true
|
||||||
|
#define GxEPD2_370_GDEY037T03_IS_BW true
|
||||||
|
#define GxEPD2_397_GDEM0397T81_IS_BW true
|
||||||
|
#define GxEPD2_420_IS_BW true
|
||||||
|
#define GxEPD2_420_M01_IS_BW true
|
||||||
|
#define GxEPD2_420_GDEY042T81_IS_BW true
|
||||||
|
#define GxEPD2_420_GYE042A87_IS_BW true
|
||||||
|
#define GxEPD2_420_SE0420NQ04_IS_BW true
|
||||||
|
#define GxEPD2_426_GDEQ0426T82_IS_BW true
|
||||||
|
#define GxEPD2_576_GDEH0576T81_IS_BW true
|
||||||
|
#define GxEPD2_579_GDEY0579T93_IS_BW true
|
||||||
|
#define GxEPD2_583_IS_BW true
|
||||||
|
#define GxEPD2_583_T8_IS_BW true
|
||||||
|
#define GxEPD2_583_GDEQ0583T31_IS_BW true
|
||||||
|
#define GxEPD2_750_IS_BW true
|
||||||
|
#define GxEPD2_750_T7_IS_BW true
|
||||||
|
#define GxEPD2_750_GDEY075T7_IS_BW true
|
||||||
|
#define GxEPD2_1020_GDEM102T91_IS_BW true
|
||||||
|
#define GxEPD2_1085_GDEM1085T51_IS_BW true
|
||||||
|
#define GxEPD2_1160_T91_IS_BW true
|
||||||
|
#define GxEPD2_1248_IS_BW true
|
||||||
|
#define GxEPD2_1330_GDEM133T91_IS_BW true
|
||||||
|
#define GxEPD2_it60_IS_BW true
|
||||||
|
#define GxEPD2_it60_1448x1072_IS_BW true
|
||||||
|
#define GxEPD2_it78_1872x1404_IS_BW true
|
||||||
|
#define GxEPD2_it103_1872x1404_IS_BW true
|
||||||
|
// 3-color e-papers
|
||||||
|
#define GxEPD2_154c_IS_3C true
|
||||||
|
#define GxEPD2_154_Z90c_IS_3C true
|
||||||
|
#define GxEPD2_213c_IS_3C true
|
||||||
|
#define GxEPD2_213_Z19c_IS_3C true
|
||||||
|
#define GxEPD2_213_Z98c_IS_3C true
|
||||||
|
#define GxEPD2_266c_IS_3C true
|
||||||
|
#define GxEPD2_270c_IS_3C true
|
||||||
|
#define GxEPD2_290c_IS_3C true
|
||||||
|
#define GxEPD2_290_Z13c_IS_3C true
|
||||||
|
#define GxEPD2_290_C90c_IS_3C true
|
||||||
|
#define GxEPD2_420c_IS_3C true
|
||||||
|
#define GxEPD2_420c_Z21_IS_3C true
|
||||||
|
#define GxEPD2_420c_GDEY042Z98_IS_3C true
|
||||||
|
#define GxEPD2_579c_GDEY0579Z93_IS_3C true
|
||||||
|
#define GxEPD2_583c_IS_3C true
|
||||||
|
#define GxEPD2_583c_Z83_IS_3C true
|
||||||
|
#define GxEPD2_583c_GDEQ0583Z31_IS_3C true
|
||||||
|
#define GxEPD2_750c_IS_3C true
|
||||||
|
#define GxEPD2_750c_Z08_IS_3C true
|
||||||
|
#define GxEPD2_750c_Z90_IS_3C true
|
||||||
|
#define GxEPD2_750c_GDEW075Z08_IS_3C true
|
||||||
|
#define GxEPD2_750c_GDEY075Z08_IS_3C true
|
||||||
|
#define GxEPD2_1160c_GDEY116Z91_IS_3C true
|
||||||
|
#define GxEPD2_1248c_IS_3C true
|
||||||
|
#define GxEPD2_1330c_GDEM133Z91_IS_3C true
|
||||||
|
// 4-color e-paper
|
||||||
|
#define GxEPD2_154c_GDEM0154F51H_IS_4C true
|
||||||
|
#define GxEPD2_213c_GDEY0213F51_IS_4C true
|
||||||
|
#define GxEPD2_266c_GDEY0266F51H_IS_4C true
|
||||||
|
#define GxEPD2_290c_GDEY029F51H_IS_4C true
|
||||||
|
#define GxEPD2_300c_IS_4C true
|
||||||
|
#define GxEPD2_350c_GDEM035F51_IS_4C true
|
||||||
|
#define GxEPD2_397c_GDEM0397F81_IS_4C true
|
||||||
|
#define GxEPD2_420c_GDEY0420F51_IS_4C true
|
||||||
|
#define GxEPD2_437c_IS_4C true
|
||||||
|
#define GxEPD2_579c_GDEY0579F51_IS_4C true
|
||||||
|
#define GxEPD2_750c_GDEM075F52_IS_4C true
|
||||||
|
#define GxEPD2_1160c_GDEY116F51_IS_4C true
|
||||||
|
// 7-color e-paper
|
||||||
|
#define GxEPD2_565c_IS_7C true
|
||||||
|
#define GxEPD2_565c_GDEP0565D90_IS_7C true
|
||||||
|
#define GxEPD2_730c_GDEY073D46_IS_7C true
|
||||||
|
#define GxEPD2_730c_ACeP_730_IS_7C true
|
||||||
|
#define GxEPD2_730c_GDEP073E01_IS_7C true
|
||||||
|
|
||||||
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
||||||
|
#define IS_GxEPD2_DRIVER(c, x) (c##x)
|
||||||
|
#define IS_GxEPD2_DRIVER_BW(x) IS_GxEPD2_DRIVER(x, _IS_BW)
|
||||||
|
#define IS_GxEPD2_DRIVER_3C(x) IS_GxEPD2_DRIVER(x, _IS_3C)
|
||||||
|
#define IS_GxEPD2_DRIVER_4C(x) IS_GxEPD2_DRIVER(x, _IS_4C)
|
||||||
|
#define IS_GxEPD2_DRIVER_7C(x) IS_GxEPD2_DRIVER(x, _IS_7C)
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 3-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 4-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with b/w driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with 4-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with b/w driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with 3-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS) && !IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_7C used with less colors driver class"
|
||||||
|
#endif
|
||||||
|
#if !IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "neither BW nor 3C nor 4C nor 7C kind defined for driver class (error in GxEPD2_selection_check.h)"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// mapping of Good Display Arduino UNO Development Kit DEArduino-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> 4, RES -> 5, D/C -> 6, CS-> 7, SCK -> 13, SDI -> 11
|
||||||
|
|
||||||
|
// mapping of Good Display ESP8266 Development Kit ESP8266-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO16, RES -> GPIO5, D/C -> GPIO4, CS-> GPIO2, SCK -> GPIO14, SDI -> GPIO13
|
||||||
|
|
||||||
|
// mapping of Good Display ESP32 Development Kit ESP32-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO13, RES -> GPIO12, D/C -> GPIO14, CS-> GPIO27, SCK -> GPIO18, SDI -> GPIO23
|
||||||
|
|
||||||
|
// mapping of Good Display STM32 Development Kit DESPI-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PD9, SDI -> PD10
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PA5, SDI -> PA7 // for HW SPI with GxEPD2
|
||||||
|
|
||||||
|
// connection suggestions concerning Waveshare e-paper HAT Rev 2.3:
|
||||||
|
// DON'T FORGET to connect the PWR pin to VCC, to enable power to the board.
|
||||||
|
// RST is no longer used to disable power to the board, as with earlier revisions.
|
||||||
|
// Note, for 3.3V processors, no level converters are needed. Use DESPI-C02 instead. Uses less power.
|
||||||
|
// See https://www.buyepaper.com/products/development-kit-connection-adapter-board-for-eaper-display-demo-kit
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
|
||||||
|
// BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
|
||||||
|
// BUSY -> GPIO4, RST -> GPIO2, DC -> GPIO0, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from GPIO15 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from GPIO2 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
// BUSY -> GPIO5, RST -> GPIO2, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
// BUSY -> GPIO16, RST -> GPIO5, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32, see .../variants/.../pins_arduino.h for your board
|
||||||
|
// NOTE: there are variants with different pins for SPI ! CHECK SPI PINS OF YOUR BOARD
|
||||||
|
// BUSY -> 4, RST -> 16, DC -> 17, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
|
||||||
|
// mapping of Waveshare ESP32 Driver Board
|
||||||
|
// BUSY -> 25, RST -> 26, DC -> 27, CS-> 15, CLK -> 13, DIN -> 14
|
||||||
|
// NOTE: this board uses "unusual" SPI pins and requires re-mapping of HW SPI to these pins in SPIClass
|
||||||
|
// see example GxEPD2_WS_ESP32_Driver.ino, it shows how this can be done easily
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32 D32 PRO
|
||||||
|
// BUSY -> 15, RST -> 2, DC -> 0, CS -> 5, CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// note: use explicit value for CS, as SS is re-defined to TF_CS(4) in pins_arduino.h for Board: "LOLIN D32 PRO"
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. TTGO T8 ESP32-WROVER
|
||||||
|
// BUSY -> 4, RST -> 0, DC -> 2, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "ESP32 Dev Module":
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32S2, e.g. LOLIN ESP32 S2 mini, direct connection of DESPI-C02
|
||||||
|
// BUSY -> 39, RST -> 37, DC -> 35, CS -> 33, CLK -> 18, DIN -> 16, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "LOLIN S2 MINI":
|
||||||
|
|
||||||
|
// new mapping suggestion for STM32F1, e.g. STM32F103C8T6 "BluePill"
|
||||||
|
// BUSY -> A1, RST -> A2, DC -> A3, CS-> A4, CLK -> A5, DIN -> A7
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, UNO, NANO etc.
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, Arduino Micro, Leonardo
|
||||||
|
// note: on Leonardo board HW SPI pins are on 6-pin ICSP header
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 15, DIN -> 16
|
||||||
|
|
||||||
|
// mapping of Waveshare Universal e-Paper Raw Panel Driver Shield for Arduino / NUCLEO
|
||||||
|
// BUSY -> 7, RST -> 8, DC -> 9, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MEGA
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 53, CLK -> 52, DIN -> 51
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino DUE, note: pin 77 is on board pin 10, SS is 10
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 76, DIN -> 75
|
||||||
|
// SPI pins are on 6 pin 2x3 SPI header, no SS on SPI header!
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MKR1000 or MKRZERO
|
||||||
|
// note: can't use SS on MKR1000: is defined as 24, should be 4
|
||||||
|
// BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
|
||||||
|
|
||||||
|
// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3
|
||||||
|
|
||||||
|
// mapping of my new proto board like Waveshare Pico-ePaper-2.9
|
||||||
|
// needs 10k pull-up on RST when used with Arduino MBED OS RP2040 Boards
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
|
|
||||||
|
// mapping of Waveshare Pico-ePaper-2.9
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
@@ -0,0 +1,374 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// NOTE: you may need to adapt or select for your wiring in the processor specific conditional compile sections below
|
||||||
|
|
||||||
|
// select the display class (only one), matching the kind of display panel
|
||||||
|
#define GxEPD2_DISPLAY_CLASS GxEPD2_BW
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_3C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_4C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_7C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_BW_SHM
|
||||||
|
|
||||||
|
// select the display driver class (only one) for your panel
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_102 // GDEW0102T4 80x128, UC8175, (WFT0102CZA2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_150_BN // DEPG0150BN 200x200, SSD1681, (FPC8101), TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154 // GDEP015OC1 200x200, IL3829, (WFC0000CZ07), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_D67 // GDEH0154D67 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_T8 // GDEW0154T8 152x152, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M09 // GDEW0154M09 200x200, JD79653A, (WFT0154CZB3)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M10 // GDEW0154M10 152x152, UC8151D, (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_GDEY0154D67 // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213 // GDE0213B1 122x250, IL3895, (HINK-E0213-G01), phased out
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B72 // GDEH0213B72 122x250, SSD1675A (IL3897), (HINK-E0213A22-A0 SLH1852)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B73 // GDEH0213B73 122x250, SSD1675B, (HINK-E0213A22-A0 SLH1914)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B74 // GDEM0213B74 122x250, SSD1680, FPC-7528B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_flex // GDEW0213I5F 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_M21 // GDEW0213M21 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_T5D // GDEW0213T5D 104x212, UC8151D, (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_BN // DEPG0213BN 122x250, SSD1680, (FPC-7528B), TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_GDEY0213B74 // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260 // GDEW026T0 152x296, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260_M01 // GDEW026M01 152x296, UC8151 (IL0373), (WFT0260CZB2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_BN // DEPG0266BN 152x296, SSD1680, (FPC7510), TTGO T5 V2.66, TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_GDEY0266T90 // GDEY0266T90 152x296, SSD1680, (FPC-A003 HB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270 // GDEW027W3 176x264, EK79652 (IL91874), (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270_GDEY027T91 // GDEY027T91 176x264, SSD1680, (FB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290 // GDEH029A1 128x296, SSD1608 (IL3820), (E029A01-FPC-A1 SYX1553)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5 // GDEW029T5 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5D // GDEW029T5D 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_I6FD // GDEW029I6FD 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94_V2 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b), Waveshare 2.9" V2 variant
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_BS // DEPG0290BS 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_M06 // GDEW029M06 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T94 // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T71H // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_310_GDEQ031T10 // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_GDEY037T03 // GDEY037T03 240x416, UC8253, (FPC-F002, hidden on CrowPanel)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1 280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_371 // GDEW0371W7 240x416, UC8171 (IL0324), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397_GDEM0397T81 // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420 // GDEW042T2 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GYE042A87 // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_SE0420NQ04 // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_576_GDEH0576T81 // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579_GDEY0579T93 // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583 // GDEW0583T7 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8 // GDEW0583T8 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750 // GDEW075T8 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_T7 // GDEW075T7 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_GDEY075T7 // GDEY075T7 800x480, UC8179 (GD7965), (FPC-C001 20.08.20)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1020_GDEM102T91 // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1085_GDEM1085T51 // GDEM1085T51 1360x480, JD79686AB, (FPC8617) *** needs CS2 ***
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160_T91 // GDEH116T91 960x640, SSD1677, (none or hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248 // GDEW1248T3 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330_GDEM133T91 // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c // GDEW0154Z04 200x200, IL0376F, (WFT0000CZ04), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_Z90c // GDEH0154Z90 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c // GDEW0213Z16 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z19c // GDEH0213Z19 104x212, UC8151D, (HINK-E0213A20-A2 2020-11-19)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z98c // GDEY0213Z98 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c // GDEY0266Z90 152x296, SSD1680, (FPC-7510)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270c // GDEW027C44 176x264, IL91874, (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c // GDEW029Z10 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_Z13c // GDEH029Z13 128x296, UC8151D, (HINK-E029A10-A3 20160809)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_C90c // GDEM029C90 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c // GDEW042Z15 400x300, UC8176 (IL0398), (WFT0420CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_Z21 // GDEQ042Z21 400x300, UC8276, (hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY042Z98 // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579Z93 // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c // GDEW0583Z21 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_Z83 // GDEW0583Z83 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_GDEQ0583Z31 // GDEQ0583Z31 648x480, UC8179C,
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c // GDEW075Z09 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z08 // GDEW075Z08 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90 880x528, SSD1677, (HINK-E075A07-A0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEW075Z08 // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEY075Z08 // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116Z91 // GDEY116Z91 960x640, SSD1677, (FPV-K002 22.04.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248c // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330c_GDEM133Z91 // GDEM133Z91 960x680, SSD1677 (FPC-7701 REV.B)
|
||||||
|
// 4-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c_GDEM0154F51H // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c_GDEY0213F51 // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_300c // Waveshare 3.00" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_350c_GDEM035F51 // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397c_GDEM0397F81 // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_437c // Waveshare 4.37" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579F51 // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEM075F52 // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116F51 // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c_GDEP0565D90 // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEY073D46 // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_ACeP_730 // Waveshare 7.3" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEP073E01 // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60 // ED060SCT 800x600
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60_1448x1072 // ED060KC1 1448x1072
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it78_1872x1404 // ED078KC2 1872x1404
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it103_1872x1404 // ES103TC1 1872x1404
|
||||||
|
|
||||||
|
// SS is usually used for CS. define here for easy change
|
||||||
|
#ifndef EPD_CS
|
||||||
|
#define EPD_CS SS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
||||||
|
|
||||||
|
// somehow there should be an easier way to do this
|
||||||
|
#define GxEPD2_BW_IS_GxEPD2_BW true
|
||||||
|
#define GxEPD2_3C_IS_GxEPD2_3C true
|
||||||
|
#define GxEPD2_4C_IS_GxEPD2_4C true
|
||||||
|
#define GxEPD2_7C_IS_GxEPD2_7C true
|
||||||
|
#define GxEPD2_BW_SHM_IS_GxEPD2_BW_SHM true
|
||||||
|
#define GxEPD2_1248_IS_GxEPD2_1248 true
|
||||||
|
#define GxEPD2_1248c_IS_GxEPD2_1248c true
|
||||||
|
#define IS_GxEPD(c, x) (c##x)
|
||||||
|
#define IS_GxEPD2_BW(x) IS_GxEPD(GxEPD2_BW_IS_, x)
|
||||||
|
#define IS_GxEPD2_3C(x) IS_GxEPD(GxEPD2_3C_IS_, x)
|
||||||
|
#define IS_GxEPD2_4C(x) IS_GxEPD(GxEPD2_4C_IS_, x)
|
||||||
|
#define IS_GxEPD2_7C(x) IS_GxEPD(GxEPD2_7C_IS_, x)
|
||||||
|
#define IS_GxEPD2_BW_SHM(x) IS_GxEPD(GxEPD2_BW_SHM_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248(x) IS_GxEPD(GxEPD2_1248_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248c(x) IS_GxEPD(GxEPD2_1248c_IS_, x)
|
||||||
|
|
||||||
|
#include "GxEPD2_selection_check.h"
|
||||||
|
|
||||||
|
// for my test use only
|
||||||
|
//#if defined(_AVR)
|
||||||
|
//#warning "defined(_AVR)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ESP32)
|
||||||
|
//#warning "defined(ESP32)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
//#warning "defined(ARDUINO_ARCH_ESP32)"
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_AVR)
|
||||||
|
#if defined (ARDUINO_AVR_MEGA2560) // Note: SS is on 53 on MEGA
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#elif defined(ARDUINO_AVR_NANO_EVERY)
|
||||||
|
#define EPD_CS 10
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#else // Note: SS is on 10 on UNO, NANO
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 800 //
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
// for Arduino Micro or Arduino Leonardo with CS on 10 on my proto boards (SS would be 17) uncomment instead:
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_MEGAAVR)
|
||||||
|
#if defined(ARDUINO_AVR_NANO_EVERY) || defined(ARDUINO_AVR_UNO_WIFI_REV2)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 65536ul // e.g.
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
#if !IS_GxEPD2_1248(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_1248c(GxEPD2_DRIVER_CLASS)
|
||||||
|
#if defined(ARDUINO_NANO_ESP32) // uses Dx pin names
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ D10, /*DC=*/ D8, /*RST=*/ D9, /*BUSY=*/ D7));
|
||||||
|
#elif defined(ARDUINO_LOLIN_D32_PRO)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // my LOLIN_D32_PRO proto board
|
||||||
|
#elif defined(ARDUINO_LOLIN_S2_MINI)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 33, /*DC=*/ 35, /*RST=*/ 37, /*BUSY=*/ 39)); // my LOLIN ESP32 S2 mini connection
|
||||||
|
#elif defined(ARDUINO_ESP32S3_DEV)
|
||||||
|
// ESP32E6-E01 : only 50 pin FPC works on actual version (11.1.2025)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 2, /*DC=*/ 3, /*RST=*/ 4, /*BUSY=*/ 5)); // Good Display ESP32E6-E01 board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 45, /*DC=*/ 46, /*RST=*/ 47, /*BUSY=*/ 48)); // CrowPanel wiring
|
||||||
|
#else
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13)); // Good Display ESP32 Development Kit ESP32-L
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13, /*CS2=*/ 4)); // for GDEM1085T51 with ESP32-L
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // my suggested wiring and proto board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ 5, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // LILYGO_T5_V2.4.1
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 19, /*RST=*/ 4, /*BUSY=*/ 34)); // LILYGO® TTGO T5 2.66
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // e.g. TTGO T8 ESP32-WROVER
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare ESP32 Driver Board
|
||||||
|
#endif
|
||||||
|
#else // GxEPD2_1248 or GxEPD2_1248c
|
||||||
|
// Waveshare 12.48 b/w or b/w/r SPI display board and frame or Good Display 12.48 b/w panel GDEW1248T3 or b/w/r panel GDEY1248Z51
|
||||||
|
// general constructor for use with all parameters, e.g. for Waveshare ESP32 driver board mounted on connection board
|
||||||
|
GxEPD2_DISPLAY_CLASS < GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS) > display(GxEPD2_DRIVER_CLASS(/*sck=*/ 13, /*miso=*/ 12, /*mosi=*/ 14,
|
||||||
|
/*cs_m1=*/ 23, /*cs_s1=*/ 22, /*cs_m2=*/ 16, /*cs_s2=*/ 19,
|
||||||
|
/*dc1=*/ 25, /*dc2=*/ 17, /*rst1=*/ 33, /*rst2=*/ 5,
|
||||||
|
/*busy_m1=*/ 32, /*busy_s1=*/ 26, /*busy_m2=*/ 18, /*busy_s2=*/ 4));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (ARDUINO_ARCH_ESP8266)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE (81920ul-34000ul-5000ul) // ~34000 base use, change 5000 to your application use
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=D8*/ EPD_CS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// can't use package "STMF1 Boards (STM32Duino.com)" (Roger Clark) anymore with Adafruit_GFX, use "STM32 Boards (selected from submenu)" (STMicroelectronics)
|
||||||
|
#if defined(ARDUINO_ARCH_STM32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
// for Good Display STM32 Development Kit DESPI-L.
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13, /*CS2=*/ PD12)); // for GDEM1085T51
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=PA4*/ EPD_CS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // my proto board
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RENESAS)
|
||||||
|
#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAM)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAMD)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_SAMD_NANO_33_IOT)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#else
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 3, /*RST=*/ 2, /*BUSY=*/ 1)); // my Seed XIOA0
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // my other Seed XIOA0
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RP2040)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 131072ul // e.g. half of available ram
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_NANO_RP2040_CONNECT)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 5, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // my proto board
|
||||||
|
// mapping of GoodDisplay DESPI-PICO. NOTE: uses alternate HW SPI pins!
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
|
||||||
|
// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,165 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
#define GxEPD2_102_IS_BW true
|
||||||
|
#define GxEPD2_150_BN_IS_BW true
|
||||||
|
#define GxEPD2_154_IS_BW true
|
||||||
|
#define GxEPD2_154_D67_IS_BW true
|
||||||
|
#define GxEPD2_154_T8_IS_BW true
|
||||||
|
#define GxEPD2_154_M09_IS_BW true
|
||||||
|
#define GxEPD2_154_M10_IS_BW true
|
||||||
|
#define GxEPD2_154_GDEY0154D67_IS_BW true
|
||||||
|
#define GxEPD2_213_IS_BW true
|
||||||
|
#define GxEPD2_213_B72_IS_BW true
|
||||||
|
#define GxEPD2_213_B73_IS_BW true
|
||||||
|
#define GxEPD2_213_B74_IS_BW true
|
||||||
|
#define GxEPD2_213_flex_IS_BW true
|
||||||
|
#define GxEPD2_213_M21_IS_BW true
|
||||||
|
#define GxEPD2_213_T5D_IS_BW true
|
||||||
|
#define GxEPD2_213_BN_IS_BW true
|
||||||
|
#define GxEPD2_213_GDEY0213B74_IS_BW true
|
||||||
|
#define GxEPD2_260_IS_BW true
|
||||||
|
#define GxEPD2_260_M01_IS_BW true
|
||||||
|
#define GxEPD2_266_BN_IS_BW true
|
||||||
|
#define GxEPD2_266_GDEY0266T90_IS_BW true
|
||||||
|
#define GxEPD2_270_IS_BW true
|
||||||
|
#define GxEPD2_270_GDEY027T91_IS_BW true
|
||||||
|
#define GxEPD2_290_IS_BW true
|
||||||
|
#define GxEPD2_290_T5_IS_BW true
|
||||||
|
#define GxEPD2_290_T5D_IS_BW true
|
||||||
|
#define GxEPD2_290_I6FD_IS_BW true
|
||||||
|
#define GxEPD2_290_T94_IS_BW true
|
||||||
|
#define GxEPD2_290_T94_V2_IS_BW true
|
||||||
|
#define GxEPD2_290_BS_IS_BW true
|
||||||
|
#define GxEPD2_290_M06_IS_BW true
|
||||||
|
#define GxEPD2_290_GDEY029T94_IS_BW true
|
||||||
|
#define GxEPD2_290_GDEY029T71H_IS_BW true
|
||||||
|
#define GxEPD2_310_GDEQ031T10_IS_BW true
|
||||||
|
#define GxEPD2_371_IS_BW true
|
||||||
|
#define GxEPD2_370_TC1_IS_BW true
|
||||||
|
#define GxEPD2_370_GDEY037T03_IS_BW true
|
||||||
|
#define GxEPD2_397_GDEM0397T81_IS_BW true
|
||||||
|
#define GxEPD2_420_IS_BW true
|
||||||
|
#define GxEPD2_420_M01_IS_BW true
|
||||||
|
#define GxEPD2_420_GDEY042T81_IS_BW true
|
||||||
|
#define GxEPD2_420_GYE042A87_IS_BW true
|
||||||
|
#define GxEPD2_420_SE0420NQ04_IS_BW true
|
||||||
|
#define GxEPD2_426_GDEQ0426T82_IS_BW true
|
||||||
|
#define GxEPD2_576_GDEH0576T81_IS_BW true
|
||||||
|
#define GxEPD2_579_GDEY0579T93_IS_BW true
|
||||||
|
#define GxEPD2_583_IS_BW true
|
||||||
|
#define GxEPD2_583_T8_IS_BW true
|
||||||
|
#define GxEPD2_583_GDEQ0583T31_IS_BW true
|
||||||
|
#define GxEPD2_750_IS_BW true
|
||||||
|
#define GxEPD2_750_T7_IS_BW true
|
||||||
|
#define GxEPD2_750_GDEY075T7_IS_BW true
|
||||||
|
#define GxEPD2_1020_GDEM102T91_IS_BW true
|
||||||
|
#define GxEPD2_1085_GDEM1085T51_IS_BW true
|
||||||
|
#define GxEPD2_1160_T91_IS_BW true
|
||||||
|
#define GxEPD2_1248_IS_BW true
|
||||||
|
#define GxEPD2_1330_GDEM133T91_IS_BW true
|
||||||
|
#define GxEPD2_it60_IS_BW true
|
||||||
|
#define GxEPD2_it60_1448x1072_IS_BW true
|
||||||
|
#define GxEPD2_it78_1872x1404_IS_BW true
|
||||||
|
#define GxEPD2_it103_1872x1404_IS_BW true
|
||||||
|
// 3-color e-papers
|
||||||
|
#define GxEPD2_154c_IS_3C true
|
||||||
|
#define GxEPD2_154_Z90c_IS_3C true
|
||||||
|
#define GxEPD2_213c_IS_3C true
|
||||||
|
#define GxEPD2_213_Z19c_IS_3C true
|
||||||
|
#define GxEPD2_213_Z98c_IS_3C true
|
||||||
|
#define GxEPD2_266c_IS_3C true
|
||||||
|
#define GxEPD2_270c_IS_3C true
|
||||||
|
#define GxEPD2_290c_IS_3C true
|
||||||
|
#define GxEPD2_290_Z13c_IS_3C true
|
||||||
|
#define GxEPD2_290_C90c_IS_3C true
|
||||||
|
#define GxEPD2_420c_IS_3C true
|
||||||
|
#define GxEPD2_420c_Z21_IS_3C true
|
||||||
|
#define GxEPD2_420c_GDEY042Z98_IS_3C true
|
||||||
|
#define GxEPD2_579c_GDEY0579Z93_IS_3C true
|
||||||
|
#define GxEPD2_583c_IS_3C true
|
||||||
|
#define GxEPD2_583c_Z83_IS_3C true
|
||||||
|
#define GxEPD2_583c_GDEQ0583Z31_IS_3C true
|
||||||
|
#define GxEPD2_750c_IS_3C true
|
||||||
|
#define GxEPD2_750c_Z08_IS_3C true
|
||||||
|
#define GxEPD2_750c_Z90_IS_3C true
|
||||||
|
#define GxEPD2_750c_GDEW075Z08_IS_3C true
|
||||||
|
#define GxEPD2_750c_GDEY075Z08_IS_3C true
|
||||||
|
#define GxEPD2_1160c_GDEY116Z91_IS_3C true
|
||||||
|
#define GxEPD2_1248c_IS_3C true
|
||||||
|
#define GxEPD2_1330c_GDEM133Z91_IS_3C true
|
||||||
|
// 4-color e-paper
|
||||||
|
#define GxEPD2_154c_GDEM0154F51H_IS_4C true
|
||||||
|
#define GxEPD2_213c_GDEY0213F51_IS_4C true
|
||||||
|
#define GxEPD2_266c_GDEY0266F51H_IS_4C true
|
||||||
|
#define GxEPD2_290c_GDEY029F51H_IS_4C true
|
||||||
|
#define GxEPD2_300c_IS_4C true
|
||||||
|
#define GxEPD2_350c_GDEM035F51_IS_4C true
|
||||||
|
#define GxEPD2_397c_GDEM0397F81_IS_4C true
|
||||||
|
#define GxEPD2_420c_GDEY0420F51_IS_4C true
|
||||||
|
#define GxEPD2_437c_IS_4C true
|
||||||
|
#define GxEPD2_579c_GDEY0579F51_IS_4C true
|
||||||
|
#define GxEPD2_750c_GDEM075F52_IS_4C true
|
||||||
|
#define GxEPD2_1160c_GDEY116F51_IS_4C true
|
||||||
|
// 7-color e-paper
|
||||||
|
#define GxEPD2_565c_IS_7C true
|
||||||
|
#define GxEPD2_565c_GDEP0565D90_IS_7C true
|
||||||
|
#define GxEPD2_730c_GDEY073D46_IS_7C true
|
||||||
|
#define GxEPD2_730c_ACeP_730_IS_7C true
|
||||||
|
#define GxEPD2_730c_GDEP073E01_IS_7C true
|
||||||
|
|
||||||
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
||||||
|
#define IS_GxEPD2_DRIVER(c, x) (c##x)
|
||||||
|
#define IS_GxEPD2_DRIVER_BW(x) IS_GxEPD2_DRIVER(x, _IS_BW)
|
||||||
|
#define IS_GxEPD2_DRIVER_3C(x) IS_GxEPD2_DRIVER(x, _IS_3C)
|
||||||
|
#define IS_GxEPD2_DRIVER_4C(x) IS_GxEPD2_DRIVER(x, _IS_4C)
|
||||||
|
#define IS_GxEPD2_DRIVER_7C(x) IS_GxEPD2_DRIVER(x, _IS_7C)
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 3-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 4-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with b/w driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with 4-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with b/w driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with 3-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS) && !IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_7C used with less colors driver class"
|
||||||
|
#endif
|
||||||
|
#if !IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "neither BW nor 3C nor 4C nor 7C kind defined for driver class (error in GxEPD2_selection_check.h)"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// mapping of Good Display Arduino UNO Development Kit DEArduino-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> 4, RES -> 5, D/C -> 6, CS-> 7, SCK -> 13, SDI -> 11
|
||||||
|
|
||||||
|
// mapping of Good Display ESP8266 Development Kit ESP8266-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO16, RES -> GPIO5, D/C -> GPIO4, CS-> GPIO2, SCK -> GPIO14, SDI -> GPIO13
|
||||||
|
|
||||||
|
// mapping of Good Display ESP32 Development Kit ESP32-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO13, RES -> GPIO12, D/C -> GPIO14, CS-> GPIO27, SCK -> GPIO18, SDI -> GPIO23
|
||||||
|
|
||||||
|
// mapping of Good Display STM32 Development Kit DESPI-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PD9, SDI -> PD10
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PA5, SDI -> PA7 // for HW SPI with GxEPD2
|
||||||
|
|
||||||
|
// connection suggestions concerning Waveshare e-paper HAT Rev 2.3:
|
||||||
|
// DON'T FORGET to connect the PWR pin to VCC, to enable power to the board.
|
||||||
|
// RST is no longer used to disable power to the board, as with earlier revisions.
|
||||||
|
// Note, for 3.3V processors, no level converters are needed. Use DESPI-C02 instead. Uses less power.
|
||||||
|
// See https://www.buyepaper.com/products/development-kit-connection-adapter-board-for-eaper-display-demo-kit
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
|
||||||
|
// BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
|
||||||
|
// BUSY -> GPIO4, RST -> GPIO2, DC -> GPIO0, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from GPIO15 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from GPIO2 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
// BUSY -> GPIO5, RST -> GPIO2, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
// BUSY -> GPIO16, RST -> GPIO5, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32, see .../variants/.../pins_arduino.h for your board
|
||||||
|
// NOTE: there are variants with different pins for SPI ! CHECK SPI PINS OF YOUR BOARD
|
||||||
|
// BUSY -> 4, RST -> 16, DC -> 17, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
|
||||||
|
// mapping of Waveshare ESP32 Driver Board
|
||||||
|
// BUSY -> 25, RST -> 26, DC -> 27, CS-> 15, CLK -> 13, DIN -> 14
|
||||||
|
// NOTE: this board uses "unusual" SPI pins and requires re-mapping of HW SPI to these pins in SPIClass
|
||||||
|
// see example GxEPD2_WS_ESP32_Driver.ino, it shows how this can be done easily
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32 D32 PRO
|
||||||
|
// BUSY -> 15, RST -> 2, DC -> 0, CS -> 5, CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// note: use explicit value for CS, as SS is re-defined to TF_CS(4) in pins_arduino.h for Board: "LOLIN D32 PRO"
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. TTGO T8 ESP32-WROVER
|
||||||
|
// BUSY -> 4, RST -> 0, DC -> 2, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "ESP32 Dev Module":
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32S2, e.g. LOLIN ESP32 S2 mini, direct connection of DESPI-C02
|
||||||
|
// BUSY -> 39, RST -> 37, DC -> 35, CS -> 33, CLK -> 18, DIN -> 16, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "LOLIN S2 MINI":
|
||||||
|
|
||||||
|
// new mapping suggestion for STM32F1, e.g. STM32F103C8T6 "BluePill"
|
||||||
|
// BUSY -> A1, RST -> A2, DC -> A3, CS-> A4, CLK -> A5, DIN -> A7
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, UNO, NANO etc.
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, Arduino Micro, Leonardo
|
||||||
|
// note: on Leonardo board HW SPI pins are on 6-pin ICSP header
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 15, DIN -> 16
|
||||||
|
|
||||||
|
// mapping of Waveshare Universal e-Paper Raw Panel Driver Shield for Arduino / NUCLEO
|
||||||
|
// BUSY -> 7, RST -> 8, DC -> 9, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MEGA
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 53, CLK -> 52, DIN -> 51
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino DUE, note: pin 77 is on board pin 10, SS is 10
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 76, DIN -> 75
|
||||||
|
// SPI pins are on 6 pin 2x3 SPI header, no SS on SPI header!
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MKR1000 or MKRZERO
|
||||||
|
// note: can't use SS on MKR1000: is defined as 24, should be 4
|
||||||
|
// BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
|
||||||
|
|
||||||
|
// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3
|
||||||
|
|
||||||
|
// mapping of my new proto board like Waveshare Pico-ePaper-2.9
|
||||||
|
// needs 10k pull-up on RST when used with Arduino MBED OS RP2040 Boards
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
|
|
||||||
|
// mapping of Waveshare Pico-ePaper-2.9
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
@@ -0,0 +1,879 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// see GxEPD2_wiring_examples.h for wiring suggestions and examples
|
||||||
|
|
||||||
|
// base class GxEPD2_GFX can be used to pass references or pointers to the display instance as parameter, uses ~1.2k more code
|
||||||
|
// enable or disable GxEPD2_GFX base class
|
||||||
|
#define ENABLE_GxEPD2_GFX 0
|
||||||
|
|
||||||
|
// uncomment next line to use class GFX of library GFX_Root instead of Adafruit_GFX
|
||||||
|
//#include <GFX.h>
|
||||||
|
// Note: if you use this with ENABLE_GxEPD2_GFX 1:
|
||||||
|
// uncomment it in GxEPD2_GFX.h too, or add #include <GFX.h> before any #include <GxEPD2_GFX.h>
|
||||||
|
|
||||||
|
#include <GxEPD2_BW.h>
|
||||||
|
#include <GxEPD2_3C.h>
|
||||||
|
#include <GxEPD2_7C.h>
|
||||||
|
#include <GxEPD2_BW_SHM.h>
|
||||||
|
#include <Fonts/FreeMonoBold9pt7b.h>
|
||||||
|
|
||||||
|
// select the display class and display driver class in the following file (new style):
|
||||||
|
#include "GxEPD2_display_selection_new_style.h"
|
||||||
|
|
||||||
|
#if !defined(__AVR) && !defined(_BOARD_GENERIC_STM32F103C_H_)
|
||||||
|
|
||||||
|
// note 16.11.2019: the compiler may exclude code based on constant if statements (display.epd2.panel == constant),
|
||||||
|
// therefore bitmaps may get optimized out by the linker
|
||||||
|
|
||||||
|
// comment out unused bitmaps to reduce code space used
|
||||||
|
#include "bitmaps/Bitmaps152x152.h" // 1.54" b/w
|
||||||
|
#include "bitmaps/Bitmaps200x200.h" // 1.54" b/w
|
||||||
|
#include "bitmaps/Bitmaps104x212.h" // 2.13" b/w flexible GDEW0213I5F
|
||||||
|
#include "bitmaps/Bitmaps128x250.h" // 2.13" b/w
|
||||||
|
#include "bitmaps/Bitmaps128x296.h" // 2.9" b/w
|
||||||
|
#include "bitmaps/Bitmaps152x296.h" // 2.6" b/w
|
||||||
|
#include "bitmaps/Bitmaps176x264.h" // 2.7" b/w
|
||||||
|
#include "bitmaps/Bitmaps240x416.h" // 3.71" b/w
|
||||||
|
#include "bitmaps/Bitmaps400x300.h" // 4.2" b/w
|
||||||
|
#include "bitmaps/Bitmaps648x480.h" // 5.38" b/w
|
||||||
|
#include "bitmaps/Bitmaps640x384.h" // 7.5" b/w
|
||||||
|
#include "bitmaps/Bitmaps800x480.h" // 7.5" b/w
|
||||||
|
// 3-color
|
||||||
|
#include "bitmaps/Bitmaps3c200x200.h" // 1.54" b/w/r
|
||||||
|
#include "bitmaps/Bitmaps3c104x212.h" // 2.13" b/w/r
|
||||||
|
#include "bitmaps/Bitmaps3c128x296.h" // 2.9" b/w/r
|
||||||
|
#include "bitmaps/Bitmaps3c176x264.h" // 2.7" b/w/r
|
||||||
|
#include "bitmaps/Bitmaps3c400x300.h" // 4.2" b/w/r
|
||||||
|
#if defined(ESP8266) || defined(ESP32)
|
||||||
|
#include "bitmaps/Bitmaps3c800x480.h" // 7.5" b/w/r
|
||||||
|
#include "bitmaps/Bitmaps3c880x528.h" // 7.5" b/w/r
|
||||||
|
#include "bitmaps/WS_Bitmaps800x600.h" // 6.0" grey
|
||||||
|
#include "bitmaps/WS_Bitmaps7c192x143.h" // 5.65" 7-color
|
||||||
|
#endif
|
||||||
|
#if defined(ESP32)
|
||||||
|
#include "bitmaps/Bitmaps1304x984.h" // 12.48" b/w
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
// select only one to fit in code space
|
||||||
|
//#include "bitmaps/Bitmaps200x200.h" // 1.54" b/w
|
||||||
|
//#include "bitmaps/Bitmaps128x250.h" // 2.13" b/w
|
||||||
|
//#include "bitmaps/Bitmaps128x296.h" // 2.9" b/w
|
||||||
|
//#include "bitmaps/Bitmaps176x264.h" // 2.7" b/w
|
||||||
|
////#include "bitmaps/Bitmaps400x300.h" // 4.2" b/w // not enough code space
|
||||||
|
////#include "bitmaps/Bitmaps640x384.h" // 7.5" b/w // not enough code space
|
||||||
|
// 3-color
|
||||||
|
//#include "bitmaps/Bitmaps3c200x200.h" // 1.54" b/w/r
|
||||||
|
//#include "bitmaps/Bitmaps3c104x212.h" // 2.13" b/w/r
|
||||||
|
//#include "bitmaps/Bitmaps3c128x296.h" // 2.9" b/w/r
|
||||||
|
//#include "bitmaps/Bitmaps3c176x264.h" // 2.7" b/w/r
|
||||||
|
////#include "bitmaps/Bitmaps3c400x300.h" // 4.2" b/w/r // not enough code space
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// for handling alternative SPI pins (ESP32, RP2040) see example GxEPD2_Example.ino
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.println();
|
||||||
|
Serial.println("setup");
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEH0576T81) display.epd2.enableRead(SCK, MOSI); // enable read temperature, uses SW SPI
|
||||||
|
//display.init(115200); // default 10ms reset pulse, e.g. for bare panels with DESPI-C02
|
||||||
|
display.init(115200, true, 2, false); // USE THIS for Waveshare boards with "clever" reset circuit, 2ms reset pulse
|
||||||
|
// first update should be full refresh
|
||||||
|
helloWorld();
|
||||||
|
delay(1000);
|
||||||
|
// partial refresh mode can be used to full screen,
|
||||||
|
// effective if display panel hasFastPartialUpdate
|
||||||
|
helloFullScreenPartialMode();
|
||||||
|
delay(1000);
|
||||||
|
helloArduino();
|
||||||
|
delay(1000);
|
||||||
|
helloEpaper();
|
||||||
|
delay(1000);
|
||||||
|
showFont("FreeMonoBold9pt7b", &FreeMonoBold9pt7b);
|
||||||
|
delay(1000);
|
||||||
|
drawBitmaps();
|
||||||
|
if (display.epd2.hasPartialUpdate)
|
||||||
|
{
|
||||||
|
showPartialUpdate();
|
||||||
|
delay(1000);
|
||||||
|
} // else // on GDEW0154Z04 only full update available, doesn't look nice
|
||||||
|
//drawCornerTest();
|
||||||
|
//showBox(16, 16, 48, 32, false);
|
||||||
|
//showBox(16, 56, 48, 32, true);
|
||||||
|
display.powerOff();
|
||||||
|
Serial.println("setup done");
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
const char HelloWorld[] = "Hello World!";
|
||||||
|
const char HelloArduino[] = "Hello Arduino!";
|
||||||
|
const char HelloEpaper[] = "Hello E-Paper!";
|
||||||
|
|
||||||
|
struct coordinates
|
||||||
|
{
|
||||||
|
uint16_t x;
|
||||||
|
uint16_t y;
|
||||||
|
};
|
||||||
|
|
||||||
|
void helloWorldCallback(const void* p)
|
||||||
|
{
|
||||||
|
const coordinates& where(*reinterpret_cast<const coordinates*>(p));
|
||||||
|
display.setCursor(where.x, where.y);
|
||||||
|
display.print(HelloWorld);
|
||||||
|
}
|
||||||
|
|
||||||
|
void helloWorld()
|
||||||
|
{
|
||||||
|
//Serial.println("helloWorld");
|
||||||
|
coordinates cursor;
|
||||||
|
display.setRotation(1);
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
if (display.epd2.WIDTH < 104) display.setFont(0);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
int16_t tbx, tby; uint16_t tbw, tbh;
|
||||||
|
display.getTextBounds(HelloWorld, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
// center bounding box by transposition of origin:
|
||||||
|
cursor.x = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
cursor.y = ((display.height() - tbh) / 2) - tby;
|
||||||
|
display.setFullWindow();
|
||||||
|
display.drawPaged(helloWorldCallback, &cursor);
|
||||||
|
//Serial.println("helloWorld done");
|
||||||
|
}
|
||||||
|
|
||||||
|
struct text_at
|
||||||
|
{
|
||||||
|
const char* text;
|
||||||
|
coordinates where;
|
||||||
|
};
|
||||||
|
|
||||||
|
void helloFullScreenPartialModeCallback(const void* p)
|
||||||
|
{
|
||||||
|
const text_at* what(reinterpret_cast<const text_at*>(p));
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.setCursor(what[0].where.x, what[0].where.y);
|
||||||
|
display.print(what[0].text);
|
||||||
|
display.setCursor(what[1].where.x, what[1].where.y);
|
||||||
|
display.print(what[1].text);
|
||||||
|
display.setCursor(what[2].where.x, what[2].where.y);
|
||||||
|
display.print(what[2].text);
|
||||||
|
}
|
||||||
|
|
||||||
|
void helloFullScreenPartialMode()
|
||||||
|
{
|
||||||
|
//Serial.println("helloFullScreenPartialMode");
|
||||||
|
const char fullscreen[] = "full screen update";
|
||||||
|
const char fpm[] = "fast partial mode";
|
||||||
|
const char spm[] = "slow partial mode";
|
||||||
|
const char npm[] = "no partial mode";
|
||||||
|
text_at what[3];
|
||||||
|
display.setPartialWindow(0, 0, display.width(), display.height());
|
||||||
|
display.setRotation(1);
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
if (display.epd2.WIDTH < 104) display.setFont(0);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
const char* updatemode;
|
||||||
|
if (display.epd2.hasFastPartialUpdate)
|
||||||
|
{
|
||||||
|
updatemode = fpm;
|
||||||
|
}
|
||||||
|
else if (display.epd2.hasPartialUpdate)
|
||||||
|
{
|
||||||
|
updatemode = spm;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
updatemode = npm;
|
||||||
|
}
|
||||||
|
int16_t tbx, tby; uint16_t tbw, tbh;
|
||||||
|
// center update text
|
||||||
|
display.getTextBounds(fullscreen, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
what[0].text = fullscreen;
|
||||||
|
what[0].where.x = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
what[0].where.y = ((display.height() / 4) - tbh / 2) - tby;
|
||||||
|
// center update mode
|
||||||
|
display.getTextBounds(updatemode, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
what[1].text = updatemode;
|
||||||
|
what[1].where.x = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
what[1].where.y = ((display.height() * 3 / 4) - tbh / 2) - tby;
|
||||||
|
// center HelloWorld
|
||||||
|
display.getTextBounds(HelloWorld, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
what[2].text = HelloWorld;
|
||||||
|
what[2].where.x = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
what[2].where.y = ((display.height() - tbh) / 2) - tby;
|
||||||
|
display.drawPaged(helloFullScreenPartialModeCallback, &what);
|
||||||
|
//Serial.println("helloFullScreenPartialMode done");
|
||||||
|
}
|
||||||
|
|
||||||
|
void helloArduinoCallback(const void* p)
|
||||||
|
{
|
||||||
|
const coordinates& where(*reinterpret_cast<const coordinates*>(p));
|
||||||
|
display.setCursor(where.x, where.y);
|
||||||
|
display.print(HelloArduino);
|
||||||
|
}
|
||||||
|
|
||||||
|
void helloArduino()
|
||||||
|
{
|
||||||
|
//Serial.println("helloArduino");
|
||||||
|
coordinates cursor;
|
||||||
|
display.setRotation(1);
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
if (display.epd2.WIDTH < 104) display.setFont(0);
|
||||||
|
display.setTextColor(display.epd2.hasColor ? GxEPD_RED : GxEPD_BLACK);
|
||||||
|
int16_t tbx, tby; uint16_t tbw, tbh;
|
||||||
|
// align with centered HelloWorld
|
||||||
|
display.getTextBounds(HelloWorld, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
cursor.x = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
// height might be different
|
||||||
|
display.getTextBounds(HelloArduino, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
cursor.y = ((display.height() / 4) - tbh / 2) - tby; // y is base line!
|
||||||
|
// make the window big enough to cover (overwrite) descenders of previous text
|
||||||
|
uint16_t wh = FreeMonoBold9pt7b.yAdvance;
|
||||||
|
uint16_t wy = (display.height() / 4) - wh / 2;
|
||||||
|
display.setPartialWindow(0, wy, display.width(), wh);
|
||||||
|
display.drawPaged(helloArduinoCallback, &cursor);
|
||||||
|
delay(1000);
|
||||||
|
//Serial.println("helloArduino done");
|
||||||
|
}
|
||||||
|
|
||||||
|
void helloEpaperCallback(const void* p)
|
||||||
|
{
|
||||||
|
const coordinates& where(*reinterpret_cast<const coordinates*>(p));
|
||||||
|
display.setCursor(where.x, where.y);
|
||||||
|
display.print(HelloEpaper);
|
||||||
|
}
|
||||||
|
|
||||||
|
void helloEpaper()
|
||||||
|
{
|
||||||
|
//Serial.println("helloEpaper");
|
||||||
|
coordinates cursor;
|
||||||
|
display.setRotation(1);
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
if (display.epd2.WIDTH < 104) display.setFont(0);
|
||||||
|
display.setTextColor(display.epd2.hasColor ? GxEPD_RED : GxEPD_BLACK);
|
||||||
|
int16_t tbx, tby; uint16_t tbw, tbh;
|
||||||
|
// align with centered HelloWorld
|
||||||
|
display.getTextBounds(HelloWorld, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
cursor.x = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
// height might be different
|
||||||
|
display.getTextBounds(HelloEpaper, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
cursor.y = ((display.height() * 3 / 4) - tbh / 2) - tby; // y is base line!
|
||||||
|
// make the window big enough to cover (overwrite) descenders of previous text
|
||||||
|
uint16_t wh = FreeMonoBold9pt7b.yAdvance;
|
||||||
|
uint16_t wy = (display.height() * 3 / 4) - wh / 2;
|
||||||
|
display.setPartialWindow(0, wy, display.width(), wh);
|
||||||
|
display.drawPaged(helloEpaperCallback, &cursor);
|
||||||
|
//Serial.println("helloEpaper done");
|
||||||
|
}
|
||||||
|
|
||||||
|
struct DrawFontParameters
|
||||||
|
{
|
||||||
|
const char* name;
|
||||||
|
const GFXfont* f;
|
||||||
|
};
|
||||||
|
|
||||||
|
void showFont(const char name[], const GFXfont* f)
|
||||||
|
{
|
||||||
|
DrawFontParameters fontParameters{name, f};
|
||||||
|
display.setFullWindow();
|
||||||
|
display.setRotation(0);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
display.drawPaged(drawFontCallback, &fontParameters);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawFontCallback(const void* parameters)
|
||||||
|
{
|
||||||
|
const DrawFontParameters* p = reinterpret_cast<const DrawFontParameters*>(parameters);
|
||||||
|
//display.setRotation(0);
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
display.setFont(p->f);
|
||||||
|
display.setCursor(0, 0);
|
||||||
|
display.println();
|
||||||
|
display.println(p->name);
|
||||||
|
display.println(" !\"#$%&'()*+,-./");
|
||||||
|
display.println("0123456789:;<=>?");
|
||||||
|
display.println("@ABCDEFGHIJKLMNO");
|
||||||
|
display.println("PQRSTUVWXYZ[\\]^_");
|
||||||
|
if (display.epd2.hasColor)
|
||||||
|
{
|
||||||
|
display.setTextColor(GxEPD_RED);
|
||||||
|
}
|
||||||
|
display.println("`abcdefghijklmno");
|
||||||
|
display.println("pqrstuvwxyz{|}~ ");
|
||||||
|
}
|
||||||
|
|
||||||
|
struct ShowBoxParameters
|
||||||
|
{
|
||||||
|
uint16_t x, y, w, h;
|
||||||
|
uint16_t color;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ShowValueParameters
|
||||||
|
{
|
||||||
|
uint16_t x, y, w, h, cursor_y;
|
||||||
|
float value;
|
||||||
|
};
|
||||||
|
|
||||||
|
void showBoxCallback(const void* parameters)
|
||||||
|
{
|
||||||
|
const ShowBoxParameters* p = reinterpret_cast<const ShowBoxParameters*>(parameters);
|
||||||
|
display.fillRect(p->x, p->y, p->w, p->h, p->color);
|
||||||
|
}
|
||||||
|
|
||||||
|
void showValueBoxCallback(const void* parameters)
|
||||||
|
{
|
||||||
|
const ShowValueParameters* p = reinterpret_cast<const ShowValueParameters*>(parameters);
|
||||||
|
display.fillRect(p->x, p->y, p->w, p->h, GxEPD_WHITE);
|
||||||
|
display.setCursor(p->x, p->cursor_y);
|
||||||
|
display.print(p->value);
|
||||||
|
}
|
||||||
|
|
||||||
|
void showPartialUpdate()
|
||||||
|
{
|
||||||
|
// some useful background
|
||||||
|
helloWorld();
|
||||||
|
// use asymmetric values for test
|
||||||
|
ShowBoxParameters boxParameters{10, 15, 70, 20, GxEPD_WHITE};
|
||||||
|
ShowValueParameters valueParameters{10, 15, 70, 20, 0, 13.95};
|
||||||
|
valueParameters.cursor_y = valueParameters.y + valueParameters.h - 6;
|
||||||
|
float value = 13.95;
|
||||||
|
uint16_t incr = display.epd2.hasFastPartialUpdate ? 1 : 3;
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
// show where the update box is
|
||||||
|
for (uint16_t r = 0; r < 4; r++)
|
||||||
|
{
|
||||||
|
display.setRotation(r);
|
||||||
|
display.setPartialWindow(boxParameters.x, boxParameters.y, boxParameters.w, boxParameters.h);
|
||||||
|
boxParameters.color = GxEPD_BLACK;
|
||||||
|
display.drawPaged(showBoxCallback, &boxParameters);
|
||||||
|
delay(2000);
|
||||||
|
boxParameters.color = GxEPD_WHITE;
|
||||||
|
display.drawPaged(showBoxCallback, &boxParameters);
|
||||||
|
while (display.nextPage());
|
||||||
|
delay(1000);
|
||||||
|
}
|
||||||
|
// show updates in the update box
|
||||||
|
for (uint16_t r = 0; r < 4; r++)
|
||||||
|
{
|
||||||
|
display.setRotation(r);
|
||||||
|
display.setPartialWindow(boxParameters.x, boxParameters.y, boxParameters.w, boxParameters.h);
|
||||||
|
for (uint16_t i = 1; i <= 10; i += incr)
|
||||||
|
{
|
||||||
|
valueParameters.value = value * i;
|
||||||
|
display.drawPaged(showValueBoxCallback, &valueParameters);
|
||||||
|
delay(500);
|
||||||
|
}
|
||||||
|
delay(1000);
|
||||||
|
boxParameters.color = GxEPD_WHITE;
|
||||||
|
display.drawPaged(showBoxCallback, &boxParameters);
|
||||||
|
delay(1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void showBox(uint16_t x, uint16_t y, uint16_t w, uint16_t h, bool partial)
|
||||||
|
{
|
||||||
|
//Serial.println("showBox");
|
||||||
|
ShowBoxParameters boxParameters{x, y, w, h, GxEPD_BLACK};
|
||||||
|
display.setRotation(1);
|
||||||
|
if (partial)
|
||||||
|
{
|
||||||
|
display.setPartialWindow(x, y, w, h);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
display.setFullWindow();
|
||||||
|
}
|
||||||
|
display.drawPaged(showBoxCallback, &boxParameters);
|
||||||
|
//Serial.println("showBox done");
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawCornerTestCallback(const void*)
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.fillRect(0, 0, 8, 8, GxEPD_BLACK);
|
||||||
|
display.fillRect(display.width() - 18, 0, 16, 16, GxEPD_BLACK);
|
||||||
|
display.fillRect(display.width() - 25, display.height() - 25, 24, 24, GxEPD_BLACK);
|
||||||
|
display.fillRect(0, display.height() - 33, 32, 32, GxEPD_BLACK);
|
||||||
|
display.setCursor(display.width() / 2, display.height() / 2);
|
||||||
|
display.print(display.getRotation());
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawCornerTest()
|
||||||
|
{
|
||||||
|
display.setFullWindow();
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
for (uint16_t r = 0; r <= 4; r++)
|
||||||
|
{
|
||||||
|
display.setRotation(r);
|
||||||
|
display.drawPaged(drawCornerTestCallback, 0);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmaps()
|
||||||
|
{
|
||||||
|
display.setFullWindow();
|
||||||
|
#ifdef _GxBitmaps128x250_H_
|
||||||
|
drawBitmaps128x250();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps128x296_H_
|
||||||
|
drawBitmaps128x296();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps176x264_H_
|
||||||
|
drawBitmaps176x264();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps400x300_H_
|
||||||
|
drawBitmaps400x300();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps640x384_H_
|
||||||
|
drawBitmaps640x384();
|
||||||
|
#endif
|
||||||
|
// 3-color
|
||||||
|
#ifdef _GxBitmaps3c104x212_H_
|
||||||
|
drawBitmaps3c104x212();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps3c128x296_H_
|
||||||
|
drawBitmaps3c128x296();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps3c176x264_H_
|
||||||
|
drawBitmaps3c176x264();
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps3c400x300_H_
|
||||||
|
drawBitmaps3c400x300();
|
||||||
|
#endif
|
||||||
|
// show these after the specific bitmaps
|
||||||
|
#ifdef _GxBitmaps200x200_H_
|
||||||
|
drawBitmaps200x200();
|
||||||
|
#endif
|
||||||
|
// 3-color
|
||||||
|
#ifdef _GxBitmaps3c200x200_H_
|
||||||
|
drawBitmaps3c200x200();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawInvertedBitmapCallback(const void* parameter)
|
||||||
|
{
|
||||||
|
const uint8_t* bitmap = reinterpret_cast<const uint8_t*>(parameter);
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmap, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps200x200_H_
|
||||||
|
void drawBitmaps200x200()
|
||||||
|
{
|
||||||
|
#if defined(__AVR)
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
logo200x200, first200x200 //, second200x200, third200x200, fourth200x200, fifth200x200, sixth200x200, senventh200x200, eighth200x200
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
logo200x200, first200x200, second200x200, third200x200, fourth200x200, fifth200x200, sixth200x200, senventh200x200, eighth200x200
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
if ((display.epd2.panel == GxEPD2::GDEP015OC1) || (display.epd2.panel == GxEPD2::GDEH0154D67))
|
||||||
|
{
|
||||||
|
bool m = display.mirror(true);
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.drawPaged(drawInvertedBitmapCallback, bitmaps[i]);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
display.mirror(m);
|
||||||
|
}
|
||||||
|
//else
|
||||||
|
{
|
||||||
|
bool mirror_y = (display.epd2.panel != GxEPD2::GDE0213B1);
|
||||||
|
display.clearScreen(); // use default for white
|
||||||
|
uint16_t x = (display.epd2.WIDTH - 200) / 2;
|
||||||
|
uint16_t y = (display.epd2.HEIGHT - 200) / 2;
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.drawImage(bitmaps[i], x, y, 200, 200, false, mirror_y, true);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
bool mirror_y = (display.epd2.panel != GxEPD2::GDE0213B1);
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
int16_t x = -60;
|
||||||
|
int16_t y = -60;
|
||||||
|
for (uint16_t j = 0; j < 10; j++)
|
||||||
|
{
|
||||||
|
display.writeScreenBuffer(); // use default for white
|
||||||
|
display.writeImage(bitmaps[i], x, y, 200, 200, false, mirror_y, true);
|
||||||
|
display.refresh(true);
|
||||||
|
if (display.epd2.hasFastPartialUpdate)
|
||||||
|
{
|
||||||
|
// for differential update: set previous buffer equal to current buffer in controller
|
||||||
|
display.epd2.writeScreenBufferAgain(); // use default for white
|
||||||
|
display.epd2.writeImageAgain(bitmaps[i], x, y, 200, 200, false, mirror_y, true);
|
||||||
|
}
|
||||||
|
delay(2000);
|
||||||
|
x += 40;
|
||||||
|
y += 40;
|
||||||
|
if ((x >= display.epd2.WIDTH) || (y >= display.epd2.HEIGHT)) break;
|
||||||
|
}
|
||||||
|
if (!display.epd2.hasFastPartialUpdate) break; // comment out for full show
|
||||||
|
break; // comment out for full show
|
||||||
|
}
|
||||||
|
display.writeScreenBuffer(); // use default for white
|
||||||
|
display.writeImage(bitmaps[0], 0, 0, 200, 200, false, mirror_y, true);
|
||||||
|
display.writeImage(bitmaps[0], display.epd2.WIDTH - 200, display.epd2.HEIGHT - 200, 200, 200, false, mirror_y, true);
|
||||||
|
display.refresh(true);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps128x250_H_
|
||||||
|
void drawBitmaps128x250()
|
||||||
|
{
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap128x250_1, logo128x250, first128x250, second128x250, third128x250
|
||||||
|
};
|
||||||
|
if (display.epd2.panel == GxEPD2::GDE0213B1)
|
||||||
|
{
|
||||||
|
bool m = display.mirror(true);
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.drawPaged(drawInvertedBitmapCallback, bitmaps[i]);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
display.mirror(m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps128x296_H_
|
||||||
|
void drawBitmaps128x296()
|
||||||
|
{
|
||||||
|
#if !defined(__AVR)
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap128x296_1, logo128x296, first128x296, second128x296, third128x296
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap128x296_1, logo128x296 //, first128x296, second128x296, third128x296
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEH029A1)
|
||||||
|
{
|
||||||
|
bool m = display.mirror(true);
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.drawPaged(drawInvertedBitmapCallback, bitmaps[i]);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
display.mirror(m);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps176x264_H_
|
||||||
|
void drawBitmaps176x264()
|
||||||
|
{
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap176x264_1, Bitmap176x264_2
|
||||||
|
};
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW027W3)
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.drawPaged(drawInvertedBitmapCallback, bitmaps[i]);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps400x300_H_
|
||||||
|
void drawBitmaps400x300()
|
||||||
|
{
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap400x300_1, Bitmap400x300_2
|
||||||
|
};
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW042T2)
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.drawPaged(drawInvertedBitmapCallback, bitmaps[i]);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps640x384_H_
|
||||||
|
void drawBitmaps640x384()
|
||||||
|
{
|
||||||
|
const unsigned char* bitmaps[] =
|
||||||
|
{
|
||||||
|
Bitmap640x384_1, Bitmap640x384_2
|
||||||
|
};
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW075T8)
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmaps) / sizeof(char*); i++)
|
||||||
|
{
|
||||||
|
display.drawPaged(drawInvertedBitmapCallback, bitmaps[i]);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
struct bitmap_pair
|
||||||
|
{
|
||||||
|
const unsigned char* black;
|
||||||
|
const unsigned char* red;
|
||||||
|
};
|
||||||
|
|
||||||
|
void drawBitmapPairCallback(const void* parameters)
|
||||||
|
{
|
||||||
|
const bitmap_pair* bitmaps = reinterpret_cast<const bitmap_pair*>(parameters);
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawBitmap(0, 0, bitmaps->black, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
display.drawBitmap(0, 0, bitmaps->red, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_RED);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawInvertedBitmapPairCallback(const void* parameters)
|
||||||
|
{
|
||||||
|
const bitmap_pair* bitmaps = reinterpret_cast<const bitmap_pair*>(parameters);
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmaps->black, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmaps->red, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_RED);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawSpecialBitmapPairCallback(const void* parameters)
|
||||||
|
{
|
||||||
|
const bitmap_pair* bitmaps = reinterpret_cast<const bitmap_pair*>(parameters);
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
// Bitmap3c200x200_black has 2 bits per pixel
|
||||||
|
// taken from Adafruit_GFX.cpp, modified
|
||||||
|
int16_t byteWidth = (display.epd2.WIDTH + 7) / 8; // Bitmap scanline pad = whole byte
|
||||||
|
uint8_t byte = 0;
|
||||||
|
for (int16_t j = 0; j < display.epd2.HEIGHT; j++)
|
||||||
|
{
|
||||||
|
for (int16_t i = 0; i < display.epd2.WIDTH; i++)
|
||||||
|
{
|
||||||
|
if (i & 3) byte <<= 2;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
|
||||||
|
byte = pgm_read_byte(&bitmaps->black[j * byteWidth * 2 + i / 4]);
|
||||||
|
#else
|
||||||
|
byte = bitmaps->black[j * byteWidth * 2 + i / 4];
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
if (!(byte & 0x80))
|
||||||
|
{
|
||||||
|
display.drawPixel(i, j, GxEPD_BLACK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmaps->red, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_RED);
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps3c200x200_H_
|
||||||
|
void drawBitmaps3c200x200()
|
||||||
|
{
|
||||||
|
bitmap_pair bitmap_pairs[] =
|
||||||
|
{
|
||||||
|
//{Bitmap3c200x200_black, Bitmap3c200x200_red}, // special
|
||||||
|
{WS_Bitmap3c200x200_black, WS_Bitmap3c200x200_red}
|
||||||
|
};
|
||||||
|
bitmap_pair special_bitmap{Bitmap3c200x200_black, Bitmap3c200x200_red};
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW0154Z04)
|
||||||
|
{
|
||||||
|
display.drawPaged(drawSpecialBitmapPairCallback, &special_bitmap);
|
||||||
|
delay(2000);
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmap_pairs) / sizeof(bitmap_pair); i++)
|
||||||
|
{
|
||||||
|
display.drawPaged(drawInvertedBitmapPairCallback, &bitmap_pairs[i]);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (display.epd2.hasColor)
|
||||||
|
{
|
||||||
|
display.clearScreen(); // use default for white
|
||||||
|
uint16_t x = (display.epd2.WIDTH - 200) / 2;
|
||||||
|
uint16_t y = (display.epd2.HEIGHT - 200) / 2;
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmap_pairs) / sizeof(bitmap_pair); i++)
|
||||||
|
{
|
||||||
|
display.drawImage(bitmap_pairs[i].black, bitmap_pairs[i].red, x, y, 200, 200, false, false, true);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmap_pairs) / sizeof(bitmap_pair); i++)
|
||||||
|
{
|
||||||
|
int16_t x = -60;
|
||||||
|
int16_t y = -60;
|
||||||
|
for (uint16_t j = 0; j < 10; j++)
|
||||||
|
{
|
||||||
|
display.writeScreenBuffer(); // use default for white
|
||||||
|
display.writeImage(bitmap_pairs[i].black, bitmap_pairs[i].red, x, y, 200, 200, false, false, true);
|
||||||
|
display.refresh();
|
||||||
|
delay(2000);
|
||||||
|
x += 40;
|
||||||
|
y += 40;
|
||||||
|
if ((x >= display.epd2.WIDTH) || (y >= display.epd2.HEIGHT)) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
display.writeScreenBuffer(); // use default for white
|
||||||
|
display.writeImage(bitmap_pairs[0].black, bitmap_pairs[0].red, 0, 0, 200, 200, false, false, true);
|
||||||
|
display.writeImage(bitmap_pairs[0].black, bitmap_pairs[0].red, display.epd2.WIDTH - 200, display.epd2.HEIGHT - 200, 200, 200, false, false, true);
|
||||||
|
display.refresh();
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps3c104x212_H_
|
||||||
|
void drawBitmapPairCallback3c104x212(const void* parameters)
|
||||||
|
{
|
||||||
|
const bitmap_pair* bitmaps = reinterpret_cast<const bitmap_pair*>(parameters);
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmaps->black, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
if (bitmaps->red == WS_Bitmap3c104x212_red)
|
||||||
|
{
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmaps->red, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_RED);
|
||||||
|
}
|
||||||
|
else display.drawBitmap(0, 0, bitmaps->red, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_RED);
|
||||||
|
}
|
||||||
|
void drawBitmaps3c104x212()
|
||||||
|
{
|
||||||
|
#if !defined(__AVR)
|
||||||
|
bitmap_pair bitmap_pairs[] =
|
||||||
|
{
|
||||||
|
{Bitmap3c104x212_1_black, Bitmap3c104x212_1_red},
|
||||||
|
{Bitmap3c104x212_2_black, Bitmap3c104x212_2_red},
|
||||||
|
{WS_Bitmap3c104x212_black, WS_Bitmap3c104x212_red}
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
bitmap_pair bitmap_pairs[] =
|
||||||
|
{
|
||||||
|
{Bitmap3c104x212_1_black, Bitmap3c104x212_1_red},
|
||||||
|
//{Bitmap3c104x212_2_black, Bitmap3c104x212_2_red},
|
||||||
|
{WS_Bitmap3c104x212_black, WS_Bitmap3c104x212_red}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW0213Z16)
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmap_pairs) / sizeof(bitmap_pair); i++)
|
||||||
|
{
|
||||||
|
display.drawPaged(drawBitmapPairCallback3c104x212, &bitmap_pairs[i]);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps3c128x296_H_
|
||||||
|
void drawBitmapPairCallback3c128x296(const void* parameters)
|
||||||
|
{
|
||||||
|
const bitmap_pair* bitmaps = reinterpret_cast<const bitmap_pair*>(parameters);
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmaps->black, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_BLACK);
|
||||||
|
if (bitmaps->red == WS_Bitmap3c128x296_red)
|
||||||
|
{
|
||||||
|
display.drawInvertedBitmap(0, 0, bitmaps->red, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_RED);
|
||||||
|
}
|
||||||
|
else display.drawBitmap(0, 0, bitmaps->red, display.epd2.WIDTH, display.epd2.HEIGHT, GxEPD_RED);
|
||||||
|
}
|
||||||
|
void drawBitmaps3c128x296()
|
||||||
|
{
|
||||||
|
#if !defined(__AVR)
|
||||||
|
bitmap_pair bitmap_pairs[] =
|
||||||
|
{
|
||||||
|
{Bitmap3c128x296_1_black, Bitmap3c128x296_1_red},
|
||||||
|
{Bitmap3c128x296_2_black, Bitmap3c128x296_2_red},
|
||||||
|
{WS_Bitmap3c128x296_black, WS_Bitmap3c128x296_red}
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
bitmap_pair bitmap_pairs[] =
|
||||||
|
{
|
||||||
|
//{Bitmap3c128x296_1_black, Bitmap3c128x296_1_red},
|
||||||
|
//{Bitmap3c128x296_2_black, Bitmap3c128x296_2_red},
|
||||||
|
{WS_Bitmap3c128x296_black, WS_Bitmap3c128x296_red}
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW029Z10)
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmap_pairs) / sizeof(bitmap_pair); i++)
|
||||||
|
{
|
||||||
|
display.drawPaged(drawBitmapPairCallback3c128x296, &bitmap_pairs[i]);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps3c176x264_H_
|
||||||
|
void drawBitmaps3c176x264()
|
||||||
|
{
|
||||||
|
bitmap_pair bitmap_pairs[] =
|
||||||
|
{
|
||||||
|
{Bitmap3c176x264_black, Bitmap3c176x264_red}
|
||||||
|
};
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW027C44)
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmap_pairs) / sizeof(bitmap_pair); i++)
|
||||||
|
{
|
||||||
|
display.drawPaged(drawBitmapPairCallback, &bitmap_pairs[i]);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef _GxBitmaps3c400x300_H_
|
||||||
|
void drawBitmaps3c400x300()
|
||||||
|
{
|
||||||
|
#if !defined(__AVR)
|
||||||
|
bitmap_pair bitmap_pairs[] =
|
||||||
|
{
|
||||||
|
{Bitmap3c400x300_1_black, Bitmap3c400x300_1_red},
|
||||||
|
{Bitmap3c400x300_2_black, Bitmap3c400x300_2_red},
|
||||||
|
{WS_Bitmap3c400x300_black, WS_Bitmap3c400x300_red}
|
||||||
|
};
|
||||||
|
#else
|
||||||
|
bitmap_pair bitmap_pairs[] = {}; // not enough code space
|
||||||
|
#endif
|
||||||
|
if (display.epd2.panel == GxEPD2::GDEW042Z15)
|
||||||
|
{
|
||||||
|
for (uint16_t i = 0; i < sizeof(bitmap_pairs) / sizeof(bitmap_pair); i++)
|
||||||
|
{
|
||||||
|
display.drawPaged(drawInvertedBitmapPairCallback, &bitmap_pairs[i]);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,374 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// NOTE: you may need to adapt or select for your wiring in the processor specific conditional compile sections below
|
||||||
|
|
||||||
|
// select the display class (only one), matching the kind of display panel
|
||||||
|
#define GxEPD2_DISPLAY_CLASS GxEPD2_BW
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_3C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_4C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_7C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_BW_SHM
|
||||||
|
|
||||||
|
// select the display driver class (only one) for your panel
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_102 // GDEW0102T4 80x128, UC8175, (WFT0102CZA2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_150_BN // DEPG0150BN 200x200, SSD1681, (FPC8101), TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154 // GDEP015OC1 200x200, IL3829, (WFC0000CZ07), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_D67 // GDEH0154D67 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_T8 // GDEW0154T8 152x152, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M09 // GDEW0154M09 200x200, JD79653A, (WFT0154CZB3)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M10 // GDEW0154M10 152x152, UC8151D, (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_GDEY0154D67 // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213 // GDE0213B1 122x250, IL3895, (HINK-E0213-G01), phased out
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B72 // GDEH0213B72 122x250, SSD1675A (IL3897), (HINK-E0213A22-A0 SLH1852)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B73 // GDEH0213B73 122x250, SSD1675B, (HINK-E0213A22-A0 SLH1914)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B74 // GDEM0213B74 122x250, SSD1680, FPC-7528B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_flex // GDEW0213I5F 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_M21 // GDEW0213M21 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_T5D // GDEW0213T5D 104x212, UC8151D, (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_BN // DEPG0213BN 122x250, SSD1680, (FPC-7528B), TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_GDEY0213B74 // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260 // GDEW026T0 152x296, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260_M01 // GDEW026M01 152x296, UC8151 (IL0373), (WFT0260CZB2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_BN // DEPG0266BN 152x296, SSD1680, (FPC7510), TTGO T5 V2.66, TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_GDEY0266T90 // GDEY0266T90 152x296, SSD1680, (FPC-A003 HB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270 // GDEW027W3 176x264, EK79652 (IL91874), (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270_GDEY027T91 // GDEY027T91 176x264, SSD1680, (FB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290 // GDEH029A1 128x296, SSD1608 (IL3820), (E029A01-FPC-A1 SYX1553)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5 // GDEW029T5 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5D // GDEW029T5D 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_I6FD // GDEW029I6FD 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94_V2 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b), Waveshare 2.9" V2 variant
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_BS // DEPG0290BS 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_M06 // GDEW029M06 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T94 // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T71H // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_310_GDEQ031T10 // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_GDEY037T03 // GDEY037T03 240x416, UC8253, (FPC-F002, hidden on CrowPanel)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1 280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_371 // GDEW0371W7 240x416, UC8171 (IL0324), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397_GDEM0397T81 // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420 // GDEW042T2 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GYE042A87 // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_SE0420NQ04 // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_576_GDEH0576T81 // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579_GDEY0579T93 // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583 // GDEW0583T7 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8 // GDEW0583T8 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750 // GDEW075T8 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_T7 // GDEW075T7 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_GDEY075T7 // GDEY075T7 800x480, UC8179 (GD7965), (FPC-C001 20.08.20)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1020_GDEM102T91 // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1085_GDEM1085T51 // GDEM1085T51 1360x480, JD79686AB, (FPC8617) *** needs CS2 ***
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160_T91 // GDEH116T91 960x640, SSD1677, (none or hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248 // GDEW1248T3 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330_GDEM133T91 // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c // GDEW0154Z04 200x200, IL0376F, (WFT0000CZ04), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_Z90c // GDEH0154Z90 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c // GDEW0213Z16 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z19c // GDEH0213Z19 104x212, UC8151D, (HINK-E0213A20-A2 2020-11-19)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z98c // GDEY0213Z98 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c // GDEY0266Z90 152x296, SSD1680, (FPC-7510)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270c // GDEW027C44 176x264, IL91874, (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c // GDEW029Z10 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_Z13c // GDEH029Z13 128x296, UC8151D, (HINK-E029A10-A3 20160809)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_C90c // GDEM029C90 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c // GDEW042Z15 400x300, UC8176 (IL0398), (WFT0420CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_Z21 // GDEQ042Z21 400x300, UC8276, (hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY042Z98 // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579Z93 // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c // GDEW0583Z21 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_Z83 // GDEW0583Z83 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_GDEQ0583Z31 // GDEQ0583Z31 648x480, UC8179C,
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c // GDEW075Z09 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z08 // GDEW075Z08 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90 880x528, SSD1677, (HINK-E075A07-A0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEW075Z08 // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEY075Z08 // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116Z91 // GDEY116Z91 960x640, SSD1677, (FPV-K002 22.04.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248c // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330c_GDEM133Z91 // GDEM133Z91 960x680, SSD1677 (FPC-7701 REV.B)
|
||||||
|
// 4-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c_GDEM0154F51H // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c_GDEY0213F51 // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_300c // Waveshare 3.00" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_350c_GDEM035F51 // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397c_GDEM0397F81 // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_437c // Waveshare 4.37" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579F51 // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEM075F52 // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116F51 // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c_GDEP0565D90 // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEY073D46 // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_ACeP_730 // Waveshare 7.3" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEP073E01 // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60 // ED060SCT 800x600
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60_1448x1072 // ED060KC1 1448x1072
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it78_1872x1404 // ED078KC2 1872x1404
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it103_1872x1404 // ES103TC1 1872x1404
|
||||||
|
|
||||||
|
// SS is usually used for CS. define here for easy change
|
||||||
|
#ifndef EPD_CS
|
||||||
|
#define EPD_CS SS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
||||||
|
|
||||||
|
// somehow there should be an easier way to do this
|
||||||
|
#define GxEPD2_BW_IS_GxEPD2_BW true
|
||||||
|
#define GxEPD2_3C_IS_GxEPD2_3C true
|
||||||
|
#define GxEPD2_4C_IS_GxEPD2_4C true
|
||||||
|
#define GxEPD2_7C_IS_GxEPD2_7C true
|
||||||
|
#define GxEPD2_BW_SHM_IS_GxEPD2_BW_SHM true
|
||||||
|
#define GxEPD2_1248_IS_GxEPD2_1248 true
|
||||||
|
#define GxEPD2_1248c_IS_GxEPD2_1248c true
|
||||||
|
#define IS_GxEPD(c, x) (c##x)
|
||||||
|
#define IS_GxEPD2_BW(x) IS_GxEPD(GxEPD2_BW_IS_, x)
|
||||||
|
#define IS_GxEPD2_3C(x) IS_GxEPD(GxEPD2_3C_IS_, x)
|
||||||
|
#define IS_GxEPD2_4C(x) IS_GxEPD(GxEPD2_4C_IS_, x)
|
||||||
|
#define IS_GxEPD2_7C(x) IS_GxEPD(GxEPD2_7C_IS_, x)
|
||||||
|
#define IS_GxEPD2_BW_SHM(x) IS_GxEPD(GxEPD2_BW_SHM_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248(x) IS_GxEPD(GxEPD2_1248_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248c(x) IS_GxEPD(GxEPD2_1248c_IS_, x)
|
||||||
|
|
||||||
|
#include "GxEPD2_selection_check.h"
|
||||||
|
|
||||||
|
// for my test use only
|
||||||
|
//#if defined(_AVR)
|
||||||
|
//#warning "defined(_AVR)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ESP32)
|
||||||
|
//#warning "defined(ESP32)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
//#warning "defined(ARDUINO_ARCH_ESP32)"
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_AVR)
|
||||||
|
#if defined (ARDUINO_AVR_MEGA2560) // Note: SS is on 53 on MEGA
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#elif defined(ARDUINO_AVR_NANO_EVERY)
|
||||||
|
#define EPD_CS 10
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#else // Note: SS is on 10 on UNO, NANO
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 800 //
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
// for Arduino Micro or Arduino Leonardo with CS on 10 on my proto boards (SS would be 17) uncomment instead:
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_MEGAAVR)
|
||||||
|
#if defined(ARDUINO_AVR_NANO_EVERY) || defined(ARDUINO_AVR_UNO_WIFI_REV2)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 65536ul // e.g.
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
#if !IS_GxEPD2_1248(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_1248c(GxEPD2_DRIVER_CLASS)
|
||||||
|
#if defined(ARDUINO_NANO_ESP32) // uses Dx pin names
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ D10, /*DC=*/ D8, /*RST=*/ D9, /*BUSY=*/ D7));
|
||||||
|
#elif defined(ARDUINO_LOLIN_D32_PRO)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // my LOLIN_D32_PRO proto board
|
||||||
|
#elif defined(ARDUINO_LOLIN_S2_MINI)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 33, /*DC=*/ 35, /*RST=*/ 37, /*BUSY=*/ 39)); // my LOLIN ESP32 S2 mini connection
|
||||||
|
#elif defined(ARDUINO_ESP32S3_DEV)
|
||||||
|
// ESP32E6-E01 : only 50 pin FPC works on actual version (11.1.2025)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 2, /*DC=*/ 3, /*RST=*/ 4, /*BUSY=*/ 5)); // Good Display ESP32E6-E01 board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 45, /*DC=*/ 46, /*RST=*/ 47, /*BUSY=*/ 48)); // CrowPanel wiring
|
||||||
|
#else
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13)); // Good Display ESP32 Development Kit ESP32-L
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13, /*CS2=*/ 4)); // for GDEM1085T51 with ESP32-L
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // my suggested wiring and proto board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ 5, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // LILYGO_T5_V2.4.1
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 19, /*RST=*/ 4, /*BUSY=*/ 34)); // LILYGO® TTGO T5 2.66
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // e.g. TTGO T8 ESP32-WROVER
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare ESP32 Driver Board
|
||||||
|
#endif
|
||||||
|
#else // GxEPD2_1248 or GxEPD2_1248c
|
||||||
|
// Waveshare 12.48 b/w or b/w/r SPI display board and frame or Good Display 12.48 b/w panel GDEW1248T3 or b/w/r panel GDEY1248Z51
|
||||||
|
// general constructor for use with all parameters, e.g. for Waveshare ESP32 driver board mounted on connection board
|
||||||
|
GxEPD2_DISPLAY_CLASS < GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS) > display(GxEPD2_DRIVER_CLASS(/*sck=*/ 13, /*miso=*/ 12, /*mosi=*/ 14,
|
||||||
|
/*cs_m1=*/ 23, /*cs_s1=*/ 22, /*cs_m2=*/ 16, /*cs_s2=*/ 19,
|
||||||
|
/*dc1=*/ 25, /*dc2=*/ 17, /*rst1=*/ 33, /*rst2=*/ 5,
|
||||||
|
/*busy_m1=*/ 32, /*busy_s1=*/ 26, /*busy_m2=*/ 18, /*busy_s2=*/ 4));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (ARDUINO_ARCH_ESP8266)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE (81920ul-34000ul-5000ul) // ~34000 base use, change 5000 to your application use
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=D8*/ EPD_CS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// can't use package "STMF1 Boards (STM32Duino.com)" (Roger Clark) anymore with Adafruit_GFX, use "STM32 Boards (selected from submenu)" (STMicroelectronics)
|
||||||
|
#if defined(ARDUINO_ARCH_STM32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
// for Good Display STM32 Development Kit DESPI-L.
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13, /*CS2=*/ PD12)); // for GDEM1085T51
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=PA4*/ EPD_CS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // my proto board
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RENESAS)
|
||||||
|
#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAM)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAMD)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_SAMD_NANO_33_IOT)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#else
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 3, /*RST=*/ 2, /*BUSY=*/ 1)); // my Seed XIOA0
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // my other Seed XIOA0
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RP2040)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 131072ul // e.g. half of available ram
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_NANO_RP2040_CONNECT)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 5, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // my proto board
|
||||||
|
// mapping of GoodDisplay DESPI-PICO. NOTE: uses alternate HW SPI pins!
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
|
||||||
|
// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,165 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
#define GxEPD2_102_IS_BW true
|
||||||
|
#define GxEPD2_150_BN_IS_BW true
|
||||||
|
#define GxEPD2_154_IS_BW true
|
||||||
|
#define GxEPD2_154_D67_IS_BW true
|
||||||
|
#define GxEPD2_154_T8_IS_BW true
|
||||||
|
#define GxEPD2_154_M09_IS_BW true
|
||||||
|
#define GxEPD2_154_M10_IS_BW true
|
||||||
|
#define GxEPD2_154_GDEY0154D67_IS_BW true
|
||||||
|
#define GxEPD2_213_IS_BW true
|
||||||
|
#define GxEPD2_213_B72_IS_BW true
|
||||||
|
#define GxEPD2_213_B73_IS_BW true
|
||||||
|
#define GxEPD2_213_B74_IS_BW true
|
||||||
|
#define GxEPD2_213_flex_IS_BW true
|
||||||
|
#define GxEPD2_213_M21_IS_BW true
|
||||||
|
#define GxEPD2_213_T5D_IS_BW true
|
||||||
|
#define GxEPD2_213_BN_IS_BW true
|
||||||
|
#define GxEPD2_213_GDEY0213B74_IS_BW true
|
||||||
|
#define GxEPD2_260_IS_BW true
|
||||||
|
#define GxEPD2_260_M01_IS_BW true
|
||||||
|
#define GxEPD2_266_BN_IS_BW true
|
||||||
|
#define GxEPD2_266_GDEY0266T90_IS_BW true
|
||||||
|
#define GxEPD2_270_IS_BW true
|
||||||
|
#define GxEPD2_270_GDEY027T91_IS_BW true
|
||||||
|
#define GxEPD2_290_IS_BW true
|
||||||
|
#define GxEPD2_290_T5_IS_BW true
|
||||||
|
#define GxEPD2_290_T5D_IS_BW true
|
||||||
|
#define GxEPD2_290_I6FD_IS_BW true
|
||||||
|
#define GxEPD2_290_T94_IS_BW true
|
||||||
|
#define GxEPD2_290_T94_V2_IS_BW true
|
||||||
|
#define GxEPD2_290_BS_IS_BW true
|
||||||
|
#define GxEPD2_290_M06_IS_BW true
|
||||||
|
#define GxEPD2_290_GDEY029T94_IS_BW true
|
||||||
|
#define GxEPD2_290_GDEY029T71H_IS_BW true
|
||||||
|
#define GxEPD2_310_GDEQ031T10_IS_BW true
|
||||||
|
#define GxEPD2_371_IS_BW true
|
||||||
|
#define GxEPD2_370_TC1_IS_BW true
|
||||||
|
#define GxEPD2_370_GDEY037T03_IS_BW true
|
||||||
|
#define GxEPD2_397_GDEM0397T81_IS_BW true
|
||||||
|
#define GxEPD2_420_IS_BW true
|
||||||
|
#define GxEPD2_420_M01_IS_BW true
|
||||||
|
#define GxEPD2_420_GDEY042T81_IS_BW true
|
||||||
|
#define GxEPD2_420_GYE042A87_IS_BW true
|
||||||
|
#define GxEPD2_420_SE0420NQ04_IS_BW true
|
||||||
|
#define GxEPD2_426_GDEQ0426T82_IS_BW true
|
||||||
|
#define GxEPD2_576_GDEH0576T81_IS_BW true
|
||||||
|
#define GxEPD2_579_GDEY0579T93_IS_BW true
|
||||||
|
#define GxEPD2_583_IS_BW true
|
||||||
|
#define GxEPD2_583_T8_IS_BW true
|
||||||
|
#define GxEPD2_583_GDEQ0583T31_IS_BW true
|
||||||
|
#define GxEPD2_750_IS_BW true
|
||||||
|
#define GxEPD2_750_T7_IS_BW true
|
||||||
|
#define GxEPD2_750_GDEY075T7_IS_BW true
|
||||||
|
#define GxEPD2_1020_GDEM102T91_IS_BW true
|
||||||
|
#define GxEPD2_1085_GDEM1085T51_IS_BW true
|
||||||
|
#define GxEPD2_1160_T91_IS_BW true
|
||||||
|
#define GxEPD2_1248_IS_BW true
|
||||||
|
#define GxEPD2_1330_GDEM133T91_IS_BW true
|
||||||
|
#define GxEPD2_it60_IS_BW true
|
||||||
|
#define GxEPD2_it60_1448x1072_IS_BW true
|
||||||
|
#define GxEPD2_it78_1872x1404_IS_BW true
|
||||||
|
#define GxEPD2_it103_1872x1404_IS_BW true
|
||||||
|
// 3-color e-papers
|
||||||
|
#define GxEPD2_154c_IS_3C true
|
||||||
|
#define GxEPD2_154_Z90c_IS_3C true
|
||||||
|
#define GxEPD2_213c_IS_3C true
|
||||||
|
#define GxEPD2_213_Z19c_IS_3C true
|
||||||
|
#define GxEPD2_213_Z98c_IS_3C true
|
||||||
|
#define GxEPD2_266c_IS_3C true
|
||||||
|
#define GxEPD2_270c_IS_3C true
|
||||||
|
#define GxEPD2_290c_IS_3C true
|
||||||
|
#define GxEPD2_290_Z13c_IS_3C true
|
||||||
|
#define GxEPD2_290_C90c_IS_3C true
|
||||||
|
#define GxEPD2_420c_IS_3C true
|
||||||
|
#define GxEPD2_420c_Z21_IS_3C true
|
||||||
|
#define GxEPD2_420c_GDEY042Z98_IS_3C true
|
||||||
|
#define GxEPD2_579c_GDEY0579Z93_IS_3C true
|
||||||
|
#define GxEPD2_583c_IS_3C true
|
||||||
|
#define GxEPD2_583c_Z83_IS_3C true
|
||||||
|
#define GxEPD2_583c_GDEQ0583Z31_IS_3C true
|
||||||
|
#define GxEPD2_750c_IS_3C true
|
||||||
|
#define GxEPD2_750c_Z08_IS_3C true
|
||||||
|
#define GxEPD2_750c_Z90_IS_3C true
|
||||||
|
#define GxEPD2_750c_GDEW075Z08_IS_3C true
|
||||||
|
#define GxEPD2_750c_GDEY075Z08_IS_3C true
|
||||||
|
#define GxEPD2_1160c_GDEY116Z91_IS_3C true
|
||||||
|
#define GxEPD2_1248c_IS_3C true
|
||||||
|
#define GxEPD2_1330c_GDEM133Z91_IS_3C true
|
||||||
|
// 4-color e-paper
|
||||||
|
#define GxEPD2_154c_GDEM0154F51H_IS_4C true
|
||||||
|
#define GxEPD2_213c_GDEY0213F51_IS_4C true
|
||||||
|
#define GxEPD2_266c_GDEY0266F51H_IS_4C true
|
||||||
|
#define GxEPD2_290c_GDEY029F51H_IS_4C true
|
||||||
|
#define GxEPD2_300c_IS_4C true
|
||||||
|
#define GxEPD2_350c_GDEM035F51_IS_4C true
|
||||||
|
#define GxEPD2_397c_GDEM0397F81_IS_4C true
|
||||||
|
#define GxEPD2_420c_GDEY0420F51_IS_4C true
|
||||||
|
#define GxEPD2_437c_IS_4C true
|
||||||
|
#define GxEPD2_579c_GDEY0579F51_IS_4C true
|
||||||
|
#define GxEPD2_750c_GDEM075F52_IS_4C true
|
||||||
|
#define GxEPD2_1160c_GDEY116F51_IS_4C true
|
||||||
|
// 7-color e-paper
|
||||||
|
#define GxEPD2_565c_IS_7C true
|
||||||
|
#define GxEPD2_565c_GDEP0565D90_IS_7C true
|
||||||
|
#define GxEPD2_730c_GDEY073D46_IS_7C true
|
||||||
|
#define GxEPD2_730c_ACeP_730_IS_7C true
|
||||||
|
#define GxEPD2_730c_GDEP073E01_IS_7C true
|
||||||
|
|
||||||
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
||||||
|
#define IS_GxEPD2_DRIVER(c, x) (c##x)
|
||||||
|
#define IS_GxEPD2_DRIVER_BW(x) IS_GxEPD2_DRIVER(x, _IS_BW)
|
||||||
|
#define IS_GxEPD2_DRIVER_3C(x) IS_GxEPD2_DRIVER(x, _IS_3C)
|
||||||
|
#define IS_GxEPD2_DRIVER_4C(x) IS_GxEPD2_DRIVER(x, _IS_4C)
|
||||||
|
#define IS_GxEPD2_DRIVER_7C(x) IS_GxEPD2_DRIVER(x, _IS_7C)
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 3-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 4-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with b/w driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with 4-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with b/w driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with 3-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS) && !IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_7C used with less colors driver class"
|
||||||
|
#endif
|
||||||
|
#if !IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "neither BW nor 3C nor 4C nor 7C kind defined for driver class (error in GxEPD2_selection_check.h)"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// mapping of Good Display Arduino UNO Development Kit DEArduino-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> 4, RES -> 5, D/C -> 6, CS-> 7, SCK -> 13, SDI -> 11
|
||||||
|
|
||||||
|
// mapping of Good Display ESP8266 Development Kit ESP8266-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO16, RES -> GPIO5, D/C -> GPIO4, CS-> GPIO2, SCK -> GPIO14, SDI -> GPIO13
|
||||||
|
|
||||||
|
// mapping of Good Display ESP32 Development Kit ESP32-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO13, RES -> GPIO12, D/C -> GPIO14, CS-> GPIO27, SCK -> GPIO18, SDI -> GPIO23
|
||||||
|
|
||||||
|
// mapping of Good Display STM32 Development Kit DESPI-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PD9, SDI -> PD10
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PA5, SDI -> PA7 // for HW SPI with GxEPD2
|
||||||
|
|
||||||
|
// connection suggestions concerning Waveshare e-paper HAT Rev 2.3:
|
||||||
|
// DON'T FORGET to connect the PWR pin to VCC, to enable power to the board.
|
||||||
|
// RST is no longer used to disable power to the board, as with earlier revisions.
|
||||||
|
// Note, for 3.3V processors, no level converters are needed. Use DESPI-C02 instead. Uses less power.
|
||||||
|
// See https://www.buyepaper.com/products/development-kit-connection-adapter-board-for-eaper-display-demo-kit
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
|
||||||
|
// BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
|
||||||
|
// BUSY -> GPIO4, RST -> GPIO2, DC -> GPIO0, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from GPIO15 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from GPIO2 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
// BUSY -> GPIO5, RST -> GPIO2, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
// BUSY -> GPIO16, RST -> GPIO5, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32, see .../variants/.../pins_arduino.h for your board
|
||||||
|
// NOTE: there are variants with different pins for SPI ! CHECK SPI PINS OF YOUR BOARD
|
||||||
|
// BUSY -> 4, RST -> 16, DC -> 17, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
|
||||||
|
// mapping of Waveshare ESP32 Driver Board
|
||||||
|
// BUSY -> 25, RST -> 26, DC -> 27, CS-> 15, CLK -> 13, DIN -> 14
|
||||||
|
// NOTE: this board uses "unusual" SPI pins and requires re-mapping of HW SPI to these pins in SPIClass
|
||||||
|
// see example GxEPD2_WS_ESP32_Driver.ino, it shows how this can be done easily
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32 D32 PRO
|
||||||
|
// BUSY -> 15, RST -> 2, DC -> 0, CS -> 5, CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// note: use explicit value for CS, as SS is re-defined to TF_CS(4) in pins_arduino.h for Board: "LOLIN D32 PRO"
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. TTGO T8 ESP32-WROVER
|
||||||
|
// BUSY -> 4, RST -> 0, DC -> 2, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "ESP32 Dev Module":
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32S2, e.g. LOLIN ESP32 S2 mini, direct connection of DESPI-C02
|
||||||
|
// BUSY -> 39, RST -> 37, DC -> 35, CS -> 33, CLK -> 18, DIN -> 16, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "LOLIN S2 MINI":
|
||||||
|
|
||||||
|
// new mapping suggestion for STM32F1, e.g. STM32F103C8T6 "BluePill"
|
||||||
|
// BUSY -> A1, RST -> A2, DC -> A3, CS-> A4, CLK -> A5, DIN -> A7
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, UNO, NANO etc.
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, Arduino Micro, Leonardo
|
||||||
|
// note: on Leonardo board HW SPI pins are on 6-pin ICSP header
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 15, DIN -> 16
|
||||||
|
|
||||||
|
// mapping of Waveshare Universal e-Paper Raw Panel Driver Shield for Arduino / NUCLEO
|
||||||
|
// BUSY -> 7, RST -> 8, DC -> 9, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MEGA
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 53, CLK -> 52, DIN -> 51
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino DUE, note: pin 77 is on board pin 10, SS is 10
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 76, DIN -> 75
|
||||||
|
// SPI pins are on 6 pin 2x3 SPI header, no SS on SPI header!
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MKR1000 or MKRZERO
|
||||||
|
// note: can't use SS on MKR1000: is defined as 24, should be 4
|
||||||
|
// BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
|
||||||
|
|
||||||
|
// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3
|
||||||
|
|
||||||
|
// mapping of my new proto board like Waveshare Pico-ePaper-2.9
|
||||||
|
// needs 10k pull-up on RST when used with Arduino MBED OS RP2040 Boards
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
|
|
||||||
|
// mapping of Waveshare Pico-ePaper-2.9
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
@@ -0,0 +1,160 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2021 Peter Harrison
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
https://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
|
||||||
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
BasicEncoder provides a class for reading a rotary encoder knob.
|
||||||
|
It is not suited to motor encoders.
|
||||||
|
The switch, if present, needs a deparate button library .
|
||||||
|
|
||||||
|
Decoding logic based on https://www.mikrocontroller.net/articles/Drehgeber
|
||||||
|
*/
|
||||||
|
|
||||||
|
// original source from: https://github.com/micromouseonline/BasicEncoder
|
||||||
|
//
|
||||||
|
// adapted for GxEPD2_RotaryUsingBusyCallback.ino example use, without interrupts on any processor
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef BASIC_ENCODER_H_
|
||||||
|
#define BASIC_ENCODER_H_
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
class BasicEncoder {
|
||||||
|
public:
|
||||||
|
BasicEncoder(int8_t pinA, int8_t pinB, uint8_t active_state = LOW, uint8_t steps = 4)
|
||||||
|
: m_pin_a(pinA), m_pin_b(pinB), m_pin_active(active_state), m_steps_per_count(steps) {
|
||||||
|
pinMode(pinA, INPUT_PULLUP);
|
||||||
|
pinMode(pinB, INPUT_PULLUP);
|
||||||
|
m_change = 0;
|
||||||
|
}
|
||||||
|
~BasicEncoder() {}
|
||||||
|
|
||||||
|
void begin() {
|
||||||
|
reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
int8_t pin_state() {
|
||||||
|
int8_t state_now = 0;
|
||||||
|
if (digitalRead(m_pin_a) == m_pin_active) {
|
||||||
|
state_now |= 2;
|
||||||
|
}
|
||||||
|
if (digitalRead(m_pin_b) == m_pin_active) {
|
||||||
|
state_now |= 1;
|
||||||
|
}
|
||||||
|
//if (state_now) Serial.println(state_now);
|
||||||
|
return state_now;
|
||||||
|
}
|
||||||
|
|
||||||
|
// to update the encoder changes
|
||||||
|
// call this method in a timmer interrupt for best performance
|
||||||
|
// it could also be called in the main loop
|
||||||
|
// this takes about 10-15us using digitalRead on Arduino Nano
|
||||||
|
void service() {
|
||||||
|
int8_t state_now = pin_state();
|
||||||
|
state_now ^= state_now >> 1; // two bit gray-to-binary
|
||||||
|
static int8_t previous_state = state_now;
|
||||||
|
int8_t difference = previous_state - state_now;
|
||||||
|
// bit 1 has the direction, bit 0 is set if changeed
|
||||||
|
if (difference & 1) {
|
||||||
|
previous_state = state_now;
|
||||||
|
int delta = (difference & 2) - 1;
|
||||||
|
if (m_reversed) {
|
||||||
|
delta = -delta;
|
||||||
|
}
|
||||||
|
m_change += delta;
|
||||||
|
m_steps += delta;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/****************************************************************
|
||||||
|
|
||||||
|
// try this if there are unwanted transitions at the detents
|
||||||
|
// it is half resolution so counts are doubled
|
||||||
|
const int8_t decode_table[16] PROGMEM = {0, 0, -2, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, -2, 0, 0};
|
||||||
|
void flaky_encoder_service(void) {
|
||||||
|
// just get the bits - no gray-to-binary conversion needed
|
||||||
|
int8_t state_now = pin_state();
|
||||||
|
static int8_t encoder_state = state_now;
|
||||||
|
encoder_state = ((encoder_state << 2) | state_now) & 0x0f;
|
||||||
|
encoder_change += (int8_t)pgm_read_byte(&decode_table[encoder_state]);
|
||||||
|
}
|
||||||
|
|
||||||
|
****************************************************************/
|
||||||
|
|
||||||
|
// Read changes frequently enough that overflows cannot happen.
|
||||||
|
int8_t get_change() {
|
||||||
|
//uint8_t sreg = SREG;
|
||||||
|
//noInterrupts();
|
||||||
|
int8_t change = m_change;
|
||||||
|
// the switch statement can make better code because only optimised
|
||||||
|
// operations are used instead of generic division
|
||||||
|
switch (m_steps_per_count) {
|
||||||
|
case 4:
|
||||||
|
m_change %= 4;
|
||||||
|
change /= 4;
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
m_change %= 2;
|
||||||
|
change /= 2;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
m_change = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
//SREG = sreg;
|
||||||
|
return change;
|
||||||
|
}
|
||||||
|
|
||||||
|
int get_count() {
|
||||||
|
//uint8_t sreg = SREG;
|
||||||
|
//noInterrupts();
|
||||||
|
int count = m_steps / m_steps_per_count;
|
||||||
|
//SREG = sreg;
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
void reset() {
|
||||||
|
//uint8_t sreg = SREG;
|
||||||
|
//noInterrupts();
|
||||||
|
m_steps = 0;
|
||||||
|
m_change = 0;
|
||||||
|
//SREG = sreg;
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_reverse() {
|
||||||
|
m_reversed = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_forward() {
|
||||||
|
m_reversed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
int8_t m_pin_a = 0;
|
||||||
|
int8_t m_pin_b = 0;
|
||||||
|
uint8_t m_pin_active = LOW;
|
||||||
|
uint8_t m_steps_per_count = 4;
|
||||||
|
bool m_reversed = false;
|
||||||
|
volatile int m_change = 0;
|
||||||
|
int m_steps = 0;
|
||||||
|
};
|
||||||
|
#endif // BASIC_ENCODER_H_
|
||||||
@@ -0,0 +1,158 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
//
|
||||||
|
// GxEPD2_RotaryUsingBusyCallback.ino: an example showing use of busyCallback to handle time-critical services
|
||||||
|
// GxEPD2 uses busy wait on the BUSY line from EPDs by design,
|
||||||
|
// to handle all combinations of paged display and differential refresh in a user friendly way.
|
||||||
|
// busyCallback can be used to overcome this restriction caused by busy wait.
|
||||||
|
// note: this feature is only available if the BUSY line is used, not if the default delay is used instead.
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// see GxEPD2_wiring_examples.h for wiring suggestions and examples
|
||||||
|
|
||||||
|
// base class GxEPD2_GFX can be used to pass references or pointers to the display instance as parameter, uses ~1.2k more code
|
||||||
|
// enable or disable GxEPD2_GFX base class
|
||||||
|
#define ENABLE_GxEPD2_GFX 0
|
||||||
|
|
||||||
|
// uncomment next line to use class GFX of library GFX_Root instead of Adafruit_GFX
|
||||||
|
//#include <GFX.h>
|
||||||
|
// Note: if you use this with ENABLE_GxEPD2_GFX 1:
|
||||||
|
// uncomment it in GxEPD2_GFX.h too, or add #include <GFX.h> before any #include <GxEPD2_GFX.h>
|
||||||
|
|
||||||
|
#include <GxEPD2_BW.h>
|
||||||
|
#include <GxEPD2_3C.h>
|
||||||
|
#include <GxEPD2_7C.h>
|
||||||
|
#include <Fonts/FreeMonoBold9pt7b.h>
|
||||||
|
|
||||||
|
// select the display class and display driver class in the following file (new style):
|
||||||
|
#include "GxEPD2_display_selection_new_style.h"
|
||||||
|
|
||||||
|
// include the BasicEncoder adapted for GxEPD2_RotaryUsingBusyCallback.ino example use, without interrupts on any processor
|
||||||
|
#include "BasicEncoder.h"
|
||||||
|
|
||||||
|
// define the pins to be used by the BasicEncoder
|
||||||
|
const int8_t pinA = 5; // D1 on my Wemos D1 mini
|
||||||
|
const int8_t pinB = 16; // D0 on my Wemos D1 mini
|
||||||
|
//const int8_t pinA = 2; // on UNO
|
||||||
|
//const int8_t pinB = 3; // on UNO
|
||||||
|
|
||||||
|
BasicEncoder encoder(pinA, pinB);
|
||||||
|
|
||||||
|
// busyCallback function called during waiting for BUSY to end, to service encoder
|
||||||
|
void busyCallback(const void* p)
|
||||||
|
{
|
||||||
|
encoder.service();
|
||||||
|
}
|
||||||
|
|
||||||
|
// for handling alternative SPI pins (ESP32, RP2040) see example GxEPD2_Example.ino
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.println();
|
||||||
|
Serial.println("setup");
|
||||||
|
delay(100);
|
||||||
|
display.init(); // disable diagnostics to avoid delay and catch most rotary pulses
|
||||||
|
//display.init(115200); // default 10ms reset pulse, e.g. for bare panels with DESPI-C02
|
||||||
|
//display.init(115200, true, 2, false); // USE THIS for Waveshare boards with "clever" reset circuit, 2ms reset pulse
|
||||||
|
display.epd2.setBusyCallback(busyCallback); // register callback to be called during BUSY active time
|
||||||
|
// first update should be full refresh
|
||||||
|
helloWorld();
|
||||||
|
delay(1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
encoder.service();
|
||||||
|
int encoder_change = encoder.get_change();
|
||||||
|
if (encoder_change)
|
||||||
|
{
|
||||||
|
showEncoderValue(encoder.get_count());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const char HelloWorld[] = "Hello World!";
|
||||||
|
|
||||||
|
void helloWorld()
|
||||||
|
{
|
||||||
|
//Serial.println("helloWorld");
|
||||||
|
display.setRotation(1);
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
if (display.epd2.WIDTH < 104) display.setFont(0);
|
||||||
|
display.setTextColor(GxEPD_BLACK);
|
||||||
|
int16_t tbx, tby; uint16_t tbw, tbh;
|
||||||
|
display.getTextBounds(HelloWorld, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
// center bounding box by transposition of origin:
|
||||||
|
uint16_t x = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
uint16_t y = ((display.height() - tbh) / 2) - tby;
|
||||||
|
display.setFullWindow();
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.setCursor(x, y);
|
||||||
|
display.print(HelloWorld);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
//Serial.println("helloWorld done");
|
||||||
|
}
|
||||||
|
|
||||||
|
const char EncoderValue[] = "Encoder = ";
|
||||||
|
|
||||||
|
#if (defined(ESP8266) || defined(ESP32)) && false
|
||||||
|
#include <StreamString.h>
|
||||||
|
#define PrintString StreamString
|
||||||
|
#else
|
||||||
|
class PrintString : public Print, public String
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
PrintString(const char s[]) : String(s){};
|
||||||
|
size_t write(uint8_t data) override
|
||||||
|
{
|
||||||
|
return concat(char(data));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void showEncoderValue(int value)
|
||||||
|
{
|
||||||
|
//Serial.println("showEncoderValue");
|
||||||
|
display.setRotation(1);
|
||||||
|
display.setFont(&FreeMonoBold9pt7b);
|
||||||
|
display.setTextColor(display.epd2.hasColor ? GxEPD_RED : GxEPD_BLACK);
|
||||||
|
PrintString valueString(EncoderValue);
|
||||||
|
valueString.print(value);
|
||||||
|
static uint16_t ww = 0;
|
||||||
|
static uint16_t wh = 0;
|
||||||
|
int16_t tbx, tby; uint16_t tbw, tbh;
|
||||||
|
display.getTextBounds(valueString, 0, 0, &tbx, &tby, &tbw, &tbh);
|
||||||
|
if (tbw > ww) ww = tbw;
|
||||||
|
if (tbh > wh) wh = tbh;
|
||||||
|
uint16_t x = ((display.width() - tbw) / 2) - tbx;
|
||||||
|
uint16_t y = ((display.height() * 3 / 4) - tbh / 2) - tby; // y is base line!
|
||||||
|
uint16_t wx = (display.width() - ww) / 2;
|
||||||
|
uint16_t wy = ((display.height() * 3 / 4) - wh / 2);
|
||||||
|
display.setPartialWindow(wx, wy, ww, wh);
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
display.fillScreen(GxEPD_WHITE);
|
||||||
|
display.setCursor(x, y);
|
||||||
|
display.print(valueString);
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
//Serial.println("showEncoderValue done");
|
||||||
|
}
|
||||||
@@ -0,0 +1,374 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// NOTE: you may need to adapt or select for your wiring in the processor specific conditional compile sections below
|
||||||
|
|
||||||
|
// select the display class (only one), matching the kind of display panel
|
||||||
|
#define GxEPD2_DISPLAY_CLASS GxEPD2_BW
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_3C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_4C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_7C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_BW_SHM
|
||||||
|
|
||||||
|
// select the display driver class (only one) for your panel
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_102 // GDEW0102T4 80x128, UC8175, (WFT0102CZA2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_150_BN // DEPG0150BN 200x200, SSD1681, (FPC8101), TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154 // GDEP015OC1 200x200, IL3829, (WFC0000CZ07), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_D67 // GDEH0154D67 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_T8 // GDEW0154T8 152x152, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M09 // GDEW0154M09 200x200, JD79653A, (WFT0154CZB3)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M10 // GDEW0154M10 152x152, UC8151D, (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_GDEY0154D67 // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213 // GDE0213B1 122x250, IL3895, (HINK-E0213-G01), phased out
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B72 // GDEH0213B72 122x250, SSD1675A (IL3897), (HINK-E0213A22-A0 SLH1852)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B73 // GDEH0213B73 122x250, SSD1675B, (HINK-E0213A22-A0 SLH1914)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B74 // GDEM0213B74 122x250, SSD1680, FPC-7528B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_flex // GDEW0213I5F 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_M21 // GDEW0213M21 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_T5D // GDEW0213T5D 104x212, UC8151D, (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_BN // DEPG0213BN 122x250, SSD1680, (FPC-7528B), TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_GDEY0213B74 // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260 // GDEW026T0 152x296, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260_M01 // GDEW026M01 152x296, UC8151 (IL0373), (WFT0260CZB2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_BN // DEPG0266BN 152x296, SSD1680, (FPC7510), TTGO T5 V2.66, TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_GDEY0266T90 // GDEY0266T90 152x296, SSD1680, (FPC-A003 HB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270 // GDEW027W3 176x264, EK79652 (IL91874), (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270_GDEY027T91 // GDEY027T91 176x264, SSD1680, (FB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290 // GDEH029A1 128x296, SSD1608 (IL3820), (E029A01-FPC-A1 SYX1553)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5 // GDEW029T5 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5D // GDEW029T5D 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_I6FD // GDEW029I6FD 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94_V2 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b), Waveshare 2.9" V2 variant
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_BS // DEPG0290BS 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_M06 // GDEW029M06 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T94 // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T71H // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_310_GDEQ031T10 // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_GDEY037T03 // GDEY037T03 240x416, UC8253, (FPC-F002, hidden on CrowPanel)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1 280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_371 // GDEW0371W7 240x416, UC8171 (IL0324), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397_GDEM0397T81 // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420 // GDEW042T2 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GYE042A87 // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_SE0420NQ04 // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_576_GDEH0576T81 // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579_GDEY0579T93 // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583 // GDEW0583T7 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8 // GDEW0583T8 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750 // GDEW075T8 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_T7 // GDEW075T7 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_GDEY075T7 // GDEY075T7 800x480, UC8179 (GD7965), (FPC-C001 20.08.20)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1020_GDEM102T91 // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1085_GDEM1085T51 // GDEM1085T51 1360x480, JD79686AB, (FPC8617) *** needs CS2 ***
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160_T91 // GDEH116T91 960x640, SSD1677, (none or hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248 // GDEW1248T3 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330_GDEM133T91 // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c // GDEW0154Z04 200x200, IL0376F, (WFT0000CZ04), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_Z90c // GDEH0154Z90 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c // GDEW0213Z16 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z19c // GDEH0213Z19 104x212, UC8151D, (HINK-E0213A20-A2 2020-11-19)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z98c // GDEY0213Z98 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c // GDEY0266Z90 152x296, SSD1680, (FPC-7510)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270c // GDEW027C44 176x264, IL91874, (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c // GDEW029Z10 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_Z13c // GDEH029Z13 128x296, UC8151D, (HINK-E029A10-A3 20160809)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_C90c // GDEM029C90 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c // GDEW042Z15 400x300, UC8176 (IL0398), (WFT0420CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_Z21 // GDEQ042Z21 400x300, UC8276, (hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY042Z98 // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579Z93 // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c // GDEW0583Z21 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_Z83 // GDEW0583Z83 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_GDEQ0583Z31 // GDEQ0583Z31 648x480, UC8179C,
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c // GDEW075Z09 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z08 // GDEW075Z08 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90 880x528, SSD1677, (HINK-E075A07-A0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEW075Z08 // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEY075Z08 // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116Z91 // GDEY116Z91 960x640, SSD1677, (FPV-K002 22.04.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248c // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330c_GDEM133Z91 // GDEM133Z91 960x680, SSD1677 (FPC-7701 REV.B)
|
||||||
|
// 4-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c_GDEM0154F51H // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c_GDEY0213F51 // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_300c // Waveshare 3.00" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_350c_GDEM035F51 // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397c_GDEM0397F81 // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_437c // Waveshare 4.37" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579F51 // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEM075F52 // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116F51 // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c_GDEP0565D90 // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEY073D46 // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_ACeP_730 // Waveshare 7.3" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEP073E01 // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60 // ED060SCT 800x600
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60_1448x1072 // ED060KC1 1448x1072
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it78_1872x1404 // ED078KC2 1872x1404
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it103_1872x1404 // ES103TC1 1872x1404
|
||||||
|
|
||||||
|
// SS is usually used for CS. define here for easy change
|
||||||
|
#ifndef EPD_CS
|
||||||
|
#define EPD_CS SS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
||||||
|
|
||||||
|
// somehow there should be an easier way to do this
|
||||||
|
#define GxEPD2_BW_IS_GxEPD2_BW true
|
||||||
|
#define GxEPD2_3C_IS_GxEPD2_3C true
|
||||||
|
#define GxEPD2_4C_IS_GxEPD2_4C true
|
||||||
|
#define GxEPD2_7C_IS_GxEPD2_7C true
|
||||||
|
#define GxEPD2_BW_SHM_IS_GxEPD2_BW_SHM true
|
||||||
|
#define GxEPD2_1248_IS_GxEPD2_1248 true
|
||||||
|
#define GxEPD2_1248c_IS_GxEPD2_1248c true
|
||||||
|
#define IS_GxEPD(c, x) (c##x)
|
||||||
|
#define IS_GxEPD2_BW(x) IS_GxEPD(GxEPD2_BW_IS_, x)
|
||||||
|
#define IS_GxEPD2_3C(x) IS_GxEPD(GxEPD2_3C_IS_, x)
|
||||||
|
#define IS_GxEPD2_4C(x) IS_GxEPD(GxEPD2_4C_IS_, x)
|
||||||
|
#define IS_GxEPD2_7C(x) IS_GxEPD(GxEPD2_7C_IS_, x)
|
||||||
|
#define IS_GxEPD2_BW_SHM(x) IS_GxEPD(GxEPD2_BW_SHM_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248(x) IS_GxEPD(GxEPD2_1248_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248c(x) IS_GxEPD(GxEPD2_1248c_IS_, x)
|
||||||
|
|
||||||
|
#include "GxEPD2_selection_check.h"
|
||||||
|
|
||||||
|
// for my test use only
|
||||||
|
//#if defined(_AVR)
|
||||||
|
//#warning "defined(_AVR)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ESP32)
|
||||||
|
//#warning "defined(ESP32)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
//#warning "defined(ARDUINO_ARCH_ESP32)"
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_AVR)
|
||||||
|
#if defined (ARDUINO_AVR_MEGA2560) // Note: SS is on 53 on MEGA
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#elif defined(ARDUINO_AVR_NANO_EVERY)
|
||||||
|
#define EPD_CS 10
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#else // Note: SS is on 10 on UNO, NANO
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 800 //
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
// for Arduino Micro or Arduino Leonardo with CS on 10 on my proto boards (SS would be 17) uncomment instead:
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_MEGAAVR)
|
||||||
|
#if defined(ARDUINO_AVR_NANO_EVERY) || defined(ARDUINO_AVR_UNO_WIFI_REV2)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 65536ul // e.g.
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
#if !IS_GxEPD2_1248(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_1248c(GxEPD2_DRIVER_CLASS)
|
||||||
|
#if defined(ARDUINO_NANO_ESP32) // uses Dx pin names
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ D10, /*DC=*/ D8, /*RST=*/ D9, /*BUSY=*/ D7));
|
||||||
|
#elif defined(ARDUINO_LOLIN_D32_PRO)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // my LOLIN_D32_PRO proto board
|
||||||
|
#elif defined(ARDUINO_LOLIN_S2_MINI)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 33, /*DC=*/ 35, /*RST=*/ 37, /*BUSY=*/ 39)); // my LOLIN ESP32 S2 mini connection
|
||||||
|
#elif defined(ARDUINO_ESP32S3_DEV)
|
||||||
|
// ESP32E6-E01 : only 50 pin FPC works on actual version (11.1.2025)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 2, /*DC=*/ 3, /*RST=*/ 4, /*BUSY=*/ 5)); // Good Display ESP32E6-E01 board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 45, /*DC=*/ 46, /*RST=*/ 47, /*BUSY=*/ 48)); // CrowPanel wiring
|
||||||
|
#else
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13)); // Good Display ESP32 Development Kit ESP32-L
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13, /*CS2=*/ 4)); // for GDEM1085T51 with ESP32-L
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // my suggested wiring and proto board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ 5, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // LILYGO_T5_V2.4.1
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 19, /*RST=*/ 4, /*BUSY=*/ 34)); // LILYGO® TTGO T5 2.66
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // e.g. TTGO T8 ESP32-WROVER
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare ESP32 Driver Board
|
||||||
|
#endif
|
||||||
|
#else // GxEPD2_1248 or GxEPD2_1248c
|
||||||
|
// Waveshare 12.48 b/w or b/w/r SPI display board and frame or Good Display 12.48 b/w panel GDEW1248T3 or b/w/r panel GDEY1248Z51
|
||||||
|
// general constructor for use with all parameters, e.g. for Waveshare ESP32 driver board mounted on connection board
|
||||||
|
GxEPD2_DISPLAY_CLASS < GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS) > display(GxEPD2_DRIVER_CLASS(/*sck=*/ 13, /*miso=*/ 12, /*mosi=*/ 14,
|
||||||
|
/*cs_m1=*/ 23, /*cs_s1=*/ 22, /*cs_m2=*/ 16, /*cs_s2=*/ 19,
|
||||||
|
/*dc1=*/ 25, /*dc2=*/ 17, /*rst1=*/ 33, /*rst2=*/ 5,
|
||||||
|
/*busy_m1=*/ 32, /*busy_s1=*/ 26, /*busy_m2=*/ 18, /*busy_s2=*/ 4));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (ARDUINO_ARCH_ESP8266)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE (81920ul-34000ul-5000ul) // ~34000 base use, change 5000 to your application use
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=D8*/ EPD_CS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// can't use package "STMF1 Boards (STM32Duino.com)" (Roger Clark) anymore with Adafruit_GFX, use "STM32 Boards (selected from submenu)" (STMicroelectronics)
|
||||||
|
#if defined(ARDUINO_ARCH_STM32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
// for Good Display STM32 Development Kit DESPI-L.
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13, /*CS2=*/ PD12)); // for GDEM1085T51
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=PA4*/ EPD_CS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // my proto board
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RENESAS)
|
||||||
|
#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAM)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAMD)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_SAMD_NANO_33_IOT)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#else
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 3, /*RST=*/ 2, /*BUSY=*/ 1)); // my Seed XIOA0
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // my other Seed XIOA0
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RP2040)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 131072ul // e.g. half of available ram
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_NANO_RP2040_CONNECT)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 5, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // my proto board
|
||||||
|
// mapping of GoodDisplay DESPI-PICO. NOTE: uses alternate HW SPI pins!
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
|
||||||
|
// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,165 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
#define GxEPD2_102_IS_BW true
|
||||||
|
#define GxEPD2_150_BN_IS_BW true
|
||||||
|
#define GxEPD2_154_IS_BW true
|
||||||
|
#define GxEPD2_154_D67_IS_BW true
|
||||||
|
#define GxEPD2_154_T8_IS_BW true
|
||||||
|
#define GxEPD2_154_M09_IS_BW true
|
||||||
|
#define GxEPD2_154_M10_IS_BW true
|
||||||
|
#define GxEPD2_154_GDEY0154D67_IS_BW true
|
||||||
|
#define GxEPD2_213_IS_BW true
|
||||||
|
#define GxEPD2_213_B72_IS_BW true
|
||||||
|
#define GxEPD2_213_B73_IS_BW true
|
||||||
|
#define GxEPD2_213_B74_IS_BW true
|
||||||
|
#define GxEPD2_213_flex_IS_BW true
|
||||||
|
#define GxEPD2_213_M21_IS_BW true
|
||||||
|
#define GxEPD2_213_T5D_IS_BW true
|
||||||
|
#define GxEPD2_213_BN_IS_BW true
|
||||||
|
#define GxEPD2_213_GDEY0213B74_IS_BW true
|
||||||
|
#define GxEPD2_260_IS_BW true
|
||||||
|
#define GxEPD2_260_M01_IS_BW true
|
||||||
|
#define GxEPD2_266_BN_IS_BW true
|
||||||
|
#define GxEPD2_266_GDEY0266T90_IS_BW true
|
||||||
|
#define GxEPD2_270_IS_BW true
|
||||||
|
#define GxEPD2_270_GDEY027T91_IS_BW true
|
||||||
|
#define GxEPD2_290_IS_BW true
|
||||||
|
#define GxEPD2_290_T5_IS_BW true
|
||||||
|
#define GxEPD2_290_T5D_IS_BW true
|
||||||
|
#define GxEPD2_290_I6FD_IS_BW true
|
||||||
|
#define GxEPD2_290_T94_IS_BW true
|
||||||
|
#define GxEPD2_290_T94_V2_IS_BW true
|
||||||
|
#define GxEPD2_290_BS_IS_BW true
|
||||||
|
#define GxEPD2_290_M06_IS_BW true
|
||||||
|
#define GxEPD2_290_GDEY029T94_IS_BW true
|
||||||
|
#define GxEPD2_290_GDEY029T71H_IS_BW true
|
||||||
|
#define GxEPD2_310_GDEQ031T10_IS_BW true
|
||||||
|
#define GxEPD2_371_IS_BW true
|
||||||
|
#define GxEPD2_370_TC1_IS_BW true
|
||||||
|
#define GxEPD2_370_GDEY037T03_IS_BW true
|
||||||
|
#define GxEPD2_397_GDEM0397T81_IS_BW true
|
||||||
|
#define GxEPD2_420_IS_BW true
|
||||||
|
#define GxEPD2_420_M01_IS_BW true
|
||||||
|
#define GxEPD2_420_GDEY042T81_IS_BW true
|
||||||
|
#define GxEPD2_420_GYE042A87_IS_BW true
|
||||||
|
#define GxEPD2_420_SE0420NQ04_IS_BW true
|
||||||
|
#define GxEPD2_426_GDEQ0426T82_IS_BW true
|
||||||
|
#define GxEPD2_576_GDEH0576T81_IS_BW true
|
||||||
|
#define GxEPD2_579_GDEY0579T93_IS_BW true
|
||||||
|
#define GxEPD2_583_IS_BW true
|
||||||
|
#define GxEPD2_583_T8_IS_BW true
|
||||||
|
#define GxEPD2_583_GDEQ0583T31_IS_BW true
|
||||||
|
#define GxEPD2_750_IS_BW true
|
||||||
|
#define GxEPD2_750_T7_IS_BW true
|
||||||
|
#define GxEPD2_750_GDEY075T7_IS_BW true
|
||||||
|
#define GxEPD2_1020_GDEM102T91_IS_BW true
|
||||||
|
#define GxEPD2_1085_GDEM1085T51_IS_BW true
|
||||||
|
#define GxEPD2_1160_T91_IS_BW true
|
||||||
|
#define GxEPD2_1248_IS_BW true
|
||||||
|
#define GxEPD2_1330_GDEM133T91_IS_BW true
|
||||||
|
#define GxEPD2_it60_IS_BW true
|
||||||
|
#define GxEPD2_it60_1448x1072_IS_BW true
|
||||||
|
#define GxEPD2_it78_1872x1404_IS_BW true
|
||||||
|
#define GxEPD2_it103_1872x1404_IS_BW true
|
||||||
|
// 3-color e-papers
|
||||||
|
#define GxEPD2_154c_IS_3C true
|
||||||
|
#define GxEPD2_154_Z90c_IS_3C true
|
||||||
|
#define GxEPD2_213c_IS_3C true
|
||||||
|
#define GxEPD2_213_Z19c_IS_3C true
|
||||||
|
#define GxEPD2_213_Z98c_IS_3C true
|
||||||
|
#define GxEPD2_266c_IS_3C true
|
||||||
|
#define GxEPD2_270c_IS_3C true
|
||||||
|
#define GxEPD2_290c_IS_3C true
|
||||||
|
#define GxEPD2_290_Z13c_IS_3C true
|
||||||
|
#define GxEPD2_290_C90c_IS_3C true
|
||||||
|
#define GxEPD2_420c_IS_3C true
|
||||||
|
#define GxEPD2_420c_Z21_IS_3C true
|
||||||
|
#define GxEPD2_420c_GDEY042Z98_IS_3C true
|
||||||
|
#define GxEPD2_579c_GDEY0579Z93_IS_3C true
|
||||||
|
#define GxEPD2_583c_IS_3C true
|
||||||
|
#define GxEPD2_583c_Z83_IS_3C true
|
||||||
|
#define GxEPD2_583c_GDEQ0583Z31_IS_3C true
|
||||||
|
#define GxEPD2_750c_IS_3C true
|
||||||
|
#define GxEPD2_750c_Z08_IS_3C true
|
||||||
|
#define GxEPD2_750c_Z90_IS_3C true
|
||||||
|
#define GxEPD2_750c_GDEW075Z08_IS_3C true
|
||||||
|
#define GxEPD2_750c_GDEY075Z08_IS_3C true
|
||||||
|
#define GxEPD2_1160c_GDEY116Z91_IS_3C true
|
||||||
|
#define GxEPD2_1248c_IS_3C true
|
||||||
|
#define GxEPD2_1330c_GDEM133Z91_IS_3C true
|
||||||
|
// 4-color e-paper
|
||||||
|
#define GxEPD2_154c_GDEM0154F51H_IS_4C true
|
||||||
|
#define GxEPD2_213c_GDEY0213F51_IS_4C true
|
||||||
|
#define GxEPD2_266c_GDEY0266F51H_IS_4C true
|
||||||
|
#define GxEPD2_290c_GDEY029F51H_IS_4C true
|
||||||
|
#define GxEPD2_300c_IS_4C true
|
||||||
|
#define GxEPD2_350c_GDEM035F51_IS_4C true
|
||||||
|
#define GxEPD2_397c_GDEM0397F81_IS_4C true
|
||||||
|
#define GxEPD2_420c_GDEY0420F51_IS_4C true
|
||||||
|
#define GxEPD2_437c_IS_4C true
|
||||||
|
#define GxEPD2_579c_GDEY0579F51_IS_4C true
|
||||||
|
#define GxEPD2_750c_GDEM075F52_IS_4C true
|
||||||
|
#define GxEPD2_1160c_GDEY116F51_IS_4C true
|
||||||
|
// 7-color e-paper
|
||||||
|
#define GxEPD2_565c_IS_7C true
|
||||||
|
#define GxEPD2_565c_GDEP0565D90_IS_7C true
|
||||||
|
#define GxEPD2_730c_GDEY073D46_IS_7C true
|
||||||
|
#define GxEPD2_730c_ACeP_730_IS_7C true
|
||||||
|
#define GxEPD2_730c_GDEP073E01_IS_7C true
|
||||||
|
|
||||||
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
||||||
|
#define IS_GxEPD2_DRIVER(c, x) (c##x)
|
||||||
|
#define IS_GxEPD2_DRIVER_BW(x) IS_GxEPD2_DRIVER(x, _IS_BW)
|
||||||
|
#define IS_GxEPD2_DRIVER_3C(x) IS_GxEPD2_DRIVER(x, _IS_3C)
|
||||||
|
#define IS_GxEPD2_DRIVER_4C(x) IS_GxEPD2_DRIVER(x, _IS_4C)
|
||||||
|
#define IS_GxEPD2_DRIVER_7C(x) IS_GxEPD2_DRIVER(x, _IS_7C)
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 3-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 4-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with b/w driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with 4-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with b/w driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with 3-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS) && !IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_7C used with less colors driver class"
|
||||||
|
#endif
|
||||||
|
#if !IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "neither BW nor 3C nor 4C nor 7C kind defined for driver class (error in GxEPD2_selection_check.h)"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// mapping of Good Display Arduino UNO Development Kit DEArduino-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> 4, RES -> 5, D/C -> 6, CS-> 7, SCK -> 13, SDI -> 11
|
||||||
|
|
||||||
|
// mapping of Good Display ESP8266 Development Kit ESP8266-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO16, RES -> GPIO5, D/C -> GPIO4, CS-> GPIO2, SCK -> GPIO14, SDI -> GPIO13
|
||||||
|
|
||||||
|
// mapping of Good Display ESP32 Development Kit ESP32-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO13, RES -> GPIO12, D/C -> GPIO14, CS-> GPIO27, SCK -> GPIO18, SDI -> GPIO23
|
||||||
|
|
||||||
|
// mapping of Good Display STM32 Development Kit DESPI-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PD9, SDI -> PD10
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PA5, SDI -> PA7 // for HW SPI with GxEPD2
|
||||||
|
|
||||||
|
// connection suggestions concerning Waveshare e-paper HAT Rev 2.3:
|
||||||
|
// DON'T FORGET to connect the PWR pin to VCC, to enable power to the board.
|
||||||
|
// RST is no longer used to disable power to the board, as with earlier revisions.
|
||||||
|
// Note, for 3.3V processors, no level converters are needed. Use DESPI-C02 instead. Uses less power.
|
||||||
|
// See https://www.buyepaper.com/products/development-kit-connection-adapter-board-for-eaper-display-demo-kit
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
|
||||||
|
// BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
|
||||||
|
// BUSY -> GPIO4, RST -> GPIO2, DC -> GPIO0, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from GPIO15 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from GPIO2 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
// BUSY -> GPIO5, RST -> GPIO2, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
// BUSY -> GPIO16, RST -> GPIO5, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32, see .../variants/.../pins_arduino.h for your board
|
||||||
|
// NOTE: there are variants with different pins for SPI ! CHECK SPI PINS OF YOUR BOARD
|
||||||
|
// BUSY -> 4, RST -> 16, DC -> 17, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
|
||||||
|
// mapping of Waveshare ESP32 Driver Board
|
||||||
|
// BUSY -> 25, RST -> 26, DC -> 27, CS-> 15, CLK -> 13, DIN -> 14
|
||||||
|
// NOTE: this board uses "unusual" SPI pins and requires re-mapping of HW SPI to these pins in SPIClass
|
||||||
|
// see example GxEPD2_WS_ESP32_Driver.ino, it shows how this can be done easily
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32 D32 PRO
|
||||||
|
// BUSY -> 15, RST -> 2, DC -> 0, CS -> 5, CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// note: use explicit value for CS, as SS is re-defined to TF_CS(4) in pins_arduino.h for Board: "LOLIN D32 PRO"
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. TTGO T8 ESP32-WROVER
|
||||||
|
// BUSY -> 4, RST -> 0, DC -> 2, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "ESP32 Dev Module":
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32S2, e.g. LOLIN ESP32 S2 mini, direct connection of DESPI-C02
|
||||||
|
// BUSY -> 39, RST -> 37, DC -> 35, CS -> 33, CLK -> 18, DIN -> 16, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "LOLIN S2 MINI":
|
||||||
|
|
||||||
|
// new mapping suggestion for STM32F1, e.g. STM32F103C8T6 "BluePill"
|
||||||
|
// BUSY -> A1, RST -> A2, DC -> A3, CS-> A4, CLK -> A5, DIN -> A7
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, UNO, NANO etc.
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, Arduino Micro, Leonardo
|
||||||
|
// note: on Leonardo board HW SPI pins are on 6-pin ICSP header
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 15, DIN -> 16
|
||||||
|
|
||||||
|
// mapping of Waveshare Universal e-Paper Raw Panel Driver Shield for Arduino / NUCLEO
|
||||||
|
// BUSY -> 7, RST -> 8, DC -> 9, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MEGA
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 53, CLK -> 52, DIN -> 51
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino DUE, note: pin 77 is on board pin 10, SS is 10
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 76, DIN -> 75
|
||||||
|
// SPI pins are on 6 pin 2x3 SPI header, no SS on SPI header!
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MKR1000 or MKRZERO
|
||||||
|
// note: can't use SS on MKR1000: is defined as 24, should be 4
|
||||||
|
// BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
|
||||||
|
|
||||||
|
// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3
|
||||||
|
|
||||||
|
// mapping of my new proto board like Waveshare Pico-ePaper-2.9
|
||||||
|
// needs 10k pull-up on RST when used with Arduino MBED OS RP2040 Boards
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
|
|
||||||
|
// mapping of Waveshare Pico-ePaper-2.9
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
@@ -0,0 +1,479 @@
|
|||||||
|
// GxEPD2_SD_AVR_Example : Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// BMP handling code extracts taken from: https://github.com/prenticedavid/MCUFRIEND_kbv/tree/master/examples/showBMP_kbv_Uno
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
//
|
||||||
|
// note that BMP bitmaps are drawn at physical position in physical orientation of the screen
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// see GxEPD2_wiring_examples.h for wiring suggestions and examples
|
||||||
|
|
||||||
|
// **** NOTE that the mapping suggestion may need modification depending on SD board used! ****
|
||||||
|
// ********************************************************************************************
|
||||||
|
//
|
||||||
|
//#define SD_CS SS // e.g. for RobotDyn Wemos D1 mini SD board
|
||||||
|
//#define EPD_CS D1 // alternative I use with RobotDyn Wemos D1 mini SD board
|
||||||
|
|
||||||
|
// uncomment next line to use class GFX of library GFX_Root instead of Adafruit_GFX
|
||||||
|
//#include <GFX.h>
|
||||||
|
// Note: if you use this with ENABLE_GxEPD2_GFX 1:
|
||||||
|
// uncomment it in GxEPD2_GFX.h too, or add #include <GFX.h> before any #include <GxEPD2_GFX.h>
|
||||||
|
|
||||||
|
// includes needed to include driver classes
|
||||||
|
#include <GxEPD2_BW.h>
|
||||||
|
#include <GxEPD2_3C.h>
|
||||||
|
#include <GxEPD2_4C.h>
|
||||||
|
#include <GxEPD2_7C.h>
|
||||||
|
//#include <Fonts/FreeMonoBold9pt7b.h>
|
||||||
|
|
||||||
|
#if defined(ESP32)
|
||||||
|
|
||||||
|
// has support for FAT32 support with long filenames
|
||||||
|
#include "FS.h"
|
||||||
|
#include "SD.h"
|
||||||
|
#include "SPI.h"
|
||||||
|
#define SdFile File
|
||||||
|
#define seekSet seek
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
// include SdFat for FAT32 support with long filenames; available through Library Manager
|
||||||
|
#include <SdFat.h>
|
||||||
|
SdFat SD;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// select the display driver class (only one) for your panel
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_102 // GDEW0102T4 80x128, UC8175, (WFT0102CZA2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_150_BN // DEPG0150BN 200x200, SSD1681, (FPC8101), TTGO T5 V2.4.1 .
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154 // GDEP015OC1 200x200, IL3829, (WFC0000CZ07), no longer available.
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_D67 // GDEH0154D67 200x200, SSD1681, (HINK-E154A07-A1).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_T8 // GDEW0154T8 152x152, UC8151 (IL0373), (WFT0154CZ17).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M09 // GDEW0154M09 200x200, JD79653A, (WFT0154CZB3).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M10 // GDEW0154M10 152x152, UC8151D, (WFT0154CZ17).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_GDEY0154D67 // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213 // GDE0213B1 122x250, IL3895, (HINK-E0213-G01), phased out
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B72 // GDEH0213B72 122x250, SSD1675A (IL3897), (HINK-E0213A22-A0 SLH1852).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B73 // GDEH0213B73 122x250, SSD1675B, (HINK-E0213A22-A0 SLH1914).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B74 // GDEM0213B74 122x250, SSD1680, FPC-7528B).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_flex // GDEW0213I5F 104x212, UC8151 (IL0373), (WFT0213CZ16).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_M21 // GDEW0213M21 104x212, UC8151 (IL0373), (WFT0213CZ16).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_T5D // GDEW0213T5D 104x212, UC8151D, (WFT0213CZ16).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_BN // DEPG0213BN 122x250, SSD1680, (FPC-7528B), TTGO T5 V2.4.1, V2.3.1 .
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_GDEY0213B74 // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260 // GDEW026T0 152x296, UC8151 (IL0373), (WFT0154CZ17).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260_M01 // GDEW026M01 152x296, UC8151 (IL0373), (WFT0260CZB2).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_BN // DEPG0266BN 152x296, SSD1680, (FPC7510), TTGO T5 V2.66, TTGO T5 V2.4.1 .
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_GDEY0266T90 // GDEY0266T90 152x296, SSD1680, (FPC-A003 HB).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270 // GDEW027W3 176x264, EK79652 (IL91874), (WFI0190CZ22) ?
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270_GDEY027T91 // GDEY027T91 176x264, SSD1680, (FB).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290 // GDEH029A1 128x296, SSD1608 (IL3820), (E029A01-FPC-A1 SYX1553).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5 // GDEW029T5 128x296, UC8151 (IL0373), (WFT0290CZ10).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5D // GDEW029T5D 128x296, UC8151D, (WFT0290CZ10).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_I6FD // GDEW029I6FD 128x296, UC8151D, (WFT0290CZ10).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94_V2 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b), Waveshare 2.9" V2 variant .
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_BS // DEPG0290BS 128x296, SSD1680, (FPC-7519 rev.b).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_M06 // GDEW029M06 128x296, UC8151D, (WFT0290CZ10).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T94 // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_310_GDEQ031T10 // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_371 // GDEW0371W7 240x416, UC8171 (IL0324), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1 280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7".
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420 // GDEW042T2 400x300, UC8176 (IL0398), (WFT042CZ15).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01 400x300, UC8176 (IL0398), (WFT042CZ15).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583 // GDEW0583T7 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8 // GDEW0583T8 648x480, EK79655 (GD7965), (WFT0583CZ61).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750 // GDEW075T8 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_T7 // GDEW075T7 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_GDEY075T7 // GDEY075T7 800x480, UC8179 (GD7965), (FPC-C001 20.08.20).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160_T91 // GDEH116T91 960x640, SSD1677, (none or hidden).
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248 // GDEW1248T3 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
// 3-color e-papers
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c // GDEW0154Z04 200x200, IL0376F, (WFT0000CZ04), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_Z90c // GDEH0154Z90 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c // GDEW0213Z16 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z19c // GDEH0213Z19 104x212, UC8151D, (HINK-E0213A20-A2 2020-11-19)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z98c // GDEY0213Z98 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c // GDEY0266Z90 152x296, SSD1680, (FPC-7510)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270c // GDEW027C44 176x264, IL91874, (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c // GDEW029Z10 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_Z13c // GDEH029Z13 128x296, UC8151D, (HINK-E029A10-A3 20160809)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_C90c // GDEM029C90 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c // GDEW042Z15 400x300, UC8176 (IL0398), (WFT0420CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_Z21 // GDEQ042Z21 400x300, UC8276, (hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c // GDEW0583Z21 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_Z83 // GDEW0583Z83 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c // GDEW075Z09 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z08 // GDEW075Z08 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90 880x528, SSD1677, (HINK-E075A07-A0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248c // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
// 4-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_300c // Waveshare 3.00" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_437c // Waveshare 4.37" 4-color
|
||||||
|
// 7-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEY073D46 // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_ACeP_730 // Waveshare 7.3" 7-color
|
||||||
|
|
||||||
|
#if defined(__AVR)
|
||||||
|
#define SD_CS 6 // adapt to your wiring
|
||||||
|
#define EPD_CS SS // adapt to your wiring
|
||||||
|
GxEPD2_DRIVER_CLASS display(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// non-AVR board can also be used with GxEPD2 base display classes, e.g. for SD bitmap drawing
|
||||||
|
// uncomment your display for your board in the following included header file and adapt to your mapping
|
||||||
|
|
||||||
|
#include "GxEPD2_SD_AVR_boards_added.h"
|
||||||
|
|
||||||
|
// note that BMP bitmaps are drawn at physical position in physical orientation of the screen
|
||||||
|
|
||||||
|
// function declaration with default parameter
|
||||||
|
void drawBitmapFromSD(const char *filename, int16_t x, int16_t y, bool with_color = true);
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.println();
|
||||||
|
Serial.println(F("GxEPD2_SD_AVR_Example"));
|
||||||
|
|
||||||
|
display.init(115200);
|
||||||
|
|
||||||
|
Serial.print(F("Initializing SD card..."));
|
||||||
|
if (!SD.begin(SD_CS))
|
||||||
|
{
|
||||||
|
Serial.println(F("SD failed!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Serial.println(F("SD OK!"));
|
||||||
|
|
||||||
|
drawBitmaps_200x200();
|
||||||
|
drawBitmaps_other();
|
||||||
|
|
||||||
|
//drawBitmaps_test();
|
||||||
|
|
||||||
|
display.hibernate();
|
||||||
|
|
||||||
|
Serial.println(F("GxEPD2_SD_AVR_Example done"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmaps_200x200()
|
||||||
|
{
|
||||||
|
int16_t x = (int16_t(display.WIDTH) - 200) / 2;
|
||||||
|
int16_t y = (int16_t(display.HEIGHT) - 200) / 2;
|
||||||
|
drawBitmapFromSD("logo200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("first200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("second200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("third200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("fourth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("fifth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("sixth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("seventh200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("eighth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmaps_other()
|
||||||
|
{
|
||||||
|
int16_t w2 = display.WIDTH / 2;
|
||||||
|
int16_t h2 = display.HEIGHT / 2;
|
||||||
|
drawBitmapFromSD("parrot.bmp", w2 - 64, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("betty_1.bmp", w2 - 100, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("betty_4.bmp", w2 - 102, h2 - 126);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("marilyn_240x240x8.bmp", w2 - 120, h2 - 120);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("miniwoof.bmp", w2 - 60, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("t200x200.bmp", w2 - 100, h2 - 100);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("test.bmp", w2 - 120, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("tiger.bmp", w2 - 160, h2 - 120);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("tiger_178x160x4.bmp", w2 - 89, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("tiger_240x317x4.bmp", w2 - 120, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("tiger_320x200x24.bmp", w2 - 160, h2 - 100);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("tiger16T.bmp", w2 - 160, h2 - 120);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("woof.bmp", w2 - 120, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("bitmap640x384_1.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmaps_test()
|
||||||
|
{
|
||||||
|
int16_t w2 = display.WIDTH / 2;
|
||||||
|
int16_t h2 = display.HEIGHT / 2;
|
||||||
|
drawBitmapFromSD("betty_4.bmp", w2 - 102, h2 - 126);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const uint16_t input_buffer_pixels = 20; // may affect performance
|
||||||
|
|
||||||
|
static const uint16_t max_row_width = 640; // for up to 7.5" display
|
||||||
|
static const uint16_t max_palette_pixels = 256; // for depth <= 8
|
||||||
|
|
||||||
|
uint8_t input_buffer[3 * input_buffer_pixels]; // up to depth 24
|
||||||
|
uint8_t output_row_mono_buffer[max_row_width / 8]; // buffer for at least one row of b/w bits
|
||||||
|
uint8_t output_row_color_buffer[max_row_width / 8]; // buffer for at least one row of color bits
|
||||||
|
uint8_t mono_palette_buffer[max_palette_pixels / 8]; // palette buffer for depth <= 8 b/w
|
||||||
|
uint8_t color_palette_buffer[max_palette_pixels / 8]; // palette buffer for depth <= 8 c/w
|
||||||
|
|
||||||
|
void drawBitmapFromSD(const char *filename, int16_t x, int16_t y, bool with_color)
|
||||||
|
{
|
||||||
|
SdFile file;
|
||||||
|
bool valid = false; // valid format to be handled
|
||||||
|
bool flip = true; // bitmap is stored bottom-to-top
|
||||||
|
uint32_t startTime = millis();
|
||||||
|
//Serial.println(); Serial.print(x); Serial.print(" "); Serial.print(y); Serial.print(" "); Serial.println(filename);
|
||||||
|
if ((x >= int16_t(display.WIDTH)) || (y >= int16_t(display.HEIGHT))) return;
|
||||||
|
Serial.println();
|
||||||
|
Serial.print(F("Loading image '"));
|
||||||
|
Serial.print(filename);
|
||||||
|
Serial.println('\'');
|
||||||
|
#if defined(ESP32)
|
||||||
|
file = SD.open(String("/") + filename, FILE_READ);
|
||||||
|
if (!file)
|
||||||
|
{
|
||||||
|
Serial.print(F("File not found"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
if (!file.open(filename, FILE_READ))
|
||||||
|
{
|
||||||
|
Serial.print(F("File not found"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
// Parse BMP header
|
||||||
|
if (read16(file) == 0x4D42) // BMP signature
|
||||||
|
{
|
||||||
|
uint32_t fileSize = read32(file);
|
||||||
|
uint32_t creatorBytes = read32(file); (void)creatorBytes; //unused
|
||||||
|
uint32_t imageOffset = read32(file); // Start of image data
|
||||||
|
uint32_t headerSize = read32(file);
|
||||||
|
uint32_t width = read32(file);
|
||||||
|
int32_t height = (int32_t) read32(file);
|
||||||
|
uint16_t planes = read16(file);
|
||||||
|
uint16_t depth = read16(file); // bits per pixel
|
||||||
|
uint32_t format = read32(file);
|
||||||
|
if ((planes == 1) && ((format == 0) || (format == 3))) // uncompressed is handled, 565 also
|
||||||
|
{
|
||||||
|
Serial.print(F("File size: ")); Serial.println(fileSize);
|
||||||
|
Serial.print(F("Image Offset: ")); Serial.println(imageOffset);
|
||||||
|
Serial.print(F("Header size: ")); Serial.println(headerSize);
|
||||||
|
Serial.print(F("Bit Depth: ")); Serial.println(depth);
|
||||||
|
Serial.print(F("Image size: "));
|
||||||
|
Serial.print(width);
|
||||||
|
Serial.print('x');
|
||||||
|
Serial.println(height);
|
||||||
|
// BMP rows are padded (if needed) to 4-byte boundary
|
||||||
|
uint32_t rowSize = (width * depth / 8 + 3) & ~3;
|
||||||
|
if (depth < 8) rowSize = ((width * depth + 8 - depth) / 8 + 3) & ~3;
|
||||||
|
if (height < 0)
|
||||||
|
{
|
||||||
|
height = -height;
|
||||||
|
flip = false;
|
||||||
|
}
|
||||||
|
uint16_t w = width;
|
||||||
|
uint16_t h = height;
|
||||||
|
if ((x + w - 1) >= int16_t(display.WIDTH)) w = int16_t(display.WIDTH) - x;
|
||||||
|
if ((y + h - 1) >= int16_t(display.HEIGHT)) h = int16_t(display.HEIGHT) - y;
|
||||||
|
if (w <= max_row_width) // handle with direct drawing
|
||||||
|
{
|
||||||
|
valid = true;
|
||||||
|
uint8_t bitmask = 0xFF;
|
||||||
|
uint8_t bitshift = 8 - depth;
|
||||||
|
uint16_t red, green, blue;
|
||||||
|
bool whitish = false;
|
||||||
|
bool colored = false;
|
||||||
|
if (depth == 1) with_color = false;
|
||||||
|
if (depth <= 8)
|
||||||
|
{
|
||||||
|
if (depth < 8) bitmask >>= depth;
|
||||||
|
//file.seekSet(54); //palette is always @ 54
|
||||||
|
file.seekSet(imageOffset - (4 << depth)); // 54 for regular, diff for colorsimportant
|
||||||
|
for (int16_t pn = 0; pn < (1 << depth); pn++)
|
||||||
|
{
|
||||||
|
blue = file.read();
|
||||||
|
green = file.read();
|
||||||
|
red = file.read();
|
||||||
|
file.read();
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
if (0 == pn % 8) mono_palette_buffer[pn / 8] = 0;
|
||||||
|
mono_palette_buffer[pn / 8] |= whitish << pn % 8;
|
||||||
|
if (0 == pn % 8) color_palette_buffer[pn / 8] = 0;
|
||||||
|
color_palette_buffer[pn / 8] |= colored << pn % 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//display.clearScreen();
|
||||||
|
display.writeScreenBuffer();
|
||||||
|
uint32_t rowPosition = flip ? imageOffset + (height - h) * rowSize : imageOffset;
|
||||||
|
for (uint16_t row = 0; row < h; row++, rowPosition += rowSize) // for each line
|
||||||
|
{
|
||||||
|
uint32_t in_remain = rowSize;
|
||||||
|
uint32_t in_idx = 0;
|
||||||
|
uint32_t in_bytes = 0;
|
||||||
|
uint8_t in_byte = 0; // for depth <= 8
|
||||||
|
uint8_t in_bits = 0; // for depth <= 8
|
||||||
|
uint8_t out_byte = 0xFF; // white (for w%8!=0 border)
|
||||||
|
uint8_t out_color_byte = 0xFF; // white (for w%8!=0 border)
|
||||||
|
uint32_t out_idx = 0;
|
||||||
|
file.seekSet(rowPosition);
|
||||||
|
for (uint16_t col = 0; col < w; col++) // for each pixel
|
||||||
|
{
|
||||||
|
// Time to read more pixel data?
|
||||||
|
if (in_idx >= in_bytes) // ok, exact match for 24bit also (size IS multiple of 3)
|
||||||
|
{
|
||||||
|
in_bytes = file.read(input_buffer, in_remain > sizeof(input_buffer) ? sizeof(input_buffer) : in_remain);
|
||||||
|
in_remain -= in_bytes;
|
||||||
|
in_idx = 0;
|
||||||
|
}
|
||||||
|
switch (depth)
|
||||||
|
{
|
||||||
|
case 32:
|
||||||
|
blue = input_buffer[in_idx++];
|
||||||
|
green = input_buffer[in_idx++];
|
||||||
|
red = input_buffer[in_idx++];
|
||||||
|
in_idx++; // skip alpha
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
break;
|
||||||
|
case 24:
|
||||||
|
blue = input_buffer[in_idx++];
|
||||||
|
green = input_buffer[in_idx++];
|
||||||
|
red = input_buffer[in_idx++];
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
{
|
||||||
|
uint8_t lsb = input_buffer[in_idx++];
|
||||||
|
uint8_t msb = input_buffer[in_idx++];
|
||||||
|
if (format == 0) // 555
|
||||||
|
{
|
||||||
|
blue = (lsb & 0x1F) << 3;
|
||||||
|
green = ((msb & 0x03) << 6) | ((lsb & 0xE0) >> 2);
|
||||||
|
red = (msb & 0x7C) << 1;
|
||||||
|
}
|
||||||
|
else // 565
|
||||||
|
{
|
||||||
|
blue = (lsb & 0x1F) << 3;
|
||||||
|
green = ((msb & 0x07) << 5) | ((lsb & 0xE0) >> 3);
|
||||||
|
red = (msb & 0xF8);
|
||||||
|
}
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
case 4:
|
||||||
|
case 8:
|
||||||
|
{
|
||||||
|
if (0 == in_bits)
|
||||||
|
{
|
||||||
|
in_byte = input_buffer[in_idx++];
|
||||||
|
in_bits = 8;
|
||||||
|
}
|
||||||
|
uint16_t pn = (in_byte >> bitshift) & bitmask;
|
||||||
|
whitish = mono_palette_buffer[pn / 8] & (0x1 << pn % 8);
|
||||||
|
colored = color_palette_buffer[pn / 8] & (0x1 << pn % 8);
|
||||||
|
in_byte <<= depth;
|
||||||
|
in_bits -= depth;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (whitish)
|
||||||
|
{
|
||||||
|
// keep white
|
||||||
|
}
|
||||||
|
else if (colored && with_color)
|
||||||
|
{
|
||||||
|
out_color_byte &= ~(0x80 >> col % 8); // colored
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
out_byte &= ~(0x80 >> col % 8); // black
|
||||||
|
}
|
||||||
|
if ((7 == col % 8) || (col == w - 1)) // write that last byte! (for w%8!=0 border)
|
||||||
|
{
|
||||||
|
output_row_color_buffer[out_idx] = out_color_byte;
|
||||||
|
output_row_mono_buffer[out_idx++] = out_byte;
|
||||||
|
out_byte = 0xFF; // white (for w%8!=0 border)
|
||||||
|
out_color_byte = 0xFF; // white (for w%8!=0 border)
|
||||||
|
}
|
||||||
|
} // end pixel
|
||||||
|
uint16_t yrow = y + (flip ? h - row - 1 : row);
|
||||||
|
display.writeImage(output_row_mono_buffer, output_row_color_buffer, x, yrow, w, 1);
|
||||||
|
} // end line
|
||||||
|
Serial.print(F("loaded in ")); Serial.print(millis() - startTime); Serial.println(F(" ms"));
|
||||||
|
display.refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file.close();
|
||||||
|
if (!valid)
|
||||||
|
{
|
||||||
|
Serial.println(F("bitmap format not handled."));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t read16(SdFile& f)
|
||||||
|
{
|
||||||
|
// BMP data is stored little-endian, same as Arduino.
|
||||||
|
uint16_t result;
|
||||||
|
((uint8_t *)&result)[0] = f.read(); // LSB
|
||||||
|
((uint8_t *)&result)[1] = f.read(); // MSB
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t read32(SdFile& f)
|
||||||
|
{
|
||||||
|
// BMP data is stored little-endian, same as Arduino.
|
||||||
|
uint32_t result;
|
||||||
|
((uint8_t *)&result)[0] = f.read(); // LSB
|
||||||
|
((uint8_t *)&result)[1] = f.read();
|
||||||
|
((uint8_t *)&result)[2] = f.read();
|
||||||
|
((uint8_t *)&result)[3] = f.read(); // MSB
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: http://www.e-paper-display.com/download_list/downloadcategoryid=34&isMode=false.html
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// non-AVR board can also be used with GxEPD2 base display classes, e.g. for SD bitmap drawing
|
||||||
|
|
||||||
|
#ifndef _GxEPD2_SD_AVR_boards_added_H_
|
||||||
|
#define _GxEPD2_SD_AVR_boards_added_H_
|
||||||
|
|
||||||
|
#if defined (ESP8266)
|
||||||
|
#define SD_CS SS // e.g. for RobotDyn Wemos D1 mini SD board
|
||||||
|
#define EPD_CS D1 // alternative I use with RobotDyn Wemos D1 mini SD board
|
||||||
|
GxEPD2_DRIVER_CLASS display(/*CS=*/ EPD_CS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ESP32)
|
||||||
|
#define SD_CS 2 // adapt to your wiring
|
||||||
|
#define EPD_CS SS // adapt to your wiring
|
||||||
|
GxEPD2_DRIVER_CLASS display(/*CS=5*/ EPD_CS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_BOARD_GENERIC_STM32F103C_H_)
|
||||||
|
#define SD_CS 0 // adapt to your wiring
|
||||||
|
#define EPD_CS SS // adapt to your wiring
|
||||||
|
GxEPD2_DRIVER_CLASS display(/*CS=4*/ EPD_CS, /*DC=*/ 3, /*RST=*/ 2, /*BUSY=*/ 1);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAM)
|
||||||
|
#define SD_CS 0 // adapt to your wiring
|
||||||
|
#define EPD_CS SS // adapt to your wiring
|
||||||
|
GxEPD2_DRIVER_CLASS display(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAMD)
|
||||||
|
#define SD_CS 0 // adapt to your wiring
|
||||||
|
#define EPD_CS SS // adapt to your wiring
|
||||||
|
GxEPD2_DRIVER_CLASS display(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// mapping of Good Display Arduino UNO Development Kit DEArduino-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> 4, RES -> 5, D/C -> 6, CS-> 7, SCK -> 13, SDI -> 11
|
||||||
|
|
||||||
|
// mapping of Good Display ESP8266 Development Kit ESP8266-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO16, RES -> GPIO5, D/C -> GPIO4, CS-> GPIO2, SCK -> GPIO14, SDI -> GPIO13
|
||||||
|
|
||||||
|
// mapping of Good Display ESP32 Development Kit ESP32-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO13, RES -> GPIO12, D/C -> GPIO14, CS-> GPIO27, SCK -> GPIO18, SDI -> GPIO23
|
||||||
|
|
||||||
|
// mapping of Good Display STM32 Development Kit DESPI-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PD9, SDI -> PD10
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PA5, SDI -> PA7 // for HW SPI with GxEPD2
|
||||||
|
|
||||||
|
// connection suggestions concerning Waveshare e-paper HAT Rev 2.3:
|
||||||
|
// DON'T FORGET to connect the PWR pin to VCC, to enable power to the board.
|
||||||
|
// RST is no longer used to disable power to the board, as with earlier revisions.
|
||||||
|
// Note, for 3.3V processors, no level converters are needed. Use DESPI-C02 instead. Uses less power.
|
||||||
|
// See https://www.buyepaper.com/products/development-kit-connection-adapter-board-for-eaper-display-demo-kit
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
|
||||||
|
// BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
|
||||||
|
// BUSY -> GPIO4, RST -> GPIO2, DC -> GPIO0, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from GPIO15 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from GPIO2 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
// BUSY -> GPIO5, RST -> GPIO2, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
// BUSY -> GPIO16, RST -> GPIO5, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32, see .../variants/.../pins_arduino.h for your board
|
||||||
|
// NOTE: there are variants with different pins for SPI ! CHECK SPI PINS OF YOUR BOARD
|
||||||
|
// BUSY -> 4, RST -> 16, DC -> 17, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
|
||||||
|
// mapping of Waveshare ESP32 Driver Board
|
||||||
|
// BUSY -> 25, RST -> 26, DC -> 27, CS-> 15, CLK -> 13, DIN -> 14
|
||||||
|
// NOTE: this board uses "unusual" SPI pins and requires re-mapping of HW SPI to these pins in SPIClass
|
||||||
|
// see example GxEPD2_WS_ESP32_Driver.ino, it shows how this can be done easily
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32 D32 PRO
|
||||||
|
// BUSY -> 15, RST -> 2, DC -> 0, CS -> 5, CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// note: use explicit value for CS, as SS is re-defined to TF_CS(4) in pins_arduino.h for Board: "LOLIN D32 PRO"
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. TTGO T8 ESP32-WROVER
|
||||||
|
// BUSY -> 4, RST -> 0, DC -> 2, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "ESP32 Dev Module":
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32S2, e.g. LOLIN ESP32 S2 mini, direct connection of DESPI-C02
|
||||||
|
// BUSY -> 39, RST -> 37, DC -> 35, CS -> 33, CLK -> 18, DIN -> 16, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "LOLIN S2 MINI":
|
||||||
|
|
||||||
|
// new mapping suggestion for STM32F1, e.g. STM32F103C8T6 "BluePill"
|
||||||
|
// BUSY -> A1, RST -> A2, DC -> A3, CS-> A4, CLK -> A5, DIN -> A7
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, UNO, NANO etc.
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, Arduino Micro, Leonardo
|
||||||
|
// note: on Leonardo board HW SPI pins are on 6-pin ICSP header
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 15, DIN -> 16
|
||||||
|
|
||||||
|
// mapping of Waveshare Universal e-Paper Raw Panel Driver Shield for Arduino / NUCLEO
|
||||||
|
// BUSY -> 7, RST -> 8, DC -> 9, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MEGA
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 53, CLK -> 52, DIN -> 51
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino DUE, note: pin 77 is on board pin 10, SS is 10
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 76, DIN -> 75
|
||||||
|
// SPI pins are on 6 pin 2x3 SPI header, no SS on SPI header!
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MKR1000 or MKRZERO
|
||||||
|
// note: can't use SS on MKR1000: is defined as 24, should be 4
|
||||||
|
// BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
|
||||||
|
|
||||||
|
// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3
|
||||||
|
|
||||||
|
// mapping of my new proto board like Waveshare Pico-ePaper-2.9
|
||||||
|
// needs 10k pull-up on RST when used with Arduino MBED OS RP2040 Boards
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
|
|
||||||
|
// mapping of Waveshare Pico-ePaper-2.9
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
@@ -0,0 +1,866 @@
|
|||||||
|
// GxEPD2_SD_Example : Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// BMP handling code extracts taken from: https://github.com/prenticedavid/MCUFRIEND_kbv/tree/master/examples/showBMP_kbv_Uno
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
//
|
||||||
|
// note that BMP bitmaps are drawn at physical position in physical orientation of the screen
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// see GxEPD2_wiring_examples.h for wiring suggestions and examples
|
||||||
|
|
||||||
|
// **** NOTE that the mapping suggestion may need modification depending on SD board used! ****
|
||||||
|
// ********************************************************************************************
|
||||||
|
//
|
||||||
|
// NOTE for use with Waveshare ESP32 Driver Board:
|
||||||
|
// **** also need to select the constructor with the parameters for this board in GxEPD2_display_selection_new_style.h ****
|
||||||
|
//
|
||||||
|
// The Wavehare ESP32 Driver Board uses uncommon SPI pins for the FPC connector. It uses HSPI pins, but SCK and MOSI are swapped.
|
||||||
|
// To use HW SPI with the ESP32 Driver Board, HW SPI pins need be re-mapped in any case. Can be done using either HSPI or VSPI.
|
||||||
|
// Other SPI clients can either be connected to the same SPI bus as the e-paper, or to the other HW SPI bus, or through SW SPI.
|
||||||
|
// The logical configuration would be to use the e-paper connection on HSPI with re-mapped pins, and use VSPI for other SPI clients.
|
||||||
|
// VSPI with standard VSPI pins is used by the global SPI instance of the Arduino IDE ESP32 package.
|
||||||
|
//
|
||||||
|
// Alternately VSPI with re-mapped pins can be used with the ESP32 Driver Board FPC connector.
|
||||||
|
// This was used with the original example GxEPD2_WS_ESP32_Driver.ino.
|
||||||
|
// Then the standard HW SPI pins can be used for other clients through HSPI with re-mapped pins.
|
||||||
|
// This is not the prefered configuration, but also works. Available in this example for test.
|
||||||
|
|
||||||
|
// uncomment next line to use HSPI for EPD (and VSPI for SD), e.g. with Waveshare ESP32 Driver Board
|
||||||
|
//#define USE_HSPI_FOR_EPD
|
||||||
|
// alternately uncomment next line to use HSPI for SD (and VSPI for EPD), e.g. with Waveshare ESP32 Driver Board
|
||||||
|
//#define USE_HSPI_FOR_SD
|
||||||
|
|
||||||
|
// base class GxEPD2_GFX can be used to pass references or pointers to the display instance as parameter, uses ~1.2k more code
|
||||||
|
// enable or disable GxEPD2_GFX base class
|
||||||
|
#define ENABLE_GxEPD2_GFX 0
|
||||||
|
|
||||||
|
// uncomment next line to use class GFX of library GFX_Root instead of Adafruit_GFX
|
||||||
|
//#include <GFX.h>
|
||||||
|
// Note: if you use this with ENABLE_GxEPD2_GFX 1:
|
||||||
|
// uncomment it in GxEPD2_GFX.h too, or add #include <GFX.h> before any #include <GxEPD2_GFX.h>
|
||||||
|
|
||||||
|
#include <GxEPD2_BW.h>
|
||||||
|
#include <GxEPD2_3C.h>
|
||||||
|
#include <GxEPD2_7C.h>
|
||||||
|
#include <Fonts/FreeMonoBold9pt7b.h>
|
||||||
|
|
||||||
|
#if defined(ESP32)
|
||||||
|
|
||||||
|
#include "FS.h"
|
||||||
|
#include "SD.h"
|
||||||
|
#include "SPI.h"
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#include <SPI.h>
|
||||||
|
#include <SD.h>
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// #define EPD_CS before #include "GxEPD2_display_selection_new_style.h" to override default
|
||||||
|
#if defined (ESP8266)
|
||||||
|
#define SD_CS SS // e.g. for RobotDyn Wemos D1 mini SD board
|
||||||
|
#define EPD_CS D1 // alternative I use with RobotDyn Wemos D1 mini SD board
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ESP32)
|
||||||
|
#if defined(USE_HSPI_FOR_EPD) || defined(USE_HSPI_FOR_SD)
|
||||||
|
#define SD_CS SS
|
||||||
|
#define EPD_CS 15
|
||||||
|
SPIClass hspi(HSPI);
|
||||||
|
#else
|
||||||
|
#define SD_CS 2 // adapted to my wiring
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RP2040) && defined(ARDUINO_RASPBERRY_PI_PICO)
|
||||||
|
// Waveshare PhotoPainter
|
||||||
|
#define EPD_RST_PIN 12
|
||||||
|
#define EPD_DC_PIN 8
|
||||||
|
#define EPD_CS_PIN 9
|
||||||
|
#define EPD_BUSY_PIN 13
|
||||||
|
#define EPD_CLK_PIN 10
|
||||||
|
#define EPD_MOSI_PIN 11
|
||||||
|
#define SD_CS_PIN 5
|
||||||
|
#define SD_CLK_PIN 2
|
||||||
|
#define SD_MOSI_PIN 3
|
||||||
|
#define SD_MISO_PIN 4
|
||||||
|
#define EPD_CS EPD_CS_PIN
|
||||||
|
#define SD_CS SD_CS_PIN
|
||||||
|
#if defined(__MBED__)
|
||||||
|
// MbedSPI(int miso, int mosi, int sck);
|
||||||
|
arduino::MbedSPI EPD_SPI(12, EPD_MOSI_PIN, EPD_CLK_PIN);
|
||||||
|
arduino::MbedSPI SD_SPI(SD_MISO_PIN, SD_MOSI_PIN, SD_CS_PIN);
|
||||||
|
#else // package https://github.com/earlephilhower/arduino-pico
|
||||||
|
// SPIClassRP2040(spi_inst_t *spi, pin_size_t rx, pin_size_t cs, pin_size_t sck, pin_size_t tx);
|
||||||
|
SPIClassRP2040 EPD_SPI(spi1, 12, 13, 10, 11);
|
||||||
|
SPIClassRP2040 SD_SPI(spi0, SD_MISO_PIN, SD_CS_PIN, SD_CLK_PIN, SD_MOSI_PIN);
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__AVR)
|
||||||
|
#define SD_CS 6 // adapt to your wiring
|
||||||
|
#define EPD_CS SS // adapt to your wiring
|
||||||
|
// most AVR Arduinos have not enough RAM for use with SD and buffered graphics
|
||||||
|
// !!! use GxEPD2_SD_AVR_Example.ino instead !!!
|
||||||
|
//GxEPD2_154 display(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// select the display class and display driver class in the following file (new style):
|
||||||
|
// don't forget to modify or override EPD_CS if needed
|
||||||
|
#include "GxEPD2_display_selection_new_style.h"
|
||||||
|
|
||||||
|
// note that BMP bitmaps are drawn at physical position in physical orientation of the screen
|
||||||
|
|
||||||
|
// function declaration with default parameter
|
||||||
|
void drawBitmapFromSD(const char *filename, int16_t x, int16_t y, bool with_color = true);
|
||||||
|
|
||||||
|
// bitmap drawing using buffered graphics, e.g. for small bitmaps or for GxEPD2_154c
|
||||||
|
// draws BMP bitmap according to set orientation
|
||||||
|
// partial_update selects refresh mode (not effective for GxEPD2_154c)
|
||||||
|
// overwrite = true does not clear buffer before drawing, use only if buffer is full height
|
||||||
|
void drawBitmapFromSD_Buffered(const char *filename, int16_t x, int16_t y, bool with_color = true, bool partial_update = false, bool overwrite = false);
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
delay(5000);
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.println();
|
||||||
|
Serial.println("GxEPD2_SD_Example");
|
||||||
|
|
||||||
|
#if defined(ESP32) && defined(USE_HSPI_FOR_EPD)
|
||||||
|
hspi.begin(13, 12, 14, 15); // remap hspi for EPD (swap pins)
|
||||||
|
display.epd2.selectSPI(hspi, SPISettings(4000000, MSBFIRST, SPI_MODE0));
|
||||||
|
#elif defined(ESP32) && defined(USE_HSPI_FOR_SD)
|
||||||
|
SPI.begin(13, 12, 14, 15); // remap SPI for EPD
|
||||||
|
hspi.begin(SCK, MISO, MOSI, SS); // remap hspi for SD
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RP2040) && defined(ARDUINO_RASPBERRY_PI_PICO)
|
||||||
|
display.epd2.selectSPI(EPD_SPI, SPISettings(4000000, MSBFIRST, SPI_MODE0));
|
||||||
|
// uncomment next line for Waveshare PhotoPainter module
|
||||||
|
pinMode(16, OUTPUT); digitalWrite(16, HIGH); // power to the paper
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//display.init(115200); // default 10ms reset pulse, e.g. for bare panels with DESPI-C02
|
||||||
|
display.init(115200, true, 2, false); // USE THIS for Waveshare boards with "clever" reset circuit, 2ms reset pulse
|
||||||
|
|
||||||
|
Serial.print("Initializing SD card...");
|
||||||
|
#if defined(ESP32) && defined(USE_HSPI_FOR_SD)
|
||||||
|
if (!SD.begin(SD_CS, hspi))
|
||||||
|
{
|
||||||
|
Serial.println("SD failed!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#elif defined(ARDUINO_ARCH_RP2040) && defined(ARDUINO_RASPBERRY_PI_PICO)
|
||||||
|
if (!SD.begin(SD_CS, SD_SPI))
|
||||||
|
{
|
||||||
|
Serial.println("SD failed!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
if (!SD.begin(SD_CS))
|
||||||
|
{
|
||||||
|
Serial.println("SD failed!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
Serial.println("SD OK!");
|
||||||
|
|
||||||
|
listFiles();
|
||||||
|
|
||||||
|
if ((display.epd2.panel == GxEPD2::GDEW0154Z04) || (display.epd2.panel == GxEPD2::ACeP565) || (display.epd2.panel == GxEPD2::GDEY073D46) || (display.epd2.panel == GxEPD2::ACeP730) || false)
|
||||||
|
{
|
||||||
|
//drawBitmapsBuffered_200x200();
|
||||||
|
//drawBitmapsBuffered_other();
|
||||||
|
drawBitmapsBuffered_test();
|
||||||
|
//drawBitmapsBuffered_7c();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
drawBitmaps_200x200();
|
||||||
|
drawBitmaps_other();
|
||||||
|
}
|
||||||
|
|
||||||
|
//drawBitmaps_test();
|
||||||
|
//drawBitmapsBuffered_test();
|
||||||
|
|
||||||
|
Serial.println("GxEPD2_SD_Example done");
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void listFiles()
|
||||||
|
{
|
||||||
|
Serial.println("All Files on SD:");
|
||||||
|
File root = SD.open("/");
|
||||||
|
if (root)
|
||||||
|
{
|
||||||
|
if (root.isDirectory())
|
||||||
|
{
|
||||||
|
File file = root.openNextFile();
|
||||||
|
while (file)
|
||||||
|
{
|
||||||
|
Serial.print(" ");
|
||||||
|
Serial.print(file.name());
|
||||||
|
spaces(20 - strlen(file.name()));
|
||||||
|
Serial.print(" ");
|
||||||
|
Serial.print(file.size());
|
||||||
|
Serial.print(" bytes");
|
||||||
|
Serial.println();
|
||||||
|
file = root.openNextFile();
|
||||||
|
}
|
||||||
|
Serial.println("no more files...");
|
||||||
|
} else Serial.print("Not a directory");
|
||||||
|
} else Serial.print("failed to open root directory");
|
||||||
|
}
|
||||||
|
|
||||||
|
void spaces(int num)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < num; i++)
|
||||||
|
{
|
||||||
|
Serial.print(" ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmaps_200x200()
|
||||||
|
{
|
||||||
|
int16_t x = (display.width() - 200) / 2;
|
||||||
|
int16_t y = (display.height() - 200) / 2;
|
||||||
|
drawBitmapFromSD("logo200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("first200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("second200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("third200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("fourth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("fifth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("sixth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("seventh200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("eighth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmaps_other()
|
||||||
|
{
|
||||||
|
int16_t w2 = display.width() / 2;
|
||||||
|
int16_t h2 = display.height() / 2;
|
||||||
|
drawBitmapFromSD("parrot.bmp", w2 - 64, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("betty_1.bmp", w2 - 100, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("betty_4.bmp", w2 - 102, h2 - 126);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("marilyn_240x240x8.bmp", w2 - 120, h2 - 120);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("miniwoof.bmp", w2 - 60, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("t200x200.bmp", w2 - 100, h2 - 100);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("test.bmp", w2 - 120, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("tiger.bmp", w2 - 160, h2 - 120);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("tiger_178x160x4.bmp", w2 - 89, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("tiger_240x317x4.bmp", w2 - 120, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("tiger_320x200x24.bmp", w2 - 160, h2 - 100);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("tiger16T.bmp", w2 - 160, h2 - 120);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("woof.bmp", w2 - 120, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("bitmap640x384_1.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmaps_test()
|
||||||
|
{
|
||||||
|
int16_t w2 = display.width() / 2;
|
||||||
|
int16_t h2 = display.height() / 2;
|
||||||
|
drawBitmapFromSD("betty_4.bmp", w2 - 102, h2 - 126);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("bb4.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("output5.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("output6.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("tractor_1.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("tractor_4.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
//drawBitmapFromSD("tractor_8.bmp", 0, 0); // format 1: BI_RLE8 is not supported
|
||||||
|
//delay(2000);
|
||||||
|
drawBitmapFromSD("tractor_11.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("tractor_44.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD("tractor_88.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmapsBuffered_200x200()
|
||||||
|
{
|
||||||
|
int16_t x = (display.width() - 200) / 2;
|
||||||
|
int16_t y = (display.height() - 200) / 2;
|
||||||
|
drawBitmapFromSD_Buffered("logo200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("first200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("second200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("third200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("fourth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("fifth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("sixth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("seventh200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("eighth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmapsBuffered_other()
|
||||||
|
{
|
||||||
|
int16_t w2 = display.width() / 2;
|
||||||
|
int16_t h2 = display.height() / 2;
|
||||||
|
drawBitmapFromSD_Buffered("parrot.bmp", w2 - 64, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("betty_1.bmp", w2 - 100, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("betty_4.bmp", w2 - 102, h2 - 126);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("marilyn_240x240x8.bmp", w2 - 120, h2 - 120);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("miniwoof.bmp", w2 - 60, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("t200x200.bmp", w2 - 100, h2 - 100);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("test.bmp", w2 - 120, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("tiger.bmp", w2 - 160, h2 - 120);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("tiger_178x160x4.bmp", w2 - 89, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("tiger_240x317x4.bmp", w2 - 120, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("tiger_320x200x24.bmp", w2 - 160, h2 - 100);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("tiger16T.bmp", w2 - 160, h2 - 120);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("woof.bmp", w2 - 120, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("bitmap640x384_1.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmapsBuffered_test()
|
||||||
|
{
|
||||||
|
int16_t w2 = display.width() / 2;
|
||||||
|
int16_t h2 = display.height() / 2;
|
||||||
|
//drawBitmapFromSD_Buffered("betty_4.bmp", w2 - 102, h2 - 126);
|
||||||
|
//delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("bb4.bmp", w2 - 17, h2 - 9, false, true, true);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("rgb32.bmp", w2 - 64, h2 - 32);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("parrot.bmp", w2- 64, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSD_Buffered("5in65f3.bmp", w2 - 300, h2 - 224);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmapsBuffered_7c()
|
||||||
|
{
|
||||||
|
drawBitmapFromSD_Buffered("pic/building-7362300_1920_scale_output.bmp", 0, 0);
|
||||||
|
delay(3000);
|
||||||
|
drawBitmapFromSD_Buffered("pic/girl-3480900_1920_scale_output.bmp", 0, 0);
|
||||||
|
delay(3000);
|
||||||
|
drawBitmapFromSD_Buffered("pic/miniature-3589682_1920_scale_output.bmp", 0, 0);
|
||||||
|
delay(3000);
|
||||||
|
display.setRotation(1);
|
||||||
|
drawBitmapFromSD_Buffered("pic/pexels-boys-in-bristol-photography-13318095_scale_output.bmp", 0, 0);
|
||||||
|
delay(3000);
|
||||||
|
drawBitmapFromSD_Buffered("pic/pexels-efe-ersoy-15686039_scale_output.bmp", 0, 0);
|
||||||
|
delay(3000);
|
||||||
|
drawBitmapFromSD_Buffered("pic/pexels-jill-burrow-6069730_scale_output.bmp", 0, 0);
|
||||||
|
delay(3000);
|
||||||
|
drawBitmapFromSD_Buffered("pic/pexels-yelena-odintsova-15792199_scale_output.bmp", 0, 0);
|
||||||
|
delay(3000);
|
||||||
|
drawBitmapFromSD_Buffered("pic/pexels-ольга-солодилова-15912787_scale_output.bmp", 0, 0);
|
||||||
|
delay(3000);
|
||||||
|
display.setRotation(0);
|
||||||
|
drawBitmapFromSD_Buffered("pic/venice-2896591_1920_scale_output", 0, 0);
|
||||||
|
delay(3000);
|
||||||
|
drawBitmapFromSD_Buffered("pic/venice-2937352_1920_scale_output.bmp", 0, 0);
|
||||||
|
delay(3000);
|
||||||
|
}
|
||||||
|
|
||||||
|
//static const uint16_t input_buffer_pixels = 20; // may affect performance
|
||||||
|
static const uint16_t input_buffer_pixels = 800; // may affect performance
|
||||||
|
|
||||||
|
static const uint16_t max_row_width = 1448; // for up to 6" display 1448x1072
|
||||||
|
static const uint16_t max_palette_pixels = 256; // for depth <= 8
|
||||||
|
|
||||||
|
uint8_t input_buffer[3 * input_buffer_pixels]; // up to depth 24
|
||||||
|
uint8_t output_row_mono_buffer[max_row_width / 8]; // buffer for at least one row of b/w bits
|
||||||
|
uint8_t output_row_color_buffer[max_row_width / 8]; // buffer for at least one row of color bits
|
||||||
|
uint8_t mono_palette_buffer[max_palette_pixels / 8]; // palette buffer for depth <= 8 b/w
|
||||||
|
uint8_t color_palette_buffer[max_palette_pixels / 8]; // palette buffer for depth <= 8 c/w
|
||||||
|
uint16_t rgb_palette_buffer[max_palette_pixels]; // palette buffer for depth <= 8 for buffered graphics, needed for 7-color display
|
||||||
|
|
||||||
|
void drawBitmapFromSD(const char *filename, int16_t x, int16_t y, bool with_color)
|
||||||
|
{
|
||||||
|
File file;
|
||||||
|
bool valid = false; // valid format to be handled
|
||||||
|
bool flip = true; // bitmap is stored bottom-to-top
|
||||||
|
uint32_t startTime = millis();
|
||||||
|
if ((x >= display.epd2.WIDTH) || (y >= display.epd2.HEIGHT)) return;
|
||||||
|
Serial.println();
|
||||||
|
Serial.print("Loading image '");
|
||||||
|
Serial.print(filename);
|
||||||
|
Serial.println('\'');
|
||||||
|
#if defined(ESP32)
|
||||||
|
file = SD.open(String("/") + filename, FILE_READ);
|
||||||
|
if (!file)
|
||||||
|
{
|
||||||
|
Serial.print("File not found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
file = SD.open(filename);
|
||||||
|
if (!file)
|
||||||
|
{
|
||||||
|
Serial.print("File not found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
// Parse BMP header
|
||||||
|
if (read16(file) == 0x4D42) // BMP signature
|
||||||
|
{
|
||||||
|
uint32_t fileSize = read32(file);
|
||||||
|
uint32_t creatorBytes = read32(file); (void)creatorBytes; //unused
|
||||||
|
uint32_t imageOffset = read32(file); // Start of image data
|
||||||
|
uint32_t headerSize = read32(file);
|
||||||
|
uint32_t width = read32(file);
|
||||||
|
int32_t height = (int32_t) read32(file);
|
||||||
|
uint16_t planes = read16(file);
|
||||||
|
uint16_t depth = read16(file); // bits per pixel
|
||||||
|
uint32_t format = read32(file);
|
||||||
|
if ((planes == 1) && ((format == 0) || (format == 3))) // uncompressed is handled, 565 also
|
||||||
|
{
|
||||||
|
Serial.print("File size: "); Serial.println(fileSize);
|
||||||
|
Serial.print("Image Offset: "); Serial.println(imageOffset);
|
||||||
|
Serial.print("Header size: "); Serial.println(headerSize);
|
||||||
|
Serial.print("Bit Depth: "); Serial.println(depth);
|
||||||
|
Serial.print("Image size: ");
|
||||||
|
Serial.print(width);
|
||||||
|
Serial.print('x');
|
||||||
|
Serial.println(height);
|
||||||
|
// BMP rows are padded (if needed) to 4-byte boundary
|
||||||
|
uint32_t rowSize = (width * depth / 8 + 3) & ~3;
|
||||||
|
if (depth < 8) rowSize = ((width * depth + 8 - depth) / 8 + 3) & ~3;
|
||||||
|
if (height < 0)
|
||||||
|
{
|
||||||
|
height = -height;
|
||||||
|
flip = false;
|
||||||
|
}
|
||||||
|
uint16_t w = width;
|
||||||
|
uint16_t h = height;
|
||||||
|
if ((x + w - 1) >= display.epd2.WIDTH) w = display.epd2.WIDTH - x;
|
||||||
|
if ((y + h - 1) >= display.epd2.HEIGHT) h = display.epd2.HEIGHT - y;
|
||||||
|
if (w <= max_row_width) // handle with direct drawing
|
||||||
|
{
|
||||||
|
valid = true;
|
||||||
|
uint8_t bitmask = 0xFF;
|
||||||
|
uint8_t bitshift = 8 - depth;
|
||||||
|
uint16_t red, green, blue;
|
||||||
|
bool whitish = false;
|
||||||
|
bool colored = false;
|
||||||
|
if (depth == 1) with_color = false;
|
||||||
|
if (depth <= 8)
|
||||||
|
{
|
||||||
|
if (depth < 8) bitmask >>= depth;
|
||||||
|
//file.seek(54); //palette is always @ 54
|
||||||
|
file.seek(imageOffset - (4 << depth)); // 54 for regular, diff for colorsimportant
|
||||||
|
for (uint16_t pn = 0; pn < (1 << depth); pn++)
|
||||||
|
{
|
||||||
|
blue = file.read();
|
||||||
|
green = file.read();
|
||||||
|
red = file.read();
|
||||||
|
file.read();
|
||||||
|
//Serial.print(red); Serial.print(" "); Serial.print(green); Serial.print(" "); Serial.println(blue);
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
if (0 == pn % 8) mono_palette_buffer[pn / 8] = 0;
|
||||||
|
mono_palette_buffer[pn / 8] |= whitish << pn % 8;
|
||||||
|
if (0 == pn % 8) color_palette_buffer[pn / 8] = 0;
|
||||||
|
color_palette_buffer[pn / 8] |= colored << pn % 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
display.clearScreen();
|
||||||
|
uint32_t rowPosition = flip ? imageOffset + (height - h) * rowSize : imageOffset;
|
||||||
|
for (uint16_t row = 0; row < h; row++, rowPosition += rowSize) // for each line
|
||||||
|
{
|
||||||
|
uint32_t in_remain = rowSize;
|
||||||
|
uint32_t in_idx = 0;
|
||||||
|
uint32_t in_bytes = 0;
|
||||||
|
uint8_t in_byte = 0; // for depth <= 8
|
||||||
|
uint8_t in_bits = 0; // for depth <= 8
|
||||||
|
uint8_t out_byte = 0xFF; // white (for w%8!=0 border)
|
||||||
|
uint8_t out_color_byte = 0xFF; // white (for w%8!=0 border)
|
||||||
|
uint32_t out_idx = 0;
|
||||||
|
file.seek(rowPosition);
|
||||||
|
for (uint16_t col = 0; col < w; col++) // for each pixel
|
||||||
|
{
|
||||||
|
// Time to read more pixel data?
|
||||||
|
if (in_idx >= in_bytes) // ok, exact match for 24bit also (size IS multiple of 3)
|
||||||
|
{
|
||||||
|
in_bytes = file.read(input_buffer, in_remain > sizeof(input_buffer) ? sizeof(input_buffer) : in_remain);
|
||||||
|
in_remain -= in_bytes;
|
||||||
|
in_idx = 0;
|
||||||
|
}
|
||||||
|
switch (depth)
|
||||||
|
{
|
||||||
|
case 32:
|
||||||
|
blue = input_buffer[in_idx++];
|
||||||
|
green = input_buffer[in_idx++];
|
||||||
|
red = input_buffer[in_idx++];
|
||||||
|
in_idx++; // skip alpha
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
break;
|
||||||
|
case 24:
|
||||||
|
blue = input_buffer[in_idx++];
|
||||||
|
green = input_buffer[in_idx++];
|
||||||
|
red = input_buffer[in_idx++];
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
{
|
||||||
|
uint8_t lsb = input_buffer[in_idx++];
|
||||||
|
uint8_t msb = input_buffer[in_idx++];
|
||||||
|
if (format == 0) // 555
|
||||||
|
{
|
||||||
|
blue = (lsb & 0x1F) << 3;
|
||||||
|
green = ((msb & 0x03) << 6) | ((lsb & 0xE0) >> 2);
|
||||||
|
red = (msb & 0x7C) << 1;
|
||||||
|
}
|
||||||
|
else // 565
|
||||||
|
{
|
||||||
|
blue = (lsb & 0x1F) << 3;
|
||||||
|
green = ((msb & 0x07) << 5) | ((lsb & 0xE0) >> 3);
|
||||||
|
red = (msb & 0xF8);
|
||||||
|
}
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
case 4:
|
||||||
|
case 8:
|
||||||
|
{
|
||||||
|
if (0 == in_bits)
|
||||||
|
{
|
||||||
|
in_byte = input_buffer[in_idx++];
|
||||||
|
in_bits = 8;
|
||||||
|
}
|
||||||
|
uint16_t pn = (in_byte >> bitshift) & bitmask;
|
||||||
|
whitish = mono_palette_buffer[pn / 8] & (0x1 << pn % 8);
|
||||||
|
colored = color_palette_buffer[pn / 8] & (0x1 << pn % 8);
|
||||||
|
in_byte <<= depth;
|
||||||
|
in_bits -= depth;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (whitish)
|
||||||
|
{
|
||||||
|
// keep white
|
||||||
|
}
|
||||||
|
else if (colored && with_color)
|
||||||
|
{
|
||||||
|
out_color_byte &= ~(0x80 >> col % 8); // colored
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
out_byte &= ~(0x80 >> col % 8); // black
|
||||||
|
}
|
||||||
|
if ((7 == col % 8) || (col == w - 1)) // write that last byte! (for w%8!=0 border)
|
||||||
|
{
|
||||||
|
output_row_color_buffer[out_idx] = out_color_byte;
|
||||||
|
output_row_mono_buffer[out_idx++] = out_byte;
|
||||||
|
out_byte = 0xFF; // white (for w%8!=0 border)
|
||||||
|
out_color_byte = 0xFF; // white (for w%8!=0 border)
|
||||||
|
}
|
||||||
|
} // end pixel
|
||||||
|
uint16_t yrow = y + (flip ? h - row - 1 : row);
|
||||||
|
display.writeImage(output_row_mono_buffer, output_row_color_buffer, x, yrow, w, 1);
|
||||||
|
} // end line
|
||||||
|
Serial.print("loaded in "); Serial.print(millis() - startTime); Serial.println(" ms");
|
||||||
|
display.refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file.close();
|
||||||
|
if (!valid)
|
||||||
|
{
|
||||||
|
Serial.println("bitmap format not handled.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmapFromSD_Buffered(const char *filename, int16_t x, int16_t y, bool with_color, bool partial_update, bool overwrite)
|
||||||
|
{
|
||||||
|
File file;
|
||||||
|
bool valid = false; // valid format to be handled
|
||||||
|
bool flip = true; // bitmap is stored bottom-to-top
|
||||||
|
bool has_multicolors = (display.epd2.panel == GxEPD2::ACeP565) || (display.epd2.panel == GxEPD2::GDEY073D46);
|
||||||
|
uint32_t startTime = millis();
|
||||||
|
if ((x >= display.width()) || (y >= display.height())) return;
|
||||||
|
Serial.println();
|
||||||
|
Serial.print("Loading image '");
|
||||||
|
Serial.print(filename);
|
||||||
|
Serial.println('\'');
|
||||||
|
#if defined(ESP32)
|
||||||
|
file = SD.open(String("/") + filename, FILE_READ);
|
||||||
|
if (!file)
|
||||||
|
{
|
||||||
|
Serial.print("File not found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
file = SD.open(filename);
|
||||||
|
if (!file)
|
||||||
|
{
|
||||||
|
Serial.print("File not found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
// Parse BMP header
|
||||||
|
if (read16(file) == 0x4D42) // BMP signature
|
||||||
|
{
|
||||||
|
uint32_t fileSize = read32(file);
|
||||||
|
uint32_t creatorBytes = read32(file); (void)creatorBytes; //unused
|
||||||
|
uint32_t imageOffset = read32(file); // Start of image data
|
||||||
|
uint32_t headerSize = read32(file);
|
||||||
|
uint32_t width = read32(file);
|
||||||
|
int32_t height = (int32_t) read32(file);
|
||||||
|
uint16_t planes = read16(file);
|
||||||
|
uint16_t depth = read16(file); // bits per pixel
|
||||||
|
uint32_t format = read32(file);
|
||||||
|
if ((planes == 1) && ((format == 0) || (format == 3))) // uncompressed is handled, 565 also
|
||||||
|
{
|
||||||
|
Serial.print("File size: "); Serial.println(fileSize);
|
||||||
|
Serial.print("Image Offset: "); Serial.println(imageOffset);
|
||||||
|
Serial.print("Header size: "); Serial.println(headerSize);
|
||||||
|
Serial.print("Bit Depth: "); Serial.println(depth);
|
||||||
|
Serial.print("Image size: ");
|
||||||
|
Serial.print(width);
|
||||||
|
Serial.print('x');
|
||||||
|
Serial.println(height);
|
||||||
|
// BMP rows are padded (if needed) to 4-byte boundary
|
||||||
|
uint32_t rowSize = (width * depth / 8 + 3) & ~3;
|
||||||
|
if (depth < 8) rowSize = ((width * depth + 8 - depth) / 8 + 3) & ~3;
|
||||||
|
if (height < 0)
|
||||||
|
{
|
||||||
|
height = -height;
|
||||||
|
flip = false;
|
||||||
|
}
|
||||||
|
uint16_t w = width;
|
||||||
|
uint16_t h = height;
|
||||||
|
if ((x + w - 1) >= display.width()) w = display.width() - x;
|
||||||
|
if ((y + h - 1) >= display.height()) h = display.height() - y;
|
||||||
|
//if (w <= max_row_width) // handle with direct drawing
|
||||||
|
{
|
||||||
|
valid = true;
|
||||||
|
uint8_t bitmask = 0xFF;
|
||||||
|
uint8_t bitshift = 8 - depth;
|
||||||
|
uint16_t red, green, blue;
|
||||||
|
bool whitish = false;
|
||||||
|
bool colored = false;
|
||||||
|
if (depth == 1) with_color = false;
|
||||||
|
if (depth <= 8)
|
||||||
|
{
|
||||||
|
if (depth < 8) bitmask >>= depth;
|
||||||
|
//file.seek(54); //palette is always @ 54
|
||||||
|
file.seek(imageOffset - (4 << depth)); //54 for regular, diff for colorsimportant
|
||||||
|
for (uint16_t pn = 0; pn < (1 << depth); pn++)
|
||||||
|
{
|
||||||
|
blue = file.read();
|
||||||
|
green = file.read();
|
||||||
|
red = file.read();
|
||||||
|
file.read();
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
if (0 == pn % 8) mono_palette_buffer[pn / 8] = 0;
|
||||||
|
mono_palette_buffer[pn / 8] |= whitish << pn % 8;
|
||||||
|
if (0 == pn % 8) color_palette_buffer[pn / 8] = 0;
|
||||||
|
color_palette_buffer[pn / 8] |= colored << pn % 8;
|
||||||
|
rgb_palette_buffer[pn] = ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | ((blue & 0xF8) >> 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (partial_update) display.setPartialWindow(x, y, w, h);
|
||||||
|
else display.setFullWindow();
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
//if (!overwrite) display.fillScreen(GxEPD_WHITE);
|
||||||
|
uint32_t rowPosition = flip ? imageOffset + (height - h) * rowSize : imageOffset;
|
||||||
|
for (uint16_t row = 0; row < h; row++, rowPosition += rowSize) // for each line
|
||||||
|
{
|
||||||
|
uint32_t in_remain = rowSize;
|
||||||
|
uint32_t in_idx = 0;
|
||||||
|
uint32_t in_bytes = 0;
|
||||||
|
uint8_t in_byte = 0; // for depth <= 8
|
||||||
|
uint8_t in_bits = 0; // for depth <= 8
|
||||||
|
uint16_t color = GxEPD_WHITE;
|
||||||
|
file.seek(rowPosition);
|
||||||
|
for (uint16_t col = 0; col < w; col++) // for each pixel
|
||||||
|
{
|
||||||
|
// Time to read more pixel data?
|
||||||
|
if (in_idx >= in_bytes) // ok, exact match for 24bit also (size IS multiple of 3)
|
||||||
|
{
|
||||||
|
in_bytes = file.read(input_buffer, in_remain > sizeof(input_buffer) ? sizeof(input_buffer) : in_remain);
|
||||||
|
in_remain -= in_bytes;
|
||||||
|
in_idx = 0;
|
||||||
|
}
|
||||||
|
switch (depth)
|
||||||
|
{
|
||||||
|
case 32:
|
||||||
|
blue = input_buffer[in_idx++];
|
||||||
|
green = input_buffer[in_idx++];
|
||||||
|
red = input_buffer[in_idx++];
|
||||||
|
in_idx++; // skip alpha
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
color = ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | ((blue & 0xF8) >> 3);
|
||||||
|
break;
|
||||||
|
case 24:
|
||||||
|
blue = input_buffer[in_idx++];
|
||||||
|
green = input_buffer[in_idx++];
|
||||||
|
red = input_buffer[in_idx++];
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
color = ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | ((blue & 0xF8) >> 3);
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
{
|
||||||
|
uint8_t lsb = input_buffer[in_idx++];
|
||||||
|
uint8_t msb = input_buffer[in_idx++];
|
||||||
|
if (format == 0) // 555
|
||||||
|
{
|
||||||
|
blue = (lsb & 0x1F) << 3;
|
||||||
|
green = ((msb & 0x03) << 6) | ((lsb & 0xE0) >> 2);
|
||||||
|
red = (msb & 0x7C) << 1;
|
||||||
|
color = ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | ((blue & 0xF8) >> 3);
|
||||||
|
}
|
||||||
|
else // 565
|
||||||
|
{
|
||||||
|
blue = (lsb & 0x1F) << 3;
|
||||||
|
green = ((msb & 0x07) << 5) | ((lsb & 0xE0) >> 3);
|
||||||
|
red = (msb & 0xF8);
|
||||||
|
color = (msb << 8) | lsb;
|
||||||
|
}
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
case 4:
|
||||||
|
case 8:
|
||||||
|
{
|
||||||
|
if (0 == in_bits)
|
||||||
|
{
|
||||||
|
in_byte = input_buffer[in_idx++];
|
||||||
|
in_bits = 8;
|
||||||
|
}
|
||||||
|
uint16_t pn = (in_byte >> bitshift) & bitmask;
|
||||||
|
whitish = mono_palette_buffer[pn / 8] & (0x1 << pn % 8);
|
||||||
|
colored = color_palette_buffer[pn / 8] & (0x1 << pn % 8);
|
||||||
|
in_byte <<= depth;
|
||||||
|
in_bits -= depth;
|
||||||
|
color = rgb_palette_buffer[pn];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (with_color && has_multicolors)
|
||||||
|
{
|
||||||
|
// keep color
|
||||||
|
}
|
||||||
|
else if (whitish)
|
||||||
|
{
|
||||||
|
color = GxEPD_WHITE;
|
||||||
|
}
|
||||||
|
else if (colored && with_color)
|
||||||
|
{
|
||||||
|
color = GxEPD_COLORED;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
color = GxEPD_BLACK;
|
||||||
|
}
|
||||||
|
uint16_t yrow = y + (flip ? h - row - 1 : row);
|
||||||
|
display.drawPixel(x + col, yrow, color);
|
||||||
|
} // end pixel
|
||||||
|
} // end line
|
||||||
|
Serial.print("page loaded in "); Serial.print(millis() - startTime); Serial.println(" ms");
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
Serial.print("loaded in "); Serial.print(millis() - startTime); Serial.println(" ms");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file.close();
|
||||||
|
if (!valid)
|
||||||
|
{
|
||||||
|
Serial.println("bitmap format not handled.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t read16(File& f)
|
||||||
|
{
|
||||||
|
// BMP data is stored little-endian, same as Arduino.
|
||||||
|
uint16_t result;
|
||||||
|
((uint8_t *)&result)[0] = f.read(); // LSB
|
||||||
|
((uint8_t *)&result)[1] = f.read(); // MSB
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t read32(File& f)
|
||||||
|
{
|
||||||
|
// BMP data is stored little-endian, same as Arduino.
|
||||||
|
uint32_t result;
|
||||||
|
((uint8_t *)&result)[0] = f.read(); // LSB
|
||||||
|
((uint8_t *)&result)[1] = f.read();
|
||||||
|
((uint8_t *)&result)[2] = f.read();
|
||||||
|
((uint8_t *)&result)[3] = f.read(); // MSB
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,374 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// NOTE: you may need to adapt or select for your wiring in the processor specific conditional compile sections below
|
||||||
|
|
||||||
|
// select the display class (only one), matching the kind of display panel
|
||||||
|
#define GxEPD2_DISPLAY_CLASS GxEPD2_BW
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_3C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_4C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_7C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_BW_SHM
|
||||||
|
|
||||||
|
// select the display driver class (only one) for your panel
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_102 // GDEW0102T4 80x128, UC8175, (WFT0102CZA2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_150_BN // DEPG0150BN 200x200, SSD1681, (FPC8101), TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154 // GDEP015OC1 200x200, IL3829, (WFC0000CZ07), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_D67 // GDEH0154D67 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_T8 // GDEW0154T8 152x152, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M09 // GDEW0154M09 200x200, JD79653A, (WFT0154CZB3)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M10 // GDEW0154M10 152x152, UC8151D, (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_GDEY0154D67 // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213 // GDE0213B1 122x250, IL3895, (HINK-E0213-G01), phased out
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B72 // GDEH0213B72 122x250, SSD1675A (IL3897), (HINK-E0213A22-A0 SLH1852)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B73 // GDEH0213B73 122x250, SSD1675B, (HINK-E0213A22-A0 SLH1914)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B74 // GDEM0213B74 122x250, SSD1680, FPC-7528B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_flex // GDEW0213I5F 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_M21 // GDEW0213M21 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_T5D // GDEW0213T5D 104x212, UC8151D, (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_BN // DEPG0213BN 122x250, SSD1680, (FPC-7528B), TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_GDEY0213B74 // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260 // GDEW026T0 152x296, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260_M01 // GDEW026M01 152x296, UC8151 (IL0373), (WFT0260CZB2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_BN // DEPG0266BN 152x296, SSD1680, (FPC7510), TTGO T5 V2.66, TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_GDEY0266T90 // GDEY0266T90 152x296, SSD1680, (FPC-A003 HB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270 // GDEW027W3 176x264, EK79652 (IL91874), (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270_GDEY027T91 // GDEY027T91 176x264, SSD1680, (FB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290 // GDEH029A1 128x296, SSD1608 (IL3820), (E029A01-FPC-A1 SYX1553)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5 // GDEW029T5 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5D // GDEW029T5D 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_I6FD // GDEW029I6FD 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94_V2 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b), Waveshare 2.9" V2 variant
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_BS // DEPG0290BS 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_M06 // GDEW029M06 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T94 // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T71H // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_310_GDEQ031T10 // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_GDEY037T03 // GDEY037T03 240x416, UC8253, (FPC-F002, hidden on CrowPanel)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1 280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_371 // GDEW0371W7 240x416, UC8171 (IL0324), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397_GDEM0397T81 // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420 // GDEW042T2 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GYE042A87 // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_SE0420NQ04 // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_576_GDEH0576T81 // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579_GDEY0579T93 // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583 // GDEW0583T7 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8 // GDEW0583T8 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750 // GDEW075T8 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_T7 // GDEW075T7 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_GDEY075T7 // GDEY075T7 800x480, UC8179 (GD7965), (FPC-C001 20.08.20)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1020_GDEM102T91 // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1085_GDEM1085T51 // GDEM1085T51 1360x480, JD79686AB, (FPC8617) *** needs CS2 ***
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160_T91 // GDEH116T91 960x640, SSD1677, (none or hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248 // GDEW1248T3 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330_GDEM133T91 // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c // GDEW0154Z04 200x200, IL0376F, (WFT0000CZ04), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_Z90c // GDEH0154Z90 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c // GDEW0213Z16 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z19c // GDEH0213Z19 104x212, UC8151D, (HINK-E0213A20-A2 2020-11-19)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z98c // GDEY0213Z98 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c // GDEY0266Z90 152x296, SSD1680, (FPC-7510)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270c // GDEW027C44 176x264, IL91874, (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c // GDEW029Z10 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_Z13c // GDEH029Z13 128x296, UC8151D, (HINK-E029A10-A3 20160809)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_C90c // GDEM029C90 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c // GDEW042Z15 400x300, UC8176 (IL0398), (WFT0420CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_Z21 // GDEQ042Z21 400x300, UC8276, (hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY042Z98 // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579Z93 // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c // GDEW0583Z21 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_Z83 // GDEW0583Z83 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_GDEQ0583Z31 // GDEQ0583Z31 648x480, UC8179C,
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c // GDEW075Z09 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z08 // GDEW075Z08 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90 880x528, SSD1677, (HINK-E075A07-A0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEW075Z08 // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEY075Z08 // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116Z91 // GDEY116Z91 960x640, SSD1677, (FPV-K002 22.04.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248c // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330c_GDEM133Z91 // GDEM133Z91 960x680, SSD1677 (FPC-7701 REV.B)
|
||||||
|
// 4-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c_GDEM0154F51H // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c_GDEY0213F51 // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_300c // Waveshare 3.00" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_350c_GDEM035F51 // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397c_GDEM0397F81 // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_437c // Waveshare 4.37" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579F51 // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEM075F52 // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116F51 // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c_GDEP0565D90 // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEY073D46 // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_ACeP_730 // Waveshare 7.3" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEP073E01 // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60 // ED060SCT 800x600
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60_1448x1072 // ED060KC1 1448x1072
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it78_1872x1404 // ED078KC2 1872x1404
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it103_1872x1404 // ES103TC1 1872x1404
|
||||||
|
|
||||||
|
// SS is usually used for CS. define here for easy change
|
||||||
|
#ifndef EPD_CS
|
||||||
|
#define EPD_CS SS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
||||||
|
|
||||||
|
// somehow there should be an easier way to do this
|
||||||
|
#define GxEPD2_BW_IS_GxEPD2_BW true
|
||||||
|
#define GxEPD2_3C_IS_GxEPD2_3C true
|
||||||
|
#define GxEPD2_4C_IS_GxEPD2_4C true
|
||||||
|
#define GxEPD2_7C_IS_GxEPD2_7C true
|
||||||
|
#define GxEPD2_BW_SHM_IS_GxEPD2_BW_SHM true
|
||||||
|
#define GxEPD2_1248_IS_GxEPD2_1248 true
|
||||||
|
#define GxEPD2_1248c_IS_GxEPD2_1248c true
|
||||||
|
#define IS_GxEPD(c, x) (c##x)
|
||||||
|
#define IS_GxEPD2_BW(x) IS_GxEPD(GxEPD2_BW_IS_, x)
|
||||||
|
#define IS_GxEPD2_3C(x) IS_GxEPD(GxEPD2_3C_IS_, x)
|
||||||
|
#define IS_GxEPD2_4C(x) IS_GxEPD(GxEPD2_4C_IS_, x)
|
||||||
|
#define IS_GxEPD2_7C(x) IS_GxEPD(GxEPD2_7C_IS_, x)
|
||||||
|
#define IS_GxEPD2_BW_SHM(x) IS_GxEPD(GxEPD2_BW_SHM_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248(x) IS_GxEPD(GxEPD2_1248_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248c(x) IS_GxEPD(GxEPD2_1248c_IS_, x)
|
||||||
|
|
||||||
|
#include "GxEPD2_selection_check.h"
|
||||||
|
|
||||||
|
// for my test use only
|
||||||
|
//#if defined(_AVR)
|
||||||
|
//#warning "defined(_AVR)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ESP32)
|
||||||
|
//#warning "defined(ESP32)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
//#warning "defined(ARDUINO_ARCH_ESP32)"
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_AVR)
|
||||||
|
#if defined (ARDUINO_AVR_MEGA2560) // Note: SS is on 53 on MEGA
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#elif defined(ARDUINO_AVR_NANO_EVERY)
|
||||||
|
#define EPD_CS 10
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#else // Note: SS is on 10 on UNO, NANO
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 800 //
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
// for Arduino Micro or Arduino Leonardo with CS on 10 on my proto boards (SS would be 17) uncomment instead:
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_MEGAAVR)
|
||||||
|
#if defined(ARDUINO_AVR_NANO_EVERY) || defined(ARDUINO_AVR_UNO_WIFI_REV2)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 65536ul // e.g.
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
#if !IS_GxEPD2_1248(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_1248c(GxEPD2_DRIVER_CLASS)
|
||||||
|
#if defined(ARDUINO_NANO_ESP32) // uses Dx pin names
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ D10, /*DC=*/ D8, /*RST=*/ D9, /*BUSY=*/ D7));
|
||||||
|
#elif defined(ARDUINO_LOLIN_D32_PRO)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // my LOLIN_D32_PRO proto board
|
||||||
|
#elif defined(ARDUINO_LOLIN_S2_MINI)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 33, /*DC=*/ 35, /*RST=*/ 37, /*BUSY=*/ 39)); // my LOLIN ESP32 S2 mini connection
|
||||||
|
#elif defined(ARDUINO_ESP32S3_DEV)
|
||||||
|
// ESP32E6-E01 : only 50 pin FPC works on actual version (11.1.2025)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 2, /*DC=*/ 3, /*RST=*/ 4, /*BUSY=*/ 5)); // Good Display ESP32E6-E01 board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 45, /*DC=*/ 46, /*RST=*/ 47, /*BUSY=*/ 48)); // CrowPanel wiring
|
||||||
|
#else
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13)); // Good Display ESP32 Development Kit ESP32-L
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13, /*CS2=*/ 4)); // for GDEM1085T51 with ESP32-L
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // my suggested wiring and proto board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ 5, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // LILYGO_T5_V2.4.1
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 19, /*RST=*/ 4, /*BUSY=*/ 34)); // LILYGO® TTGO T5 2.66
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // e.g. TTGO T8 ESP32-WROVER
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare ESP32 Driver Board
|
||||||
|
#endif
|
||||||
|
#else // GxEPD2_1248 or GxEPD2_1248c
|
||||||
|
// Waveshare 12.48 b/w or b/w/r SPI display board and frame or Good Display 12.48 b/w panel GDEW1248T3 or b/w/r panel GDEY1248Z51
|
||||||
|
// general constructor for use with all parameters, e.g. for Waveshare ESP32 driver board mounted on connection board
|
||||||
|
GxEPD2_DISPLAY_CLASS < GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS) > display(GxEPD2_DRIVER_CLASS(/*sck=*/ 13, /*miso=*/ 12, /*mosi=*/ 14,
|
||||||
|
/*cs_m1=*/ 23, /*cs_s1=*/ 22, /*cs_m2=*/ 16, /*cs_s2=*/ 19,
|
||||||
|
/*dc1=*/ 25, /*dc2=*/ 17, /*rst1=*/ 33, /*rst2=*/ 5,
|
||||||
|
/*busy_m1=*/ 32, /*busy_s1=*/ 26, /*busy_m2=*/ 18, /*busy_s2=*/ 4));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (ARDUINO_ARCH_ESP8266)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE (81920ul-34000ul-5000ul) // ~34000 base use, change 5000 to your application use
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=D8*/ EPD_CS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// can't use package "STMF1 Boards (STM32Duino.com)" (Roger Clark) anymore with Adafruit_GFX, use "STM32 Boards (selected from submenu)" (STMicroelectronics)
|
||||||
|
#if defined(ARDUINO_ARCH_STM32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
// for Good Display STM32 Development Kit DESPI-L.
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13, /*CS2=*/ PD12)); // for GDEM1085T51
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=PA4*/ EPD_CS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // my proto board
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RENESAS)
|
||||||
|
#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAM)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAMD)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_SAMD_NANO_33_IOT)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#else
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 3, /*RST=*/ 2, /*BUSY=*/ 1)); // my Seed XIOA0
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // my other Seed XIOA0
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RP2040)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 131072ul // e.g. half of available ram
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_NANO_RP2040_CONNECT)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 5, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // my proto board
|
||||||
|
// mapping of GoodDisplay DESPI-PICO. NOTE: uses alternate HW SPI pins!
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
|
||||||
|
// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,165 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
#define GxEPD2_102_IS_BW true
|
||||||
|
#define GxEPD2_150_BN_IS_BW true
|
||||||
|
#define GxEPD2_154_IS_BW true
|
||||||
|
#define GxEPD2_154_D67_IS_BW true
|
||||||
|
#define GxEPD2_154_T8_IS_BW true
|
||||||
|
#define GxEPD2_154_M09_IS_BW true
|
||||||
|
#define GxEPD2_154_M10_IS_BW true
|
||||||
|
#define GxEPD2_154_GDEY0154D67_IS_BW true
|
||||||
|
#define GxEPD2_213_IS_BW true
|
||||||
|
#define GxEPD2_213_B72_IS_BW true
|
||||||
|
#define GxEPD2_213_B73_IS_BW true
|
||||||
|
#define GxEPD2_213_B74_IS_BW true
|
||||||
|
#define GxEPD2_213_flex_IS_BW true
|
||||||
|
#define GxEPD2_213_M21_IS_BW true
|
||||||
|
#define GxEPD2_213_T5D_IS_BW true
|
||||||
|
#define GxEPD2_213_BN_IS_BW true
|
||||||
|
#define GxEPD2_213_GDEY0213B74_IS_BW true
|
||||||
|
#define GxEPD2_260_IS_BW true
|
||||||
|
#define GxEPD2_260_M01_IS_BW true
|
||||||
|
#define GxEPD2_266_BN_IS_BW true
|
||||||
|
#define GxEPD2_266_GDEY0266T90_IS_BW true
|
||||||
|
#define GxEPD2_270_IS_BW true
|
||||||
|
#define GxEPD2_270_GDEY027T91_IS_BW true
|
||||||
|
#define GxEPD2_290_IS_BW true
|
||||||
|
#define GxEPD2_290_T5_IS_BW true
|
||||||
|
#define GxEPD2_290_T5D_IS_BW true
|
||||||
|
#define GxEPD2_290_I6FD_IS_BW true
|
||||||
|
#define GxEPD2_290_T94_IS_BW true
|
||||||
|
#define GxEPD2_290_T94_V2_IS_BW true
|
||||||
|
#define GxEPD2_290_BS_IS_BW true
|
||||||
|
#define GxEPD2_290_M06_IS_BW true
|
||||||
|
#define GxEPD2_290_GDEY029T94_IS_BW true
|
||||||
|
#define GxEPD2_290_GDEY029T71H_IS_BW true
|
||||||
|
#define GxEPD2_310_GDEQ031T10_IS_BW true
|
||||||
|
#define GxEPD2_371_IS_BW true
|
||||||
|
#define GxEPD2_370_TC1_IS_BW true
|
||||||
|
#define GxEPD2_370_GDEY037T03_IS_BW true
|
||||||
|
#define GxEPD2_397_GDEM0397T81_IS_BW true
|
||||||
|
#define GxEPD2_420_IS_BW true
|
||||||
|
#define GxEPD2_420_M01_IS_BW true
|
||||||
|
#define GxEPD2_420_GDEY042T81_IS_BW true
|
||||||
|
#define GxEPD2_420_GYE042A87_IS_BW true
|
||||||
|
#define GxEPD2_420_SE0420NQ04_IS_BW true
|
||||||
|
#define GxEPD2_426_GDEQ0426T82_IS_BW true
|
||||||
|
#define GxEPD2_576_GDEH0576T81_IS_BW true
|
||||||
|
#define GxEPD2_579_GDEY0579T93_IS_BW true
|
||||||
|
#define GxEPD2_583_IS_BW true
|
||||||
|
#define GxEPD2_583_T8_IS_BW true
|
||||||
|
#define GxEPD2_583_GDEQ0583T31_IS_BW true
|
||||||
|
#define GxEPD2_750_IS_BW true
|
||||||
|
#define GxEPD2_750_T7_IS_BW true
|
||||||
|
#define GxEPD2_750_GDEY075T7_IS_BW true
|
||||||
|
#define GxEPD2_1020_GDEM102T91_IS_BW true
|
||||||
|
#define GxEPD2_1085_GDEM1085T51_IS_BW true
|
||||||
|
#define GxEPD2_1160_T91_IS_BW true
|
||||||
|
#define GxEPD2_1248_IS_BW true
|
||||||
|
#define GxEPD2_1330_GDEM133T91_IS_BW true
|
||||||
|
#define GxEPD2_it60_IS_BW true
|
||||||
|
#define GxEPD2_it60_1448x1072_IS_BW true
|
||||||
|
#define GxEPD2_it78_1872x1404_IS_BW true
|
||||||
|
#define GxEPD2_it103_1872x1404_IS_BW true
|
||||||
|
// 3-color e-papers
|
||||||
|
#define GxEPD2_154c_IS_3C true
|
||||||
|
#define GxEPD2_154_Z90c_IS_3C true
|
||||||
|
#define GxEPD2_213c_IS_3C true
|
||||||
|
#define GxEPD2_213_Z19c_IS_3C true
|
||||||
|
#define GxEPD2_213_Z98c_IS_3C true
|
||||||
|
#define GxEPD2_266c_IS_3C true
|
||||||
|
#define GxEPD2_270c_IS_3C true
|
||||||
|
#define GxEPD2_290c_IS_3C true
|
||||||
|
#define GxEPD2_290_Z13c_IS_3C true
|
||||||
|
#define GxEPD2_290_C90c_IS_3C true
|
||||||
|
#define GxEPD2_420c_IS_3C true
|
||||||
|
#define GxEPD2_420c_Z21_IS_3C true
|
||||||
|
#define GxEPD2_420c_GDEY042Z98_IS_3C true
|
||||||
|
#define GxEPD2_579c_GDEY0579Z93_IS_3C true
|
||||||
|
#define GxEPD2_583c_IS_3C true
|
||||||
|
#define GxEPD2_583c_Z83_IS_3C true
|
||||||
|
#define GxEPD2_583c_GDEQ0583Z31_IS_3C true
|
||||||
|
#define GxEPD2_750c_IS_3C true
|
||||||
|
#define GxEPD2_750c_Z08_IS_3C true
|
||||||
|
#define GxEPD2_750c_Z90_IS_3C true
|
||||||
|
#define GxEPD2_750c_GDEW075Z08_IS_3C true
|
||||||
|
#define GxEPD2_750c_GDEY075Z08_IS_3C true
|
||||||
|
#define GxEPD2_1160c_GDEY116Z91_IS_3C true
|
||||||
|
#define GxEPD2_1248c_IS_3C true
|
||||||
|
#define GxEPD2_1330c_GDEM133Z91_IS_3C true
|
||||||
|
// 4-color e-paper
|
||||||
|
#define GxEPD2_154c_GDEM0154F51H_IS_4C true
|
||||||
|
#define GxEPD2_213c_GDEY0213F51_IS_4C true
|
||||||
|
#define GxEPD2_266c_GDEY0266F51H_IS_4C true
|
||||||
|
#define GxEPD2_290c_GDEY029F51H_IS_4C true
|
||||||
|
#define GxEPD2_300c_IS_4C true
|
||||||
|
#define GxEPD2_350c_GDEM035F51_IS_4C true
|
||||||
|
#define GxEPD2_397c_GDEM0397F81_IS_4C true
|
||||||
|
#define GxEPD2_420c_GDEY0420F51_IS_4C true
|
||||||
|
#define GxEPD2_437c_IS_4C true
|
||||||
|
#define GxEPD2_579c_GDEY0579F51_IS_4C true
|
||||||
|
#define GxEPD2_750c_GDEM075F52_IS_4C true
|
||||||
|
#define GxEPD2_1160c_GDEY116F51_IS_4C true
|
||||||
|
// 7-color e-paper
|
||||||
|
#define GxEPD2_565c_IS_7C true
|
||||||
|
#define GxEPD2_565c_GDEP0565D90_IS_7C true
|
||||||
|
#define GxEPD2_730c_GDEY073D46_IS_7C true
|
||||||
|
#define GxEPD2_730c_ACeP_730_IS_7C true
|
||||||
|
#define GxEPD2_730c_GDEP073E01_IS_7C true
|
||||||
|
|
||||||
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
||||||
|
#define IS_GxEPD2_DRIVER(c, x) (c##x)
|
||||||
|
#define IS_GxEPD2_DRIVER_BW(x) IS_GxEPD2_DRIVER(x, _IS_BW)
|
||||||
|
#define IS_GxEPD2_DRIVER_3C(x) IS_GxEPD2_DRIVER(x, _IS_3C)
|
||||||
|
#define IS_GxEPD2_DRIVER_4C(x) IS_GxEPD2_DRIVER(x, _IS_4C)
|
||||||
|
#define IS_GxEPD2_DRIVER_7C(x) IS_GxEPD2_DRIVER(x, _IS_7C)
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 3-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 4-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with b/w driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with 4-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with b/w driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with 3-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS) && !IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_7C used with less colors driver class"
|
||||||
|
#endif
|
||||||
|
#if !IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "neither BW nor 3C nor 4C nor 7C kind defined for driver class (error in GxEPD2_selection_check.h)"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// mapping of Good Display Arduino UNO Development Kit DEArduino-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> 4, RES -> 5, D/C -> 6, CS-> 7, SCK -> 13, SDI -> 11
|
||||||
|
|
||||||
|
// mapping of Good Display ESP8266 Development Kit ESP8266-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO16, RES -> GPIO5, D/C -> GPIO4, CS-> GPIO2, SCK -> GPIO14, SDI -> GPIO13
|
||||||
|
|
||||||
|
// mapping of Good Display ESP32 Development Kit ESP32-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO13, RES -> GPIO12, D/C -> GPIO14, CS-> GPIO27, SCK -> GPIO18, SDI -> GPIO23
|
||||||
|
|
||||||
|
// mapping of Good Display STM32 Development Kit DESPI-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PD9, SDI -> PD10
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PA5, SDI -> PA7 // for HW SPI with GxEPD2
|
||||||
|
|
||||||
|
// connection suggestions concerning Waveshare e-paper HAT Rev 2.3:
|
||||||
|
// DON'T FORGET to connect the PWR pin to VCC, to enable power to the board.
|
||||||
|
// RST is no longer used to disable power to the board, as with earlier revisions.
|
||||||
|
// Note, for 3.3V processors, no level converters are needed. Use DESPI-C02 instead. Uses less power.
|
||||||
|
// See https://www.buyepaper.com/products/development-kit-connection-adapter-board-for-eaper-display-demo-kit
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
|
||||||
|
// BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
|
||||||
|
// BUSY -> GPIO4, RST -> GPIO2, DC -> GPIO0, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from GPIO15 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from GPIO2 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
// BUSY -> GPIO5, RST -> GPIO2, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
// BUSY -> GPIO16, RST -> GPIO5, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32, see .../variants/.../pins_arduino.h for your board
|
||||||
|
// NOTE: there are variants with different pins for SPI ! CHECK SPI PINS OF YOUR BOARD
|
||||||
|
// BUSY -> 4, RST -> 16, DC -> 17, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
|
||||||
|
// mapping of Waveshare ESP32 Driver Board
|
||||||
|
// BUSY -> 25, RST -> 26, DC -> 27, CS-> 15, CLK -> 13, DIN -> 14
|
||||||
|
// NOTE: this board uses "unusual" SPI pins and requires re-mapping of HW SPI to these pins in SPIClass
|
||||||
|
// see example GxEPD2_WS_ESP32_Driver.ino, it shows how this can be done easily
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32 D32 PRO
|
||||||
|
// BUSY -> 15, RST -> 2, DC -> 0, CS -> 5, CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// note: use explicit value for CS, as SS is re-defined to TF_CS(4) in pins_arduino.h for Board: "LOLIN D32 PRO"
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. TTGO T8 ESP32-WROVER
|
||||||
|
// BUSY -> 4, RST -> 0, DC -> 2, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "ESP32 Dev Module":
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32S2, e.g. LOLIN ESP32 S2 mini, direct connection of DESPI-C02
|
||||||
|
// BUSY -> 39, RST -> 37, DC -> 35, CS -> 33, CLK -> 18, DIN -> 16, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "LOLIN S2 MINI":
|
||||||
|
|
||||||
|
// new mapping suggestion for STM32F1, e.g. STM32F103C8T6 "BluePill"
|
||||||
|
// BUSY -> A1, RST -> A2, DC -> A3, CS-> A4, CLK -> A5, DIN -> A7
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, UNO, NANO etc.
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, Arduino Micro, Leonardo
|
||||||
|
// note: on Leonardo board HW SPI pins are on 6-pin ICSP header
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 15, DIN -> 16
|
||||||
|
|
||||||
|
// mapping of Waveshare Universal e-Paper Raw Panel Driver Shield for Arduino / NUCLEO
|
||||||
|
// BUSY -> 7, RST -> 8, DC -> 9, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MEGA
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 53, CLK -> 52, DIN -> 51
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino DUE, note: pin 77 is on board pin 10, SS is 10
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 76, DIN -> 75
|
||||||
|
// SPI pins are on 6 pin 2x3 SPI header, no SS on SPI header!
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MKR1000 or MKRZERO
|
||||||
|
// note: can't use SS on MKR1000: is defined as 24, should be 4
|
||||||
|
// BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
|
||||||
|
|
||||||
|
// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3
|
||||||
|
|
||||||
|
// mapping of my new proto board like Waveshare Pico-ePaper-2.9
|
||||||
|
// needs 10k pull-up on RST when used with Arduino MBED OS RP2040 Boards
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
|
|
||||||
|
// mapping of Waveshare Pico-ePaper-2.9
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
|
After Width: | Height: | Size: 788 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 206 B |
|
After Width: | Height: | Size: 8.8 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 60 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
@@ -0,0 +1,213 @@
|
|||||||
|
// GxEPD2_SD_WriteBitmap: utility for Display Library for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
#include <GxEPD2_BW.h>
|
||||||
|
#include <GxEPD2_3C.h>
|
||||||
|
#include <Fonts/FreeMonoBold9pt7b.h>
|
||||||
|
|
||||||
|
#include "bitmaps/Bitmaps200x200.h" // 1.54" b/w
|
||||||
|
//#include "bitmaps/Bitmaps128x250.h" // 2.13" b/w
|
||||||
|
//#include "bitmaps/Bitmaps128x296.h" // 2.9" b/w
|
||||||
|
//#include "bitmaps/Bitmaps176x264.h" // 2.7" b/w
|
||||||
|
//#include "bitmaps/Bitmaps400x300.h" // 4.2" b/w
|
||||||
|
//#include "bitmaps/Bitmaps640x384.h" // 7.5" b/w
|
||||||
|
// 3-color
|
||||||
|
//#include "bitmaps/Bitmaps3c200x200.h" // 1.54" b/w/r
|
||||||
|
//#include "bitmaps/Bitmaps3c104x212.h" // 2.13" b/w/r
|
||||||
|
//#include "bitmaps/Bitmaps3c128x296.h" // 2.9" b/w/r
|
||||||
|
//#include "bitmaps/Bitmaps3c176x264.h" // 2.7" b/w/r
|
||||||
|
//#include "bitmaps/Bitmaps3c400x300.h" // 4.2" b/w/r
|
||||||
|
|
||||||
|
// include SdFat for FAT32 support with long filenames; available through Library Manager
|
||||||
|
#include <SdFat.h>
|
||||||
|
|
||||||
|
#if defined(SdFat_h)
|
||||||
|
SdFat SD;
|
||||||
|
#define FileClass SdFile
|
||||||
|
#define position curPosition
|
||||||
|
#define seek seekSet
|
||||||
|
#else
|
||||||
|
#include <SD.h>
|
||||||
|
#define FileClass File
|
||||||
|
#undef SdFat_h
|
||||||
|
#endif
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.print("Initializing SD card...");
|
||||||
|
if (!SD.begin(SS))
|
||||||
|
{
|
||||||
|
Serial.println("initialization failed!");
|
||||||
|
while (1) yield();
|
||||||
|
}
|
||||||
|
Serial.println("initialization done.");
|
||||||
|
writeBitmaps();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void writeBitmap(const char filename[], const uint8_t bitmap[], int16_t w, int16_t h, uint16_t depth = 1);
|
||||||
|
uint8_t filldata[] = {0x0, 0x23, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xFF, 0xFF, 0xFF, 0x0};
|
||||||
|
|
||||||
|
void writeBitmaps()
|
||||||
|
{
|
||||||
|
#ifdef _GxBitmaps200x200_H_
|
||||||
|
writeBitmap("logo.bmp", logo200x200, 200, 200);
|
||||||
|
writeBitmap("logo200x200.bmp", logo200x200, 200, 200);
|
||||||
|
writeBitmap("first200x200.bmp", first200x200, 200, 200);
|
||||||
|
writeBitmap("second200x200.bmp", second200x200, 200, 200);
|
||||||
|
writeBitmap("third200x200.bmp", third200x200, 200, 200);
|
||||||
|
writeBitmap("fourth200x200.bmp", fourth200x200, 200, 200);
|
||||||
|
writeBitmap("fifth200x200.bmp", fifth200x200, 200, 200);
|
||||||
|
writeBitmap("sixth200x200.bmp", sixth200x200, 200, 200);
|
||||||
|
writeBitmap("senventh200x200.bmp", senventh200x200, 200, 200);
|
||||||
|
writeBitmap("eighth200x200.bmp", eighth200x200, 200, 200);
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps128x250_H_
|
||||||
|
writeBitmap("Bitmap128x250_1.bmp", Bitmap128x250_1, 128, 250);
|
||||||
|
writeBitmap("logo128x250.bmp", logo128x250, 128, 250);
|
||||||
|
writeBitmap("first128x250.bmp", first128x250, 128, 250);
|
||||||
|
writeBitmap("second128x250.bmp", second128x250, 128, 250);
|
||||||
|
writeBitmap("third128x250.bmp", third128x250, 128, 250);
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps128x296_H_
|
||||||
|
writeBitmap("Bitmap128x296_1.bmp", Bitmap128x296_1, 128, 296);
|
||||||
|
writeBitmap("logo128x296.bmp", logo128x296, 128, 296);
|
||||||
|
writeBitmap("first128x296.bmp", first128x296, 128, 296);
|
||||||
|
writeBitmap("second128x296.bmp", second128x296, 128, 296);
|
||||||
|
writeBitmap("third128x296.bmp", third128x296, 128, 296);
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps176x264_H_
|
||||||
|
writeBitmap("Bitmap176x264_1.bmp", Bitmap176x264_1, 176, 264);
|
||||||
|
writeBitmap("Bitmap176x264_2.bmp", Bitmap176x264_2, 176, 264);
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps400x300_H_
|
||||||
|
writeBitmap("Bitmap400x300_1.bmp", Bitmap400x300_1, 400, 300);
|
||||||
|
writeBitmap("Bitmap400x300_2.bmp", Bitmap400x300_2, 400, 300);
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps640x384_H_
|
||||||
|
writeBitmap("Bitmap640x384_1.bmp", Bitmap640x384_1, 640, 384);
|
||||||
|
writeBitmap("Bitmap640x384_2.bmp", Bitmap640x384_2, 640, 384);
|
||||||
|
#endif
|
||||||
|
// 3-color
|
||||||
|
#ifdef _GxBitmaps3c200x200_H_
|
||||||
|
writeBitmap("Bitmap3c200x200_black.bmp", Bitmap3c200x200_black, 200, 200);
|
||||||
|
writeBitmap("Bitmap3c200x200_red.bmp", Bitmap3c200x200_red, 200, 200);
|
||||||
|
writeBitmap("WS_Bitmap3c200x200_black.bmp", WS_Bitmap3c200x200_black, 200, 200);
|
||||||
|
writeBitmap("WS_Bitmap3c200x200_red.bmp", WS_Bitmap3c200x200_red, 200, 200);
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps3c104x212_H_
|
||||||
|
writeBitmap("Bitmap3c104x212_1_black.bmp", Bitmap3c104x212_1_black, 104, 212);
|
||||||
|
writeBitmap("Bitmap3c104x212_1_red.bmp", Bitmap3c104x212_1_red, 104, 212);
|
||||||
|
writeBitmap("Bitmap3c104x212_2_black.bmp", Bitmap3c104x212_2_black, 104, 212);
|
||||||
|
writeBitmap("Bitmap3c104x212_2_red.bmp", Bitmap3c104x212_2_red, 104, 212);
|
||||||
|
writeBitmap("WS_Bitmap3c104x212_black.bmp", WS_Bitmap3c104x212_black, 104, 212);
|
||||||
|
writeBitmap("WS_Bitmap3c104x212_red.bmp", WS_Bitmap3c104x212_red, 104, 212);
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps3c128x296_H_
|
||||||
|
writeBitmap("Bitmap3c128x296_1_black.bmp", Bitmap3c128x296_1_black, 128, 296);
|
||||||
|
writeBitmap("Bitmap3c128x296_1_red.bmp", Bitmap3c128x296_1_red, 128, 296);
|
||||||
|
writeBitmap("Bitmap3c128x296_2_black.bmp", Bitmap3c128x296_2_black, 128, 296);
|
||||||
|
writeBitmap("Bitmap3c128x296_2_red.bmp", Bitmap3c128x296_2_red, 128, 296);
|
||||||
|
writeBitmap("WS_Bitmap3c128x296_black.bmp", WS_Bitmap3c128x296_black, 128, 296);
|
||||||
|
writeBitmap("WS_Bitmap3c128x296_red.bmp", WS_Bitmap3c128x296_red, 128, 296);
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps3c176x264_H_
|
||||||
|
writeBitmap("Bitmap3c176x264_black.bmp", Bitmap3c176x264_black, 176, 264);
|
||||||
|
writeBitmap("Bitmap3c176x264_red.bmp", Bitmap3c176x264_red, 176, 264);
|
||||||
|
#endif
|
||||||
|
#ifdef _GxBitmaps3c400x300_H_
|
||||||
|
writeBitmap("Bitmap3c400x300_1_black.bmp", Bitmap3c400x300_1_black, 400, 300);
|
||||||
|
writeBitmap("Bitmap3c400x300_1_red.bmp", Bitmap3c400x300_1_red, 400, 300);
|
||||||
|
writeBitmap("Bitmap3c400x300_2_black.bmp", Bitmap3c400x300_2_black, 400, 300);
|
||||||
|
writeBitmap("Bitmap3c400x300_2_red.bmp", Bitmap3c400x300_2_red, 400, 300);
|
||||||
|
writeBitmap("WS_Bitmap3c400x300_black.bmp", WS_Bitmap3c400x300_black, 400, 300);
|
||||||
|
writeBitmap("WS_Bitmap3c400x300_red.bmp", WS_Bitmap3c400x300_red, 400, 300);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void writeBitmap(const char filename[], const uint8_t bitmap[], int16_t w, int16_t h, uint16_t depth)
|
||||||
|
{
|
||||||
|
FileClass bitmapFile;
|
||||||
|
uint32_t rowSizeCode = (w + 8 - depth) * depth / 8;
|
||||||
|
// BMP rows are padded (if needed) to 4-byte boundary
|
||||||
|
uint32_t rowSizeBMP = (w * depth / 8 + 3) & ~3;
|
||||||
|
Serial.print("writeBitmap(\""); Serial.print(filename); Serial.println("\")");
|
||||||
|
Serial.print("rowSizeCode "); Serial.println(rowSizeCode);
|
||||||
|
Serial.print("rowSizeBMP "); Serial.println(rowSizeBMP);
|
||||||
|
uint32_t headerSize = 40;
|
||||||
|
uint32_t imageOffset = 62;
|
||||||
|
uint32_t fileSize = imageOffset + h * rowSizeBMP;
|
||||||
|
#if defined(SdFat_h)
|
||||||
|
if (bitmapFile.open(filename, FILE_WRITE))
|
||||||
|
#else
|
||||||
|
bitmapFile = SD.open(filename, FILE_WRITE);
|
||||||
|
if (bitmapFile)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
bitmapFile.seek(0);
|
||||||
|
write16(bitmapFile, 0x4D42); // BMP signature
|
||||||
|
write32(bitmapFile, fileSize); // fileSize
|
||||||
|
write32(bitmapFile, 0); // creator bytes
|
||||||
|
write32(bitmapFile, imageOffset); // image offset
|
||||||
|
write32(bitmapFile, headerSize); // Header size
|
||||||
|
write32(bitmapFile, w); // image width
|
||||||
|
write32(bitmapFile, h); // image height
|
||||||
|
write16(bitmapFile, 1); // # planes
|
||||||
|
write16(bitmapFile, depth); // // bits per pixel
|
||||||
|
write32(bitmapFile, 0); // format uncompressed
|
||||||
|
|
||||||
|
//Serial.print("first position "); Serial.println(bitmapFile.position());
|
||||||
|
uint32_t j = 0;
|
||||||
|
for (uint32_t i = bitmapFile.position(); i < imageOffset; i++)
|
||||||
|
{
|
||||||
|
//bitmapFile.write(uint8_t(0)); // remaining header bytes
|
||||||
|
bitmapFile.write(filldata[j++]); // remaining header bytes
|
||||||
|
}
|
||||||
|
//Serial.print("start position "); Serial.println(bitmapFile.position());
|
||||||
|
uint32_t rowidx = 0;
|
||||||
|
for (uint16_t row = 0; row < h; row++) // for each line
|
||||||
|
{
|
||||||
|
uint32_t colidx;
|
||||||
|
for (colidx = 0; colidx < rowSizeCode; colidx++)
|
||||||
|
{
|
||||||
|
#if defined(__AVR) || defined(ESP8266) || defined(ESP32)
|
||||||
|
uint8_t data = pgm_read_byte(&bitmap[rowidx + colidx]);
|
||||||
|
#else
|
||||||
|
uint8_t data = bitmap[rowidx + colidx];
|
||||||
|
#endif
|
||||||
|
bitmapFile.write(data);
|
||||||
|
}
|
||||||
|
rowidx += rowSizeCode;
|
||||||
|
while (colidx++ < rowSizeBMP) bitmapFile.write(uint8_t (0)); // padding
|
||||||
|
//Serial.println(bitmapFile.position());
|
||||||
|
}
|
||||||
|
bitmapFile.close();
|
||||||
|
Serial.println("done");
|
||||||
|
}
|
||||||
|
else Serial.print("open file for write failed!");
|
||||||
|
}
|
||||||
|
|
||||||
|
void write16(FileClass& f, uint16_t v)
|
||||||
|
{
|
||||||
|
f.write(uint8_t(v));
|
||||||
|
f.write(uint8_t(v >> 8));
|
||||||
|
}
|
||||||
|
|
||||||
|
void write32(FileClass& f, uint32_t v)
|
||||||
|
{
|
||||||
|
f.write(uint8_t(v));
|
||||||
|
f.write(uint8_t(v >> 8));
|
||||||
|
f.write(uint8_t(v >> 16));
|
||||||
|
f.write(uint8_t(v >> 24));
|
||||||
|
}
|
||||||
@@ -0,0 +1,720 @@
|
|||||||
|
// GxEPD2_SerialFlash_Example : Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// BMP handling code extracts taken from: https://github.com/prenticedavid/MCUFRIEND_kbv/tree/master/examples/showBMP_kbv_Uno
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
//
|
||||||
|
// this example uses the SerialFlash library from: https://github.com/PaulStoffregen/SerialFlash
|
||||||
|
// with a modification for use with ESP32 or the STM32 package available here: https://github.com/ZinggJM/SerialFlash
|
||||||
|
// download it as .zip file and install with Library Mananger method "Add .ZIP Library..."
|
||||||
|
//
|
||||||
|
// note that BMP bitmaps are drawn at physical position in physical orientation of the screen
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// see GxEPD2_wiring_examples.h for wiring suggestions and examples
|
||||||
|
|
||||||
|
// NOTE for use with Waveshare ESP32 Driver Board:
|
||||||
|
// **** also need to select the constructor with the parameters for this board in GxEPD2_display_selection_new_style.h ****
|
||||||
|
//
|
||||||
|
// The Wavehare ESP32 Driver Board uses uncommon SPI pins for the FPC connector. It uses HSPI pins, but SCK and MOSI are swapped.
|
||||||
|
// To use HW SPI with the ESP32 Driver Board, HW SPI pins need be re-mapped in any case. Can be done using either HSPI or VSPI.
|
||||||
|
// Other SPI clients can either be connected to the same SPI bus as the e-paper, or to the other HW SPI bus, or through SW SPI.
|
||||||
|
// The logical configuration would be to use the e-paper connection on HSPI with re-mapped pins, and use VSPI for other SPI clients.
|
||||||
|
// VSPI with standard VSPI pins is used by the global SPI instance of the Arduino IDE ESP32 package.
|
||||||
|
|
||||||
|
// uncomment next line to use HSPI for EPD (and VSPI for SD), e.g. with Waveshare ESP32 Driver Board
|
||||||
|
//#define USE_HSPI_FOR_EPD
|
||||||
|
|
||||||
|
// base class GxEPD2_GFX can be used to pass references or pointers to the display instance as parameter, uses ~1.2k more code
|
||||||
|
// enable or disable GxEPD2_GFX base class
|
||||||
|
#define ENABLE_GxEPD2_GFX 0
|
||||||
|
|
||||||
|
// uncomment next line to use class GFX of library GFX_Root instead of Adafruit_GFX
|
||||||
|
//#include <GFX.h>
|
||||||
|
// Note: if you use this with ENABLE_GxEPD2_GFX 1:
|
||||||
|
// uncomment it in GxEPD2_GFX.h too, or add #include <GFX.h> before any #include <GxEPD2_GFX.h>
|
||||||
|
|
||||||
|
#include <GxEPD2_BW.h>
|
||||||
|
#include <GxEPD2_3C.h>
|
||||||
|
#include <GxEPD2_4C.h>
|
||||||
|
#include <GxEPD2_7C.h>
|
||||||
|
#include <Fonts/FreeMonoBold9pt7b.h>
|
||||||
|
|
||||||
|
#include <SerialFlash.h>
|
||||||
|
|
||||||
|
#if defined (ESP8266)
|
||||||
|
const int FlashChipSelect = D1; // digital pin for flash chip CS pin
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ESP32)
|
||||||
|
#if defined(USE_HSPI_FOR_EPD)
|
||||||
|
const int FlashChipSelect = SS;
|
||||||
|
#define EPD_CS 15
|
||||||
|
SPIClass hspi(HSPI);
|
||||||
|
#else
|
||||||
|
const int FlashChipSelect = 2; // as used with my ESP32 protoboard SD connector
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// select the display class and display driver class in the following file (new style):
|
||||||
|
// don't forget to modify or override EPD_CS if needed
|
||||||
|
#include "GxEPD2_display_selection_new_style.h"
|
||||||
|
|
||||||
|
// function declaration with default parameter
|
||||||
|
// note that BMP bitmaps are drawn at physical position in physical orientation of the screen
|
||||||
|
void drawBitmapFromSerialFlash(const char *filename, int16_t x, int16_t y, bool with_color = true);
|
||||||
|
|
||||||
|
// bitmap drawing using buffered graphics, e.g. for small bitmaps or for GxEPD2_154c
|
||||||
|
// draws BMP bitmap according to set orientation
|
||||||
|
// partial_update selects refresh mode (not effective for GxEPD2_154c)
|
||||||
|
// overwrite = true does not clear buffer before drawing, use only if buffer is full height
|
||||||
|
void drawBitmapFromSerialFlash_Buffered(const char *filename, int16_t x, int16_t y, bool with_color = true, bool partial_update = false, bool overwrite = false);
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.println();
|
||||||
|
Serial.println("GxEPD2_SerialFlash_Example");
|
||||||
|
|
||||||
|
#if defined(ESP32) && defined(USE_HSPI_FOR_EPD)
|
||||||
|
hspi.begin(13, 12, 14, 15); // remap hspi for EPD (swap pins)
|
||||||
|
display.epd2.selectSPI(hspi, SPISettings(4000000, MSBFIRST, SPI_MODE0));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//display.init(115200); // default 10ms reset pulse, e.g. for bare panels with DESPI-C02
|
||||||
|
display.init(115200, true, 2, false); // USE THIS for Waveshare boards with "clever" reset circuit, 2ms reset pulse
|
||||||
|
|
||||||
|
if (!SerialFlash.begin(FlashChipSelect))
|
||||||
|
{
|
||||||
|
Serial.println("Unable to access SPI Flash chip");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Serial.println("SerialFlash started");
|
||||||
|
|
||||||
|
listFiles();
|
||||||
|
|
||||||
|
if ((display.epd2.panel == GxEPD2::GDEW0154Z04) || (display.epd2.panel == GxEPD2::ACeP565) || (display.epd2.panel == GxEPD2::GDEY073D46) || false)
|
||||||
|
{
|
||||||
|
//drawBitmapsBuffered_200x200();
|
||||||
|
//drawBitmapsBuffered_other();
|
||||||
|
drawBitmapsBuffered_test();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
drawBitmaps_200x200();
|
||||||
|
drawBitmaps_other();
|
||||||
|
//drawBitmaps_test();
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.println("GxEPD2_SerialFlash_Example done");
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void listFiles()
|
||||||
|
{
|
||||||
|
Serial.println("All Files on SPI Flash chip:");
|
||||||
|
SerialFlash.opendir();
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
char filename[64];
|
||||||
|
uint32_t filesize;
|
||||||
|
|
||||||
|
if (SerialFlash.readdir(filename, sizeof(filename), filesize))
|
||||||
|
{
|
||||||
|
Serial.print(" ");
|
||||||
|
Serial.print(filename);
|
||||||
|
spaces(20 - strlen(filename));
|
||||||
|
Serial.print(" ");
|
||||||
|
Serial.print(filesize);
|
||||||
|
Serial.print(" bytes");
|
||||||
|
Serial.println();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Serial.println("no more files...");
|
||||||
|
break; // no more files
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void spaces(int num)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < num; i++)
|
||||||
|
{
|
||||||
|
Serial.print(" ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmaps_200x200()
|
||||||
|
{
|
||||||
|
int16_t x = (display.width() - 200) / 2;
|
||||||
|
int16_t y = (display.height() - 200) / 2;
|
||||||
|
drawBitmapFromSerialFlash("logo200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("first200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("second200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("third200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("fourth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("fifth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("sixth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("seventh200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("eighth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmaps_other()
|
||||||
|
{
|
||||||
|
int16_t w2 = display.width() / 2;
|
||||||
|
int16_t h2 = display.height() / 2;
|
||||||
|
drawBitmapFromSerialFlash("chanceflurries.bmp", w2 - 50, h2 - 50, false);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("betty_1.bmp", w2 - 100, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("betty_4.bmp", w2 - 102, h2 - 126);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("marilyn_240x240x8.bmp", w2 - 120, h2 - 120);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("miniwoof.bmp", w2 - 60, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("tiger.bmp", w2 - 160, h2 - 120);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("tiger_178x160x4.bmp", w2 - 89, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("tiger_240x317x4.bmp", w2 - 120, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("tiger_320x200x24.bmp", w2 - 160, h2 - 100);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("woof.bmp", w2 - 120, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmaps_test()
|
||||||
|
{
|
||||||
|
drawBitmapFromSerialFlash("output5.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("output6.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("tractor_1.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("tractor_4.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
//drawBitmapFromSerialFlash("tractor_8.bmp", 0, 0); // format 1: BI_RLE8 is not supported
|
||||||
|
//delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("tractor_11.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("tractor_44.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash("tractor_88.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmapsBuffered_200x200()
|
||||||
|
{
|
||||||
|
int16_t x = (display.width() - 200) / 2;
|
||||||
|
int16_t y = (display.height() - 200) / 2;
|
||||||
|
drawBitmapFromSerialFlash_Buffered("logo200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("first200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("second200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("third200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("fourth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("fifth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("sixth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("seventh200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("eighth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmapsBuffered_other()
|
||||||
|
{
|
||||||
|
int16_t w2 = display.width() / 2;
|
||||||
|
int16_t h2 = display.height() / 2;
|
||||||
|
drawBitmapFromSerialFlash_Buffered("chanceflurries.bmp", w2 - 50, h2 - 50, false);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("betty_1.bmp", w2 - 100, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("betty_4.bmp", w2 - 102, h2 - 126);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("marilyn_240x240x8.bmp", w2 - 120, h2 - 120);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("miniwoof.bmp", w2 - 60, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("tiger.bmp", w2 - 160, h2 - 120);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("tiger_178x160x4.bmp", w2 - 89, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("tiger_240x317x4.bmp", w2 - 120, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("tiger_320x200x24.bmp", w2 - 160, h2 - 100);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("woof.bmp", w2 - 120, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmapsBuffered_test()
|
||||||
|
{
|
||||||
|
int16_t w2 = display.width() / 2;
|
||||||
|
int16_t h2 = display.height() / 2;
|
||||||
|
drawBitmapFromSerialFlash_Buffered("betty_4.bmp", w2 - 102, h2 - 126);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("bb4.bmp", 0, 0, false, true, true);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("rgb32.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("parrot.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSerialFlash_Buffered("5in65f3.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const uint16_t input_buffer_pixels = 800; // may affect performance
|
||||||
|
|
||||||
|
static const uint16_t max_row_width = 1448; // for up to 6" display 1448x1072
|
||||||
|
static const uint16_t max_palette_pixels = 256; // for depth <= 8
|
||||||
|
|
||||||
|
uint8_t input_buffer[3 * input_buffer_pixels]; // up to depth 24
|
||||||
|
uint8_t output_row_mono_buffer[max_row_width / 8]; // buffer for at least one row of b/w bits
|
||||||
|
uint8_t output_row_color_buffer[max_row_width / 8]; // buffer for at least one row of color bits
|
||||||
|
uint8_t mono_palette_buffer[max_palette_pixels / 8]; // palette buffer for depth <= 8 b/w
|
||||||
|
uint8_t color_palette_buffer[max_palette_pixels / 8]; // palette buffer for depth <= 8 c/w
|
||||||
|
uint16_t rgb_palette_buffer[max_palette_pixels]; // palette buffer for depth <= 8 for buffered graphics, needed for 7-color display
|
||||||
|
|
||||||
|
void drawBitmapFromSerialFlash(const char *filename, int16_t x, int16_t y, bool with_color)
|
||||||
|
{
|
||||||
|
bool valid = false; // valid format to be handled
|
||||||
|
bool flip = true; // bitmap is stored bottom-to-top
|
||||||
|
uint32_t startTime = millis();
|
||||||
|
if ((x >= display.epd2.WIDTH) || (y >= display.epd2.HEIGHT)) return;
|
||||||
|
Serial.println();
|
||||||
|
Serial.print("Loading image '");
|
||||||
|
Serial.print(filename);
|
||||||
|
Serial.println('\'');
|
||||||
|
SerialFlashFile file = SerialFlash.open(filename);
|
||||||
|
if (!file)
|
||||||
|
{
|
||||||
|
Serial.print("File not found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Parse BMP header
|
||||||
|
if (read16(file) == 0x4D42) // BMP signature
|
||||||
|
{
|
||||||
|
uint32_t fileSize = read32(file);
|
||||||
|
uint32_t creatorBytes = read32(file); (void)creatorBytes; //unused
|
||||||
|
uint32_t imageOffset = read32(file); // Start of image data
|
||||||
|
uint32_t headerSize = read32(file);
|
||||||
|
uint32_t width = read32(file);
|
||||||
|
int32_t height = (int32_t) read32(file);
|
||||||
|
uint16_t planes = read16(file);
|
||||||
|
uint16_t depth = read16(file); // bits per pixel
|
||||||
|
uint32_t format = read32(file);
|
||||||
|
if ((planes == 1) && ((format == 0) || (format == 3))) // uncompressed is handled, 565 also
|
||||||
|
{
|
||||||
|
Serial.print("File size: "); Serial.println(fileSize);
|
||||||
|
Serial.print("Image Offset: "); Serial.println(imageOffset);
|
||||||
|
Serial.print("Header size: "); Serial.println(headerSize);
|
||||||
|
Serial.print("Bit Depth: "); Serial.println(depth);
|
||||||
|
Serial.print("Image size: ");
|
||||||
|
Serial.print(width);
|
||||||
|
Serial.print('x');
|
||||||
|
Serial.println(height);
|
||||||
|
// BMP rows are padded (if needed) to 4-byte boundary
|
||||||
|
uint32_t rowSize = (width * depth / 8 + 3) & ~3;
|
||||||
|
if (depth < 8) rowSize = ((width * depth + 8 - depth) / 8 + 3) & ~3;
|
||||||
|
if (height < 0)
|
||||||
|
{
|
||||||
|
height = -height;
|
||||||
|
flip = false;
|
||||||
|
}
|
||||||
|
uint16_t w = width;
|
||||||
|
uint16_t h = height;
|
||||||
|
if ((x + w - 1) >= display.epd2.WIDTH) w = display.epd2.WIDTH - x;
|
||||||
|
if ((y + h - 1) >= display.epd2.HEIGHT) h = display.epd2.HEIGHT - y;
|
||||||
|
if (w <= max_row_width) // handle with direct drawing
|
||||||
|
{
|
||||||
|
valid = true;
|
||||||
|
uint8_t bitmask = 0xFF;
|
||||||
|
uint8_t bitshift = 8 - depth;
|
||||||
|
uint16_t red, green, blue;
|
||||||
|
bool whitish = false;
|
||||||
|
bool colored = false;
|
||||||
|
if (depth == 1) with_color = false;
|
||||||
|
if (depth <= 8)
|
||||||
|
{
|
||||||
|
if (depth < 8) bitmask >>= depth;
|
||||||
|
//file.seek(54); //palette is always @ 54
|
||||||
|
file.seek(imageOffset - (4 << depth)); // 54 for regular, diff for colorsimportant
|
||||||
|
for (uint16_t pn = 0; pn < (1 << depth); pn++)
|
||||||
|
{
|
||||||
|
blue = read8(file);
|
||||||
|
green = read8(file);
|
||||||
|
red = read8(file);
|
||||||
|
read8(file);
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
if (0 == pn % 8) mono_palette_buffer[pn / 8] = 0;
|
||||||
|
mono_palette_buffer[pn / 8] |= whitish << pn % 8;
|
||||||
|
if (0 == pn % 8) color_palette_buffer[pn / 8] = 0;
|
||||||
|
color_palette_buffer[pn / 8] |= colored << pn % 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
display.clearScreen();
|
||||||
|
uint32_t rowPosition = flip ? imageOffset + (height - h) * rowSize : imageOffset;
|
||||||
|
for (uint16_t row = 0; row < h; row++, rowPosition += rowSize) // for each line
|
||||||
|
{
|
||||||
|
uint32_t in_remain = rowSize;
|
||||||
|
uint32_t in_idx = 0;
|
||||||
|
uint32_t in_bytes = 0;
|
||||||
|
uint8_t in_byte = 0; // for depth <= 8
|
||||||
|
uint8_t in_bits = 0; // for depth <= 8
|
||||||
|
uint8_t out_byte = 0xFF; // white (for w%8!=0 border)
|
||||||
|
uint8_t out_color_byte = 0xFF; // white (for w%8!=0 border)
|
||||||
|
uint32_t out_idx = 0;
|
||||||
|
file.seek(rowPosition);
|
||||||
|
for (uint16_t col = 0; col < w; col++) // for each pixel
|
||||||
|
{
|
||||||
|
// Time to read more pixel data?
|
||||||
|
if (in_idx >= in_bytes) // ok, exact match for 24bit also (size IS multiple of 3)
|
||||||
|
{
|
||||||
|
in_bytes = file.read(input_buffer, in_remain > sizeof(input_buffer) ? sizeof(input_buffer) : in_remain);
|
||||||
|
in_remain -= in_bytes;
|
||||||
|
in_idx = 0;
|
||||||
|
}
|
||||||
|
switch (depth)
|
||||||
|
{
|
||||||
|
case 32:
|
||||||
|
blue = input_buffer[in_idx++];
|
||||||
|
green = input_buffer[in_idx++];
|
||||||
|
red = input_buffer[in_idx++];
|
||||||
|
in_idx++; // skip alpha
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
break;
|
||||||
|
case 24:
|
||||||
|
blue = input_buffer[in_idx++];
|
||||||
|
green = input_buffer[in_idx++];
|
||||||
|
red = input_buffer[in_idx++];
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
{
|
||||||
|
uint8_t lsb = input_buffer[in_idx++];
|
||||||
|
uint8_t msb = input_buffer[in_idx++];
|
||||||
|
if (format == 0) // 555
|
||||||
|
{
|
||||||
|
blue = (lsb & 0x1F) << 3;
|
||||||
|
green = ((msb & 0x03) << 6) | ((lsb & 0xE0) >> 2);
|
||||||
|
red = (msb & 0x7C) << 1;
|
||||||
|
}
|
||||||
|
else // 565
|
||||||
|
{
|
||||||
|
blue = (lsb & 0x1F) << 3;
|
||||||
|
green = ((msb & 0x07) << 5) | ((lsb & 0xE0) >> 3);
|
||||||
|
red = (msb & 0xF8);
|
||||||
|
}
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
case 4:
|
||||||
|
case 8:
|
||||||
|
{
|
||||||
|
if (0 == in_bits)
|
||||||
|
{
|
||||||
|
in_byte = input_buffer[in_idx++];
|
||||||
|
in_bits = 8;
|
||||||
|
}
|
||||||
|
uint16_t pn = (in_byte >> bitshift) & bitmask;
|
||||||
|
whitish = mono_palette_buffer[pn / 8] & (0x1 << pn % 8);
|
||||||
|
colored = color_palette_buffer[pn / 8] & (0x1 << pn % 8);
|
||||||
|
in_byte <<= depth;
|
||||||
|
in_bits -= depth;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (whitish)
|
||||||
|
{
|
||||||
|
// keep white
|
||||||
|
}
|
||||||
|
else if (colored && with_color)
|
||||||
|
{
|
||||||
|
out_color_byte &= ~(0x80 >> col % 8); // colored
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
out_byte &= ~(0x80 >> col % 8); // black
|
||||||
|
}
|
||||||
|
if ((7 == col % 8) || (col == w - 1)) // write that last byte! (for w%8!=0 border)
|
||||||
|
{
|
||||||
|
output_row_color_buffer[out_idx] = out_color_byte;
|
||||||
|
output_row_mono_buffer[out_idx++] = out_byte;
|
||||||
|
out_byte = 0xFF; // white (for w%8!=0 border)
|
||||||
|
out_color_byte = 0xFF; // white (for w%8!=0 border)
|
||||||
|
}
|
||||||
|
} // end pixel
|
||||||
|
uint16_t yrow = y + (flip ? h - row - 1 : row);
|
||||||
|
display.writeImage(output_row_mono_buffer, output_row_color_buffer, x, yrow, w, 1);
|
||||||
|
} // end line
|
||||||
|
Serial.print("loaded in "); Serial.print(millis() - startTime); Serial.println(" ms");
|
||||||
|
display.refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file.close();
|
||||||
|
if (!valid)
|
||||||
|
{
|
||||||
|
Serial.println("bitmap format not handled.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmapFromSerialFlash_Buffered(const char *filename, int16_t x, int16_t y, bool with_color, bool partial_update, bool overwrite)
|
||||||
|
{
|
||||||
|
bool valid = false; // valid format to be handled
|
||||||
|
bool flip = true; // bitmap is stored bottom-to-top
|
||||||
|
bool has_multicolors = (display.epd2.panel == GxEPD2::ACeP565) || (display.epd2.panel == GxEPD2::GDEY073D46);
|
||||||
|
uint32_t startTime = millis();
|
||||||
|
if ((x >= display.width()) || (y >= display.height())) return;
|
||||||
|
Serial.println();
|
||||||
|
Serial.print("Loading image '");
|
||||||
|
Serial.print(filename);
|
||||||
|
Serial.println('\'');
|
||||||
|
SerialFlashFile file = SerialFlash.open(filename);
|
||||||
|
if (!file)
|
||||||
|
{
|
||||||
|
Serial.print("File not found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Parse BMP header
|
||||||
|
if (read16(file) == 0x4D42) // BMP signature
|
||||||
|
{
|
||||||
|
uint32_t fileSize = read32(file);
|
||||||
|
uint32_t creatorBytes = read32(file); (void)creatorBytes; //unused
|
||||||
|
uint32_t imageOffset = read32(file); // Start of image data
|
||||||
|
uint32_t headerSize = read32(file);
|
||||||
|
uint32_t width = read32(file);
|
||||||
|
int32_t height = (int32_t) read32(file);
|
||||||
|
uint16_t planes = read16(file);
|
||||||
|
uint16_t depth = read16(file); // bits per pixel
|
||||||
|
uint32_t format = read32(file);
|
||||||
|
if ((planes == 1) && ((format == 0) || (format == 3))) // uncompressed is handled, 565 also
|
||||||
|
{
|
||||||
|
Serial.print("File size: "); Serial.println(fileSize);
|
||||||
|
Serial.print("Image Offset: "); Serial.println(imageOffset);
|
||||||
|
Serial.print("Header size: "); Serial.println(headerSize);
|
||||||
|
Serial.print("Bit Depth: "); Serial.println(depth);
|
||||||
|
Serial.print("Image size: ");
|
||||||
|
Serial.print(width);
|
||||||
|
Serial.print('x');
|
||||||
|
Serial.println(height);
|
||||||
|
// BMP rows are padded (if needed) to 4-byte boundary
|
||||||
|
uint32_t rowSize = (width * depth / 8 + 3) & ~3;
|
||||||
|
if (depth < 8) rowSize = ((width * depth + 8 - depth) / 8 + 3) & ~3;
|
||||||
|
if (height < 0)
|
||||||
|
{
|
||||||
|
height = -height;
|
||||||
|
flip = false;
|
||||||
|
}
|
||||||
|
uint16_t w = width;
|
||||||
|
uint16_t h = height;
|
||||||
|
if ((x + w - 1) >= display.width()) w = display.width() - x;
|
||||||
|
if ((y + h - 1) >= display.height()) h = display.height() - y;
|
||||||
|
//if (w <= max_row_width) // handle with direct drawing
|
||||||
|
{
|
||||||
|
valid = true;
|
||||||
|
uint8_t bitmask = 0xFF;
|
||||||
|
uint8_t bitshift = 8 - depth;
|
||||||
|
uint16_t red, green, blue;
|
||||||
|
bool whitish = false;
|
||||||
|
bool colored = false;
|
||||||
|
if (depth == 1) with_color = false;
|
||||||
|
if (depth <= 8)
|
||||||
|
{
|
||||||
|
if (depth < 8) bitmask >>= depth;
|
||||||
|
//file.seek(54); //palette is always @ 54
|
||||||
|
file.seek(imageOffset - (4 << depth)); // 54 for regular, diff for colorsimportant
|
||||||
|
for (uint16_t pn = 0; pn < (1 << depth); pn++)
|
||||||
|
{
|
||||||
|
blue = read8(file);
|
||||||
|
green = read8(file);
|
||||||
|
red = read8(file);
|
||||||
|
read8(file);
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
if (0 == pn % 8) mono_palette_buffer[pn / 8] = 0;
|
||||||
|
mono_palette_buffer[pn / 8] |= whitish << pn % 8;
|
||||||
|
if (0 == pn % 8) color_palette_buffer[pn / 8] = 0;
|
||||||
|
color_palette_buffer[pn / 8] |= colored << pn % 8;
|
||||||
|
rgb_palette_buffer[pn] = ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | ((blue & 0xF8) >> 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (partial_update) display.setPartialWindow(x, y, w, h);
|
||||||
|
else display.setFullWindow();
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (!overwrite) display.fillScreen(GxEPD_WHITE);
|
||||||
|
uint32_t rowPosition = flip ? imageOffset + (height - h) * rowSize : imageOffset;
|
||||||
|
for (uint16_t row = 0; row < h; row++, rowPosition += rowSize) // for each line
|
||||||
|
{
|
||||||
|
uint32_t in_remain = rowSize;
|
||||||
|
uint32_t in_idx = 0;
|
||||||
|
uint32_t in_bytes = 0;
|
||||||
|
uint8_t in_byte = 0; // for depth <= 8
|
||||||
|
uint8_t in_bits = 0; // for depth <= 8
|
||||||
|
uint16_t color = GxEPD_WHITE;
|
||||||
|
file.seek(rowPosition);
|
||||||
|
for (uint16_t col = 0; col < w; col++) // for each pixel
|
||||||
|
{
|
||||||
|
// Time to read more pixel data?
|
||||||
|
if (in_idx >= in_bytes) // ok, exact match for 24bit also (size IS multiple of 3)
|
||||||
|
{
|
||||||
|
in_bytes = file.read(input_buffer, in_remain > sizeof(input_buffer) ? sizeof(input_buffer) : in_remain);
|
||||||
|
in_remain -= in_bytes;
|
||||||
|
in_idx = 0;
|
||||||
|
}
|
||||||
|
switch (depth)
|
||||||
|
{
|
||||||
|
case 32:
|
||||||
|
blue = input_buffer[in_idx++];
|
||||||
|
green = input_buffer[in_idx++];
|
||||||
|
red = input_buffer[in_idx++];
|
||||||
|
in_idx++; // skip alpha
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
color = ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | ((blue & 0xF8) >> 3);
|
||||||
|
break;
|
||||||
|
case 24:
|
||||||
|
blue = input_buffer[in_idx++];
|
||||||
|
green = input_buffer[in_idx++];
|
||||||
|
red = input_buffer[in_idx++];
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
color = ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | ((blue & 0xF8) >> 3);
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
{
|
||||||
|
uint8_t lsb = input_buffer[in_idx++];
|
||||||
|
uint8_t msb = input_buffer[in_idx++];
|
||||||
|
if (format == 0) // 555
|
||||||
|
{
|
||||||
|
blue = (lsb & 0x1F) << 3;
|
||||||
|
green = ((msb & 0x03) << 6) | ((lsb & 0xE0) >> 2);
|
||||||
|
red = (msb & 0x7C) << 1;
|
||||||
|
color = ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | ((blue & 0xF8) >> 3);
|
||||||
|
}
|
||||||
|
else // 565
|
||||||
|
{
|
||||||
|
blue = (lsb & 0x1F) << 3;
|
||||||
|
green = ((msb & 0x07) << 5) | ((lsb & 0xE0) >> 3);
|
||||||
|
red = (msb & 0xF8);
|
||||||
|
color = (msb << 8) | lsb;
|
||||||
|
}
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
case 4:
|
||||||
|
case 8:
|
||||||
|
{
|
||||||
|
if (0 == in_bits)
|
||||||
|
{
|
||||||
|
in_byte = input_buffer[in_idx++];
|
||||||
|
in_bits = 8;
|
||||||
|
}
|
||||||
|
uint16_t pn = (in_byte >> bitshift) & bitmask;
|
||||||
|
whitish = mono_palette_buffer[pn / 8] & (0x1 << pn % 8);
|
||||||
|
colored = color_palette_buffer[pn / 8] & (0x1 << pn % 8);
|
||||||
|
in_byte <<= depth;
|
||||||
|
in_bits -= depth;
|
||||||
|
color = rgb_palette_buffer[pn];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (with_color && has_multicolors)
|
||||||
|
{
|
||||||
|
// keep color
|
||||||
|
}
|
||||||
|
else if (whitish)
|
||||||
|
{
|
||||||
|
color = GxEPD_WHITE;
|
||||||
|
}
|
||||||
|
else if (colored && with_color)
|
||||||
|
{
|
||||||
|
color = GxEPD_COLORED;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
color = GxEPD_BLACK;
|
||||||
|
}
|
||||||
|
uint16_t yrow = y + (flip ? h - row - 1 : row);
|
||||||
|
display.drawPixel(x + col, yrow, color);
|
||||||
|
} // end pixel
|
||||||
|
} // end line
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
Serial.print("loaded in "); Serial.print(millis() - startTime); Serial.println(" ms");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file.close();
|
||||||
|
if (!valid)
|
||||||
|
{
|
||||||
|
Serial.println("bitmap format not handled.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint8_t read8(SerialFlashFile& f)
|
||||||
|
{
|
||||||
|
uint8_t result;
|
||||||
|
f.read((void*)&result, 1);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t read16(SerialFlashFile& f)
|
||||||
|
{
|
||||||
|
// BMP data is stored little-endian, same as Arduino.
|
||||||
|
uint16_t result;
|
||||||
|
f.read((void*)&result, 2);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t read32(SerialFlashFile& f)
|
||||||
|
{
|
||||||
|
// BMP data is stored little-endian, same as Arduino.
|
||||||
|
uint32_t result;
|
||||||
|
f.read((void*)&result, 4);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,374 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// NOTE: you may need to adapt or select for your wiring in the processor specific conditional compile sections below
|
||||||
|
|
||||||
|
// select the display class (only one), matching the kind of display panel
|
||||||
|
#define GxEPD2_DISPLAY_CLASS GxEPD2_BW
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_3C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_4C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_7C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_BW_SHM
|
||||||
|
|
||||||
|
// select the display driver class (only one) for your panel
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_102 // GDEW0102T4 80x128, UC8175, (WFT0102CZA2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_150_BN // DEPG0150BN 200x200, SSD1681, (FPC8101), TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154 // GDEP015OC1 200x200, IL3829, (WFC0000CZ07), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_D67 // GDEH0154D67 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_T8 // GDEW0154T8 152x152, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M09 // GDEW0154M09 200x200, JD79653A, (WFT0154CZB3)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M10 // GDEW0154M10 152x152, UC8151D, (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_GDEY0154D67 // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213 // GDE0213B1 122x250, IL3895, (HINK-E0213-G01), phased out
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B72 // GDEH0213B72 122x250, SSD1675A (IL3897), (HINK-E0213A22-A0 SLH1852)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B73 // GDEH0213B73 122x250, SSD1675B, (HINK-E0213A22-A0 SLH1914)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B74 // GDEM0213B74 122x250, SSD1680, FPC-7528B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_flex // GDEW0213I5F 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_M21 // GDEW0213M21 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_T5D // GDEW0213T5D 104x212, UC8151D, (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_BN // DEPG0213BN 122x250, SSD1680, (FPC-7528B), TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_GDEY0213B74 // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260 // GDEW026T0 152x296, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260_M01 // GDEW026M01 152x296, UC8151 (IL0373), (WFT0260CZB2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_BN // DEPG0266BN 152x296, SSD1680, (FPC7510), TTGO T5 V2.66, TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_GDEY0266T90 // GDEY0266T90 152x296, SSD1680, (FPC-A003 HB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270 // GDEW027W3 176x264, EK79652 (IL91874), (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270_GDEY027T91 // GDEY027T91 176x264, SSD1680, (FB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290 // GDEH029A1 128x296, SSD1608 (IL3820), (E029A01-FPC-A1 SYX1553)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5 // GDEW029T5 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5D // GDEW029T5D 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_I6FD // GDEW029I6FD 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94_V2 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b), Waveshare 2.9" V2 variant
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_BS // DEPG0290BS 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_M06 // GDEW029M06 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T94 // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T71H // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_310_GDEQ031T10 // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_GDEY037T03 // GDEY037T03 240x416, UC8253, (FPC-F002, hidden on CrowPanel)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1 280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_371 // GDEW0371W7 240x416, UC8171 (IL0324), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397_GDEM0397T81 // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420 // GDEW042T2 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GYE042A87 // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_SE0420NQ04 // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_576_GDEH0576T81 // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579_GDEY0579T93 // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583 // GDEW0583T7 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8 // GDEW0583T8 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750 // GDEW075T8 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_T7 // GDEW075T7 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_GDEY075T7 // GDEY075T7 800x480, UC8179 (GD7965), (FPC-C001 20.08.20)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1020_GDEM102T91 // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1085_GDEM1085T51 // GDEM1085T51 1360x480, JD79686AB, (FPC8617) *** needs CS2 ***
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160_T91 // GDEH116T91 960x640, SSD1677, (none or hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248 // GDEW1248T3 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330_GDEM133T91 // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c // GDEW0154Z04 200x200, IL0376F, (WFT0000CZ04), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_Z90c // GDEH0154Z90 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c // GDEW0213Z16 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z19c // GDEH0213Z19 104x212, UC8151D, (HINK-E0213A20-A2 2020-11-19)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z98c // GDEY0213Z98 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c // GDEY0266Z90 152x296, SSD1680, (FPC-7510)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270c // GDEW027C44 176x264, IL91874, (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c // GDEW029Z10 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_Z13c // GDEH029Z13 128x296, UC8151D, (HINK-E029A10-A3 20160809)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_C90c // GDEM029C90 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c // GDEW042Z15 400x300, UC8176 (IL0398), (WFT0420CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_Z21 // GDEQ042Z21 400x300, UC8276, (hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY042Z98 // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579Z93 // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c // GDEW0583Z21 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_Z83 // GDEW0583Z83 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_GDEQ0583Z31 // GDEQ0583Z31 648x480, UC8179C,
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c // GDEW075Z09 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z08 // GDEW075Z08 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90 880x528, SSD1677, (HINK-E075A07-A0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEW075Z08 // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEY075Z08 // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116Z91 // GDEY116Z91 960x640, SSD1677, (FPV-K002 22.04.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248c // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330c_GDEM133Z91 // GDEM133Z91 960x680, SSD1677 (FPC-7701 REV.B)
|
||||||
|
// 4-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c_GDEM0154F51H // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c_GDEY0213F51 // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_300c // Waveshare 3.00" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_350c_GDEM035F51 // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397c_GDEM0397F81 // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_437c // Waveshare 4.37" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579F51 // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEM075F52 // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116F51 // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c_GDEP0565D90 // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEY073D46 // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_ACeP_730 // Waveshare 7.3" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEP073E01 // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60 // ED060SCT 800x600
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60_1448x1072 // ED060KC1 1448x1072
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it78_1872x1404 // ED078KC2 1872x1404
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it103_1872x1404 // ES103TC1 1872x1404
|
||||||
|
|
||||||
|
// SS is usually used for CS. define here for easy change
|
||||||
|
#ifndef EPD_CS
|
||||||
|
#define EPD_CS SS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
||||||
|
|
||||||
|
// somehow there should be an easier way to do this
|
||||||
|
#define GxEPD2_BW_IS_GxEPD2_BW true
|
||||||
|
#define GxEPD2_3C_IS_GxEPD2_3C true
|
||||||
|
#define GxEPD2_4C_IS_GxEPD2_4C true
|
||||||
|
#define GxEPD2_7C_IS_GxEPD2_7C true
|
||||||
|
#define GxEPD2_BW_SHM_IS_GxEPD2_BW_SHM true
|
||||||
|
#define GxEPD2_1248_IS_GxEPD2_1248 true
|
||||||
|
#define GxEPD2_1248c_IS_GxEPD2_1248c true
|
||||||
|
#define IS_GxEPD(c, x) (c##x)
|
||||||
|
#define IS_GxEPD2_BW(x) IS_GxEPD(GxEPD2_BW_IS_, x)
|
||||||
|
#define IS_GxEPD2_3C(x) IS_GxEPD(GxEPD2_3C_IS_, x)
|
||||||
|
#define IS_GxEPD2_4C(x) IS_GxEPD(GxEPD2_4C_IS_, x)
|
||||||
|
#define IS_GxEPD2_7C(x) IS_GxEPD(GxEPD2_7C_IS_, x)
|
||||||
|
#define IS_GxEPD2_BW_SHM(x) IS_GxEPD(GxEPD2_BW_SHM_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248(x) IS_GxEPD(GxEPD2_1248_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248c(x) IS_GxEPD(GxEPD2_1248c_IS_, x)
|
||||||
|
|
||||||
|
#include "GxEPD2_selection_check.h"
|
||||||
|
|
||||||
|
// for my test use only
|
||||||
|
//#if defined(_AVR)
|
||||||
|
//#warning "defined(_AVR)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ESP32)
|
||||||
|
//#warning "defined(ESP32)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
//#warning "defined(ARDUINO_ARCH_ESP32)"
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_AVR)
|
||||||
|
#if defined (ARDUINO_AVR_MEGA2560) // Note: SS is on 53 on MEGA
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#elif defined(ARDUINO_AVR_NANO_EVERY)
|
||||||
|
#define EPD_CS 10
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#else // Note: SS is on 10 on UNO, NANO
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 800 //
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
// for Arduino Micro or Arduino Leonardo with CS on 10 on my proto boards (SS would be 17) uncomment instead:
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_MEGAAVR)
|
||||||
|
#if defined(ARDUINO_AVR_NANO_EVERY) || defined(ARDUINO_AVR_UNO_WIFI_REV2)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 65536ul // e.g.
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
#if !IS_GxEPD2_1248(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_1248c(GxEPD2_DRIVER_CLASS)
|
||||||
|
#if defined(ARDUINO_NANO_ESP32) // uses Dx pin names
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ D10, /*DC=*/ D8, /*RST=*/ D9, /*BUSY=*/ D7));
|
||||||
|
#elif defined(ARDUINO_LOLIN_D32_PRO)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // my LOLIN_D32_PRO proto board
|
||||||
|
#elif defined(ARDUINO_LOLIN_S2_MINI)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 33, /*DC=*/ 35, /*RST=*/ 37, /*BUSY=*/ 39)); // my LOLIN ESP32 S2 mini connection
|
||||||
|
#elif defined(ARDUINO_ESP32S3_DEV)
|
||||||
|
// ESP32E6-E01 : only 50 pin FPC works on actual version (11.1.2025)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 2, /*DC=*/ 3, /*RST=*/ 4, /*BUSY=*/ 5)); // Good Display ESP32E6-E01 board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 45, /*DC=*/ 46, /*RST=*/ 47, /*BUSY=*/ 48)); // CrowPanel wiring
|
||||||
|
#else
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13)); // Good Display ESP32 Development Kit ESP32-L
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13, /*CS2=*/ 4)); // for GDEM1085T51 with ESP32-L
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // my suggested wiring and proto board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ 5, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // LILYGO_T5_V2.4.1
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 19, /*RST=*/ 4, /*BUSY=*/ 34)); // LILYGO® TTGO T5 2.66
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // e.g. TTGO T8 ESP32-WROVER
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare ESP32 Driver Board
|
||||||
|
#endif
|
||||||
|
#else // GxEPD2_1248 or GxEPD2_1248c
|
||||||
|
// Waveshare 12.48 b/w or b/w/r SPI display board and frame or Good Display 12.48 b/w panel GDEW1248T3 or b/w/r panel GDEY1248Z51
|
||||||
|
// general constructor for use with all parameters, e.g. for Waveshare ESP32 driver board mounted on connection board
|
||||||
|
GxEPD2_DISPLAY_CLASS < GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS) > display(GxEPD2_DRIVER_CLASS(/*sck=*/ 13, /*miso=*/ 12, /*mosi=*/ 14,
|
||||||
|
/*cs_m1=*/ 23, /*cs_s1=*/ 22, /*cs_m2=*/ 16, /*cs_s2=*/ 19,
|
||||||
|
/*dc1=*/ 25, /*dc2=*/ 17, /*rst1=*/ 33, /*rst2=*/ 5,
|
||||||
|
/*busy_m1=*/ 32, /*busy_s1=*/ 26, /*busy_m2=*/ 18, /*busy_s2=*/ 4));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (ARDUINO_ARCH_ESP8266)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE (81920ul-34000ul-5000ul) // ~34000 base use, change 5000 to your application use
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=D8*/ EPD_CS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// can't use package "STMF1 Boards (STM32Duino.com)" (Roger Clark) anymore with Adafruit_GFX, use "STM32 Boards (selected from submenu)" (STMicroelectronics)
|
||||||
|
#if defined(ARDUINO_ARCH_STM32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
// for Good Display STM32 Development Kit DESPI-L.
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13, /*CS2=*/ PD12)); // for GDEM1085T51
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=PA4*/ EPD_CS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // my proto board
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RENESAS)
|
||||||
|
#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAM)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAMD)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_SAMD_NANO_33_IOT)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#else
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 3, /*RST=*/ 2, /*BUSY=*/ 1)); // my Seed XIOA0
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // my other Seed XIOA0
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RP2040)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 131072ul // e.g. half of available ram
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_NANO_RP2040_CONNECT)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 5, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // my proto board
|
||||||
|
// mapping of GoodDisplay DESPI-PICO. NOTE: uses alternate HW SPI pins!
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
|
||||||
|
// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,165 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
#define GxEPD2_102_IS_BW true
|
||||||
|
#define GxEPD2_150_BN_IS_BW true
|
||||||
|
#define GxEPD2_154_IS_BW true
|
||||||
|
#define GxEPD2_154_D67_IS_BW true
|
||||||
|
#define GxEPD2_154_T8_IS_BW true
|
||||||
|
#define GxEPD2_154_M09_IS_BW true
|
||||||
|
#define GxEPD2_154_M10_IS_BW true
|
||||||
|
#define GxEPD2_154_GDEY0154D67_IS_BW true
|
||||||
|
#define GxEPD2_213_IS_BW true
|
||||||
|
#define GxEPD2_213_B72_IS_BW true
|
||||||
|
#define GxEPD2_213_B73_IS_BW true
|
||||||
|
#define GxEPD2_213_B74_IS_BW true
|
||||||
|
#define GxEPD2_213_flex_IS_BW true
|
||||||
|
#define GxEPD2_213_M21_IS_BW true
|
||||||
|
#define GxEPD2_213_T5D_IS_BW true
|
||||||
|
#define GxEPD2_213_BN_IS_BW true
|
||||||
|
#define GxEPD2_213_GDEY0213B74_IS_BW true
|
||||||
|
#define GxEPD2_260_IS_BW true
|
||||||
|
#define GxEPD2_260_M01_IS_BW true
|
||||||
|
#define GxEPD2_266_BN_IS_BW true
|
||||||
|
#define GxEPD2_266_GDEY0266T90_IS_BW true
|
||||||
|
#define GxEPD2_270_IS_BW true
|
||||||
|
#define GxEPD2_270_GDEY027T91_IS_BW true
|
||||||
|
#define GxEPD2_290_IS_BW true
|
||||||
|
#define GxEPD2_290_T5_IS_BW true
|
||||||
|
#define GxEPD2_290_T5D_IS_BW true
|
||||||
|
#define GxEPD2_290_I6FD_IS_BW true
|
||||||
|
#define GxEPD2_290_T94_IS_BW true
|
||||||
|
#define GxEPD2_290_T94_V2_IS_BW true
|
||||||
|
#define GxEPD2_290_BS_IS_BW true
|
||||||
|
#define GxEPD2_290_M06_IS_BW true
|
||||||
|
#define GxEPD2_290_GDEY029T94_IS_BW true
|
||||||
|
#define GxEPD2_290_GDEY029T71H_IS_BW true
|
||||||
|
#define GxEPD2_310_GDEQ031T10_IS_BW true
|
||||||
|
#define GxEPD2_371_IS_BW true
|
||||||
|
#define GxEPD2_370_TC1_IS_BW true
|
||||||
|
#define GxEPD2_370_GDEY037T03_IS_BW true
|
||||||
|
#define GxEPD2_397_GDEM0397T81_IS_BW true
|
||||||
|
#define GxEPD2_420_IS_BW true
|
||||||
|
#define GxEPD2_420_M01_IS_BW true
|
||||||
|
#define GxEPD2_420_GDEY042T81_IS_BW true
|
||||||
|
#define GxEPD2_420_GYE042A87_IS_BW true
|
||||||
|
#define GxEPD2_420_SE0420NQ04_IS_BW true
|
||||||
|
#define GxEPD2_426_GDEQ0426T82_IS_BW true
|
||||||
|
#define GxEPD2_576_GDEH0576T81_IS_BW true
|
||||||
|
#define GxEPD2_579_GDEY0579T93_IS_BW true
|
||||||
|
#define GxEPD2_583_IS_BW true
|
||||||
|
#define GxEPD2_583_T8_IS_BW true
|
||||||
|
#define GxEPD2_583_GDEQ0583T31_IS_BW true
|
||||||
|
#define GxEPD2_750_IS_BW true
|
||||||
|
#define GxEPD2_750_T7_IS_BW true
|
||||||
|
#define GxEPD2_750_GDEY075T7_IS_BW true
|
||||||
|
#define GxEPD2_1020_GDEM102T91_IS_BW true
|
||||||
|
#define GxEPD2_1085_GDEM1085T51_IS_BW true
|
||||||
|
#define GxEPD2_1160_T91_IS_BW true
|
||||||
|
#define GxEPD2_1248_IS_BW true
|
||||||
|
#define GxEPD2_1330_GDEM133T91_IS_BW true
|
||||||
|
#define GxEPD2_it60_IS_BW true
|
||||||
|
#define GxEPD2_it60_1448x1072_IS_BW true
|
||||||
|
#define GxEPD2_it78_1872x1404_IS_BW true
|
||||||
|
#define GxEPD2_it103_1872x1404_IS_BW true
|
||||||
|
// 3-color e-papers
|
||||||
|
#define GxEPD2_154c_IS_3C true
|
||||||
|
#define GxEPD2_154_Z90c_IS_3C true
|
||||||
|
#define GxEPD2_213c_IS_3C true
|
||||||
|
#define GxEPD2_213_Z19c_IS_3C true
|
||||||
|
#define GxEPD2_213_Z98c_IS_3C true
|
||||||
|
#define GxEPD2_266c_IS_3C true
|
||||||
|
#define GxEPD2_270c_IS_3C true
|
||||||
|
#define GxEPD2_290c_IS_3C true
|
||||||
|
#define GxEPD2_290_Z13c_IS_3C true
|
||||||
|
#define GxEPD2_290_C90c_IS_3C true
|
||||||
|
#define GxEPD2_420c_IS_3C true
|
||||||
|
#define GxEPD2_420c_Z21_IS_3C true
|
||||||
|
#define GxEPD2_420c_GDEY042Z98_IS_3C true
|
||||||
|
#define GxEPD2_579c_GDEY0579Z93_IS_3C true
|
||||||
|
#define GxEPD2_583c_IS_3C true
|
||||||
|
#define GxEPD2_583c_Z83_IS_3C true
|
||||||
|
#define GxEPD2_583c_GDEQ0583Z31_IS_3C true
|
||||||
|
#define GxEPD2_750c_IS_3C true
|
||||||
|
#define GxEPD2_750c_Z08_IS_3C true
|
||||||
|
#define GxEPD2_750c_Z90_IS_3C true
|
||||||
|
#define GxEPD2_750c_GDEW075Z08_IS_3C true
|
||||||
|
#define GxEPD2_750c_GDEY075Z08_IS_3C true
|
||||||
|
#define GxEPD2_1160c_GDEY116Z91_IS_3C true
|
||||||
|
#define GxEPD2_1248c_IS_3C true
|
||||||
|
#define GxEPD2_1330c_GDEM133Z91_IS_3C true
|
||||||
|
// 4-color e-paper
|
||||||
|
#define GxEPD2_154c_GDEM0154F51H_IS_4C true
|
||||||
|
#define GxEPD2_213c_GDEY0213F51_IS_4C true
|
||||||
|
#define GxEPD2_266c_GDEY0266F51H_IS_4C true
|
||||||
|
#define GxEPD2_290c_GDEY029F51H_IS_4C true
|
||||||
|
#define GxEPD2_300c_IS_4C true
|
||||||
|
#define GxEPD2_350c_GDEM035F51_IS_4C true
|
||||||
|
#define GxEPD2_397c_GDEM0397F81_IS_4C true
|
||||||
|
#define GxEPD2_420c_GDEY0420F51_IS_4C true
|
||||||
|
#define GxEPD2_437c_IS_4C true
|
||||||
|
#define GxEPD2_579c_GDEY0579F51_IS_4C true
|
||||||
|
#define GxEPD2_750c_GDEM075F52_IS_4C true
|
||||||
|
#define GxEPD2_1160c_GDEY116F51_IS_4C true
|
||||||
|
// 7-color e-paper
|
||||||
|
#define GxEPD2_565c_IS_7C true
|
||||||
|
#define GxEPD2_565c_GDEP0565D90_IS_7C true
|
||||||
|
#define GxEPD2_730c_GDEY073D46_IS_7C true
|
||||||
|
#define GxEPD2_730c_ACeP_730_IS_7C true
|
||||||
|
#define GxEPD2_730c_GDEP073E01_IS_7C true
|
||||||
|
|
||||||
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
||||||
|
#define IS_GxEPD2_DRIVER(c, x) (c##x)
|
||||||
|
#define IS_GxEPD2_DRIVER_BW(x) IS_GxEPD2_DRIVER(x, _IS_BW)
|
||||||
|
#define IS_GxEPD2_DRIVER_3C(x) IS_GxEPD2_DRIVER(x, _IS_3C)
|
||||||
|
#define IS_GxEPD2_DRIVER_4C(x) IS_GxEPD2_DRIVER(x, _IS_4C)
|
||||||
|
#define IS_GxEPD2_DRIVER_7C(x) IS_GxEPD2_DRIVER(x, _IS_7C)
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 3-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 4-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_BW used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with b/w driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with 4-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_3C used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with b/w driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with 3-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS) && IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_4C used with 7-color driver class"
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS) && !IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "GxEPD2_7C used with less colors driver class"
|
||||||
|
#endif
|
||||||
|
#if !IS_GxEPD2_DRIVER_BW(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_3C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_4C(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_DRIVER_7C(GxEPD2_DRIVER_CLASS)
|
||||||
|
#error "neither BW nor 3C nor 4C nor 7C kind defined for driver class (error in GxEPD2_selection_check.h)"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// mapping of Good Display Arduino UNO Development Kit DEArduino-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> 4, RES -> 5, D/C -> 6, CS-> 7, SCK -> 13, SDI -> 11
|
||||||
|
|
||||||
|
// mapping of Good Display ESP8266 Development Kit ESP8266-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO16, RES -> GPIO5, D/C -> GPIO4, CS-> GPIO2, SCK -> GPIO14, SDI -> GPIO13
|
||||||
|
|
||||||
|
// mapping of Good Display ESP32 Development Kit ESP32-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> GPIO13, RES -> GPIO12, D/C -> GPIO14, CS-> GPIO27, SCK -> GPIO18, SDI -> GPIO23
|
||||||
|
|
||||||
|
// mapping of Good Display STM32 Development Kit DESPI-L, e.g. to DESPI-C02
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PD9, SDI -> PD10
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
// BUSY -> PE13, RES -> PE14, D/C -> PE14, CS-> PD8, SCK -> PA5, SDI -> PA7 // for HW SPI with GxEPD2
|
||||||
|
|
||||||
|
// connection suggestions concerning Waveshare e-paper HAT Rev 2.3:
|
||||||
|
// DON'T FORGET to connect the PWR pin to VCC, to enable power to the board.
|
||||||
|
// RST is no longer used to disable power to the board, as with earlier revisions.
|
||||||
|
// Note, for 3.3V processors, no level converters are needed. Use DESPI-C02 instead. Uses less power.
|
||||||
|
// See https://www.buyepaper.com/products/development-kit-connection-adapter-board-for-eaper-display-demo-kit
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to Wemos D1 mini
|
||||||
|
// BUSY -> D2, RST -> D4, DC -> D3, CS -> D8, CLK -> D5, DIN -> D7, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from D8 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from D4 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping suggestion from Waveshare SPI e-Paper to generic ESP8266
|
||||||
|
// BUSY -> GPIO4, RST -> GPIO2, DC -> GPIO0, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE: connect 3.3k pull-down from GPIO15 to GND if your board or shield has level converters
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, use different pin in case, or 3.3k pull-down
|
||||||
|
// NOTE: connect 1k pull-up from GPIO2 (RST) to 3.3V if your board or shield has the "clever" reset circuit, or use a different pin
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
// BUSY -> GPIO5, RST -> GPIO2, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
// BUSY -> GPIO16, RST -> GPIO5, DC -> GPIO4, CS -> GPIO15, CLK -> GPIO14, DIN -> GPIO13, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// NOTE for ESP8266: using SS (GPIO15) for CS may cause boot mode problems, add a 3.3k pull-down in case
|
||||||
|
// the e-Paper ESP8266 Driver Board should have no boot mode issue, as it doesn't use level converters
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32, see .../variants/.../pins_arduino.h for your board
|
||||||
|
// NOTE: there are variants with different pins for SPI ! CHECK SPI PINS OF YOUR BOARD
|
||||||
|
// BUSY -> 4, RST -> 16, DC -> 17, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
|
||||||
|
// mapping of Waveshare ESP32 Driver Board
|
||||||
|
// BUSY -> 25, RST -> 26, DC -> 27, CS-> 15, CLK -> 13, DIN -> 14
|
||||||
|
// NOTE: this board uses "unusual" SPI pins and requires re-mapping of HW SPI to these pins in SPIClass
|
||||||
|
// see example GxEPD2_WS_ESP32_Driver.ino, it shows how this can be done easily
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. LOLIN32 D32 PRO
|
||||||
|
// BUSY -> 15, RST -> 2, DC -> 0, CS -> 5, CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// note: use explicit value for CS, as SS is re-defined to TF_CS(4) in pins_arduino.h for Board: "LOLIN D32 PRO"
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32, e.g. TTGO T8 ESP32-WROVER
|
||||||
|
// BUSY -> 4, RST -> 0, DC -> 2, CS -> SS(5), CLK -> SCK(18), DIN -> MOSI(23), GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "ESP32 Dev Module":
|
||||||
|
|
||||||
|
// mapping suggestion for ESP32S2, e.g. LOLIN ESP32 S2 mini, direct connection of DESPI-C02
|
||||||
|
// BUSY -> 39, RST -> 37, DC -> 35, CS -> 33, CLK -> 18, DIN -> 16, GND -> GND, 3.3V -> 3.3V
|
||||||
|
// for use with Board: "LOLIN S2 MINI":
|
||||||
|
|
||||||
|
// new mapping suggestion for STM32F1, e.g. STM32F103C8T6 "BluePill"
|
||||||
|
// BUSY -> A1, RST -> A2, DC -> A3, CS-> A4, CLK -> A5, DIN -> A7
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, UNO, NANO etc.
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for AVR, Arduino Micro, Leonardo
|
||||||
|
// note: on Leonardo board HW SPI pins are on 6-pin ICSP header
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 15, DIN -> 16
|
||||||
|
|
||||||
|
// mapping of Waveshare Universal e-Paper Raw Panel Driver Shield for Arduino / NUCLEO
|
||||||
|
// BUSY -> 7, RST -> 8, DC -> 9, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MEGA
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 53, CLK -> 52, DIN -> 51
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino DUE, note: pin 77 is on board pin 10, SS is 10
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 76, DIN -> 75
|
||||||
|
// SPI pins are on 6 pin 2x3 SPI header, no SS on SPI header!
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino MKR1000 or MKRZERO
|
||||||
|
// note: can't use SS on MKR1000: is defined as 24, should be 4
|
||||||
|
// BUSY -> 5, RST -> 6, DC -> 7, CS-> 4, CLK -> 9, DIN -> 8
|
||||||
|
|
||||||
|
// mapping suggestion for Arduino Nano RP2040 Connect (Arduino MBED OS Nano Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 10, CLK -> 13, DIN -> 11
|
||||||
|
|
||||||
|
// mapping suggestion for Raspberry Pi Pico RP2040 (Arduino MBED OS RP2040 Boards)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 18, DIN -> 19
|
||||||
|
|
||||||
|
// mapping of my proto board for Raspberry Pi Pico RP2040 (previous default SPI pins)
|
||||||
|
// BUSY -> 7, RST -> 9, DC -> 8, CS-> 5, CLK -> 2, DIN -> 3
|
||||||
|
|
||||||
|
// mapping of my new proto board like Waveshare Pico-ePaper-2.9
|
||||||
|
// needs 10k pull-up on RST when used with Arduino MBED OS RP2040 Boards
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
|
|
||||||
|
// mapping of Waveshare Pico-ePaper-2.9
|
||||||
|
// BUSY -> 13, RST -> 12, DC -> 8, CS-> 9, CLK -> 10, DIN -> 11
|
||||||
@@ -0,0 +1,459 @@
|
|||||||
|
// GxEPD2_SerialFlash_Loader : Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
//
|
||||||
|
// this example uses the SerialFlash library from: https://github.com/PaulStoffregen/SerialFlash
|
||||||
|
// with a modification for use with ESP32 or the STM32 package available here: https://github.com/ZinggJM/SerialFlash
|
||||||
|
// download it as .zip file and install with Library Mananger method "Add .ZIP Library..."
|
||||||
|
//
|
||||||
|
// this example can run on ESP6266 or ESP32 using WiFi connection
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
#include <SerialFlash.h>
|
||||||
|
|
||||||
|
// digital pin for flash chip CS pin:
|
||||||
|
//const int FlashChipSelect = SS; // for standard slave select pin
|
||||||
|
//const int FlashChipSelect = 5; // use D1 on my Wemos D1 mini wired for e-papers
|
||||||
|
const int FlashChipSelect = 2; // as used with my ESP32 protoboard SD connector
|
||||||
|
|
||||||
|
#if defined (ESP8266)
|
||||||
|
#include <ESP8266WiFi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <WiFiClient.h>
|
||||||
|
#include <WiFiClientSecure.h>
|
||||||
|
|
||||||
|
const char* ssid = "........";
|
||||||
|
const char* password = "........";
|
||||||
|
const int httpPort = 80;
|
||||||
|
const int httpsPort = 443;
|
||||||
|
const char* fp_api_github_com = "df b2 29 c6 a6 38 1a 59 9d c9 ad 92 2d 26 f5 3c 83 8f a5 87"; // as of 25.11.2020
|
||||||
|
const char* fp_github_com = "5f 3f 7a c2 56 9f 50 a4 66 76 47 c6 a1 8c a0 07 aa ed bb 8e"; // as of 25.11.2020
|
||||||
|
const char* fp_rawcontent = "70 94 de dd e6 c4 69 48 3a 92 70 a1 48 56 78 2d 18 64 e0 b7"; // as of 25.11.2020
|
||||||
|
|
||||||
|
// note: the certificates have been moved to a separate header file, as R"CERT( destroys IDE Auto Format capability
|
||||||
|
|
||||||
|
#include "GxEPD2_github_raw_certs.h"
|
||||||
|
|
||||||
|
const char* certificate_rawcontent = cert_DigiCert_TLS_RSA_SHA256_2020_CA1; // ok, should work until 2031-04-13 23:59:59
|
||||||
|
|
||||||
|
const char* host_rawcontent = "raw.githubusercontent.com";
|
||||||
|
const char* path_rawcontent = "/ZinggJM/GxEPD2/master/extras/bitmaps/";
|
||||||
|
const char* path_prenticedavid = "/prenticedavid/MCUFRIEND_kbv/master/extras/bitmaps/";
|
||||||
|
const char* path_waveshare_c = "/waveshare/e-Paper/master/RaspberryPi_JetsonNano/c/pic/";
|
||||||
|
const char* path_waveshare_py = "/waveshare/e-Paper/master/RaspberryPi_JetsonNano/python/pic/";
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.println();
|
||||||
|
Serial.println("GxEPD2_SerialFlash_Loader");
|
||||||
|
|
||||||
|
#ifdef RE_INIT_NEEDED
|
||||||
|
WiFi.persistent(true);
|
||||||
|
WiFi.mode(WIFI_STA); // switch off AP
|
||||||
|
WiFi.setAutoConnect(true);
|
||||||
|
WiFi.setAutoReconnect(true);
|
||||||
|
WiFi.disconnect();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (!WiFi.getAutoConnect() || ( WiFi.getMode() != WIFI_STA) || ((WiFi.SSID() != ssid) && String(ssid) != "........"))
|
||||||
|
{
|
||||||
|
Serial.println();
|
||||||
|
Serial.print("WiFi.getAutoConnect()=");
|
||||||
|
Serial.println(WiFi.getAutoConnect());
|
||||||
|
Serial.print("WiFi.SSID()=");
|
||||||
|
Serial.println(WiFi.SSID());
|
||||||
|
WiFi.mode(WIFI_STA); // switch off AP
|
||||||
|
Serial.print("Connecting to ");
|
||||||
|
Serial.println(ssid);
|
||||||
|
WiFi.begin(ssid, password);
|
||||||
|
}
|
||||||
|
int ConnectTimeout = 30; // 15 seconds
|
||||||
|
while (WiFi.status() != WL_CONNECTED)
|
||||||
|
{
|
||||||
|
delay(500);
|
||||||
|
Serial.print(".");
|
||||||
|
Serial.print(WiFi.status());
|
||||||
|
if (--ConnectTimeout <= 0)
|
||||||
|
{
|
||||||
|
Serial.println();
|
||||||
|
Serial.println("WiFi connect timeout");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Serial.println();
|
||||||
|
Serial.println("WiFi connected");
|
||||||
|
|
||||||
|
// Print the IP address
|
||||||
|
Serial.println(WiFi.localIP());
|
||||||
|
|
||||||
|
setClock();
|
||||||
|
|
||||||
|
if (!SerialFlash.begin(FlashChipSelect))
|
||||||
|
{
|
||||||
|
Serial.println("Unable to access SPI Flash chip");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Serial.println("SerialFlash started");
|
||||||
|
eraseSerialFlash();
|
||||||
|
listFiles();
|
||||||
|
downloadBitmaps_200x200();
|
||||||
|
downloadBitmaps_other();
|
||||||
|
downloadBitmaps_test();
|
||||||
|
listFiles();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void listFiles()
|
||||||
|
{
|
||||||
|
Serial.println("All Files on SPI Flash chip:");
|
||||||
|
SerialFlash.opendir();
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
char filename[64];
|
||||||
|
uint32_t filesize;
|
||||||
|
|
||||||
|
if (SerialFlash.readdir(filename, sizeof(filename), filesize))
|
||||||
|
{
|
||||||
|
Serial.print(" ");
|
||||||
|
Serial.print(filename);
|
||||||
|
spaces(20 - strlen(filename));
|
||||||
|
Serial.print(" ");
|
||||||
|
Serial.print(filesize);
|
||||||
|
Serial.print(" bytes");
|
||||||
|
Serial.println();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Serial.println("no more files...");
|
||||||
|
break; // no more files
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void spaces(int num)
|
||||||
|
{
|
||||||
|
for (int i=0; i < num; i++)
|
||||||
|
{
|
||||||
|
Serial.print(" ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void downloadFile_HTTPS(const char* host, const char* path, const char* filename, const char* fingerprint, const char* target, const char* certificate = certificate_rawcontent);
|
||||||
|
|
||||||
|
void downloadBitmaps_200x200()
|
||||||
|
{
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_rawcontent, "logo200x200.bmp", fp_rawcontent, "logo200x200.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_rawcontent, "first200x200.bmp", fp_rawcontent, "first200x200.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_rawcontent, "second200x200.bmp", fp_rawcontent, "second200x200.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_rawcontent, "third200x200.bmp", fp_rawcontent, "third200x200.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_rawcontent, "fourth200x200.bmp", fp_rawcontent, "fourth200x200.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_rawcontent, "fifth200x200.bmp", fp_rawcontent, "fifth200x200.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_rawcontent, "sixth200x200.bmp", fp_rawcontent, "sixth200x200.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_rawcontent, "seventh200x200.bmp", fp_rawcontent, "seventh200x200.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_rawcontent, "eighth200x200.bmp", fp_rawcontent, "eighth200x200.bmp");
|
||||||
|
}
|
||||||
|
|
||||||
|
void downloadBitmaps_other()
|
||||||
|
{
|
||||||
|
downloadFile_HTTP("www.squix.org", "/blog/wunderground/", "chanceflurries.bmp", "chanceflurries.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_prenticedavid, "betty_1.bmp", fp_rawcontent, "betty_1.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_prenticedavid, "betty_4.bmp", fp_rawcontent, "betty_4.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_prenticedavid, "marilyn_240x240x8.bmp", fp_rawcontent, "marilyn_240x240x8.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_prenticedavid, "miniwoof.bmp", fp_rawcontent, "miniwoof.bmp");
|
||||||
|
//downloadFile_HTTPS(host_rawcontent, path_prenticedavid, "test.bmp", fp_rawcontent, "test.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_prenticedavid, "tiger.bmp", fp_rawcontent, "tiger.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_prenticedavid, "tiger_178x160x4.bmp", fp_rawcontent, "tiger_178x160x4.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_prenticedavid, "tiger_240x317x4.bmp", fp_rawcontent, "tiger_240x317x4.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_prenticedavid, "tiger_320x200x24.bmp", fp_rawcontent, "tiger_320x200x24.bmp");
|
||||||
|
//downloadFile_HTTPS(host_rawcontent, path_prenticedavid, "tiger16T.bmp", fp_rawcontent, "tiger16T.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_prenticedavid, "woof.bmp", fp_rawcontent, "woof.bmp");
|
||||||
|
}
|
||||||
|
|
||||||
|
void downloadBitmaps_test()
|
||||||
|
{
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_rawcontent, "output5.bmp", fp_rawcontent, "output5.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_rawcontent, "output6.bmp", fp_rawcontent, "output6.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_rawcontent, "tractor_1.bmp", fp_rawcontent, "tractor_1.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_rawcontent, "tractor_4.bmp", fp_rawcontent, "tractor_4.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_rawcontent, "tractor_8.bmp", fp_rawcontent, "tractor_8.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_rawcontent, "tractor_11.bmp", fp_rawcontent, "tractor_11.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_rawcontent, "tractor_44.bmp", fp_rawcontent, "tractor_44.bmp");
|
||||||
|
downloadFile_HTTPS(host_rawcontent, path_rawcontent, "tractor_88.bmp", fp_rawcontent, "tractor_88.bmp");
|
||||||
|
}
|
||||||
|
|
||||||
|
void downloadFile_HTTP(const char* host, const char* path, const char* filename, const char* target)
|
||||||
|
{
|
||||||
|
WiFiClient client;
|
||||||
|
Serial.print("connecting to ");
|
||||||
|
Serial.println(host);
|
||||||
|
if (!client.connect(host, httpPort))
|
||||||
|
{
|
||||||
|
Serial.println("connection failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Serial.print("requesting URL: ");
|
||||||
|
Serial.println(String("http://") + host + path + filename);
|
||||||
|
client.print(String("GET ") + path + filename + " HTTP/1.1\r\n" +
|
||||||
|
"Host: " + host + "\r\n" +
|
||||||
|
"User-Agent: GxEPD2_SerialFlash_Loader\r\n" +
|
||||||
|
"Connection: close\r\n\r\n");
|
||||||
|
Serial.println("request sent");
|
||||||
|
bool ok = false;
|
||||||
|
int32_t content_length = 0;
|
||||||
|
while (client.connected() || client.available())
|
||||||
|
{
|
||||||
|
String line = client.readStringUntil('\n');
|
||||||
|
if (!ok)
|
||||||
|
{
|
||||||
|
ok = line.startsWith("HTTP/1.1 200 OK");
|
||||||
|
if (ok) Serial.println(line);
|
||||||
|
//if (!ok) Serial.println(line);
|
||||||
|
}
|
||||||
|
if (!ok) Serial.println(line);
|
||||||
|
//Serial.println(line);
|
||||||
|
if (line.startsWith("Content-Length: "))
|
||||||
|
{
|
||||||
|
content_length = line.substring(16, line.length()).toInt();
|
||||||
|
Serial.print("content_length is "); Serial.println(content_length);
|
||||||
|
}
|
||||||
|
if (line == "\r")
|
||||||
|
{
|
||||||
|
Serial.println("headers received");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!ok) return;
|
||||||
|
uint8_t buffer[512];
|
||||||
|
#if defined(ESP8266)
|
||||||
|
client.peekBytes(buffer, 2);
|
||||||
|
Serial.write(buffer[0]); Serial.write(buffer[1]); Serial.println();
|
||||||
|
#endif
|
||||||
|
size_t total = 0;
|
||||||
|
//if (!SerialFlash.createErasable(target, content_length)) // would use much more space
|
||||||
|
if (!SerialFlash.create(target, content_length))
|
||||||
|
{
|
||||||
|
Serial.print(target); Serial.println(" create failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
SerialFlashFile file = SerialFlash.open(target);
|
||||||
|
if (!file)
|
||||||
|
{
|
||||||
|
Serial.print(target); Serial.println(" open failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
while (client.connected() || client.available())
|
||||||
|
{
|
||||||
|
size_t available = client.available();
|
||||||
|
size_t fetch = available <= sizeof(buffer) ? available : sizeof(buffer);
|
||||||
|
if (fetch > 0)
|
||||||
|
{
|
||||||
|
size_t got = client.read(buffer, fetch);
|
||||||
|
file.write(buffer, got);
|
||||||
|
total += got;
|
||||||
|
}
|
||||||
|
delay(1); // yield();
|
||||||
|
}
|
||||||
|
file.close();
|
||||||
|
Serial.print("done, "); Serial.print(total); Serial.println(" bytes transferred");
|
||||||
|
}
|
||||||
|
|
||||||
|
void downloadFile_HTTPS(const char* host, const char* path, const char* filename, const char* fingerprint, const char* target, const char* certificate)
|
||||||
|
{
|
||||||
|
// Use WiFiClientSecure class to create TLS connection
|
||||||
|
#if defined (ESP8266)
|
||||||
|
BearSSL::WiFiClientSecure client;
|
||||||
|
BearSSL::X509List cert(certificate ? certificate : certificate_rawcontent);
|
||||||
|
#else
|
||||||
|
WiFiClientSecure client;
|
||||||
|
#endif
|
||||||
|
Serial.println(); Serial.print("downloading file \""); Serial.print(filename); Serial.println("\"");
|
||||||
|
Serial.print("connecting to "); Serial.println(host);
|
||||||
|
#if defined (ESP8266)
|
||||||
|
if (certificate) client.setTrustAnchors(&cert);
|
||||||
|
else if (fingerprint) client.setFingerprint(fingerprint);
|
||||||
|
else client.setInsecure();
|
||||||
|
#elif defined (ESP32)
|
||||||
|
if (certificate) client.setCACert(certificate);
|
||||||
|
#endif
|
||||||
|
if (!client.connect(host, httpsPort))
|
||||||
|
{
|
||||||
|
Serial.println("connection failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Serial.print("requesting URL: ");
|
||||||
|
Serial.println(String("https://") + host + path + filename);
|
||||||
|
client.print(String("GET ") + path + filename + " HTTP/1.1\r\n" +
|
||||||
|
"Host: " + host + "\r\n" +
|
||||||
|
"User-Agent: GxEPD2_SerialFlash_Loader\r\n" +
|
||||||
|
"Connection: close\r\n\r\n");
|
||||||
|
Serial.println("request sent");
|
||||||
|
bool ok = false;
|
||||||
|
int32_t content_length = 0;
|
||||||
|
while (client.connected() || client.available())
|
||||||
|
{
|
||||||
|
String line = client.readStringUntil('\n');
|
||||||
|
if (!ok)
|
||||||
|
{
|
||||||
|
ok = line.startsWith("HTTP/1.1 200 OK");
|
||||||
|
if (ok) Serial.println(line);
|
||||||
|
//if (!ok) Serial.println(line);
|
||||||
|
}
|
||||||
|
if (!ok) Serial.println(line);
|
||||||
|
//Serial.print("line: "); Serial.println(line);
|
||||||
|
if (line.startsWith("Content-Length: "))
|
||||||
|
{
|
||||||
|
content_length = line.substring(16, line.length()).toInt();
|
||||||
|
Serial.print("content_length is "); Serial.println(content_length);
|
||||||
|
}
|
||||||
|
if (line == "\r")
|
||||||
|
{
|
||||||
|
Serial.println("headers received");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!ok) return;
|
||||||
|
//return;
|
||||||
|
uint8_t buffer[512];
|
||||||
|
#if defined(ESP8266)
|
||||||
|
client.peekBytes(buffer, 2);
|
||||||
|
Serial.write(buffer[0]); Serial.write(buffer[1]); Serial.println();
|
||||||
|
#endif
|
||||||
|
size_t total = 0;
|
||||||
|
//if (!SerialFlash.createErasable(target, content_length)) // would use much more space
|
||||||
|
if (!SerialFlash.create(target, content_length))
|
||||||
|
{
|
||||||
|
Serial.print(target); Serial.println(" create failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
SerialFlashFile file = SerialFlash.open(target);
|
||||||
|
if (!file)
|
||||||
|
{
|
||||||
|
Serial.print(target); Serial.println(" open failed");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
while (client.connected() || client.available())
|
||||||
|
{
|
||||||
|
// this doesn't work as expected, but it helps for long downloads
|
||||||
|
int32_t start = millis();
|
||||||
|
for (int16_t t = 0, dly = 50; t < 20; t++, dly += 50)
|
||||||
|
{
|
||||||
|
if (!(client.connected() || client.available())) break;
|
||||||
|
if (client.available()) break; // read would not recover after having returned 0
|
||||||
|
delay(dly);
|
||||||
|
}
|
||||||
|
if (!(client.connected() || client.available())) break;
|
||||||
|
int32_t elapsed = millis() - start;
|
||||||
|
if (elapsed > 250)
|
||||||
|
{
|
||||||
|
Serial.print("waited for available "); Serial.print(millis() - start); Serial.print(" ms @ "); Serial.println(total);
|
||||||
|
}
|
||||||
|
size_t available = client.available();
|
||||||
|
if (0 == available)
|
||||||
|
{
|
||||||
|
Serial.print("download error: timeout on available() after "); Serial.print(total); Serial.println(" bytes");
|
||||||
|
break; // don't hang forever
|
||||||
|
}
|
||||||
|
size_t fetch = available <= sizeof(buffer) ? available : sizeof(buffer);
|
||||||
|
if (fetch > 0)
|
||||||
|
{
|
||||||
|
size_t got = client.read(buffer, fetch);
|
||||||
|
file.write(buffer, got);
|
||||||
|
total += got;
|
||||||
|
}
|
||||||
|
delay(1); // yield();
|
||||||
|
if (total > 30000) delay(250); // helps for long downloads
|
||||||
|
}
|
||||||
|
file.close();
|
||||||
|
Serial.print("done, "); Serial.print(total); Serial.println(" bytes transferred");
|
||||||
|
}
|
||||||
|
|
||||||
|
void eraseSerialFlash()
|
||||||
|
{
|
||||||
|
unsigned char id[5];
|
||||||
|
SerialFlash.readID(id);
|
||||||
|
unsigned long size = SerialFlash.capacity(id);
|
||||||
|
unsigned long startMillis = millis();
|
||||||
|
|
||||||
|
if (size > 0)
|
||||||
|
{
|
||||||
|
Serial.print("Flash Memory has ");
|
||||||
|
Serial.print(size);
|
||||||
|
Serial.println(" bytes.");
|
||||||
|
Serial.println("Erasing ALL Flash Memory:");
|
||||||
|
// Estimate the (lengthy) wait time.
|
||||||
|
Serial.print(" estimated wait: ");
|
||||||
|
int seconds = (float)size / eraseBytesPerSecond(id) + 0.5;
|
||||||
|
Serial.print(seconds);
|
||||||
|
Serial.println(" seconds.");
|
||||||
|
Serial.println(" Yes, full chip erase is SLOW!");
|
||||||
|
SerialFlash.eraseAll();
|
||||||
|
unsigned long dotMillis = millis();
|
||||||
|
unsigned char dotcount = 0;
|
||||||
|
while (SerialFlash.ready() == false)
|
||||||
|
{
|
||||||
|
if (millis() - dotMillis > 1000)
|
||||||
|
{
|
||||||
|
dotMillis = dotMillis + 1000;
|
||||||
|
Serial.print(".");
|
||||||
|
dotcount = dotcount + 1;
|
||||||
|
if (dotcount >= 60)
|
||||||
|
{
|
||||||
|
Serial.println();
|
||||||
|
dotcount = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
yield();
|
||||||
|
}
|
||||||
|
if (dotcount > 0) Serial.println();
|
||||||
|
Serial.println("Erase completed");
|
||||||
|
unsigned long elapsed = millis() - startMillis;
|
||||||
|
Serial.print(" actual wait: ");
|
||||||
|
Serial.print(elapsed / 1000ul);
|
||||||
|
Serial.println(" seconds.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
float eraseBytesPerSecond(const unsigned char *id)
|
||||||
|
{
|
||||||
|
if (id[0] == 0x20) return 152000.0; // Micron
|
||||||
|
if (id[0] == 0x01) return 500000.0; // Spansion
|
||||||
|
if (id[0] == 0xEF) return 419430.0; // Winbond
|
||||||
|
if (id[0] == 0xC2) return 279620.0; // Macronix
|
||||||
|
return 320000.0; // guess?
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set time via NTP, as required for x.509 validation
|
||||||
|
void setClock()
|
||||||
|
{
|
||||||
|
configTime(3 * 3600, 0, "pool.ntp.org", "time.nist.gov");
|
||||||
|
|
||||||
|
Serial.print("Waiting for NTP time sync: ");
|
||||||
|
time_t now = time(nullptr);
|
||||||
|
while (now < 8 * 3600 * 2)
|
||||||
|
{
|
||||||
|
delay(500);
|
||||||
|
Serial.print(".");
|
||||||
|
now = time(nullptr);
|
||||||
|
}
|
||||||
|
Serial.println("");
|
||||||
|
struct tm timeinfo;
|
||||||
|
gmtime_r(&now, &timeinfo);
|
||||||
|
Serial.print("Current time: ");
|
||||||
|
Serial.print(asctime(&timeinfo));
|
||||||
|
}
|
||||||
@@ -0,0 +1,142 @@
|
|||||||
|
// http://cacerts.digicert.com/DigiCertTLSRSASHA2562020CA1-1.crt
|
||||||
|
// CN: DigiCert TLS RSA SHA256 2020 CA1 => name: DigiCert_TLS_RSA_SHA256_2020_CA1
|
||||||
|
// not valid before: 2021-04-14 00:00:00
|
||||||
|
// not valid after: 2031-04-13 23:59:59
|
||||||
|
const char cert_DigiCert_TLS_RSA_SHA256_2020_CA1 [] PROGMEM = R"CERT(
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEvjCCA6agAwIBAgIQBtjZBNVYQ0b2ii+nVCJ+xDANBgkqhkiG9w0BAQsFADBh
|
||||||
|
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||||
|
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
|
||||||
|
QTAeFw0yMTA0MTQwMDAwMDBaFw0zMTA0MTMyMzU5NTlaME8xCzAJBgNVBAYTAlVT
|
||||||
|
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxKTAnBgNVBAMTIERpZ2lDZXJ0IFRMUyBS
|
||||||
|
U0EgU0hBMjU2IDIwMjAgQ0ExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
||||||
|
AQEAwUuzZUdwvN1PWNvsnO3DZuUfMRNUrUpmRh8sCuxkB+Uu3Ny5CiDt3+PE0J6a
|
||||||
|
qXodgojlEVbbHp9YwlHnLDQNLtKS4VbL8Xlfs7uHyiUDe5pSQWYQYE9XE0nw6Ddn
|
||||||
|
g9/n00tnTCJRpt8OmRDtV1F0JuJ9x8piLhMbfyOIJVNvwTRYAIuE//i+p1hJInuW
|
||||||
|
raKImxW8oHzf6VGo1bDtN+I2tIJLYrVJmuzHZ9bjPvXj1hJeRPG/cUJ9WIQDgLGB
|
||||||
|
Afr5yjK7tI4nhyfFK3TUqNaX3sNk+crOU6JWvHgXjkkDKa77SU+kFbnO8lwZV21r
|
||||||
|
eacroicgE7XQPUDTITAHk+qZ9QIDAQABo4IBgjCCAX4wEgYDVR0TAQH/BAgwBgEB
|
||||||
|
/wIBADAdBgNVHQ4EFgQUt2ui6qiqhIx56rTaD5iyxZV2ufQwHwYDVR0jBBgwFoAU
|
||||||
|
A95QNVbRTLtm8KPiGxvDl7I90VUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQG
|
||||||
|
CCsGAQUFBwMBBggrBgEFBQcDAjB2BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUHMAGG
|
||||||
|
GGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBABggrBgEFBQcwAoY0aHR0cDovL2Nh
|
||||||
|
Y2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNydDBCBgNV
|
||||||
|
HR8EOzA5MDegNaAzhjFodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRH
|
||||||
|
bG9iYWxSb290Q0EuY3JsMD0GA1UdIAQ2MDQwCwYJYIZIAYb9bAIBMAcGBWeBDAEB
|
||||||
|
MAgGBmeBDAECATAIBgZngQwBAgIwCAYGZ4EMAQIDMA0GCSqGSIb3DQEBCwUAA4IB
|
||||||
|
AQCAMs5eC91uWg0Kr+HWhMvAjvqFcO3aXbMM9yt1QP6FCvrzMXi3cEsaiVi6gL3z
|
||||||
|
ax3pfs8LulicWdSQ0/1s/dCYbbdxglvPbQtaCdB73sRD2Cqk3p5BJl+7j5nL3a7h
|
||||||
|
qG+fh/50tx8bIKuxT8b1Z11dmzzp/2n3YWzW2fP9NsarA4h20ksudYbj/NhVfSbC
|
||||||
|
EXffPgK2fPOre3qGNm+499iTcc+G33Mw+nur7SpZyEKEOxEXGlLzyQ4UfaJbcme6
|
||||||
|
ce1XR2bFuAJKZTRei9AqPCCcUZlM51Ke92sRKw2Sfh3oius2FkOH6ipjv3U/697E
|
||||||
|
A7sKPPcw7+uvTPyLNhBzPvOk
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
)CERT";
|
||||||
|
|
||||||
|
// how to find the certificate was not easy. finally I found it using Mozilla Firefox.
|
||||||
|
// opened one of the bitmaps, e.g. https://raw.githubusercontent.com/ZinggJM/GxEPD2/master/extras/bitmaps/logo200x200.bmp
|
||||||
|
// clicked the lock symbol, Connection secure clicked >, show connection details, clicked More Information, clicked View Certificate, clicked Download PEM (chain),
|
||||||
|
// Opened the .pem file and copied the pems into R"CERT(...)CERT"; strings.
|
||||||
|
// for https://raw.githubusercontent.com all three pems work on ESP8266 and ESP32, if time is set from ntp.
|
||||||
|
// but using a root certificate is preferred, as its validity may be longer.
|
||||||
|
|
||||||
|
// https://raw.githubusercontent.com
|
||||||
|
// issued by DigiCert Inc : DigiCert TLS RSA SHA256 2020 CA1
|
||||||
|
// not valid before: Fri, 18 Mar 2022 00:00:00 GMT
|
||||||
|
// not valid after: Tue, 21 Mar 2023 23:59:59 GMT
|
||||||
|
const char github_io_chain_pem_first [] PROGMEM = R"CERT(
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIHEzCCBfugAwIBAgIQC44ztdGGen6l0VAu1+MWiTANBgkqhkiG9w0BAQsFADBP
|
||||||
|
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMSkwJwYDVQQDEyBE
|
||||||
|
aWdpQ2VydCBUTFMgUlNBIFNIQTI1NiAyMDIwIENBMTAeFw0yMjAzMTgwMDAwMDBa
|
||||||
|
Fw0yMzAzMjEyMzU5NTlaMGcxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9y
|
||||||
|
bmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRUwEwYDVQQKEwxHaXRIdWIsIElu
|
||||||
|
Yy4xFDASBgNVBAMMCyouZ2l0aHViLmlvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
|
||||||
|
MIIBCgKCAQEAxgDppBtMFl4zNvBbWAdr21IwcskxdMU/SkxYK/ZAXFrRIPcoZR15
|
||||||
|
5DCrzTevHMUNLhCJqL8mMFidKOz4cZjhPn5sxjUCe/sPNvaiXm8cGUwzFlAYK1MY
|
||||||
|
dM+wepJKcT/qK8RegSIEbk/6qU5Bmh558RSCGuIJj3E85C0fRVdA+zXHP5GkuuB4
|
||||||
|
VEXYzM2oz5KmgXIdBYFydjyK9LNO5nc/Z2Bc7JppCripRHfht3OR1Bf4JFYBuEJE
|
||||||
|
vE4E1FGxwhZzqA/F6ZTRNb+qhQgRfY3HNdbhv5/HRRQZY4H5V6F9MsO0RAHrz30A
|
||||||
|
QtB10paU9KOvxZqA/CEJTAdiYDQKAADitwIDAQABo4ID0TCCA80wHwYDVR0jBBgw
|
||||||
|
FoAUt2ui6qiqhIx56rTaD5iyxZV2ufQwHQYDVR0OBBYEFNPlHIi+YXl95r64oS2D
|
||||||
|
0v2+1mFkMHsGA1UdEQR0MHKCCyouZ2l0aHViLmlvggpnaXRodWIuY29tggwqLmdp
|
||||||
|
dGh1Yi5jb22CDnd3dy5naXRodWIuY29tgglnaXRodWIuaW+CFWdpdGh1YnVzZXJj
|
||||||
|
b250ZW50LmNvbYIXKi5naXRodWJ1c2VyY29udGVudC5jb20wDgYDVR0PAQH/BAQD
|
||||||
|
AgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjCBjwYDVR0fBIGHMIGE
|
||||||
|
MECgPqA8hjpodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRUTFNSU0FT
|
||||||
|
SEEyNTYyMDIwQ0ExLTQuY3JsMECgPqA8hjpodHRwOi8vY3JsNC5kaWdpY2VydC5j
|
||||||
|
b20vRGlnaUNlcnRUTFNSU0FTSEEyNTYyMDIwQ0ExLTQuY3JsMD4GA1UdIAQ3MDUw
|
||||||
|
MwYGZ4EMAQICMCkwJwYIKwYBBQUHAgEWG2h0dHA6Ly93d3cuZGlnaWNlcnQuY29t
|
||||||
|
L0NQUzB/BggrBgEFBQcBAQRzMHEwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRp
|
||||||
|
Z2ljZXJ0LmNvbTBJBggrBgEFBQcwAoY9aHR0cDovL2NhY2VydHMuZGlnaWNlcnQu
|
||||||
|
Y29tL0RpZ2lDZXJ0VExTUlNBU0hBMjU2MjAyMENBMS0xLmNydDAJBgNVHRMEAjAA
|
||||||
|
MIIBfwYKKwYBBAHWeQIEAgSCAW8EggFrAWkAdgDoPtDaPvUGNTLnVyi8iWvJA9PL
|
||||||
|
0RFr7Otp4Xd9bQa9bgAAAX+dgO+dAAAEAwBHMEUCIQDOV8Qe7mebG+hhf+MfzEEF
|
||||||
|
2i0lNIO83vUTxkMREz/eMwIgKp3ZLFVMP2hz+1DAYPhmKvdWT3kTKWeeZxSHUEtm
|
||||||
|
f88AdgA1zxkbv7FsV78PrUxtQsu7ticgJlHqP+Eq76gDwzvWTAAAAX+dgO/rAAAE
|
||||||
|
AwBHMEUCIDAKos+w1Y1esfHWzcjREKA0m/fEoyMxA8Cj5EZETZziAiEAkxIcc6ZB
|
||||||
|
3d7pHTI2w1yuRp1s6uciDTU/ICZ5yEvuFtwAdwC3Pvsk35xNunXyOcW6WPRsXfxC
|
||||||
|
z3qfNcSeHQmBJe20mQAAAX+dgO/PAAAEAwBIMEYCIQDDYK04bMarexB4cqaAhnUF
|
||||||
|
FItaejcjp7CeW+YtF70CzAIhAK5Fy7ARpPdjNoaSWuG1NzNZbj6DPfwdsFOZnoBq
|
||||||
|
4GLhMA0GCSqGSIb3DQEBCwUAA4IBAQBokieSf5eLa7o62sPf9ihHuvIPoligvH1r
|
||||||
|
gxFf6+kgsz+EwtF80Tb0ZR2DC7O2HSi0JGiihPgKO/3bXHZUc9cc4NkL7J842yFI
|
||||||
|
rRwPHABMq2nLq7LCuGdJn+2tG76DAOXCtHMQ6XfuAq1FoPbtxXdWzynOJdDelPC6
|
||||||
|
Qv3v3sMH6gJML1vW3OmeSUIncu686uDTs6E95BIuZ8eOjBjxZ7GfQv54RQU6oiMf
|
||||||
|
bYVRSYaNfnS0VkPlwcR9Ubhx9wEuG4GuDus7OWItwFqm2c3peKQQK8+2CDMUHDUC
|
||||||
|
QafDHvXcWeRdqQouCQC1tDlRAzPLKTcLD6EVltnPR5HQITRvHVgm
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
)CERT";
|
||||||
|
const char github_io_chain_pem_second [] PROGMEM = R"CERT(
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIEvjCCA6agAwIBAgIQBtjZBNVYQ0b2ii+nVCJ+xDANBgkqhkiG9w0BAQsFADBh
|
||||||
|
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||||
|
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
|
||||||
|
QTAeFw0yMTA0MTQwMDAwMDBaFw0zMTA0MTMyMzU5NTlaME8xCzAJBgNVBAYTAlVT
|
||||||
|
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxKTAnBgNVBAMTIERpZ2lDZXJ0IFRMUyBS
|
||||||
|
U0EgU0hBMjU2IDIwMjAgQ0ExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC
|
||||||
|
AQEAwUuzZUdwvN1PWNvsnO3DZuUfMRNUrUpmRh8sCuxkB+Uu3Ny5CiDt3+PE0J6a
|
||||||
|
qXodgojlEVbbHp9YwlHnLDQNLtKS4VbL8Xlfs7uHyiUDe5pSQWYQYE9XE0nw6Ddn
|
||||||
|
g9/n00tnTCJRpt8OmRDtV1F0JuJ9x8piLhMbfyOIJVNvwTRYAIuE//i+p1hJInuW
|
||||||
|
raKImxW8oHzf6VGo1bDtN+I2tIJLYrVJmuzHZ9bjPvXj1hJeRPG/cUJ9WIQDgLGB
|
||||||
|
Afr5yjK7tI4nhyfFK3TUqNaX3sNk+crOU6JWvHgXjkkDKa77SU+kFbnO8lwZV21r
|
||||||
|
eacroicgE7XQPUDTITAHk+qZ9QIDAQABo4IBgjCCAX4wEgYDVR0TAQH/BAgwBgEB
|
||||||
|
/wIBADAdBgNVHQ4EFgQUt2ui6qiqhIx56rTaD5iyxZV2ufQwHwYDVR0jBBgwFoAU
|
||||||
|
A95QNVbRTLtm8KPiGxvDl7I90VUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQG
|
||||||
|
CCsGAQUFBwMBBggrBgEFBQcDAjB2BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUHMAGG
|
||||||
|
GGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBABggrBgEFBQcwAoY0aHR0cDovL2Nh
|
||||||
|
Y2VydHMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xvYmFsUm9vdENBLmNydDBCBgNV
|
||||||
|
HR8EOzA5MDegNaAzhjFodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vRGlnaUNlcnRH
|
||||||
|
bG9iYWxSb290Q0EuY3JsMD0GA1UdIAQ2MDQwCwYJYIZIAYb9bAIBMAcGBWeBDAEB
|
||||||
|
MAgGBmeBDAECATAIBgZngQwBAgIwCAYGZ4EMAQIDMA0GCSqGSIb3DQEBCwUAA4IB
|
||||||
|
AQCAMs5eC91uWg0Kr+HWhMvAjvqFcO3aXbMM9yt1QP6FCvrzMXi3cEsaiVi6gL3z
|
||||||
|
ax3pfs8LulicWdSQ0/1s/dCYbbdxglvPbQtaCdB73sRD2Cqk3p5BJl+7j5nL3a7h
|
||||||
|
qG+fh/50tx8bIKuxT8b1Z11dmzzp/2n3YWzW2fP9NsarA4h20ksudYbj/NhVfSbC
|
||||||
|
EXffPgK2fPOre3qGNm+499iTcc+G33Mw+nur7SpZyEKEOxEXGlLzyQ4UfaJbcme6
|
||||||
|
ce1XR2bFuAJKZTRei9AqPCCcUZlM51Ke92sRKw2Sfh3oius2FkOH6ipjv3U/697E
|
||||||
|
A7sKPPcw7+uvTPyLNhBzPvOk
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
)CERT";
|
||||||
|
const char github_io_chain_pem_third [] PROGMEM = R"CERT(
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
|
||||||
|
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
|
||||||
|
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
|
||||||
|
QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
|
||||||
|
MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
|
||||||
|
b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
|
||||||
|
9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
|
||||||
|
CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
|
||||||
|
nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
|
||||||
|
43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
|
||||||
|
T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
|
||||||
|
gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
|
||||||
|
BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
|
||||||
|
TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
|
||||||
|
DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
|
||||||
|
hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
|
||||||
|
06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
|
||||||
|
PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
|
||||||
|
YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
|
||||||
|
CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
|
||||||
|
-----END CERTIFICATE-----
|
||||||
|
)CERT";
|
||||||
@@ -0,0 +1,664 @@
|
|||||||
|
// GxEPD2_Spiffs_Example : Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// BMP handling code extracts taken from: https://github.com/prenticedavid/MCUFRIEND_kbv/tree/master/examples/showBMP_kbv_Uno
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
//
|
||||||
|
// note that BMP bitmaps are drawn at physical position in physical orientation of the screen
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// see GxEPD2_wiring_examples.h for wiring suggestions and examples
|
||||||
|
|
||||||
|
// base class GxEPD2_GFX can be used to pass references or pointers to the display instance as parameter, uses ~1.2k more code
|
||||||
|
// enable or disable GxEPD2_GFX base class
|
||||||
|
#define ENABLE_GxEPD2_GFX 0
|
||||||
|
|
||||||
|
// uncomment next line to use class GFX of library GFX_Root instead of Adafruit_GFX
|
||||||
|
//#include <GFX.h>
|
||||||
|
// Note: if you use this with ENABLE_GxEPD2_GFX 1:
|
||||||
|
// uncomment it in GxEPD2_GFX.h too, or add #include <GFX.h> before any #include <GxEPD2_GFX.h>
|
||||||
|
|
||||||
|
#include <GxEPD2_BW.h>
|
||||||
|
#include <GxEPD2_3C.h>
|
||||||
|
#include <GxEPD2_4C.h>
|
||||||
|
#include <GxEPD2_7C.h>
|
||||||
|
#include <Fonts/FreeMonoBold9pt7b.h>
|
||||||
|
|
||||||
|
#if defined(ESP32)
|
||||||
|
#include "SPIFFS.h"
|
||||||
|
#else
|
||||||
|
#include <LittleFS.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <FS.h>
|
||||||
|
#define FileClass fs::File
|
||||||
|
|
||||||
|
// select the display class and display driver class in the following file (new style):
|
||||||
|
#include "GxEPD2_display_selection_new_style.h"
|
||||||
|
|
||||||
|
// function declaration with default parameter
|
||||||
|
// note that BMP bitmaps are drawn at physical position in physical orientation of the screen
|
||||||
|
void drawBitmapFromSpiffs(const char *filename, int16_t x, int16_t y, bool with_color = true);
|
||||||
|
|
||||||
|
// bitmap drawing using buffered graphics, e.g. for small bitmaps or for GxEPD2_154c
|
||||||
|
// draws BMP bitmap according to set orientation
|
||||||
|
// partial_update selects refresh mode (not effective for GxEPD2_154c)
|
||||||
|
// overwrite = true does not clear buffer before drawing, use only if buffer is full height
|
||||||
|
void drawBitmapFromSpiffs_Buffered(const char *filename, int16_t x, int16_t y, bool with_color = true, bool partial_update = false, bool overwrite = false);
|
||||||
|
|
||||||
|
void setup()
|
||||||
|
{
|
||||||
|
Serial.begin(115200);
|
||||||
|
Serial.println();
|
||||||
|
Serial.println("GxEPD2_Spiffs_Example");
|
||||||
|
|
||||||
|
//display.init(115200); // default 10ms reset pulse, e.g. for bare panels with DESPI-C02
|
||||||
|
display.init(115200, true, 2, false); // USE THIS for Waveshare boards with "clever" reset circuit, 2ms reset pulse
|
||||||
|
|
||||||
|
#if defined(ESP32)
|
||||||
|
SPIFFS.begin();
|
||||||
|
Serial.println("SPIFFS started");
|
||||||
|
#else
|
||||||
|
LittleFS.begin();
|
||||||
|
Serial.println("LittleFS started");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
listFiles();
|
||||||
|
|
||||||
|
if ((display.epd2.panel == GxEPD2::GDEW0154Z04) || (display.epd2.panel == GxEPD2::ACeP565) || (display.epd2.panel == GxEPD2::GDEY073D46) || false)
|
||||||
|
{
|
||||||
|
//drawBitmapsBuffered_200x200();
|
||||||
|
//drawBitmapsBuffered_other();
|
||||||
|
drawBitmapsBuffered_test();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
drawBitmaps_200x200();
|
||||||
|
drawBitmaps_other();
|
||||||
|
//drawBitmaps_test();
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.println("GxEPD2_Spiffs_Example done");
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop(void)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmaps_200x200()
|
||||||
|
{
|
||||||
|
int16_t x = (display.width() - 200) / 2;
|
||||||
|
int16_t y = (display.height() - 200) / 2;
|
||||||
|
drawBitmapFromSpiffs("logo200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("first200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("second200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("third200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("fourth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("fifth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("sixth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("seventh200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("eighth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmaps_other()
|
||||||
|
{
|
||||||
|
int16_t w2 = display.width() / 2;
|
||||||
|
int16_t h2 = display.height() / 2;
|
||||||
|
drawBitmapFromSpiffs("chanceflurries.bmp", w2 - 50, h2 - 50, false);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("betty_1.bmp", w2 - 100, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("betty_4.bmp", w2 - 102, h2 - 126);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("marilyn_240x240x8.bmp", w2 - 120, h2 - 120);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("miniwoof.bmp", w2 - 60, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("tiger.bmp", w2 - 160, h2 - 120);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("tiger_178x160x4.bmp", w2 - 89, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("tiger_240x317x4.bmp", w2 - 120, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("tiger_320x200x24.bmp", w2 - 160, h2 - 100);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("woof.bmp", w2 - 120, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmaps_test()
|
||||||
|
{
|
||||||
|
drawBitmapFromSpiffs("output5.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("output6.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("tractor_1.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("tractor_4.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
//drawBitmapFromSpiffs("tractor_8.bmp", 0, 0); // format 1: BI_RLE8 is not supported
|
||||||
|
//delay(2000);
|
||||||
|
drawBitmapFromSpiffs("tractor_11.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("tractor_44.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs("tractor_88.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmapsBuffered_200x200()
|
||||||
|
{
|
||||||
|
int16_t x = (display.width() - 200) / 2;
|
||||||
|
int16_t y = (display.height() - 200) / 2;
|
||||||
|
drawBitmapFromSpiffs_Buffered("logo200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("first200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("second200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("third200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("fourth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("fifth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("sixth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("seventh200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("eighth200x200.bmp", x, y);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmapsBuffered_other()
|
||||||
|
{
|
||||||
|
int16_t w2 = display.width() / 2;
|
||||||
|
int16_t h2 = display.height() / 2;
|
||||||
|
drawBitmapFromSpiffs_Buffered("chanceflurries.bmp", w2 - 50, h2 - 50, false);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("betty_1.bmp", w2 - 100, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("betty_4.bmp", w2 - 102, h2 - 126);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("marilyn_240x240x8.bmp", w2 - 120, h2 - 120);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("miniwoof.bmp", w2 - 60, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("tiger.bmp", w2 - 160, h2 - 120);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("tiger_178x160x4.bmp", w2 - 89, h2 - 80);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("tiger_240x317x4.bmp", w2 - 120, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("tiger_320x200x24.bmp", w2 - 160, h2 - 100);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("woof.bmp", w2 - 120, h2 - 160);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmapsBuffered_test()
|
||||||
|
{
|
||||||
|
int16_t w2 = display.width() / 2;
|
||||||
|
int16_t h2 = display.height() / 2;
|
||||||
|
drawBitmapFromSpiffs_Buffered("betty_4.bmp", w2 - 102, h2 - 126);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("bb4.bmp", 0, 0, false, true, true);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("rgb32.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("parrot.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
drawBitmapFromSpiffs_Buffered("5in65f3.bmp", 0, 0);
|
||||||
|
delay(2000);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const uint16_t input_buffer_pixels = 800; // may affect performance
|
||||||
|
|
||||||
|
static const uint16_t max_row_width = 1872; // for up to 7.8" display 1872x1404
|
||||||
|
static const uint16_t max_palette_pixels = 256; // for depth <= 8
|
||||||
|
|
||||||
|
uint8_t input_buffer[3 * input_buffer_pixels]; // up to depth 24
|
||||||
|
uint8_t output_row_mono_buffer[max_row_width / 8]; // buffer for at least one row of b/w bits
|
||||||
|
uint8_t output_row_color_buffer[max_row_width / 8]; // buffer for at least one row of color bits
|
||||||
|
uint8_t mono_palette_buffer[max_palette_pixels / 8]; // palette buffer for depth <= 8 b/w
|
||||||
|
uint8_t color_palette_buffer[max_palette_pixels / 8]; // palette buffer for depth <= 8 c/w
|
||||||
|
uint16_t rgb_palette_buffer[max_palette_pixels]; // palette buffer for depth <= 8 for buffered graphics, needed for 7-color display
|
||||||
|
|
||||||
|
void drawBitmapFromSpiffs(const char *filename, int16_t x, int16_t y, bool with_color)
|
||||||
|
{
|
||||||
|
fs::File file;
|
||||||
|
bool valid = false; // valid format to be handled
|
||||||
|
bool flip = true; // bitmap is stored bottom-to-top
|
||||||
|
uint32_t startTime = millis();
|
||||||
|
if ((x >= display.epd2.WIDTH) || (y >= display.epd2.HEIGHT)) return;
|
||||||
|
Serial.println();
|
||||||
|
Serial.print("Loading image '");
|
||||||
|
Serial.print(filename);
|
||||||
|
Serial.println('\'');
|
||||||
|
#if defined(ESP32)
|
||||||
|
file = SPIFFS.open(String("/") + filename, "r");
|
||||||
|
#else
|
||||||
|
file = LittleFS.open(filename, "r");
|
||||||
|
#endif
|
||||||
|
if (!file)
|
||||||
|
{
|
||||||
|
Serial.print("File not found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Parse BMP header
|
||||||
|
if (read16(file) == 0x4D42) // BMP signature
|
||||||
|
{
|
||||||
|
uint32_t fileSize = read32(file);
|
||||||
|
uint32_t creatorBytes = read32(file); (void)creatorBytes; //unused
|
||||||
|
uint32_t imageOffset = read32(file); // Start of image data
|
||||||
|
uint32_t headerSize = read32(file);
|
||||||
|
uint32_t width = read32(file);
|
||||||
|
int32_t height = (int32_t) read32(file);
|
||||||
|
uint16_t planes = read16(file);
|
||||||
|
uint16_t depth = read16(file); // bits per pixel
|
||||||
|
uint32_t format = read32(file);
|
||||||
|
if ((planes == 1) && ((format == 0) || (format == 3))) // uncompressed is handled, 565 also
|
||||||
|
{
|
||||||
|
Serial.print("File size: "); Serial.println(fileSize);
|
||||||
|
Serial.print("Image Offset: "); Serial.println(imageOffset);
|
||||||
|
Serial.print("Header size: "); Serial.println(headerSize);
|
||||||
|
Serial.print("Bit Depth: "); Serial.println(depth);
|
||||||
|
Serial.print("Image size: ");
|
||||||
|
Serial.print(width);
|
||||||
|
Serial.print('x');
|
||||||
|
Serial.println(height);
|
||||||
|
// BMP rows are padded (if needed) to 4-byte boundary
|
||||||
|
uint32_t rowSize = (width * depth / 8 + 3) & ~3;
|
||||||
|
if (depth < 8) rowSize = ((width * depth + 8 - depth) / 8 + 3) & ~3;
|
||||||
|
if (height < 0)
|
||||||
|
{
|
||||||
|
height = -height;
|
||||||
|
flip = false;
|
||||||
|
}
|
||||||
|
uint16_t w = width;
|
||||||
|
uint16_t h = height;
|
||||||
|
if ((x + w - 1) >= display.epd2.WIDTH) w = display.epd2.WIDTH - x;
|
||||||
|
if ((y + h - 1) >= display.epd2.HEIGHT) h = display.epd2.HEIGHT - y;
|
||||||
|
if (w <= max_row_width) // handle with direct drawing
|
||||||
|
{
|
||||||
|
valid = true;
|
||||||
|
uint8_t bitmask = 0xFF;
|
||||||
|
uint8_t bitshift = 8 - depth;
|
||||||
|
uint16_t red, green, blue;
|
||||||
|
bool whitish = false;
|
||||||
|
bool colored = false;
|
||||||
|
if (depth == 1) with_color = false;
|
||||||
|
if (depth <= 8)
|
||||||
|
{
|
||||||
|
if (depth < 8) bitmask >>= depth;
|
||||||
|
//file.seek(54); //palette is always @ 54
|
||||||
|
file.seek(imageOffset - (4 << depth)); // 54 for regular, diff for colorsimportant
|
||||||
|
for (uint16_t pn = 0; pn < (1 << depth); pn++)
|
||||||
|
{
|
||||||
|
blue = file.read();
|
||||||
|
green = file.read();
|
||||||
|
red = file.read();
|
||||||
|
file.read();
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
if (0 == pn % 8) mono_palette_buffer[pn / 8] = 0;
|
||||||
|
mono_palette_buffer[pn / 8] |= whitish << pn % 8;
|
||||||
|
if (0 == pn % 8) color_palette_buffer[pn / 8] = 0;
|
||||||
|
color_palette_buffer[pn / 8] |= colored << pn % 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
display.clearScreen();
|
||||||
|
uint32_t rowPosition = flip ? imageOffset + (height - h) * rowSize : imageOffset;
|
||||||
|
for (uint16_t row = 0; row < h; row++, rowPosition += rowSize) // for each line
|
||||||
|
{
|
||||||
|
uint32_t in_remain = rowSize;
|
||||||
|
uint32_t in_idx = 0;
|
||||||
|
uint32_t in_bytes = 0;
|
||||||
|
uint8_t in_byte = 0; // for depth <= 8
|
||||||
|
uint8_t in_bits = 0; // for depth <= 8
|
||||||
|
uint8_t out_byte = 0xFF; // white (for w%8!=0 border)
|
||||||
|
uint8_t out_color_byte = 0xFF; // white (for w%8!=0 border)
|
||||||
|
uint32_t out_idx = 0;
|
||||||
|
file.seek(rowPosition);
|
||||||
|
for (uint16_t col = 0; col < w; col++) // for each pixel
|
||||||
|
{
|
||||||
|
// Time to read more pixel data?
|
||||||
|
if (in_idx >= in_bytes) // ok, exact match for 24bit also (size IS multiple of 3)
|
||||||
|
{
|
||||||
|
in_bytes = file.read(input_buffer, in_remain > sizeof(input_buffer) ? sizeof(input_buffer) : in_remain);
|
||||||
|
in_remain -= in_bytes;
|
||||||
|
in_idx = 0;
|
||||||
|
}
|
||||||
|
switch (depth)
|
||||||
|
{
|
||||||
|
case 32:
|
||||||
|
blue = input_buffer[in_idx++];
|
||||||
|
green = input_buffer[in_idx++];
|
||||||
|
red = input_buffer[in_idx++];
|
||||||
|
in_idx++; // skip alpha
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
break;
|
||||||
|
case 24:
|
||||||
|
blue = input_buffer[in_idx++];
|
||||||
|
green = input_buffer[in_idx++];
|
||||||
|
red = input_buffer[in_idx++];
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
{
|
||||||
|
uint8_t lsb = input_buffer[in_idx++];
|
||||||
|
uint8_t msb = input_buffer[in_idx++];
|
||||||
|
if (format == 0) // 555
|
||||||
|
{
|
||||||
|
blue = (lsb & 0x1F) << 3;
|
||||||
|
green = ((msb & 0x03) << 6) | ((lsb & 0xE0) >> 2);
|
||||||
|
red = (msb & 0x7C) << 1;
|
||||||
|
}
|
||||||
|
else // 565
|
||||||
|
{
|
||||||
|
blue = (lsb & 0x1F) << 3;
|
||||||
|
green = ((msb & 0x07) << 5) | ((lsb & 0xE0) >> 3);
|
||||||
|
red = (msb & 0xF8);
|
||||||
|
}
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
case 4:
|
||||||
|
case 8:
|
||||||
|
{
|
||||||
|
if (0 == in_bits)
|
||||||
|
{
|
||||||
|
in_byte = input_buffer[in_idx++];
|
||||||
|
in_bits = 8;
|
||||||
|
}
|
||||||
|
uint16_t pn = (in_byte >> bitshift) & bitmask;
|
||||||
|
whitish = mono_palette_buffer[pn / 8] & (0x1 << pn % 8);
|
||||||
|
colored = color_palette_buffer[pn / 8] & (0x1 << pn % 8);
|
||||||
|
in_byte <<= depth;
|
||||||
|
in_bits -= depth;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (whitish)
|
||||||
|
{
|
||||||
|
// keep white
|
||||||
|
}
|
||||||
|
else if (colored && with_color)
|
||||||
|
{
|
||||||
|
out_color_byte &= ~(0x80 >> col % 8); // colored
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
out_byte &= ~(0x80 >> col % 8); // black
|
||||||
|
}
|
||||||
|
if ((7 == col % 8) || (col == w - 1)) // write that last byte! (for w%8!=0 border)
|
||||||
|
{
|
||||||
|
output_row_color_buffer[out_idx] = out_color_byte;
|
||||||
|
output_row_mono_buffer[out_idx++] = out_byte;
|
||||||
|
out_byte = 0xFF; // white (for w%8!=0 border)
|
||||||
|
out_color_byte = 0xFF; // white (for w%8!=0 border)
|
||||||
|
}
|
||||||
|
} // end pixel
|
||||||
|
uint16_t yrow = y + (flip ? h - row - 1 : row);
|
||||||
|
display.writeImage(output_row_mono_buffer, output_row_color_buffer, x, yrow, w, 1);
|
||||||
|
} // end line
|
||||||
|
Serial.print("loaded in "); Serial.print(millis() - startTime); Serial.println(" ms");
|
||||||
|
display.refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file.close();
|
||||||
|
if (!valid)
|
||||||
|
{
|
||||||
|
Serial.println("bitmap format not handled.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void drawBitmapFromSpiffs_Buffered(const char *filename, int16_t x, int16_t y, bool with_color, bool partial_update, bool overwrite)
|
||||||
|
{
|
||||||
|
fs::File file;
|
||||||
|
bool valid = false; // valid format to be handled
|
||||||
|
bool flip = true; // bitmap is stored bottom-to-top
|
||||||
|
bool has_multicolors = (display.epd2.panel == GxEPD2::ACeP565) || (display.epd2.panel == GxEPD2::GDEY073D46);
|
||||||
|
uint32_t startTime = millis();
|
||||||
|
if ((x >= display.width()) || (y >= display.height())) return;
|
||||||
|
Serial.println();
|
||||||
|
Serial.print("Loading image '");
|
||||||
|
Serial.print(filename);
|
||||||
|
Serial.println('\'');
|
||||||
|
#if defined(ESP32)
|
||||||
|
file = SPIFFS.open(String("/") + filename, "r");
|
||||||
|
#else
|
||||||
|
file = LittleFS.open(filename, "r");
|
||||||
|
#endif
|
||||||
|
if (!file)
|
||||||
|
{
|
||||||
|
Serial.print("File not found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Parse BMP header
|
||||||
|
if (read16(file) == 0x4D42) // BMP signature
|
||||||
|
{
|
||||||
|
uint32_t fileSize = read32(file);
|
||||||
|
uint32_t creatorBytes = read32(file); (void)creatorBytes; //unused
|
||||||
|
uint32_t imageOffset = read32(file); // Start of image data
|
||||||
|
uint32_t headerSize = read32(file);
|
||||||
|
uint32_t width = read32(file);
|
||||||
|
int32_t height = (int32_t) read32(file);
|
||||||
|
uint16_t planes = read16(file);
|
||||||
|
uint16_t depth = read16(file); // bits per pixel
|
||||||
|
uint32_t format = read32(file);
|
||||||
|
if ((planes == 1) && ((format == 0) || (format == 3))) // uncompressed is handled, 565 also
|
||||||
|
{
|
||||||
|
Serial.print("File size: "); Serial.println(fileSize);
|
||||||
|
Serial.print("Image Offset: "); Serial.println(imageOffset);
|
||||||
|
Serial.print("Header size: "); Serial.println(headerSize);
|
||||||
|
Serial.print("Bit Depth: "); Serial.println(depth);
|
||||||
|
Serial.print("Image size: ");
|
||||||
|
Serial.print(width);
|
||||||
|
Serial.print('x');
|
||||||
|
Serial.println(height);
|
||||||
|
// BMP rows are padded (if needed) to 4-byte boundary
|
||||||
|
uint32_t rowSize = (width * depth / 8 + 3) & ~3;
|
||||||
|
if (depth < 8) rowSize = ((width * depth + 8 - depth) / 8 + 3) & ~3;
|
||||||
|
if (height < 0)
|
||||||
|
{
|
||||||
|
height = -height;
|
||||||
|
flip = false;
|
||||||
|
}
|
||||||
|
uint16_t w = width;
|
||||||
|
uint16_t h = height;
|
||||||
|
if ((x + w - 1) >= display.width()) w = display.width() - x;
|
||||||
|
if ((y + h - 1) >= display.height()) h = display.height() - y;
|
||||||
|
//if (w <= max_row_width) // handle with direct drawing
|
||||||
|
{
|
||||||
|
valid = true;
|
||||||
|
uint8_t bitmask = 0xFF;
|
||||||
|
uint8_t bitshift = 8 - depth;
|
||||||
|
uint16_t red, green, blue;
|
||||||
|
bool whitish = false;
|
||||||
|
bool colored = false;
|
||||||
|
if (depth == 1) with_color = false;
|
||||||
|
if (depth <= 8)
|
||||||
|
{
|
||||||
|
if (depth < 8) bitmask >>= depth;
|
||||||
|
//file.seek(54); //palette is always @ 54
|
||||||
|
file.seek(imageOffset - (4 << depth)); // 54 for regular, diff for colorsimportant
|
||||||
|
for (uint16_t pn = 0; pn < (1 << depth); pn++)
|
||||||
|
{
|
||||||
|
blue = file.read();
|
||||||
|
green = file.read();
|
||||||
|
red = file.read();
|
||||||
|
file.read();
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
if (0 == pn % 8) mono_palette_buffer[pn / 8] = 0;
|
||||||
|
mono_palette_buffer[pn / 8] |= whitish << pn % 8;
|
||||||
|
if (0 == pn % 8) color_palette_buffer[pn / 8] = 0;
|
||||||
|
color_palette_buffer[pn / 8] |= colored << pn % 8;
|
||||||
|
rgb_palette_buffer[pn] = ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | ((blue & 0xF8) >> 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (partial_update) display.setPartialWindow(x, y, w, h);
|
||||||
|
else display.setFullWindow();
|
||||||
|
display.firstPage();
|
||||||
|
do
|
||||||
|
{
|
||||||
|
if (!overwrite) display.fillScreen(GxEPD_WHITE);
|
||||||
|
uint32_t rowPosition = flip ? imageOffset + (height - h) * rowSize : imageOffset;
|
||||||
|
for (uint16_t row = 0; row < h; row++, rowPosition += rowSize) // for each line
|
||||||
|
{
|
||||||
|
uint32_t in_remain = rowSize;
|
||||||
|
uint32_t in_idx = 0;
|
||||||
|
uint32_t in_bytes = 0;
|
||||||
|
uint8_t in_byte = 0; // for depth <= 8
|
||||||
|
uint8_t in_bits = 0; // for depth <= 8
|
||||||
|
uint16_t color = GxEPD_WHITE;
|
||||||
|
file.seek(rowPosition);
|
||||||
|
for (uint16_t col = 0; col < w; col++) // for each pixel
|
||||||
|
{
|
||||||
|
// Time to read more pixel data?
|
||||||
|
if (in_idx >= in_bytes) // ok, exact match for 24bit also (size IS multiple of 3)
|
||||||
|
{
|
||||||
|
in_bytes = file.read(input_buffer, in_remain > sizeof(input_buffer) ? sizeof(input_buffer) : in_remain);
|
||||||
|
in_remain -= in_bytes;
|
||||||
|
in_idx = 0;
|
||||||
|
}
|
||||||
|
switch (depth)
|
||||||
|
{
|
||||||
|
case 32:
|
||||||
|
blue = input_buffer[in_idx++];
|
||||||
|
green = input_buffer[in_idx++];
|
||||||
|
red = input_buffer[in_idx++];
|
||||||
|
in_idx++; // skip alpha
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
color = ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | ((blue & 0xF8) >> 3);
|
||||||
|
break;
|
||||||
|
case 24:
|
||||||
|
blue = input_buffer[in_idx++];
|
||||||
|
green = input_buffer[in_idx++];
|
||||||
|
red = input_buffer[in_idx++];
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
color = ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | ((blue & 0xF8) >> 3);
|
||||||
|
break;
|
||||||
|
case 16:
|
||||||
|
{
|
||||||
|
uint8_t lsb = input_buffer[in_idx++];
|
||||||
|
uint8_t msb = input_buffer[in_idx++];
|
||||||
|
if (format == 0) // 555
|
||||||
|
{
|
||||||
|
blue = (lsb & 0x1F) << 3;
|
||||||
|
green = ((msb & 0x03) << 6) | ((lsb & 0xE0) >> 2);
|
||||||
|
red = (msb & 0x7C) << 1;
|
||||||
|
color = ((red & 0xF8) << 8) | ((green & 0xFC) << 3) | ((blue & 0xF8) >> 3);
|
||||||
|
}
|
||||||
|
else // 565
|
||||||
|
{
|
||||||
|
blue = (lsb & 0x1F) << 3;
|
||||||
|
green = ((msb & 0x07) << 5) | ((lsb & 0xE0) >> 3);
|
||||||
|
red = (msb & 0xF8);
|
||||||
|
color = (msb << 8) | lsb;
|
||||||
|
}
|
||||||
|
whitish = with_color ? ((red > 0x80) && (green > 0x80) && (blue > 0x80)) : ((red + green + blue) > 3 * 0x80); // whitish
|
||||||
|
colored = (red > 0xF0) || ((green > 0xF0) && (blue > 0xF0)); // reddish or yellowish?
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
case 2:
|
||||||
|
case 4:
|
||||||
|
case 8:
|
||||||
|
{
|
||||||
|
if (0 == in_bits)
|
||||||
|
{
|
||||||
|
in_byte = input_buffer[in_idx++];
|
||||||
|
in_bits = 8;
|
||||||
|
}
|
||||||
|
uint16_t pn = (in_byte >> bitshift) & bitmask;
|
||||||
|
whitish = mono_palette_buffer[pn / 8] & (0x1 << pn % 8);
|
||||||
|
colored = color_palette_buffer[pn / 8] & (0x1 << pn % 8);
|
||||||
|
in_byte <<= depth;
|
||||||
|
in_bits -= depth;
|
||||||
|
color = rgb_palette_buffer[pn];
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (with_color && has_multicolors)
|
||||||
|
{
|
||||||
|
// keep color
|
||||||
|
}
|
||||||
|
else if (whitish)
|
||||||
|
{
|
||||||
|
color = GxEPD_WHITE;
|
||||||
|
}
|
||||||
|
else if (colored && with_color)
|
||||||
|
{
|
||||||
|
color = GxEPD_COLORED;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
color = GxEPD_BLACK;
|
||||||
|
}
|
||||||
|
uint16_t yrow = y + (flip ? h - row - 1 : row);
|
||||||
|
display.drawPixel(x + col, yrow, color);
|
||||||
|
} // end pixel
|
||||||
|
} // end line
|
||||||
|
}
|
||||||
|
while (display.nextPage());
|
||||||
|
Serial.print("loaded in "); Serial.print(millis() - startTime); Serial.println(" ms");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file.close();
|
||||||
|
if (!valid)
|
||||||
|
{
|
||||||
|
Serial.println("bitmap format not handled.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t read16(fs::File& f)
|
||||||
|
{
|
||||||
|
// BMP data is stored little-endian, same as Arduino.
|
||||||
|
uint16_t result;
|
||||||
|
((uint8_t *)&result)[0] = f.read(); // LSB
|
||||||
|
((uint8_t *)&result)[1] = f.read(); // MSB
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t read32(fs::File& f)
|
||||||
|
{
|
||||||
|
// BMP data is stored little-endian, same as Arduino.
|
||||||
|
uint32_t result;
|
||||||
|
((uint8_t *)&result)[0] = f.read(); // LSB
|
||||||
|
((uint8_t *)&result)[1] = f.read();
|
||||||
|
((uint8_t *)&result)[2] = f.read();
|
||||||
|
((uint8_t *)&result)[3] = f.read(); // MSB
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -0,0 +1,374 @@
|
|||||||
|
// Display Library example for SPI e-paper panels from Dalian Good Display and boards from Waveshare.
|
||||||
|
// Requires HW SPI and Adafruit_GFX. Caution: the e-paper panels require 3.3V supply AND data lines!
|
||||||
|
//
|
||||||
|
// Display Library based on Demo Example from Good Display: https://www.good-display.com/companyfile/32/
|
||||||
|
//
|
||||||
|
// Author: Jean-Marc Zingg
|
||||||
|
//
|
||||||
|
// Version: see library.properties
|
||||||
|
//
|
||||||
|
// Library: https://github.com/ZinggJM/GxEPD2
|
||||||
|
|
||||||
|
// Supporting Arduino Forum Topics (closed, read only):
|
||||||
|
// Good Display ePaper for Arduino: https://forum.arduino.cc/t/good-display-epaper-for-arduino/419657
|
||||||
|
// Waveshare e-paper displays with SPI: https://forum.arduino.cc/t/waveshare-e-paper-displays-with-spi/467865
|
||||||
|
//
|
||||||
|
// Add new topics in https://forum.arduino.cc/c/using-arduino/displays/23 for new questions and issues
|
||||||
|
|
||||||
|
// NOTE: you may need to adapt or select for your wiring in the processor specific conditional compile sections below
|
||||||
|
|
||||||
|
// select the display class (only one), matching the kind of display panel
|
||||||
|
#define GxEPD2_DISPLAY_CLASS GxEPD2_BW
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_3C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_4C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_7C
|
||||||
|
//#define GxEPD2_DISPLAY_CLASS GxEPD2_BW_SHM
|
||||||
|
|
||||||
|
// select the display driver class (only one) for your panel
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_102 // GDEW0102T4 80x128, UC8175, (WFT0102CZA2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_150_BN // DEPG0150BN 200x200, SSD1681, (FPC8101), TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154 // GDEP015OC1 200x200, IL3829, (WFC0000CZ07), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_D67 // GDEH0154D67 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_T8 // GDEW0154T8 152x152, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M09 // GDEW0154M09 200x200, JD79653A, (WFT0154CZB3)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_M10 // GDEW0154M10 152x152, UC8151D, (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_GDEY0154D67 // GDEY0154D67 200x200, SSD1681, (FPC-B001 20.05.21)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213 // GDE0213B1 122x250, IL3895, (HINK-E0213-G01), phased out
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B72 // GDEH0213B72 122x250, SSD1675A (IL3897), (HINK-E0213A22-A0 SLH1852)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B73 // GDEH0213B73 122x250, SSD1675B, (HINK-E0213A22-A0 SLH1914)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_B74 // GDEM0213B74 122x250, SSD1680, FPC-7528B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_flex // GDEW0213I5F 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_M21 // GDEW0213M21 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_T5D // GDEW0213T5D 104x212, UC8151D, (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_BN // DEPG0213BN 122x250, SSD1680, (FPC-7528B), TTGO T5 V2.4.1, V2.3.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_GDEY0213B74 // GDEY0213B74 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260 // GDEW026T0 152x296, UC8151 (IL0373), (WFT0154CZ17)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_260_M01 // GDEW026M01 152x296, UC8151 (IL0373), (WFT0260CZB2)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_BN // DEPG0266BN 152x296, SSD1680, (FPC7510), TTGO T5 V2.66, TTGO T5 V2.4.1
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266_GDEY0266T90 // GDEY0266T90 152x296, SSD1680, (FPC-A003 HB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270 // GDEW027W3 176x264, EK79652 (IL91874), (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270_GDEY027T91 // GDEY027T91 176x264, SSD1680, (FB)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290 // GDEH029A1 128x296, SSD1608 (IL3820), (E029A01-FPC-A1 SYX1553)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5 // GDEW029T5 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T5D // GDEW029T5D 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_I6FD // GDEW029I6FD 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_T94_V2 // GDEM029T94 128x296, SSD1680, (FPC-7519 rev.b), Waveshare 2.9" V2 variant
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_BS // DEPG0290BS 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_M06 // GDEW029M06 128x296, UC8151D, (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T94 // GDEY029T94 128x296, SSD1680, (FPC-A005 20.06.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_GDEY029T71H // GDEY029T71H 168x384, SSD1685, (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_310_GDEQ031T10 // GDEQ031T10 240x320, UC8253, (no inking, backside mark KEGMO 3100)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_GDEY037T03 // GDEY037T03 240x416, UC8253, (FPC-F002, hidden on CrowPanel)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_370_TC1 // ED037TC1 280x480, SSD1677, (ICA-FU-20 ichia 2029), Waveshare 3.7"
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_371 // GDEW0371W7 240x416, UC8171 (IL0324), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397_GDEM0397T81 // GDEM0397T81, 480x800, SSD1677, (FPC-7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420 // GDEW042T2 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_M01 // GDEW042M01 400x300, UC8176 (IL0398), (WFT042CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GDEY042T81 // GDEY042T81 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_GYE042A87 // GYE042A87, 400x300, SSD1683 (HINK-E042-A07-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420_SE0420NQ04 // SE0420NQ04, 400x300, UC8276C (OPM042A2_V1.0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_426_GDEQ0426T82 // GDEQ0426T82 480x800, SSD1677 (P426010-MF1-A)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_576_GDEH0576T81 // GDEH0576T81 920x680. SSD2677 (HINK-E0576A01-FPC-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579_GDEY0579T93 // GDEY0579T93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583 // GDEW0583T7 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_T8 // GDEW0583T8 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583_GDEQ0583T31 // GDEQ0583T31 648x480, UC8179, (P583010-MF1-B)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750 // GDEW075T8 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_T7 // GDEW075T7 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750_GDEY075T7 // GDEY075T7 800x480, UC8179 (GD7965), (FPC-C001 20.08.20)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1020_GDEM102T91 // GDEM102T91 960x640, SSD1677, (FPC7705 REV.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1085_GDEM1085T51 // GDEM1085T51 1360x480, JD79686AB, (FPC8617) *** needs CS2 ***
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160_T91 // GDEH116T91 960x640, SSD1677, (none or hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248 // GDEW1248T3 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330_GDEM133T91 // GDEM133T91 960x680, SSD1677, (FPC-7701 REV.B)
|
||||||
|
// 3-color e-papers
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c // GDEW0154Z04 200x200, IL0376F, (WFT0000CZ04), no longer available
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154_Z90c // GDEH0154Z90 200x200, SSD1681, (HINK-E154A07-A1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c // GDEW0213Z16 104x212, UC8151 (IL0373), (WFT0213CZ16)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z19c // GDEH0213Z19 104x212, UC8151D, (HINK-E0213A20-A2 2020-11-19)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213_Z98c // GDEY0213Z98 122x250, SSD1680, (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c // GDEY0266Z90 152x296, SSD1680, (FPC-7510)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_270c // GDEW027C44 176x264, IL91874, (WFI0190CZ22)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c // GDEW029Z10 128x296, UC8151 (IL0373), (WFT0290CZ10)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_Z13c // GDEH029Z13 128x296, UC8151D, (HINK-E029A10-A3 20160809)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290_C90c // GDEM029C90 128x296, SSD1680, (FPC-7519 rev.b)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c // GDEW042Z15 400x300, UC8176 (IL0398), (WFT0420CZ15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_Z21 // GDEQ042Z21 400x300, UC8276, (hidden)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY042Z98 // GDEY042Z98 400x300, SSD1683 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579Z93 // GDEY0579Z93 792x272, SSD1683 (FPC-E004 22.04.13)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c // GDEW0583Z21 600x448, UC8159c (IL0371), (missing)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_Z83 // GDEW0583Z83 648x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_583c_GDEQ0583Z31 // GDEQ0583Z31 648x480, UC8179C,
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c // GDEW075Z09 640x384, UC8159c (IL0371), (WF0583CZ09)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z08 // GDEW075Z08 800x480, EK79655 (GD7965), (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_Z90 // GDEH075Z90 880x528, SSD1677, (HINK-E075A07-A0)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEW075Z08 // GDEW075Z08 800x480, UC8179, (WFT0583CZ61)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEY075Z08 // GDEY075Z08 800x480, UC8179, (FPC-C001 21.08.30)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116Z91 // GDEY116Z91 960x640, SSD1677, (FPV-K002 22.04.15)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1248c // GDEY1248Z51 1304x984, UC8179, (WFT1248BZ23,WFT1248BZ24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1330c_GDEM133Z91 // GDEM133Z91 960x680, SSD1677 (FPC-7701 REV.B)
|
||||||
|
// 4-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_154c_GDEM0154F51H // GDEM0154F51H 200x200, JD79660 (FPC-8101)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_213c_GDEY0213F51 // GDEY0213F51 122x250, JD79661 (FPC-A002 20.04.08)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_266c_GDEY0266F51H // GDEY0266F51H 184x360, JD79667 (FPC-H006 22.04.02)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_290c_GDEY029F51H // GDEY029F51H 168x384, JD79667 (FPC-H004 22.03.24)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_300c // Waveshare 3.00" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_350c_GDEM035F51 // GDEM035F51 184x384, JD79667 (FPC-8500)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_397c_GDEM0397F81 // GDEM0397F81 800x480, SSD2677 (FPC7750)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_420c_GDEY0420F51 // GDEY0420F51 400x300, HX8717 (no inking)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_437c // Waveshare 4.37" 4-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_579c_GDEY0579F51 // GDEY0579F51 792x272, HX8717 (FPC-E009 22.09.25)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_750c_GDEM075F52 // GDEM075F52 800x480, JD79665AA (FPC-8619)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_1160c_GDEY116F51 // GDEY116F51 960x640, SSD2677, (FPC-K012 23.09.27)
|
||||||
|
// 7-color e-paper
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c // Waveshare 5.65" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_565c_GDEP0565D90 // GDEP0565D90 600x448 7-color (E219454, AB1024-EGA AC0750TC1)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEY073D46 // GDEY073D46 800x480 7-color, (N-FPC-001 2021.11.26)
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_ACeP_730 // Waveshare 7.3" 7-color
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_730c_GDEP073E01 // GDEP073E01 800x480 7-color, (E350911HF 94V-0 F-6 ROHS 24141)
|
||||||
|
// grey levels parallel IF e-papers on Waveshare e-Paper IT8951 Driver HAT
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60 // ED060SCT 800x600
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it60_1448x1072 // ED060KC1 1448x1072
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it78_1872x1404 // ED078KC2 1872x1404
|
||||||
|
//#define GxEPD2_DRIVER_CLASS GxEPD2_it103_1872x1404 // ES103TC1 1872x1404
|
||||||
|
|
||||||
|
// SS is usually used for CS. define here for easy change
|
||||||
|
#ifndef EPD_CS
|
||||||
|
#define EPD_CS SS
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(GxEPD2_DISPLAY_CLASS) && defined(GxEPD2_DRIVER_CLASS)
|
||||||
|
|
||||||
|
// somehow there should be an easier way to do this
|
||||||
|
#define GxEPD2_BW_IS_GxEPD2_BW true
|
||||||
|
#define GxEPD2_3C_IS_GxEPD2_3C true
|
||||||
|
#define GxEPD2_4C_IS_GxEPD2_4C true
|
||||||
|
#define GxEPD2_7C_IS_GxEPD2_7C true
|
||||||
|
#define GxEPD2_BW_SHM_IS_GxEPD2_BW_SHM true
|
||||||
|
#define GxEPD2_1248_IS_GxEPD2_1248 true
|
||||||
|
#define GxEPD2_1248c_IS_GxEPD2_1248c true
|
||||||
|
#define IS_GxEPD(c, x) (c##x)
|
||||||
|
#define IS_GxEPD2_BW(x) IS_GxEPD(GxEPD2_BW_IS_, x)
|
||||||
|
#define IS_GxEPD2_3C(x) IS_GxEPD(GxEPD2_3C_IS_, x)
|
||||||
|
#define IS_GxEPD2_4C(x) IS_GxEPD(GxEPD2_4C_IS_, x)
|
||||||
|
#define IS_GxEPD2_7C(x) IS_GxEPD(GxEPD2_7C_IS_, x)
|
||||||
|
#define IS_GxEPD2_BW_SHM(x) IS_GxEPD(GxEPD2_BW_SHM_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248(x) IS_GxEPD(GxEPD2_1248_IS_, x)
|
||||||
|
#define IS_GxEPD2_1248c(x) IS_GxEPD(GxEPD2_1248c_IS_, x)
|
||||||
|
|
||||||
|
#include "GxEPD2_selection_check.h"
|
||||||
|
|
||||||
|
// for my test use only
|
||||||
|
//#if defined(_AVR)
|
||||||
|
//#warning "defined(_AVR)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ESP32)
|
||||||
|
//#warning "defined(ESP32)"
|
||||||
|
//#endif
|
||||||
|
//#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
//#warning "defined(ARDUINO_ARCH_ESP32)"
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_AVR)
|
||||||
|
#if defined (ARDUINO_AVR_MEGA2560) // Note: SS is on 53 on MEGA
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#elif defined(ARDUINO_AVR_NANO_EVERY)
|
||||||
|
#define EPD_CS 10
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#else // Note: SS is on 10 on UNO, NANO
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 800 //
|
||||||
|
#endif
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
// for Arduino Micro or Arduino Leonardo with CS on 10 on my proto boards (SS would be 17) uncomment instead:
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_MEGAAVR)
|
||||||
|
#if defined(ARDUINO_AVR_NANO_EVERY) || defined(ARDUINO_AVR_UNO_WIFI_REV2)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 5000 // e.g. full height for 200x200
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 10, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_ESP32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 65536ul // e.g.
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
#if !IS_GxEPD2_1248(GxEPD2_DRIVER_CLASS) && !IS_GxEPD2_1248c(GxEPD2_DRIVER_CLASS)
|
||||||
|
#if defined(ARDUINO_NANO_ESP32) // uses Dx pin names
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ D10, /*DC=*/ D8, /*RST=*/ D9, /*BUSY=*/ D7));
|
||||||
|
#elif defined(ARDUINO_LOLIN_D32_PRO)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 0, /*RST=*/ 2, /*BUSY=*/ 15)); // my LOLIN_D32_PRO proto board
|
||||||
|
#elif defined(ARDUINO_LOLIN_S2_MINI)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 33, /*DC=*/ 35, /*RST=*/ 37, /*BUSY=*/ 39)); // my LOLIN ESP32 S2 mini connection
|
||||||
|
#elif defined(ARDUINO_ESP32S3_DEV)
|
||||||
|
// ESP32E6-E01 : only 50 pin FPC works on actual version (11.1.2025)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS*/ 2, /*DC=*/ 3, /*RST=*/ 4, /*BUSY=*/ 5)); // Good Display ESP32E6-E01 board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 45, /*DC=*/ 46, /*RST=*/ 47, /*BUSY=*/ 48)); // CrowPanel wiring
|
||||||
|
#else
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13)); // Good Display ESP32 Development Kit ESP32-L
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 27, /*DC=*/ 14, /*RST=*/ 12, /*BUSY=*/ 13, /*CS2=*/ 4)); // for GDEM1085T51 with ESP32-L
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // my suggested wiring and proto board
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ 5, /*DC=*/ 17, /*RST=*/ 16, /*BUSY=*/ 4)); // LILYGO_T5_V2.4.1
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 19, /*RST=*/ 4, /*BUSY=*/ 34)); // LILYGO® TTGO T5 2.66
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=5*/ EPD_CS, /*DC=*/ 2, /*RST=*/ 0, /*BUSY=*/ 4)); // e.g. TTGO T8 ESP32-WROVER
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 15, /*DC=*/ 27, /*RST=*/ 26, /*BUSY=*/ 25)); // Waveshare ESP32 Driver Board
|
||||||
|
#endif
|
||||||
|
#else // GxEPD2_1248 or GxEPD2_1248c
|
||||||
|
// Waveshare 12.48 b/w or b/w/r SPI display board and frame or Good Display 12.48 b/w panel GDEW1248T3 or b/w/r panel GDEY1248Z51
|
||||||
|
// general constructor for use with all parameters, e.g. for Waveshare ESP32 driver board mounted on connection board
|
||||||
|
GxEPD2_DISPLAY_CLASS < GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS) > display(GxEPD2_DRIVER_CLASS(/*sck=*/ 13, /*miso=*/ 12, /*mosi=*/ 14,
|
||||||
|
/*cs_m1=*/ 23, /*cs_s1=*/ 22, /*cs_m2=*/ 16, /*cs_s2=*/ 19,
|
||||||
|
/*dc1=*/ 25, /*dc2=*/ 17, /*rst1=*/ 33, /*rst2=*/ 5,
|
||||||
|
/*busy_m1=*/ 32, /*busy_s1=*/ 26, /*busy_m2=*/ 18, /*busy_s2=*/ 4));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (ARDUINO_ARCH_ESP8266)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE (81920ul-34000ul-5000ul) // ~34000 base use, change 5000 to your application use
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=D8*/ EPD_CS, /*DC=D3*/ 0, /*RST=D4*/ 2, /*BUSY=D2*/ 4));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, new version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=2*/ 2, /*BUSY=5*/ 5));
|
||||||
|
// mapping of Waveshare e-Paper ESP8266 Driver Board, old version
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=15*/ EPD_CS, /*DC=4*/ 4, /*RST=5*/ 5, /*BUSY=16*/ 16));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// can't use package "STMF1 Boards (STM32Duino.com)" (Roger Clark) anymore with Adafruit_GFX, use "STM32 Boards (selected from submenu)" (STMicroelectronics)
|
||||||
|
#if defined(ARDUINO_ARCH_STM32)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
// for Good Display STM32 Development Kit DESPI-L.
|
||||||
|
// needs jumpers from PA5 (PIN_SPI_SCK) to SCK for EPD and PA7 (PIN_SPI_MOSI) to SDI for EPD. PD9 and PD10 are not HW SPI capable.
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PD8, /*DC=*/ PE15, /*RST=*/ PE14, /*BUSY=*/ PE13, /*CS2=*/ PD12)); // for GDEM1085T51
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=PA4*/ EPD_CS, /*DC=*/ PA3, /*RST=*/ PA2, /*BUSY=*/ PA1)); // my proto board
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RENESAS)
|
||||||
|
#if defined(ARDUINO_UNOR4_MINIMA) || defined(ARDUINO_UNOR4_WIFI)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 16384ul // e.g. half of available RAM
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAM)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 32768ul // e.g., up to 96k
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_SAMD)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 15000ul // ~15k is a good compromise
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_SAMD_NANO_33_IOT)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=10*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#else
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 7, /*RST=*/ 6, /*BUSY=*/ 5));
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 4, /*DC=*/ 3, /*RST=*/ 2, /*BUSY=*/ 1)); // my Seed XIOA0
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=4*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // my other Seed XIOA0
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(ARDUINO_ARCH_RP2040)
|
||||||
|
#define MAX_DISPLAY_BUFFER_SIZE 131072ul // e.g. half of available ram
|
||||||
|
#if IS_GxEPD2_BW(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_BW_SHM(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8) ? EPD::HEIGHT : MAX_DISPLAY_BUFFER_SIZE / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_3C(GxEPD2_DISPLAY_CLASS) || IS_GxEPD2_4C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE / 2) / (EPD::WIDTH / 8))
|
||||||
|
#elif IS_GxEPD2_7C(GxEPD2_DISPLAY_CLASS)
|
||||||
|
#define MAX_HEIGHT(EPD) (EPD::HEIGHT <= (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2) ? EPD::HEIGHT : (MAX_DISPLAY_BUFFER_SIZE) / (EPD::WIDTH / 2))
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_NANO_RP2040_CONNECT)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ EPD_CS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7));
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO)
|
||||||
|
// adapt the constructor parameters to your wiring
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 5, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // my proto board
|
||||||
|
// mapping of GoodDisplay DESPI-PICO. NOTE: uses alternate HW SPI pins!
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 1, /*BUSY=*/ 0)); // DESPI-PICO
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 3, /*DC=*/ 2, /*RST=*/ 11, /*BUSY=*/ 10)); // DESPI-PICO modified
|
||||||
|
//GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_RASPBERRY_PI_PICO_W)
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ 9, /*DC=*/ 8, /*RST=*/ 12, /*BUSY=*/ 13)); // Waveshare Pico-ePaper-2.9
|
||||||
|
#endif
|
||||||
|
#if defined(ARDUINO_ADAFRUIT_FEATHER_RP2040_THINKINK)
|
||||||
|
// Adafruit Feather RP2040 ThinkInk used with package https://github.com/earlephilhower/arduino-pico
|
||||||
|
GxEPD2_DISPLAY_CLASS<GxEPD2_DRIVER_CLASS, MAX_HEIGHT(GxEPD2_DRIVER_CLASS)> display(GxEPD2_DRIVER_CLASS(/*CS=*/ PIN_EPD_CS, /*DC=*/ PIN_EPD_DC, /*RST=*/ PIN_EPD_RESET, /*BUSY=*/ PIN_EPD_BUSY));
|
||||||
|
#endif
|
||||||
|
#undef MAX_DISPLAY_BUFFER_SIZE
|
||||||
|
#undef MAX_HEIGHT
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
||||||