mirror of
https://github.com/olikraus/U8g2_Arduino.git
synced 2026-07-27 20:06:05 +00:00
2.1.2
This commit is contained in:
@@ -0,0 +1,167 @@
|
||||
/*
|
||||
|
||||
A2Printer.ino
|
||||
|
||||
This is a special example for the A2 Thermo Printer
|
||||
This example can NOT be used with LCDs and OLEDs
|
||||
|
||||
Universal 8bit Graphics Library (https://github.com/olikraus/u8g2/)
|
||||
|
||||
Copyright (c) 2016, olikraus@gmail.com
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this list
|
||||
of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
||||
list of conditions and the following disclaimer in the documentation and/or other
|
||||
materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
*/
|
||||
|
||||
// use this serial interface
|
||||
#define PRINTER_SERIAL Serial
|
||||
// #define PRINTER_SERIAL Serial1
|
||||
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <U8g2lib.h>
|
||||
|
||||
#ifdef U8X8_HAVE_HW_SPI
|
||||
#include <SPI.h>
|
||||
#endif
|
||||
#ifdef U8X8_HAVE_HW_I2C
|
||||
#include <Wire.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/* define our own serial function, this will be assigned later */
|
||||
|
||||
extern "C" uint8_t u8x8_byte_arduino_serial(u8x8_t *u8g2, uint8_t msg, uint8_t arg_int, void *arg_ptr)
|
||||
{
|
||||
uint8_t *data;
|
||||
|
||||
switch(msg)
|
||||
{
|
||||
case U8X8_MSG_BYTE_SEND:
|
||||
data = (uint8_t *)arg_ptr;
|
||||
while( arg_int > 0 )
|
||||
{
|
||||
while(PRINTER_SERIAL.available() > 0)
|
||||
PRINTER_SERIAL.read();
|
||||
PRINTER_SERIAL.write((uint8_t)*data);
|
||||
data++;
|
||||
arg_int--;
|
||||
}
|
||||
break;
|
||||
|
||||
case U8X8_MSG_BYTE_INIT:
|
||||
delay(1000);
|
||||
PRINTER_SERIAL.begin(19200);
|
||||
/* send something.... */
|
||||
//PRINTER_SERIAL.begin(9600);
|
||||
PRINTER_SERIAL.write(27); /* ESC */
|
||||
PRINTER_SERIAL.write(64); /* @ --> reset printer */
|
||||
delay(1000);
|
||||
|
||||
break;
|
||||
|
||||
case U8X8_MSG_BYTE_SET_DC:
|
||||
break;
|
||||
|
||||
case U8X8_MSG_BYTE_START_TRANSFER:
|
||||
break;
|
||||
|
||||
case U8X8_MSG_BYTE_END_TRANSFER:
|
||||
break;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* define a u8g2 object just with the base class */
|
||||
/* the baseclass will be configured for the A2 printer in the setup() procedure */
|
||||
class U8G2 u8g2;
|
||||
|
||||
void setup(void) {
|
||||
|
||||
u8g2_Setup_a2printer_384x240_1( /* several different a2 printer procs exist... */
|
||||
u8g2.getU8g2(), /* this is a c call, so use the u8g2 struct instead of the class */
|
||||
U8G2_R0, /* this defines the usual rotation of the bitmap */
|
||||
u8x8_byte_arduino_serial, /* this is the new procedure from above */
|
||||
u8x8_gpio_and_delay_arduino); /* standard arduino low level proc, used only for delay */
|
||||
|
||||
u8g2.beginSimple(); /* Do not clear the display, wake is not required */
|
||||
}
|
||||
|
||||
#define XO 10
|
||||
|
||||
void drawLogo(void)
|
||||
{
|
||||
|
||||
u8g2.setFontMode(1); // Transparent
|
||||
u8g2.setFontDirection(0);
|
||||
u8g2.setFont(u8g2_font_inb24_mf);
|
||||
u8g2.drawStr(0+XO, 30, "U");
|
||||
|
||||
u8g2.setFontDirection(1);
|
||||
u8g2.setFont(u8g2_font_inb30_mn);
|
||||
u8g2.drawStr(21+XO,8,"8");
|
||||
|
||||
u8g2.setFontDirection(0);
|
||||
u8g2.setFont(u8g2_font_inb24_mf);
|
||||
u8g2.drawStr(51+XO,30,"g");
|
||||
u8g2.drawStr(67+XO,30,"\xb2");
|
||||
|
||||
u8g2.drawHLine(2+XO, 35, 47);
|
||||
u8g2.drawHLine(3+XO, 36, 47);
|
||||
u8g2.drawVLine(45+XO, 32, 12);
|
||||
u8g2.drawVLine(46+XO, 33, 12);
|
||||
}
|
||||
|
||||
void drawURL(void)
|
||||
{
|
||||
u8g2.setFont(u8g2_font_6x12_tr);
|
||||
u8g2.drawStr(1+XO,54,"github.com/olikraus/u8g2");
|
||||
}
|
||||
|
||||
void loop(void) {
|
||||
u8g2.firstPage();
|
||||
do {
|
||||
drawLogo();
|
||||
drawURL();
|
||||
|
||||
/* worst case heating test */
|
||||
u8g2.drawRBox(4,90,384-8,20, 8);
|
||||
|
||||
/* heating test with some text */
|
||||
u8g2.setFont(u8g2_font_inb24_mf);
|
||||
u8g2.drawStr(10,160,"Hello World!");
|
||||
|
||||
/* draw a frame around the picture */
|
||||
u8g2.drawFrame(0,0,384,240);
|
||||
u8g2.drawFrame(1,1,384-2,240-2);
|
||||
} while ( u8g2.nextPage() );
|
||||
delay(1000);
|
||||
}
|
||||
|
||||
@@ -22,5 +22,8 @@ https://github.com/olikraus/u8g2 ChangeLog
|
||||
2016-07-02 v2.1.0 olikraus@gmail.com
|
||||
* T6963 Support
|
||||
* Experimental Support for SSD1322 256x64
|
||||
* A2 Thermoprinter Support
|
||||
* Added several fonts from http://int10h.org/oldschool-pc-fonts/
|
||||
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
name=U8g2
|
||||
version=2.1.1
|
||||
version=2.1.2
|
||||
author=oliver <olikraus@gmail.com>
|
||||
maintainer=oliver <olikraus@gmail.com>
|
||||
sentence=Library for monochrome LCDs and OLEDs. Successor of U8glib.
|
||||
|
||||
+7
-1
@@ -111,7 +111,13 @@ class U8G2 : public Print
|
||||
|
||||
|
||||
void begin(void) {
|
||||
initDisplay(); clearDisplay(); setPowerSave(0); u8x8_utf8_init(u8g2_GetU8x8(&u8g2));}
|
||||
/* note: call to u8x8_utf8_init is not required here, this is done in the setup procedures before */
|
||||
initDisplay(); clearDisplay(); setPowerSave(0); }
|
||||
|
||||
void beginSimple(void) {
|
||||
/* does not clear the display and does not wake up the display */
|
||||
/* user is responsible for calling clearDisplay() and setPowerSave(0) */
|
||||
initDisplay(); }
|
||||
|
||||
#ifdef U8X8_USE_PINS
|
||||
/* use U8X8_PIN_NONE if a pin is not required */
|
||||
|
||||
+13
-13
@@ -156,7 +156,7 @@ extern "C" uint8_t u8x8_byte_arduino_4wire_sw_spi(u8x8_t *u8x8, uint8_t msg, uin
|
||||
{
|
||||
uint8_t i, b;
|
||||
uint8_t *data;
|
||||
uint8_t takeover_edge = u8x8->display_info->sck_takeover_edge;
|
||||
uint8_t takeover_edge = u8x8_GetSPIClockPhase(u8x8);
|
||||
uint8_t not_takeover_edge = 1 - takeover_edge;
|
||||
|
||||
/* the following static vars are recalculated in U8X8_MSG_BYTE_START_TRANSFER */
|
||||
@@ -213,7 +213,7 @@ extern "C" uint8_t u8x8_byte_arduino_4wire_sw_spi(u8x8_t *u8x8, uint8_t msg, uin
|
||||
/* no wait required here */
|
||||
|
||||
/* for SPI: setup correct level of the clock signal */
|
||||
u8x8_gpio_SetSPIClock(u8x8, u8x8->display_info->sck_takeover_edge);
|
||||
u8x8_gpio_SetSPIClock(u8x8, u8x8_GetSPIClockPhase(u8x8));
|
||||
break;
|
||||
case U8X8_MSG_BYTE_SET_DC:
|
||||
u8x8_gpio_SetDC(u8x8, arg_int);
|
||||
@@ -258,7 +258,7 @@ extern "C" uint8_t u8x8_byte_arduino_4wire_sw_spi(u8x8_t *u8x8, uint8_t msg, uin
|
||||
/*=============================================*/
|
||||
|
||||
|
||||
extern "C" uint8_t u8x8_byte_arduino_hw_spi(u8x8_t *u8g2, uint8_t msg, uint8_t arg_int, void *arg_ptr)
|
||||
extern "C" uint8_t u8x8_byte_arduino_hw_spi(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr)
|
||||
{
|
||||
#ifdef U8X8_HAVE_HW_SPI
|
||||
uint8_t *data;
|
||||
@@ -276,38 +276,38 @@ extern "C" uint8_t u8x8_byte_arduino_hw_spi(u8x8_t *u8g2, uint8_t msg, uint8_t a
|
||||
break;
|
||||
case U8X8_MSG_BYTE_INIT:
|
||||
/* disable chipselect */
|
||||
u8x8_gpio_SetCS(u8g2, u8g2->display_info->chip_disable_level);
|
||||
u8x8_gpio_SetCS(u8x8, u8x8->display_info->chip_disable_level);
|
||||
/* no wait required here */
|
||||
|
||||
/* for SPI: setup correct level of the clock signal */
|
||||
pinMode(11, OUTPUT);
|
||||
pinMode(13, OUTPUT);
|
||||
digitalWrite(13, u8g2->display_info->sck_takeover_edge);
|
||||
digitalWrite(13, u8x8_GetSPIClockPhase(u8x8));
|
||||
break;
|
||||
|
||||
case U8X8_MSG_BYTE_SET_DC:
|
||||
u8x8_gpio_SetDC(u8g2, arg_int);
|
||||
u8x8_gpio_SetDC(u8x8, arg_int);
|
||||
break;
|
||||
|
||||
case U8X8_MSG_BYTE_START_TRANSFER:
|
||||
SPI.begin();
|
||||
|
||||
if ( u8g2->display_info->sck_pulse_width_ns < 70 )
|
||||
if ( u8x8->display_info->sck_pulse_width_ns < 70 )
|
||||
SPI.setClockDivider( SPI_CLOCK_DIV2 );
|
||||
else if ( u8g2->display_info->sck_pulse_width_ns < 140 )
|
||||
else if ( u8x8->display_info->sck_pulse_width_ns < 140 )
|
||||
SPI.setClockDivider( SPI_CLOCK_DIV4 );
|
||||
else
|
||||
SPI.setClockDivider( SPI_CLOCK_DIV8 );
|
||||
SPI.setDataMode(SPI_MODE0);
|
||||
SPI.setDataMode(u8x8->display_info->spi_mode);
|
||||
SPI.setBitOrder(MSBFIRST);
|
||||
|
||||
u8x8_gpio_SetCS(u8g2, u8g2->display_info->chip_enable_level);
|
||||
u8g2->gpio_and_delay_cb(u8g2, U8X8_MSG_DELAY_NANO, u8g2->display_info->post_chip_enable_wait_ns, NULL);
|
||||
u8x8_gpio_SetCS(u8x8, u8x8->display_info->chip_enable_level);
|
||||
u8x8->gpio_and_delay_cb(u8x8, U8X8_MSG_DELAY_NANO, u8x8->display_info->post_chip_enable_wait_ns, NULL);
|
||||
break;
|
||||
|
||||
case U8X8_MSG_BYTE_END_TRANSFER:
|
||||
u8g2->gpio_and_delay_cb(u8g2, U8X8_MSG_DELAY_NANO, u8g2->display_info->pre_chip_disable_wait_ns, NULL);
|
||||
u8x8_gpio_SetCS(u8g2, u8g2->display_info->chip_disable_level);
|
||||
u8x8->gpio_and_delay_cb(u8x8, U8X8_MSG_DELAY_NANO, u8x8->display_info->pre_chip_disable_wait_ns, NULL);
|
||||
u8x8_gpio_SetCS(u8x8, u8x8->display_info->chip_disable_level);
|
||||
|
||||
SPI.end();
|
||||
|
||||
|
||||
@@ -405,6 +405,9 @@ uint8_t *u8g2_m_t6963_16_f(uint8_t *page_cnt);
|
||||
uint8_t *u8g2_m_ssd1322_32_1(uint8_t *page_cnt);
|
||||
uint8_t *u8g2_m_ssd1322_32_2(uint8_t *page_cnt);
|
||||
uint8_t *u8g2_m_ssd1322_32_f(uint8_t *page_cnt);
|
||||
uint8_t *u8g2_m_a2printer_48_1(uint8_t *page_cnt);
|
||||
uint8_t *u8g2_m_a2printer_48_2(uint8_t *page_cnt);
|
||||
uint8_t *u8g2_m_a2printer_48_f(uint8_t *page_cnt);
|
||||
|
||||
/* u8g2_d_memory.c generated code end */
|
||||
|
||||
@@ -470,6 +473,9 @@ void u8g2_Setup_t6963_128x64_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg
|
||||
void u8g2_Setup_ssd1322_256x64_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb);
|
||||
void u8g2_Setup_ssd1322_256x64_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb);
|
||||
void u8g2_Setup_ssd1322_256x64_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb);
|
||||
void u8g2_Setup_a2printer_384x240_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb);
|
||||
void u8g2_Setup_a2printer_384x240_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb);
|
||||
void u8g2_Setup_a2printer_384x240_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb);
|
||||
|
||||
/* u8g2_d_setup.c generated code end */
|
||||
|
||||
@@ -1261,6 +1267,48 @@ extern const uint8_t u8g2_font_pcsenior_8f[] U8G2_FONT_SECTION("u8g2_font_pcseni
|
||||
extern const uint8_t u8g2_font_pcsenior_8r[] U8G2_FONT_SECTION("u8g2_font_pcsenior_8r");
|
||||
extern const uint8_t u8g2_font_pcsenior_8n[] U8G2_FONT_SECTION("u8g2_font_pcsenior_8n");
|
||||
extern const uint8_t u8g2_font_pcsenior_8u[] U8G2_FONT_SECTION("u8g2_font_pcsenior_8u");
|
||||
extern const uint8_t u8g2_font_pxplusibmcgathin_8f[] U8G2_FONT_SECTION("u8g2_font_pxplusibmcgathin_8f");
|
||||
extern const uint8_t u8g2_font_pxplusibmcgathin_8r[] U8G2_FONT_SECTION("u8g2_font_pxplusibmcgathin_8r");
|
||||
extern const uint8_t u8g2_font_pxplusibmcgathin_8n[] U8G2_FONT_SECTION("u8g2_font_pxplusibmcgathin_8n");
|
||||
extern const uint8_t u8g2_font_pxplusibmcgathin_8u[] U8G2_FONT_SECTION("u8g2_font_pxplusibmcgathin_8u");
|
||||
extern const uint8_t u8g2_font_pxplusibmcga_8f[] U8G2_FONT_SECTION("u8g2_font_pxplusibmcga_8f");
|
||||
extern const uint8_t u8g2_font_pxplusibmcga_8r[] U8G2_FONT_SECTION("u8g2_font_pxplusibmcga_8r");
|
||||
extern const uint8_t u8g2_font_pxplusibmcga_8n[] U8G2_FONT_SECTION("u8g2_font_pxplusibmcga_8n");
|
||||
extern const uint8_t u8g2_font_pxplusibmcga_8u[] U8G2_FONT_SECTION("u8g2_font_pxplusibmcga_8u");
|
||||
extern const uint8_t u8g2_font_pxplustandynewtv_8f[] U8G2_FONT_SECTION("u8g2_font_pxplustandynewtv_8f");
|
||||
extern const uint8_t u8g2_font_pxplustandynewtv_8r[] U8G2_FONT_SECTION("u8g2_font_pxplustandynewtv_8r");
|
||||
extern const uint8_t u8g2_font_pxplustandynewtv_8n[] U8G2_FONT_SECTION("u8g2_font_pxplustandynewtv_8n");
|
||||
extern const uint8_t u8g2_font_pxplustandynewtv_8u[] U8G2_FONT_SECTION("u8g2_font_pxplustandynewtv_8u");
|
||||
extern const uint8_t u8g2_font_pxplustandynewtv_t_all[] U8G2_FONT_SECTION("u8g2_font_pxplustandynewtv_t_all");
|
||||
extern const uint8_t u8g2_font_pxplustandynewtv_8_all[] U8G2_FONT_SECTION("u8g2_font_pxplustandynewtv_8_all");
|
||||
extern const uint8_t u8g2_font_pxplusibmvga9_tf[] U8G2_FONT_SECTION("u8g2_font_pxplusibmvga9_tf");
|
||||
extern const uint8_t u8g2_font_pxplusibmvga9_tr[] U8G2_FONT_SECTION("u8g2_font_pxplusibmvga9_tr");
|
||||
extern const uint8_t u8g2_font_pxplusibmvga9_tn[] U8G2_FONT_SECTION("u8g2_font_pxplusibmvga9_tn");
|
||||
extern const uint8_t u8g2_font_pxplusibmvga9_mf[] U8G2_FONT_SECTION("u8g2_font_pxplusibmvga9_mf");
|
||||
extern const uint8_t u8g2_font_pxplusibmvga9_mr[] U8G2_FONT_SECTION("u8g2_font_pxplusibmvga9_mr");
|
||||
extern const uint8_t u8g2_font_pxplusibmvga9_mn[] U8G2_FONT_SECTION("u8g2_font_pxplusibmvga9_mn");
|
||||
extern const uint8_t u8g2_font_pxplusibmvga9_t_all[] U8G2_FONT_SECTION("u8g2_font_pxplusibmvga9_t_all");
|
||||
extern const uint8_t u8g2_font_pxplusibmvga9_m_all[] U8G2_FONT_SECTION("u8g2_font_pxplusibmvga9_m_all");
|
||||
extern const uint8_t u8g2_font_pxplusibmvga8_tf[] U8G2_FONT_SECTION("u8g2_font_pxplusibmvga8_tf");
|
||||
extern const uint8_t u8g2_font_pxplusibmvga8_tr[] U8G2_FONT_SECTION("u8g2_font_pxplusibmvga8_tr");
|
||||
extern const uint8_t u8g2_font_pxplusibmvga8_tn[] U8G2_FONT_SECTION("u8g2_font_pxplusibmvga8_tn");
|
||||
extern const uint8_t u8g2_font_pxplusibmvga8_mf[] U8G2_FONT_SECTION("u8g2_font_pxplusibmvga8_mf");
|
||||
extern const uint8_t u8g2_font_pxplusibmvga8_mr[] U8G2_FONT_SECTION("u8g2_font_pxplusibmvga8_mr");
|
||||
extern const uint8_t u8g2_font_pxplusibmvga8_mn[] U8G2_FONT_SECTION("u8g2_font_pxplusibmvga8_mn");
|
||||
extern const uint8_t u8g2_font_pxplusibmvga8_t_all[] U8G2_FONT_SECTION("u8g2_font_pxplusibmvga8_t_all");
|
||||
extern const uint8_t u8g2_font_pxplusibmvga8_m_all[] U8G2_FONT_SECTION("u8g2_font_pxplusibmvga8_m_all");
|
||||
extern const uint8_t u8g2_font_px437wyse700a_tf[] U8G2_FONT_SECTION("u8g2_font_px437wyse700a_tf");
|
||||
extern const uint8_t u8g2_font_px437wyse700a_tr[] U8G2_FONT_SECTION("u8g2_font_px437wyse700a_tr");
|
||||
extern const uint8_t u8g2_font_px437wyse700a_tn[] U8G2_FONT_SECTION("u8g2_font_px437wyse700a_tn");
|
||||
extern const uint8_t u8g2_font_px437wyse700a_mf[] U8G2_FONT_SECTION("u8g2_font_px437wyse700a_mf");
|
||||
extern const uint8_t u8g2_font_px437wyse700a_mr[] U8G2_FONT_SECTION("u8g2_font_px437wyse700a_mr");
|
||||
extern const uint8_t u8g2_font_px437wyse700a_mn[] U8G2_FONT_SECTION("u8g2_font_px437wyse700a_mn");
|
||||
extern const uint8_t u8g2_font_px437wyse700b_tf[] U8G2_FONT_SECTION("u8g2_font_px437wyse700b_tf");
|
||||
extern const uint8_t u8g2_font_px437wyse700b_tr[] U8G2_FONT_SECTION("u8g2_font_px437wyse700b_tr");
|
||||
extern const uint8_t u8g2_font_px437wyse700b_tn[] U8G2_FONT_SECTION("u8g2_font_px437wyse700b_tn");
|
||||
extern const uint8_t u8g2_font_px437wyse700b_mf[] U8G2_FONT_SECTION("u8g2_font_px437wyse700b_mf");
|
||||
extern const uint8_t u8g2_font_px437wyse700b_mr[] U8G2_FONT_SECTION("u8g2_font_px437wyse700b_mr");
|
||||
extern const uint8_t u8g2_font_px437wyse700b_mn[] U8G2_FONT_SECTION("u8g2_font_px437wyse700b_mn");
|
||||
|
||||
/* end font list */
|
||||
|
||||
|
||||
@@ -201,4 +201,22 @@ uint8_t *u8g2_m_ssd1322_32_f(uint8_t *page_cnt)
|
||||
*page_cnt = 8;
|
||||
return buf;
|
||||
}
|
||||
uint8_t *u8g2_m_a2printer_48_1(uint8_t *page_cnt)
|
||||
{
|
||||
static uint8_t buf[384];
|
||||
*page_cnt = 1;
|
||||
return buf;
|
||||
}
|
||||
uint8_t *u8g2_m_a2printer_48_2(uint8_t *page_cnt)
|
||||
{
|
||||
static uint8_t buf[768];
|
||||
*page_cnt = 2;
|
||||
return buf;
|
||||
}
|
||||
uint8_t *u8g2_m_a2printer_48_f(uint8_t *page_cnt)
|
||||
{
|
||||
static uint8_t buf[11520];
|
||||
*page_cnt = 30;
|
||||
return buf;
|
||||
}
|
||||
/* end of generated code */
|
||||
|
||||
@@ -563,4 +563,32 @@ void u8g2_Setup_ssd1322_256x64_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_m
|
||||
buf = u8g2_m_ssd1322_32_f(&tile_buf_height);
|
||||
u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation);
|
||||
}
|
||||
/* a2printer */
|
||||
/* a2printer 1 */
|
||||
void u8g2_Setup_a2printer_384x240_1(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb)
|
||||
{
|
||||
uint8_t tile_buf_height;
|
||||
uint8_t *buf;
|
||||
u8g2_SetupDisplay(u8g2, u8x8_d_a2printer_384x240, u8x8_cad_empty, byte_cb, gpio_and_delay_cb);
|
||||
buf = u8g2_m_a2printer_48_1(&tile_buf_height);
|
||||
u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation);
|
||||
}
|
||||
/* a2printer 2 */
|
||||
void u8g2_Setup_a2printer_384x240_2(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb)
|
||||
{
|
||||
uint8_t tile_buf_height;
|
||||
uint8_t *buf;
|
||||
u8g2_SetupDisplay(u8g2, u8x8_d_a2printer_384x240, u8x8_cad_empty, byte_cb, gpio_and_delay_cb);
|
||||
buf = u8g2_m_a2printer_48_2(&tile_buf_height);
|
||||
u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation);
|
||||
}
|
||||
/* a2printer f */
|
||||
void u8g2_Setup_a2printer_384x240_f(u8g2_t *u8g2, const u8g2_cb_t *rotation, u8x8_msg_cb byte_cb, u8x8_msg_cb gpio_and_delay_cb)
|
||||
{
|
||||
uint8_t tile_buf_height;
|
||||
uint8_t *buf;
|
||||
u8g2_SetupDisplay(u8g2, u8x8_d_a2printer_384x240, u8x8_cad_empty, byte_cb, gpio_and_delay_cb);
|
||||
buf = u8g2_m_a2printer_48_f(&tile_buf_height);
|
||||
u8g2_SetupBuffer(u8g2, buf, tile_buf_height, u8g2_ll_hvline_horizontal_right_lsb, rotation);
|
||||
}
|
||||
/* end of generated code */
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+25
-5
@@ -211,10 +211,15 @@ struct u8x8_display_info_struct
|
||||
/* AVR: below 70: DIV2, 8 MHz, >= 70 --> 4MHz clock (DIV4) */
|
||||
uint8_t sck_pulse_width_ns; /* UC1701: 50ns */
|
||||
|
||||
/* data takeover edge: 0=falling edge, 1=rising edge*/
|
||||
/* initial default value for sck is low (0) for falling edge and high for rising edge */
|
||||
/* this means, default value is identical to sck_takeover_edge */
|
||||
uint8_t sck_takeover_edge; /* UC1601: rising edge (1) */
|
||||
/* previous name "sck_takeover_edge" renamed to "spi_mode" */
|
||||
/* bit 0 of spi_mode is equal to the value of the previous variable sck_takeover_edge */
|
||||
/* SPI has four clock modes: */
|
||||
/* 0: clock active high, data out on falling edge */
|
||||
/* 1: clock active high, data out on rising edge */
|
||||
/* 2: clock active low, data out on rising edge */
|
||||
/* 3: clock active low, data out on falling edge */
|
||||
/* most displays have clock mode 1 */
|
||||
uint8_t spi_mode;
|
||||
|
||||
/* == I2C == */
|
||||
uint8_t i2c_bus_clock_100kHz; /* UC1601: 1000000000/275 = 37 *100k */
|
||||
@@ -314,7 +319,8 @@ struct u8x8_struct
|
||||
#define u8x8_GetRows(u8x8) ((u8x8)->display_info->tile_height)
|
||||
#define u8x8_GetI2CAddress(u8x8) ((u8x8)->i2c_address)
|
||||
#define u8x8_SetGPIOResult(u8x8, val) ((u8x8)->gpio_result = (val))
|
||||
|
||||
#define u8x8_GetSPIClockPhase(u8x8) ((u8x8)->display_info->spi_mode & 0x01) /* this returns "sck_takeover_edge" */
|
||||
#define u8x8_GetSPIClockPolarity(u8x8) (((u8x8)->display_info->spi_mode & 0x02) >> 1)
|
||||
|
||||
|
||||
#ifdef U8X8_USE_PINS
|
||||
@@ -516,6 +522,7 @@ uint8_t u8x8_cad_EndTransfer(u8x8_t *u8x8) U8X8_NOINLINE;
|
||||
#define U8X8_END() (0xff)
|
||||
|
||||
void u8x8_cad_SendSequence(u8x8_t *u8x8, uint8_t const *data);
|
||||
uint8_t u8x8_cad_empty(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr);
|
||||
uint8_t u8x8_cad_110(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr);
|
||||
uint8_t u8x8_cad_001(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr);
|
||||
uint8_t u8x8_cad_011(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr);
|
||||
@@ -675,6 +682,7 @@ uint8_t u8x8_d_t6963_240x128(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *a
|
||||
uint8_t u8x8_d_t6963_128x64(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr);
|
||||
uint8_t u8x8_d_ssd1322_256x64(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr);
|
||||
uint8_t u8x8_d_t6963_256x64(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr);
|
||||
uint8_t u8x8_d_a2printer_384x240(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr);
|
||||
|
||||
|
||||
/*==========================================*/
|
||||
@@ -785,6 +793,18 @@ extern const uint8_t u8x8_font_pcsenior_f[] U8X8_FONT_SECTION("u8x8_font_pcsenio
|
||||
extern const uint8_t u8x8_font_pcsenior_r[] U8X8_FONT_SECTION("u8x8_font_pcsenior_r");
|
||||
extern const uint8_t u8x8_font_pcsenior_n[] U8X8_FONT_SECTION("u8x8_font_pcsenior_n");
|
||||
extern const uint8_t u8x8_font_pcsenior_u[] U8X8_FONT_SECTION("u8x8_font_pcsenior_u");
|
||||
extern const uint8_t u8x8_font_pxplusibmcgathin_f[] U8X8_FONT_SECTION("u8x8_font_pxplusibmcgathin_f");
|
||||
extern const uint8_t u8x8_font_pxplusibmcgathin_r[] U8X8_FONT_SECTION("u8x8_font_pxplusibmcgathin_r");
|
||||
extern const uint8_t u8x8_font_pxplusibmcgathin_n[] U8X8_FONT_SECTION("u8x8_font_pxplusibmcgathin_n");
|
||||
extern const uint8_t u8x8_font_pxplusibmcgathin_u[] U8X8_FONT_SECTION("u8x8_font_pxplusibmcgathin_u");
|
||||
extern const uint8_t u8x8_font_pxplusibmcga_f[] U8X8_FONT_SECTION("u8x8_font_pxplusibmcga_f");
|
||||
extern const uint8_t u8x8_font_pxplusibmcga_r[] U8X8_FONT_SECTION("u8x8_font_pxplusibmcga_r");
|
||||
extern const uint8_t u8x8_font_pxplusibmcga_n[] U8X8_FONT_SECTION("u8x8_font_pxplusibmcga_n");
|
||||
extern const uint8_t u8x8_font_pxplusibmcga_u[] U8X8_FONT_SECTION("u8x8_font_pxplusibmcga_u");
|
||||
extern const uint8_t u8x8_font_pxplustandynewtv_f[] U8X8_FONT_SECTION("u8x8_font_pxplustandynewtv_f");
|
||||
extern const uint8_t u8x8_font_pxplustandynewtv_r[] U8X8_FONT_SECTION("u8x8_font_pxplustandynewtv_r");
|
||||
extern const uint8_t u8x8_font_pxplustandynewtv_n[] U8X8_FONT_SECTION("u8x8_font_pxplustandynewtv_n");
|
||||
extern const uint8_t u8x8_font_pxplustandynewtv_u[] U8X8_FONT_SECTION("u8x8_font_pxplustandynewtv_u");
|
||||
|
||||
/* end font list */
|
||||
|
||||
|
||||
+1
-1
@@ -139,7 +139,7 @@ uint16_t u8x8_get_encoding_from_utf8_string(const char **str)
|
||||
/* reset the internal state machine */
|
||||
void u8x8_utf8_init(u8x8_t *u8x8)
|
||||
{
|
||||
u8x8->utf8_state = 0;
|
||||
u8x8->utf8_state = 0; /* also reset during u8x8_SetupDefaults() */
|
||||
}
|
||||
|
||||
uint16_t u8x8_ascii_next(u8x8_t *u8x8, uint8_t b)
|
||||
|
||||
@@ -66,7 +66,7 @@ uint8_t u8x8_byte_EndTransfer(u8x8_t *u8x8)
|
||||
Uses:
|
||||
u8x8->display_info->sda_setup_time_ns
|
||||
u8x8->display_info->sck_pulse_width_ns
|
||||
u8x8->display_info->sck_takeover_edge
|
||||
u8x8->display_info->spi_mode
|
||||
u8x8->display_info->chip_disable_level
|
||||
u8x8->display_info->chip_enable_level
|
||||
u8x8->display_info->post_chip_enable_wait_ns
|
||||
@@ -89,7 +89,7 @@ uint8_t u8x8_byte_4wire_sw_spi(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void
|
||||
{
|
||||
uint8_t i, b;
|
||||
uint8_t *data;
|
||||
uint8_t takeover_edge = u8x8->display_info->sck_takeover_edge;
|
||||
uint8_t takeover_edge = u8x8_GetSPIClockPhase(u8x8);
|
||||
uint8_t not_takeover_edge = 1 - takeover_edge;
|
||||
|
||||
switch(msg)
|
||||
@@ -123,7 +123,7 @@ uint8_t u8x8_byte_4wire_sw_spi(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void
|
||||
/* no wait required here */
|
||||
|
||||
/* for SPI: setup correct level of the clock signal */
|
||||
u8x8_gpio_SetSPIClock(u8x8, u8x8->display_info->sck_takeover_edge);
|
||||
u8x8_gpio_SetSPIClock(u8x8, u8x8_GetSPIClockPhase(u8x8));
|
||||
break;
|
||||
case U8X8_MSG_BYTE_SET_DC:
|
||||
u8x8_gpio_SetDC(u8x8, arg_int);
|
||||
@@ -250,7 +250,7 @@ uint8_t u8x8_byte_3wire_sw_spi(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void
|
||||
{
|
||||
uint8_t i;
|
||||
uint8_t *data;
|
||||
uint8_t takeover_edge = u8x8->display_info->sck_takeover_edge;
|
||||
uint8_t takeover_edge = u8x8_GetSPIClockPhase(u8x8);
|
||||
uint8_t not_takeover_edge = 1 - takeover_edge;
|
||||
uint16_t b;
|
||||
static uint8_t last_dc;
|
||||
@@ -288,7 +288,7 @@ uint8_t u8x8_byte_3wire_sw_spi(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void
|
||||
/* no wait required here */
|
||||
|
||||
/* for SPI: setup correct level of the clock signal */
|
||||
u8x8_gpio_SetSPIClock(u8x8, u8x8->display_info->sck_takeover_edge);
|
||||
u8x8_gpio_SetSPIClock(u8x8, u8x8_GetSPIClockPhase(u8x8));
|
||||
break;
|
||||
case U8X8_MSG_BYTE_SET_DC:
|
||||
last_dc = arg_int;
|
||||
@@ -314,7 +314,7 @@ uint8_t u8x8_byte_3wire_sw_spi(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void
|
||||
static void u8x8_byte_st7920_send_byte(u8x8_t *u8x8, uint8_t b) U8X8_NOINLINE;
|
||||
static void u8x8_byte_st7920_send_byte(u8x8_t *u8x8, uint8_t b)
|
||||
{
|
||||
uint8_t takeover_edge = u8x8->display_info->sck_takeover_edge;
|
||||
uint8_t takeover_edge = u8x8_GetSPIClockPhase(u8x8);
|
||||
uint8_t not_takeover_edge = 1 - takeover_edge;
|
||||
uint8_t cnt;
|
||||
|
||||
@@ -376,7 +376,7 @@ uint8_t u8x8_byte_st7920_sw_spi(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void
|
||||
/* no wait required here */
|
||||
|
||||
/* for SPI: setup correct level of the clock signal */
|
||||
u8x8_gpio_SetSPIClock(u8x8, u8x8->display_info->sck_takeover_edge);
|
||||
u8x8_gpio_SetSPIClock(u8x8, u8x8_GetSPIClockPhase(u8x8));
|
||||
break;
|
||||
case U8X8_MSG_BYTE_SET_DC:
|
||||
last_dc = arg_int;
|
||||
|
||||
@@ -158,6 +158,28 @@ void u8x8_cad_SendSequence(u8x8_t *u8x8, uint8_t const *data)
|
||||
}
|
||||
|
||||
|
||||
uint8_t u8x8_cad_empty(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr)
|
||||
{
|
||||
switch(msg)
|
||||
{
|
||||
case U8X8_MSG_CAD_SEND_CMD:
|
||||
u8x8_byte_SendByte(u8x8, arg_int);
|
||||
break;
|
||||
case U8X8_MSG_CAD_SEND_ARG:
|
||||
u8x8_byte_SendByte(u8x8, arg_int);
|
||||
break;
|
||||
case U8X8_MSG_CAD_SEND_DATA:
|
||||
case U8X8_MSG_CAD_INIT:
|
||||
case U8X8_MSG_CAD_START_TRANSFER:
|
||||
case U8X8_MSG_CAD_END_TRANSFER:
|
||||
return u8x8->byte_cb(u8x8, msg, arg_int, arg_ptr);
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
convert to bytes by using
|
||||
dc = 1 for commands and args and
|
||||
|
||||
@@ -0,0 +1,181 @@
|
||||
/*
|
||||
|
||||
u8x8_d_a2printer.c
|
||||
|
||||
Universal 8bit Graphics Library (https://github.com/olikraus/u8g2/)
|
||||
|
||||
Copyright (c) 2016, olikraus@gmail.com
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this list
|
||||
of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
||||
list of conditions and the following disclaimer in the documentation and/or other
|
||||
materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
|
||||
Use DC2 bitmap command of the A2 Micro panel termal printer
|
||||
double stroke
|
||||
|
||||
|
||||
*/
|
||||
|
||||
|
||||
#include "u8x8.h"
|
||||
|
||||
#define LINE_MIN_DELAY_MS 15
|
||||
/* higher values improve quality */
|
||||
/* however if the value is too high (>=5) then form feed does not work any more */
|
||||
#define LINE_EXTRA_8PIXEL_DELAY_MS 3
|
||||
/* this must be a power of two and between 1 and 8 */
|
||||
/* best quality only with 1 */
|
||||
#define NO_OF_LINES_TO_SEND_WITHOUT_DELAY 1
|
||||
|
||||
/* calculates the delay, based on the number of black pixel */
|
||||
/* actually only "none-zero" bytes are calculated which is, of course not so accurate, but should be good enough */
|
||||
uint16_t get_delay_in_milliseconds(uint8_t cnt, uint8_t *data)
|
||||
{
|
||||
uint8_t i;
|
||||
uint16_t time = LINE_MIN_DELAY_MS;
|
||||
for ( i = 0; i < cnt; i++ )
|
||||
if ( data[i] != 0 )
|
||||
time += LINE_EXTRA_8PIXEL_DELAY_MS;
|
||||
return time;
|
||||
}
|
||||
|
||||
uint8_t u8x8_d_a2printer_common(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr)
|
||||
{
|
||||
uint8_t c, i, j;
|
||||
uint8_t *ptr;
|
||||
uint16_t delay_in_milliseconds;
|
||||
switch(msg)
|
||||
{
|
||||
/* U8X8_MSG_DISPLAY_SETUP_MEMORY is handled by the calling function */
|
||||
/*
|
||||
case U8X8_MSG_DISPLAY_SETUP_MEMORY:
|
||||
break;
|
||||
*/
|
||||
case U8X8_MSG_DISPLAY_INIT:
|
||||
u8x8_d_helper_display_init(u8x8);
|
||||
// no setup required
|
||||
// u8x8_cad_SendSequence(u8x8, u8x8_d_a2printer_init_seq);
|
||||
break;
|
||||
case U8X8_MSG_DISPLAY_SET_POWER_SAVE:
|
||||
// no powersave
|
||||
break;
|
||||
case U8X8_MSG_DISPLAY_DRAW_TILE:
|
||||
u8x8_cad_StartTransfer(u8x8);
|
||||
|
||||
u8x8_cad_SendCmd(u8x8, 27); /* ESC */
|
||||
u8x8_cad_SendCmd(u8x8, 55 ); /* parameter command */
|
||||
/* increasing the "max printing dots" requires a good power supply, but LINE_EXTRA_8PIXEL_DELAY_MS could be reduced then */
|
||||
u8x8_cad_SendCmd(u8x8, 0); /* Max printing dots,Unit(8dots),Default:7(64 dots) 8*(x+1) ... lower values improve, probably my current supply is not sufficient */
|
||||
u8x8_cad_SendCmd(u8x8, 200); /* 3-255 Heating time,Unit(10us),Default:80(800us) */
|
||||
u8x8_cad_SendCmd(u8x8, 2); /* 0-255 Heating interval,Unit(10us),Default:2(20us) ... does not have much influence */
|
||||
|
||||
//c = ((u8x8_tile_t *)arg_ptr)->cnt; /* number of tiles */
|
||||
c = u8x8->display_info->tile_width;
|
||||
ptr = ((u8x8_tile_t *)arg_ptr)->tile_ptr; /* data ptr to the tiles */
|
||||
|
||||
u8x8_cad_SendCmd(u8x8, 18); /* DC2 */
|
||||
u8x8_cad_SendCmd(u8x8, 42 ); /* * */
|
||||
u8x8_cad_SendCmd(u8x8, 8 ); /* height */
|
||||
u8x8_cad_SendCmd(u8x8, c ); /* c, u8x8->display_info->tile_width */
|
||||
|
||||
for( j = 0; j < 8 / NO_OF_LINES_TO_SEND_WITHOUT_DELAY; j ++ )
|
||||
{
|
||||
|
||||
delay_in_milliseconds = 0;
|
||||
for( i = 0; i < NO_OF_LINES_TO_SEND_WITHOUT_DELAY; i++ )
|
||||
{
|
||||
u8x8_cad_SendData(u8x8, c, ptr); /* c, note: SendData can not handle more than 255 bytes, send one line of data */
|
||||
delay_in_milliseconds += get_delay_in_milliseconds(c, ptr);
|
||||
ptr += c;
|
||||
}
|
||||
|
||||
while( delay_in_milliseconds > 200 )
|
||||
{
|
||||
u8x8->gpio_and_delay_cb(u8x8, U8X8_MSG_DELAY_MILLI, 200, NULL);
|
||||
delay_in_milliseconds -= 200;
|
||||
}
|
||||
u8x8->gpio_and_delay_cb(u8x8, U8X8_MSG_DELAY_MILLI, delay_in_milliseconds, NULL);
|
||||
}
|
||||
|
||||
/* set parameters back to their default values */
|
||||
u8x8_cad_SendCmd(u8x8, 27); /* ESC */
|
||||
u8x8_cad_SendCmd(u8x8, 55 ); /* parameter command */
|
||||
u8x8_cad_SendCmd(u8x8, 7); /* Max printing dots,Unit(8dots),Default:7(64 dots) 8*(x+1)*/
|
||||
u8x8_cad_SendCmd(u8x8, 80); /* 3-255 Heating time,Unit(10us),Default:80(800us) */
|
||||
u8x8_cad_SendCmd(u8x8, 2); /* 0-255 Heating interval,Unit(10us),Default:2(20us)*/
|
||||
|
||||
u8x8_cad_EndTransfer(u8x8);
|
||||
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
static const u8x8_display_info_t u8x8_a2printer_384x240_display_info =
|
||||
{
|
||||
/* most of the settings are not required, because this is a serial RS232 printer */
|
||||
|
||||
/* chip_enable_level = */ 1,
|
||||
/* chip_disable_level = */ 0,
|
||||
|
||||
/* post_chip_enable_wait_ns = */ 5,
|
||||
/* pre_chip_disable_wait_ns = */ 5,
|
||||
/* reset_pulse_width_ms = */ 1,
|
||||
/* post_reset_wait_ms = */ 6,
|
||||
/* sda_setup_time_ns = */ 20,
|
||||
/* sck_pulse_width_ns = */ 140,
|
||||
/* spi_mode = */ 1, /* old: sck_takeover_edge, new: active high (bit 1), rising edge (bit 0) */
|
||||
/* i2c_bus_clock_100kHz = */ 4,
|
||||
/* data_setup_time_ns = */ 30,
|
||||
/* write_pulse_width_ns = */ 40,
|
||||
/* tile_width = */ 48,
|
||||
/* tile_hight = */ 30,
|
||||
/* default_x_offset = */ 0,
|
||||
/* flipmode_x_offset = */ 0,
|
||||
/* pixel_width = */ 384,
|
||||
/* pixel_height = */ 240
|
||||
};
|
||||
|
||||
uint8_t u8x8_d_a2printer_384x240(u8x8_t *u8x8, uint8_t msg, uint8_t arg_int, void *arg_ptr)
|
||||
{
|
||||
switch(msg)
|
||||
{
|
||||
case U8X8_MSG_DISPLAY_SETUP_MEMORY:
|
||||
u8x8_d_helper_display_setup_memory(u8x8, &u8x8_a2printer_384x240_display_info);
|
||||
break;
|
||||
default:
|
||||
return u8x8_d_a2printer_common(u8x8, msg, arg_int, arg_ptr);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -181,7 +181,7 @@ static const u8x8_display_info_t u8x8_ld7032_60x32_display_info =
|
||||
/* post_reset_wait_ms = */ 100,
|
||||
/* sda_setup_time_ns = */ 30, /* 20ns, but cycle time is 60ns, so use 60/2 */
|
||||
/* sck_pulse_width_ns = */ 30, /* 20ns, but cycle time is 60ns, so use 60/2 */
|
||||
/* sck_takeover_edge = */ 1, /* rising edge */
|
||||
/* spi_mode = */ 1, /* active high, rising edge */
|
||||
/* i2c_bus_clock_100kHz = */ 4,
|
||||
/* data_setup_time_ns = */ 20,
|
||||
/* write_pulse_width_ns = */ 40,
|
||||
|
||||
@@ -54,7 +54,7 @@ static const u8x8_display_info_t u8x8_ls013b7dh03_128x128_display_info =
|
||||
/* post_reset_wait_ms = */ 6,
|
||||
/* sda_setup_time_ns = */ 227, /* 227 nsec according to the datasheet */
|
||||
/* sck_pulse_width_ns = */ 255, /* 450 nsec according to the datasheet */
|
||||
/* sck_takeover_edge = */ 1, /* rising edge */
|
||||
/* spi_mode = */ 3, /* active low, rising edge */
|
||||
/* i2c_bus_clock_100kHz = */ 4,
|
||||
/* data_setup_time_ns = */ 100,
|
||||
/* write_pulse_width_ns = */ 100,
|
||||
|
||||
@@ -188,7 +188,7 @@ static const u8x8_display_info_t u8x8_ssd1306_128x32_univision_display_info =
|
||||
/* post_reset_wait_ms = */ 100, /* far east OLEDs need much longer setup time */
|
||||
/* sda_setup_time_ns = */ 50, /* SSD1306: 15ns, but cycle time is 100ns, so use 100/2 */
|
||||
/* sck_pulse_width_ns = */ 50, /* SSD1306: 20ns, but cycle time is 100ns, so use 100/2, AVR: below 70: 8 MHz, >= 70 --> 4MHz clock */
|
||||
/* sck_takeover_edge = */ 1, /* rising edge */
|
||||
/* spi_mode = */ 1, /* active high, rising edge */
|
||||
/* i2c_bus_clock_100kHz = */ 4,
|
||||
/* data_setup_time_ns = */ 40,
|
||||
/* write_pulse_width_ns = */ 150, /* SSD1306: cycle time is 300ns, so use 300/2 = 150 */
|
||||
|
||||
@@ -188,7 +188,7 @@ static const u8x8_display_info_t u8x8_ssd1306_128x64_noname_display_info =
|
||||
/* post_reset_wait_ms = */ 100, /* far east OLEDs need much longer setup time */
|
||||
/* sda_setup_time_ns = */ 50, /* SSD1306: 15ns, but cycle time is 100ns, so use 100/2 */
|
||||
/* sck_pulse_width_ns = */ 50, /* SSD1306: 20ns, but cycle time is 100ns, so use 100/2, AVR: below 70: 8 MHz, >= 70 --> 4MHz clock */
|
||||
/* sck_takeover_edge = */ 1, /* rising edge */
|
||||
/* spi_mode = */ 1, /* active high, rising edge */
|
||||
/* i2c_bus_clock_100kHz = */ 4,
|
||||
/* data_setup_time_ns = */ 40,
|
||||
/* write_pulse_width_ns = */ 150, /* SSD1306: cycle time is 300ns, so use 300/2 = 150 */
|
||||
@@ -222,7 +222,7 @@ static const u8x8_display_info_t u8x8_sh1106_128x64_noname_display_info =
|
||||
/* post_reset_wait_ms = */ 100, /* far east OLEDs need much longer setup time */
|
||||
/* sda_setup_time_ns = */ 50, /* SSD1306: 15ns, but cycle time is 100ns, so use 100/2 */
|
||||
/* sck_pulse_width_ns = */ 50, /* SSD1306: 20ns, but cycle time is 100ns, so use 100/2, AVR: below 70: 8 MHz, >= 70 --> 4MHz clock */
|
||||
/* sck_takeover_edge = */ 1, /* rising edge */
|
||||
/* spi_mode = */ 1, /* active high, rising edge */
|
||||
/* i2c_bus_clock_100kHz = */ 4,
|
||||
/* data_setup_time_ns = */ 40,
|
||||
/* write_pulse_width_ns = */ 150, /* SSD1306: cycle time is 300ns, so use 300/2 = 150 */
|
||||
|
||||
@@ -198,7 +198,7 @@ static const u8x8_display_info_t u8x8_ssd1322_256x64_display_info =
|
||||
/* post_reset_wait_ms = */ 100, /* far east OLEDs need much longer setup time */
|
||||
/* sda_setup_time_ns = */ 50, /* SSD1322: 15ns, but cycle time is 100ns, so use 100/2 */
|
||||
/* sck_pulse_width_ns = */ 50, /* SSD1322: 20ns, but cycle time is 100ns, so use 100/2, AVR: below 70: 8 MHz, >= 70 --> 4MHz clock */
|
||||
/* sck_takeover_edge = */ 1, /* rising edge */
|
||||
/* spi_mode = */ 1, /* active high, rising edge */
|
||||
/* i2c_bus_clock_100kHz = */ 4,
|
||||
/* data_setup_time_ns = */ 10,
|
||||
/* write_pulse_width_ns = */ 150, /* SSD1322: cycle time is 300ns, so use 300/2 = 150 */
|
||||
|
||||
@@ -81,7 +81,7 @@ static const u8x8_display_info_t u8x8_st7565_128x64_display_info =
|
||||
/* post_reset_wait_ms = */ 1,
|
||||
/* sda_setup_time_ns = */ 50, /* st7565 datasheet, table 26, tsds */
|
||||
/* sck_pulse_width_ns = */ 120, /* half of cycle time (100ns according to datasheet), AVR: below 70: 8 MHz, >= 70 --> 4MHz clock */
|
||||
/* sck_takeover_edge = */ 1, /* rising edge */
|
||||
/* spi_mode = */ 1, /* active high, rising edge */
|
||||
/* i2c_bus_clock_100kHz = */ 4,
|
||||
/* data_setup_time_ns = */ 40, /* st7565 datasheet, table 24, tds8 */
|
||||
/* write_pulse_width_ns = */ 80, /* st7565 datasheet, table 24, tcclw */
|
||||
@@ -104,7 +104,7 @@ static const u8x8_display_info_t u8x8_st7565_128x32_display_info =
|
||||
/* post_reset_wait_ms = */ 1,
|
||||
/* sda_setup_time_ns = */ 50, /* st7565 datasheet, table 26, tsds */
|
||||
/* sck_pulse_width_ns = */ 120, /* half of cycle time (100ns according to datasheet), AVR: below 70: 8 MHz, >= 70 --> 4MHz clock */
|
||||
/* sck_takeover_edge = */ 1, /* rising edge */
|
||||
/* spi_mode = */ 1, /* active high, rising edge */
|
||||
/* i2c_bus_clock_100kHz = */ 4,
|
||||
/* data_setup_time_ns = */ 40, /* st7565 datasheet, table 24, tds8 */
|
||||
/* write_pulse_width_ns = */ 80, /* st7565 datasheet, table 24, tcclw */
|
||||
|
||||
@@ -156,7 +156,7 @@ static const u8x8_display_info_t u8x8_st7920_192x32_display_info =
|
||||
/* post_reset_wait_ms = */ 6,
|
||||
/* sda_setup_time_ns = */ 20,
|
||||
/* sck_pulse_width_ns = */ 140, /* datasheet ST7920 */
|
||||
/* sck_takeover_edge = */ 1, /* rising edge */
|
||||
/* spi_mode = */ 1, /* old: sck_takeover_edge, new: active high (bit 1), rising edge (bit 0) */
|
||||
/* i2c_bus_clock_100kHz = */ 4,
|
||||
/* data_setup_time_ns = */ 30,
|
||||
/* write_pulse_width_ns = */ 40,
|
||||
@@ -179,7 +179,7 @@ static const u8x8_display_info_t u8x8_st7920_128x64_display_info =
|
||||
/* post_reset_wait_ms = */ 6,
|
||||
/* sda_setup_time_ns = */ 20,
|
||||
/* sck_pulse_width_ns = */ 140, /* datasheet ST7920 */
|
||||
/* sck_takeover_edge = */ 1, /* rising edge */
|
||||
/* spi_mode = */ 1, /* active high, rising edge */
|
||||
/* i2c_bus_clock_100kHz = */ 4,
|
||||
/* data_setup_time_ns = */ 30,
|
||||
/* write_pulse_width_ns = */ 40,
|
||||
|
||||
@@ -134,7 +134,7 @@ static const u8x8_display_info_t u8x8_t6963_240x128_display_info =
|
||||
/* post_reset_wait_ms = */ 6,
|
||||
/* sda_setup_time_ns = */ 20,
|
||||
/* sck_pulse_width_ns = */ 140,
|
||||
/* sck_takeover_edge = */ 1,
|
||||
/* spi_mode = */ 1,
|
||||
/* i2c_bus_clock_100kHz = */ 4,
|
||||
/* data_setup_time_ns = */ 80,
|
||||
/* write_pulse_width_ns = */ 80,
|
||||
@@ -220,7 +220,7 @@ static const u8x8_display_info_t u8x8_t6963_256x64_display_info =
|
||||
/* post_reset_wait_ms = */ 6,
|
||||
/* sda_setup_time_ns = */ 20,
|
||||
/* sck_pulse_width_ns = */ 140,
|
||||
/* sck_takeover_edge = */ 1,
|
||||
/* spi_mode = */ 1,
|
||||
/* i2c_bus_clock_100kHz = */ 4,
|
||||
/* data_setup_time_ns = */ 80,
|
||||
/* write_pulse_width_ns = */ 80,
|
||||
@@ -302,7 +302,7 @@ static const u8x8_display_info_t u8x8_t6963_128x64_display_info =
|
||||
/* post_reset_wait_ms = */ 6,
|
||||
/* sda_setup_time_ns = */ 20,
|
||||
/* sck_pulse_width_ns = */ 140,
|
||||
/* sck_takeover_edge = */ 1,
|
||||
/* spi_mode = */ 1,
|
||||
/* i2c_bus_clock_100kHz = */ 4,
|
||||
/* data_setup_time_ns = */ 80,
|
||||
/* write_pulse_width_ns = */ 80,
|
||||
|
||||
@@ -107,7 +107,7 @@ static const u8x8_display_info_t u8x8_uc1701_display_info =
|
||||
/* post_reset_wait_ms = */ 6,
|
||||
/* sda_setup_time_ns = */ 12,
|
||||
/* sck_pulse_width_ns = */ 75, /* half of cycle time (100ns according to datasheet), AVR: below 70: 8 MHz, >= 70 --> 4MHz clock */
|
||||
/* sck_takeover_edge = */ 1, /* rising edge */
|
||||
/* spi_mode = */ 1, /* active high, rising edge */
|
||||
/* i2c_bus_clock_100kHz = */ 4,
|
||||
/* data_setup_time_ns = */ 30,
|
||||
/* write_pulse_width_ns = */ 40,
|
||||
|
||||
@@ -1079,3 +1079,405 @@ const uint8_t u8x8_font_pcsenior_u[515] U8X8_FONT_SECTION("u8x8_font_pcsenior_u"
|
||||
"\0Cg<\30<gC\0\7OxxO\7\0\0GcqYMgs\0\0AA\0"
|
||||
"\0\0\1\3\6\14\30\60`\0\0AA\0\0\0\10\14\6\3\6\14\10\0\200\200\200\200\200\200"
|
||||
"\200\200";
|
||||
/*
|
||||
Fontname: -FreeType-PxPlus IBM CGAthin-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1
|
||||
Copyright: Outline (vector) version (c) 2015 VileR
|
||||
Glyphs: 192/781
|
||||
BBX Build Mode: 3
|
||||
*/
|
||||
const uint8_t u8x8_font_pxplusibmcgathin_f[1794] U8X8_FONT_SECTION("u8x8_font_pxplusibmcgathin_f") =
|
||||
" \377\0\0\0\0\0\0\0\0\0\0\6_\6\0\0\0\0\0\7\0\0\7\0\0\0\24\24\24"
|
||||
"\24\0\0$*kk*\22\0\0F&\20\10db\0\60JEM\62HH\0\0\0\4\3\0\0"
|
||||
"\0\0\0\34\42A\0\0\0\0\0\0A\42\34\0\0\0\10*\34\34\34*\10\0\0\10\10>\10\10"
|
||||
"\0\0\0\0\200`\0\0\0\0\0\10\10\10\10\10\10\0\0\0\0`\0\0\0\0\0@ \20\10\4"
|
||||
"\2\0\0>aQIE>\0\0DB@@\0\0\0bQQIIf\0\0\42AIII"
|
||||
"\66\0\20\30\24RP\20\0\0'EEEE\71\0\0<JIII\60\0\0\3\1q\11\5"
|
||||
"\3\0\0\66IIII\66\0\0\6III)\36\0\0\0\0f\0\0\0\0\0\0\200f\0\0"
|
||||
"\0\0\0\10\24\42A\0\0\0\0$$$$$$\0\0\0\0A\42\24\10\0\0\2\1\1Q\11"
|
||||
"\6\0\0>A]UU\36\0\0|\22\21\21\22|\0\0AIII\66\0\0\34\42AAA"
|
||||
"\42\0\0AAA\42\34\0\0AI]Ac\0\0AI\35\1\3\0\0\34\42AQQ"
|
||||
"r\0\0\10\10\10\10\0\0\0AA\0\0\0\0\60@@A?\1\0\0A\10\24\42"
|
||||
"A@\0AA@@`\0\0\1\2\4\2\1\0\1\2\4\10\0\0\34\42AA\42"
|
||||
"\34\0\0AI\11\11\6\0\0\36!!\61!^@\0AI\31)F\0\0&IIII"
|
||||
"\62\0\0\3\1AA\1\3\0?@@@@?\0\0\17\20 @ \20\17\0?@@\70@"
|
||||
"@?\0A\42\24\10\24\42A\0\1\2DxD\2\1\0CaQIECa\0AAA\0"
|
||||
"\0\0\1\2\4\10\20 @\0\0AAA\0\0\0\10\4\2\1\2\4\10\0\200\200\200\200\200\200"
|
||||
"\200\200\0\0\0\3\4\0\0\0\0 TTTTx@\0\1\60HHH\60\0\70DDDD"
|
||||
"(\0\0\60HHH\61@\0\70TTTT\30\0\0\0H~I\1\2\0\0\230\244\244\244\244"
|
||||
"x\4\0A\10\4\4x\0\0\0D}@\0\0\0\0`\200\200\200\204}\0\0\1\20(D"
|
||||
"@\0\0\0A@\0\0\0\0|\4\4x\4\4x\0|\10\4\4\4x\0\0\70DDDD"
|
||||
"\70\0\0\204\374\230$$\30\0\0\30$$\230\374\204\0\0D|H\4\4\30\0\0HTTTT"
|
||||
"$\0\0\4\4?DD \0\0<@@@ |\0\0\14\20 @ \20\14\0<@@\70@"
|
||||
"@<\0D(\20(D\0\0\0\234\240\240\240\240|\0\0DdTLD\0\0\0\10\10\66AA"
|
||||
"\0\0\0\0\0w\0\0\0\0\0\0AA\66\10\10\0\0\2\1\1\2\2\1\0\0pHDBD"
|
||||
"Hp\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0z\0\0\0\0\0\30$$\347$$\0\0h^IAB"
|
||||
" \0BZ$$$ZB\0\0\25\26|\26\25\0\0\0\0\0w\0\0\0\0@\332\247\245\345Y"
|
||||
"\3\2\0\1\0\0\0\1\0\0~\201\231\245\245\201~\0\0&)))/(\0\0\10\24\42\10\24"
|
||||
"\42\0\0\10\10\10\10\10\70\0\0\10\10\10\10\10\10\0~\201\275\225\251\201~\0\1\1\1\1\1\1"
|
||||
"\1\1\0\6\11\11\6\0\0\0\0DD_DD\0\0\0\22\31\25\22\0\0\0\0\12\21\25\12\0"
|
||||
"\0\0\0\0\0\2\1\0\0\0\200~\20\20\20\16\20\0\6\11\11\1\1\1\0\0\0\20\20\0"
|
||||
"\0\0\0\0\200\200\240@\0\0\0\22\37\20\0\0\0\0\0&)))&\0\0\0\42\24\10\42\24"
|
||||
"\10\0J/\30(\64*\375 J/\30\210\324\312\251\260\225U*PhT\372@\0\60HE@@"
|
||||
" \0\1y\24\22\22\24x\0\0x\24\22\22\24y\1\0r)%%)r\0\0y\25\25\25\25"
|
||||
"y\0\0y\24\22\22\24y\0\0p(++(p\0\0|\12\11\11II\0\16\221\221\261\261"
|
||||
"J\0\0E}TTD\0\0\0D|TUE\0\0\2E}UUE\2\0\0E|TTE"
|
||||
"\0\0\0\1E|D\0\0\0\0\0D|E\1\0\0\2\1E}E\1\2\0\0\1D|D\1"
|
||||
"\0\0\0IIA\42\34\0\0z\11\21\42Cx\0\1\31$BB$\30\0\0\30$BB$"
|
||||
"\31\1\22)EEE)\22\0\0\21)EEE)\21\0\31$BB$\31\0\0\42\24\10\24\42"
|
||||
"\0\0>qYIMG>\0\0=A@@@<\0\0<@@@A=\0\0:AAAA"
|
||||
":\0\0=@@@@=\0\0\4HpH\5\1\0\0AU\24\24\10\0\0~\1\1IV"
|
||||
" \0\0 UUTx@\0\0 TTUy@\0\0\42UUUyB\0\0!UUUU"
|
||||
"y@\0!TTTxA\0\0 TUTx@\0\0 TTx\70TT\0\30$\244\244\344"
|
||||
"@\0\0\70UUTT\30\0\0\70TTUU\30\0\0:UUUU\32\0\0\71TTTT"
|
||||
"\31\0\0\0\1E|@\0\0\0\0\0D}A\0\0\2\1E}A\2\0\0\0\0\1D|A"
|
||||
"\0\0\0\60JJK>\2\0\0z\11\11\12\12q\0\0\60IJHH\60\0\0\60HHJI"
|
||||
"\60\0\0\60JIIJ\60\0\0\62JJJJ\62\0\0\62HHHH\62\0\0\10\10kk\10"
|
||||
"\10\0\270DdTLD:\0\0\70AB@@\70\0\0\70@@DB\70\0\0\70BAAB"
|
||||
"\70\0\0:@@@z@\0\0\30\240\240\240\242z\0\0\201\377\244$$\30\0\0\32\240\240\240\240"
|
||||
"z";
|
||||
/*
|
||||
Fontname: -FreeType-PxPlus IBM CGAthin-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1
|
||||
Copyright: Outline (vector) version (c) 2015 VileR
|
||||
Glyphs: 96/781
|
||||
BBX Build Mode: 3
|
||||
*/
|
||||
const uint8_t u8x8_font_pxplusibmcgathin_r[771] U8X8_FONT_SECTION("u8x8_font_pxplusibmcgathin_r") =
|
||||
" \0\0\0\0\0\0\0\0\0\0\6_\6\0\0\0\0\0\7\0\0\7\0\0\0\24\24\24"
|
||||
"\24\0\0$*kk*\22\0\0F&\20\10db\0\60JEM\62HH\0\0\0\4\3\0\0"
|
||||
"\0\0\0\34\42A\0\0\0\0\0\0A\42\34\0\0\0\10*\34\34\34*\10\0\0\10\10>\10\10"
|
||||
"\0\0\0\0\200`\0\0\0\0\0\10\10\10\10\10\10\0\0\0\0`\0\0\0\0\0@ \20\10\4"
|
||||
"\2\0\0>aQIE>\0\0DB@@\0\0\0bQQIIf\0\0\42AIII"
|
||||
"\66\0\20\30\24RP\20\0\0'EEEE\71\0\0<JIII\60\0\0\3\1q\11\5"
|
||||
"\3\0\0\66IIII\66\0\0\6III)\36\0\0\0\0f\0\0\0\0\0\0\200f\0\0"
|
||||
"\0\0\0\10\24\42A\0\0\0\0$$$$$$\0\0\0\0A\42\24\10\0\0\2\1\1Q\11"
|
||||
"\6\0\0>A]UU\36\0\0|\22\21\21\22|\0\0AIII\66\0\0\34\42AAA"
|
||||
"\42\0\0AAA\42\34\0\0AI]Ac\0\0AI\35\1\3\0\0\34\42AQQ"
|
||||
"r\0\0\10\10\10\10\0\0\0AA\0\0\0\0\60@@A?\1\0\0A\10\24\42"
|
||||
"A@\0AA@@`\0\0\1\2\4\2\1\0\1\2\4\10\0\0\34\42AA\42"
|
||||
"\34\0\0AI\11\11\6\0\0\36!!\61!^@\0AI\31)F\0\0&IIII"
|
||||
"\62\0\0\3\1AA\1\3\0?@@@@?\0\0\17\20 @ \20\17\0?@@\70@"
|
||||
"@?\0A\42\24\10\24\42A\0\1\2DxD\2\1\0CaQIECa\0AAA\0"
|
||||
"\0\0\1\2\4\10\20 @\0\0AAA\0\0\0\10\4\2\1\2\4\10\0\200\200\200\200\200\200"
|
||||
"\200\200\0\0\0\3\4\0\0\0\0 TTTTx@\0\1\60HHH\60\0\70DDDD"
|
||||
"(\0\0\60HHH\61@\0\70TTTT\30\0\0\0H~I\1\2\0\0\230\244\244\244\244"
|
||||
"x\4\0A\10\4\4x\0\0\0D}@\0\0\0\0`\200\200\200\204}\0\0\1\20(D"
|
||||
"@\0\0\0A@\0\0\0\0|\4\4x\4\4x\0|\10\4\4\4x\0\0\70DDDD"
|
||||
"\70\0\0\204\374\230$$\30\0\0\30$$\230\374\204\0\0D|H\4\4\30\0\0HTTTT"
|
||||
"$\0\0\4\4?DD \0\0<@@@ |\0\0\14\20 @ \20\14\0<@@\70@"
|
||||
"@<\0D(\20(D\0\0\0\234\240\240\240\240|\0\0DdTLD\0\0\0\10\10\66AA"
|
||||
"\0\0\0\0\0w\0\0\0\0\0\0AA\66\10\10\0\0\2\1\1\2\2\1\0\0pHDBD"
|
||||
"Hp";
|
||||
/*
|
||||
Fontname: -FreeType-PxPlus IBM CGAthin-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1
|
||||
Copyright: Outline (vector) version (c) 2015 VileR
|
||||
Glyphs: 18/781
|
||||
BBX Build Mode: 3
|
||||
*/
|
||||
const uint8_t u8x8_font_pxplusibmcgathin_n[218] U8X8_FONT_SECTION("u8x8_font_pxplusibmcgathin_n") =
|
||||
" :\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10*\34\34\34*\10\0\0\10\10>\10\10"
|
||||
"\0\0\0\0\200`\0\0\0\0\0\10\10\10\10\10\10\0\0\0\0`\0\0\0\0\0@ \20\10\4"
|
||||
"\2\0\0>aQIE>\0\0DB@@\0\0\0bQQIIf\0\0\42AIII"
|
||||
"\66\0\20\30\24RP\20\0\0'EEEE\71\0\0<JIII\60\0\0\3\1q\11\5"
|
||||
"\3\0\0\66IIII\66\0\0\6III)\36\0\0\0\0f\0\0\0";
|
||||
/*
|
||||
Fontname: -FreeType-PxPlus IBM CGAthin-Medium-R-Normal--8-80-72-72-P-64-ISO10646-1
|
||||
Copyright: Outline (vector) version (c) 2015 VileR
|
||||
Glyphs: 64/781
|
||||
BBX Build Mode: 3
|
||||
*/
|
||||
const uint8_t u8x8_font_pxplusibmcgathin_u[515] U8X8_FONT_SECTION("u8x8_font_pxplusibmcgathin_u") =
|
||||
" _\0\0\0\0\0\0\0\0\0\0\6_\6\0\0\0\0\0\7\0\0\7\0\0\0\24\24\24"
|
||||
"\24\0\0$*kk*\22\0\0F&\20\10db\0\60JEM\62HH\0\0\0\4\3\0\0"
|
||||
"\0\0\0\34\42A\0\0\0\0\0\0A\42\34\0\0\0\10*\34\34\34*\10\0\0\10\10>\10\10"
|
||||
"\0\0\0\0\200`\0\0\0\0\0\10\10\10\10\10\10\0\0\0\0`\0\0\0\0\0@ \20\10\4"
|
||||
"\2\0\0>aQIE>\0\0DB@@\0\0\0bQQIIf\0\0\42AIII"
|
||||
"\66\0\20\30\24RP\20\0\0'EEEE\71\0\0<JIII\60\0\0\3\1q\11\5"
|
||||
"\3\0\0\66IIII\66\0\0\6III)\36\0\0\0\0f\0\0\0\0\0\0\200f\0\0"
|
||||
"\0\0\0\10\24\42A\0\0\0\0$$$$$$\0\0\0\0A\42\24\10\0\0\2\1\1Q\11"
|
||||
"\6\0\0>A]UU\36\0\0|\22\21\21\22|\0\0AIII\66\0\0\34\42AAA"
|
||||
"\42\0\0AAA\42\34\0\0AI]Ac\0\0AI\35\1\3\0\0\34\42AQQ"
|
||||
"r\0\0\10\10\10\10\0\0\0AA\0\0\0\0\60@@A?\1\0\0A\10\24\42"
|
||||
"A@\0AA@@`\0\0\1\2\4\2\1\0\1\2\4\10\0\0\34\42AA\42"
|
||||
"\34\0\0AI\11\11\6\0\0\36!!\61!^@\0AI\31)F\0\0&IIII"
|
||||
"\62\0\0\3\1AA\1\3\0?@@@@?\0\0\17\20 @ \20\17\0?@@\70@"
|
||||
"@?\0A\42\24\10\24\42A\0\1\2DxD\2\1\0CaQIECa\0AAA\0"
|
||||
"\0\0\1\2\4\10\20 @\0\0AAA\0\0\0\10\4\2\1\2\4\10\0\200\200\200\200\200\200"
|
||||
"\200\200";
|
||||
/*
|
||||
Fontname: -FreeType-PxPlus IBM CGA-Medium-R-Normal--8-80-72-72-P-68-ISO10646-1
|
||||
Copyright: Outline (vector) version (c) 2015 VileR
|
||||
Glyphs: 192/781
|
||||
BBX Build Mode: 3
|
||||
*/
|
||||
const uint8_t u8x8_font_pxplusibmcga_f[1794] U8X8_FONT_SECTION("u8x8_font_pxplusibmcga_f") =
|
||||
" \377\0\0\0\0\0\0\0\0\0\6__\6\0\0\0\0\7\7\0\7\7\0\0\24\24"
|
||||
"\24\0$.kk:\22\0\0Ff\60\30\14fb\0\60zO]\67zH\0\4\7\3\0\0\0"
|
||||
"\0\0\0\34>cA\0\0\0\0Ac>\34\0\0\0\10*>\34\34>*\10\10\10>>\10\10"
|
||||
"\0\0\0\200\340`\0\0\0\0\10\10\10\10\10\10\0\0\0\0``\0\0\0\0`\60\30\14\6\3"
|
||||
"\1\0>qYM>\0@B@@\0\0bsYIOf\0\0\42cII\66"
|
||||
"\0\0\30\34\26SP\0'gEE}\71\0\0<~KIy\60\0\0\3\3qy\17\7"
|
||||
"\0\0\66II\66\0\0\6OIi?\36\0\0\0\0ff\0\0\0\0\0@v\66\0\0"
|
||||
"\0\0\10\34\66cA\0\0\0$$$$$$\0\0\0Ac\66\34\10\0\0\2\3QY\17\6"
|
||||
"\0\0>A]]\37\36\0|~\23\23~|\0\0AII\66\0\34>cAAc"
|
||||
"\42\0AAc>\34\0AI]Ac\0AI\35\1\3\0\34>cAQs"
|
||||
"r\0\10\10\0\0\0AA\0\0\0\60p@A?\1\0A\10\34w"
|
||||
"c\0AA@`p\0\16\34\16\0\6\14\30\0\34>cAc>"
|
||||
"\34\0AI\11\17\6\0\36?!q^\0\0A\11\31f\0\42gMYs\42"
|
||||
"\0\0\3AA\3\0\0@@\0\0\37?``?\37\0\0\60\30\60"
|
||||
"\0Cg<\30<gC\0\7OxxO\7\0\0GcqYMgs\0\0AA\0"
|
||||
"\0\0\1\3\6\14\30\60`\0\0AA\0\0\0\10\14\6\3\6\14\10\0\200\200\200\200\200\200"
|
||||
"\200\200\0\0\3\7\4\0\0\0 tTT<x@\0A?HHx\60\0\70|DDl("
|
||||
"\0\0\60xHI?@\0\70|TT\134\30\0\0H~I\3\2\0\0\230\274\244\244\370|"
|
||||
"\4\0A\10\4|x\0\0D}}@\0\0\0`\340\200\200\375}\0\0A\20\70l"
|
||||
"D\0\0A@\0\0\0||\30\70\34|x\0||\4\4|x\0\0\70|DD|\70"
|
||||
"\0\0\204\374\370\244$<\30\0\30<$\244\370\374\204\0D|xL\4\34\30\0H\134TTt$"
|
||||
"\0\0\0\4>D$\0\0<|@@<|@\0\34<``<\34\0\0<|p\70p|"
|
||||
"<\0Dl\70\20\70lD\0\234\274\240\240\374|\0\0Ldt\134Ld\0\0\10\10>wAA"
|
||||
"\0\0\0\0\0ww\0\0\0AAw>\10\10\0\0\2\3\1\3\2\3\1\0pxLFLx"
|
||||
"p\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0{{\0\0\0\30<$\347\347$$\0h~ICf"
|
||||
" \0Z~$$$~Z\0+/\374\374/+\0\0\0\0\0ww\0\0\0@\332\277\245\375Y"
|
||||
"\3\2\1\1\0\0\0\1\1\0~\201\231\245\245\201~\0\0&/)//(\0\10\34\66\42\10\34"
|
||||
"\66\42\10\10\10\10\70\70\0\0\0\10\10\10\10\10\10\0~\201\275\225\251\201~\0\1\1\1\1\1\1"
|
||||
"\1\1\0\6\17\11\17\6\0\0DD__DD\0\0\0\31\35\27\22\0\0\0\0\21\25\37\12\0"
|
||||
"\0\0\0\0\2\3\1\0\0\0\200\376~ >\36\0\6\17\11\1\0\0\0\20\20\0"
|
||||
"\0\0\0\0\200\240\340@\0\0\0\22\37\37\20\0\0\0\0&/)/&\0\0\42\66\34\10\42\66"
|
||||
"\34\10Oo\60\30lv\373\371Oo\60\30\314\356\273\221\221\325:Xl\366\362\60xME` "
|
||||
"\0\0y}\26\22\26|x\0x|\26\22\26}y\0r{)){r\0\0y}\25\25}y"
|
||||
"\0\0y}\26\22\26}y\0px++xp\0\0|~\13\11I\0\16\237\221\261\373J"
|
||||
"\0\0E}}TTD\0\0D||UUE\0\0F}UWF\0\0E}|TUE"
|
||||
"\0\0\1E}|D\0\0\0\0D|}E\1\0\0\2KyyK\2\0\0\1E||E\1"
|
||||
"\0\0IIc>\34\0}}\31\61}}\0\0\1\31<ff<\30\0\30<ff<\31"
|
||||
"\1\0\22;mEm;\22\0\21\71mEm\71\21\0\1\31<ff<\31\1\42\66\34\10\34\66"
|
||||
"\42\0>qYM>\0=}A@|<\0\0<|@A}=\0\0:{AA{:"
|
||||
"\0\0=}@@}=\0\0\14\134pq]\15\0\0AU\24\34\10\0~\1\11_v"
|
||||
" \0!uUT|x@\0 tTU}y@\0\2#uUU}{B!uUU}y"
|
||||
"@\0!uTT}y@\0 tWW|x@\0 tTT||TT\30<\244\244\344@"
|
||||
"\0\0\71}UT\134\30\0\0\70|TU]\31\0\0\2;}UU]\33\2\71}TT]\31"
|
||||
"\0\0\1E}|@\0\0\0\0D}}A\0\0\0\2\3E}}C\2\0\1E||A\1"
|
||||
"\0\0\60xJK>\2\0zz\12\12zp\0\0\62zJHx\60\0\0\60xHJz\62"
|
||||
"\0\0\62{II{\62\0\0\62zJJz\62\0\0\62zHHz\62\0\0\10\10kk\10\10"
|
||||
"\0\0\270|dTL|:\0:zB@xx@\0\70x@Bzz@\0:{AA{z"
|
||||
"@\0:z@@zz@\0\30\270\240\242\372z\0\0\201\377\377\244$<\30\0\232\272\240\240\372z"
|
||||
"\0";
|
||||
/*
|
||||
Fontname: -FreeType-PxPlus IBM CGA-Medium-R-Normal--8-80-72-72-P-68-ISO10646-1
|
||||
Copyright: Outline (vector) version (c) 2015 VileR
|
||||
Glyphs: 96/781
|
||||
BBX Build Mode: 3
|
||||
*/
|
||||
const uint8_t u8x8_font_pxplusibmcga_r[770] U8X8_FONT_SECTION("u8x8_font_pxplusibmcga_r") =
|
||||
" \0\0\0\0\0\0\0\0\0\6__\6\0\0\0\0\7\7\0\7\7\0\0\24\24"
|
||||
"\24\0$.kk:\22\0\0Ff\60\30\14fb\0\60zO]\67zH\0\4\7\3\0\0\0"
|
||||
"\0\0\0\34>cA\0\0\0\0Ac>\34\0\0\0\10*>\34\34>*\10\10\10>>\10\10"
|
||||
"\0\0\0\200\340`\0\0\0\0\10\10\10\10\10\10\0\0\0\0``\0\0\0\0`\60\30\14\6\3"
|
||||
"\1\0>qYM>\0@B@@\0\0bsYIOf\0\0\42cII\66"
|
||||
"\0\0\30\34\26SP\0'gEE}\71\0\0<~KIy\60\0\0\3\3qy\17\7"
|
||||
"\0\0\66II\66\0\0\6OIi?\36\0\0\0\0ff\0\0\0\0\0@v\66\0\0"
|
||||
"\0\0\10\34\66cA\0\0\0$$$$$$\0\0\0Ac\66\34\10\0\0\2\3QY\17\6"
|
||||
"\0\0>A]]\37\36\0|~\23\23~|\0\0AII\66\0\34>cAAc"
|
||||
"\42\0AAc>\34\0AI]Ac\0AI\35\1\3\0\34>cAQs"
|
||||
"r\0\10\10\0\0\0AA\0\0\0\60p@A?\1\0A\10\34w"
|
||||
"c\0AA@`p\0\16\34\16\0\6\14\30\0\34>cAc>"
|
||||
"\34\0AI\11\17\6\0\36?!q^\0\0A\11\31f\0\42gMYs\42"
|
||||
"\0\0\3AA\3\0\0@@\0\0\37?``?\37\0\0\60\30\60"
|
||||
"\0Cg<\30<gC\0\7OxxO\7\0\0GcqYMgs\0\0AA\0"
|
||||
"\0\0\1\3\6\14\30\60`\0\0AA\0\0\0\10\14\6\3\6\14\10\0\200\200\200\200\200\200"
|
||||
"\200\200\0\0\3\7\4\0\0\0 tTT<x@\0A?HHx\60\0\70|DDl("
|
||||
"\0\0\60xHI?@\0\70|TT\134\30\0\0H~I\3\2\0\0\230\274\244\244\370|"
|
||||
"\4\0A\10\4|x\0\0D}}@\0\0\0`\340\200\200\375}\0\0A\20\70l"
|
||||
"D\0\0A@\0\0\0||\30\70\34|x\0||\4\4|x\0\0\70|DD|\70"
|
||||
"\0\0\204\374\370\244$<\30\0\30<$\244\370\374\204\0D|xL\4\34\30\0H\134TTt$"
|
||||
"\0\0\0\4>D$\0\0<|@@<|@\0\34<``<\34\0\0<|p\70p|"
|
||||
"<\0Dl\70\20\70lD\0\234\274\240\240\374|\0\0Ldt\134Ld\0\0\10\10>wAA"
|
||||
"\0\0\0\0\0ww\0\0\0AAw>\10\10\0\0\2\3\1\3\2\3\1\0pxLFLx"
|
||||
"p";
|
||||
/*
|
||||
Fontname: -FreeType-PxPlus IBM CGA-Medium-R-Normal--8-80-72-72-P-68-ISO10646-1
|
||||
Copyright: Outline (vector) version (c) 2015 VileR
|
||||
Glyphs: 18/781
|
||||
BBX Build Mode: 3
|
||||
*/
|
||||
const uint8_t u8x8_font_pxplusibmcga_n[218] U8X8_FONT_SECTION("u8x8_font_pxplusibmcga_n") =
|
||||
" :\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10*>\34\34>*\10\10\10>>\10\10"
|
||||
"\0\0\0\200\340`\0\0\0\0\10\10\10\10\10\10\0\0\0\0``\0\0\0\0`\60\30\14\6\3"
|
||||
"\1\0>qYM>\0@B@@\0\0bsYIOf\0\0\42cII\66"
|
||||
"\0\0\30\34\26SP\0'gEE}\71\0\0<~KIy\60\0\0\3\3qy\17\7"
|
||||
"\0\0\66II\66\0\0\6OIi?\36\0\0\0\0ff\0\0\0";
|
||||
/*
|
||||
Fontname: -FreeType-PxPlus IBM CGA-Medium-R-Normal--8-80-72-72-P-68-ISO10646-1
|
||||
Copyright: Outline (vector) version (c) 2015 VileR
|
||||
Glyphs: 64/781
|
||||
BBX Build Mode: 3
|
||||
*/
|
||||
const uint8_t u8x8_font_pxplusibmcga_u[515] U8X8_FONT_SECTION("u8x8_font_pxplusibmcga_u") =
|
||||
" _\0\0\0\0\0\0\0\0\0\6__\6\0\0\0\0\7\7\0\7\7\0\0\24\24"
|
||||
"\24\0$.kk:\22\0\0Ff\60\30\14fb\0\60zO]\67zH\0\4\7\3\0\0\0"
|
||||
"\0\0\0\34>cA\0\0\0\0Ac>\34\0\0\0\10*>\34\34>*\10\10\10>>\10\10"
|
||||
"\0\0\0\200\340`\0\0\0\0\10\10\10\10\10\10\0\0\0\0``\0\0\0\0`\60\30\14\6\3"
|
||||
"\1\0>qYM>\0@B@@\0\0bsYIOf\0\0\42cII\66"
|
||||
"\0\0\30\34\26SP\0'gEE}\71\0\0<~KIy\60\0\0\3\3qy\17\7"
|
||||
"\0\0\66II\66\0\0\6OIi?\36\0\0\0\0ff\0\0\0\0\0@v\66\0\0"
|
||||
"\0\0\10\34\66cA\0\0\0$$$$$$\0\0\0Ac\66\34\10\0\0\2\3QY\17\6"
|
||||
"\0\0>A]]\37\36\0|~\23\23~|\0\0AII\66\0\34>cAAc"
|
||||
"\42\0AAc>\34\0AI]Ac\0AI\35\1\3\0\34>cAQs"
|
||||
"r\0\10\10\0\0\0AA\0\0\0\60p@A?\1\0A\10\34w"
|
||||
"c\0AA@`p\0\16\34\16\0\6\14\30\0\34>cAc>"
|
||||
"\34\0AI\11\17\6\0\36?!q^\0\0A\11\31f\0\42gMYs\42"
|
||||
"\0\0\3AA\3\0\0@@\0\0\37?``?\37\0\0\60\30\60"
|
||||
"\0Cg<\30<gC\0\7OxxO\7\0\0GcqYMgs\0\0AA\0"
|
||||
"\0\0\1\3\6\14\30\60`\0\0AA\0\0\0\10\14\6\3\6\14\10\0\200\200\200\200\200\200"
|
||||
"\200\200";
|
||||
/*
|
||||
Fontname: -FreeType-PxPlus TandyNew TV-Medium-R-Normal--8-80-72-72-P-70-ISO10646-1
|
||||
Copyright: Outline (vector) version (c) 2015 VileR
|
||||
Glyphs: 192/781
|
||||
BBX Build Mode: 3
|
||||
*/
|
||||
const uint8_t u8x8_font_pxplustandynewtv_f[1794] U8X8_FONT_SECTION("u8x8_font_pxplustandynewtv_f") =
|
||||
" \377\0\0\0\0\0\0\0\0\0\0\6__\6\0\0\0\3\7\0\0\7\3\0\24\24"
|
||||
"\24\0\0$.kk:\22\0Ff\60\30\14fb\0\60zO]\67zH\0\0\0\4\7\3\0"
|
||||
"\0\0\0\0\34>cA\0\0\0\0Ac>\34\0\0\10*>\34\34>*\10\0\10\10>>\10"
|
||||
"\10\0\0\0\200\340`\0\0\0\0\10\10\10\10\10\10\0\0\0\0``\0\0\0`\60\30\14\6\3"
|
||||
"\1\0\34>cIc>\34\0\0@B@@\0BcqYIof\0\42cIII"
|
||||
"\66\0\30\34\26SP\0/oIIIy\61\0<~KIIx\60\0\3\3qy\15\7"
|
||||
"\3\0\66III\66\0\6OIIi?\36\0\0\0\0ff\0\0\0\0\0\200\346f\0"
|
||||
"\0\0\0\0\10\34\66cA\0\0$$$$$$\0\0\0Ac\66\34\10\0\2\3\1Y]\7"
|
||||
"\2\0>A]]\37\36\0|~\13\11\13~|\0AII\66\0\34>cAAc"
|
||||
"\42\0AAc>\34\0AI]Ac\0AI\35\1\3\0\34>cAQ\63"
|
||||
"r\0\10\10\10\0\0\0AA\0\0\60p@A?\1\0A\10\34w"
|
||||
"c\0AA@`p\0\16\34\16\0\6\14\30\0>AAA"
|
||||
">\0AI\11\17\6\0>AA\341\377\276\0A\11\31wf\0\0\42gMYs"
|
||||
"\42\0\0\3AA\3\0?@@@?\0\37?`@`?\37\0?`\70`"
|
||||
"?\0cw\34\10\34wc\0\0\7OxxO\7\0GcqYMgs\0\0\0AA"
|
||||
"\0\0\1\3\6\14\30\60`\0\0\0AA\0\0\10\14\6\3\6\14\10\0\200\200\200\200\200\200"
|
||||
"\200\200\0\0\1\3\6\4\0\0 tTT<x@\0A?DD|\70\0\70|DDDl"
|
||||
"(\0\70|DE?@\0\70|TTT\134\30\0H~I\11\3\2\0\230\274\244\244\370|"
|
||||
"\4\0A\10\4|x\0\0\0D}}@\0\0\0`\340\200\200\375}\0A\20\70l"
|
||||
"D\0\0\0A@\0\0||\14x\14|x\0\4|x\4\4|x\0\70|DDD|"
|
||||
"\70\0\204\374\370\244$<\30\0\30<$\244\370\374\204\0D|xL\4\14\10\0H\134TTTt"
|
||||
"$\0\4\4?Dd \0<|@@<|@\0\34<`@`<\34\0<|`\70`|"
|
||||
"<\0Dl\70\20\70lD\0\234\274\240\240\240\374|\0\0Ldt\134Ld\0\0\10\10>wA"
|
||||
"A\0\0\0\0\357\357\0\0\0\0AAw>\10\10\0\2\3\1\3\2\3\1\0pxLFLx"
|
||||
"p\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\60}}\60\0\0\30<$\347\347$$\0\0h~IC"
|
||||
"f Z~$$$~Z\0\0+/\374\374/+\0\0\0\0\357\357\0\0\0@\232\277\245\245\375"
|
||||
"Y\2\2\2\0\0\0\2\2\0~\201\231\245\245\245\201~\0&/)//(\0\10\34\66\42\10\34"
|
||||
"\66\42\0\10\10\10\10\70\70\0\0\10\10\10\10\10\10\0~\201\275\225\225\251\201~\1\1\1\1\1\1"
|
||||
"\1\1\0\6\17\11\17\6\0\0\0DD__DD\0\0\21\31\35\27\22\0\0\0\21\25\25\37\12"
|
||||
"\0\0\0\0\4\6\3\1\0\0\0\200\376~ >\36\6\17\11\1\0\0\0\20\20\0"
|
||||
"\0\0\0\0\200\240\340@\0\0\0\0\22\37\37\20\0\0\0&/)/&\0\0\42\66\34\10\42\66"
|
||||
"\34\10Bo?Xl\326\373ABo?\30\314\356\273\221\225U?Zh\324\372A\0 p]M@"
|
||||
"` px,%/zp\0pz/%,xp\0pz-%-zp\0r{-'.{"
|
||||
"q\0y}\26\22\26}y\0x|\27\23\27|x\0|~\13\11I\0<~B\302\302f"
|
||||
"$\0||UWVTD\0||VWUDD\0|~UUUVD\0}}TTTU"
|
||||
"E\0\0\0E~D\0\0\0\0D~E\0\0\0\2E}}E\2\0\0\1E||E"
|
||||
"\1\0IIc>\34\0~\11\23\42}\0\70|EGF|\70\0\70|FGE|"
|
||||
"\70\0\70~EEE~\70\0:EGF\71\0=BBB=\0\42\66\34\10\34\66"
|
||||
"\42\0\134>sIg>\35\0<}CB@|<\0<|BCA|<\0\70zAAAz"
|
||||
"\70\0=}@@@}=\0\0\14\134rs]\14\0AU\24\34\10\0~\1\11_v"
|
||||
" \0 tUW>x@\0 tVW=x@\0 vUU>x@\0\42wUW>{"
|
||||
"A\0!uTT<yA\0 tWW<x@\0 TT|TTX\0\70|D\304\304l"
|
||||
"(\0\70|UWV\134\30\0\70|TVW]\30\0\70~UUU^\30\0\71}TTT]"
|
||||
"\31\0\0\0D}B\0\0\0\0F}@\0\0\0\2E}}B\0\0\0\1E||A"
|
||||
"\1\0\60zKK~>\2\0\12{q\13\12{q\0\60xIKJx\60\0\60xJKIx"
|
||||
"\60\0\60zIIIz\60\0\62{IKJ{\61\0\61yHHHy\61\0\0\10\10**\10"
|
||||
"\10\0\270|dTL|:\0<}CB<|@\0<|BC=|@\0\70zAA:x"
|
||||
"@\0=}@@=}@\0\234\274\242\243\241\374|\0\201\377\377\244$<\30\0\235\275\240\240\240\375"
|
||||
"}";
|
||||
/*
|
||||
Fontname: -FreeType-PxPlus TandyNew TV-Medium-R-Normal--8-80-72-72-P-70-ISO10646-1
|
||||
Copyright: Outline (vector) version (c) 2015 VileR
|
||||
Glyphs: 96/781
|
||||
BBX Build Mode: 3
|
||||
*/
|
||||
const uint8_t u8x8_font_pxplustandynewtv_r[770] U8X8_FONT_SECTION("u8x8_font_pxplustandynewtv_r") =
|
||||
" \0\0\0\0\0\0\0\0\0\0\6__\6\0\0\0\3\7\0\0\7\3\0\24\24"
|
||||
"\24\0\0$.kk:\22\0Ff\60\30\14fb\0\60zO]\67zH\0\0\0\4\7\3\0"
|
||||
"\0\0\0\0\34>cA\0\0\0\0Ac>\34\0\0\10*>\34\34>*\10\0\10\10>>\10"
|
||||
"\10\0\0\0\200\340`\0\0\0\0\10\10\10\10\10\10\0\0\0\0``\0\0\0`\60\30\14\6\3"
|
||||
"\1\0\34>cIc>\34\0\0@B@@\0BcqYIof\0\42cIII"
|
||||
"\66\0\30\34\26SP\0/oIIIy\61\0<~KIIx\60\0\3\3qy\15\7"
|
||||
"\3\0\66III\66\0\6OIIi?\36\0\0\0\0ff\0\0\0\0\0\200\346f\0"
|
||||
"\0\0\0\0\10\34\66cA\0\0$$$$$$\0\0\0Ac\66\34\10\0\2\3\1Y]\7"
|
||||
"\2\0>A]]\37\36\0|~\13\11\13~|\0AII\66\0\34>cAAc"
|
||||
"\42\0AAc>\34\0AI]Ac\0AI\35\1\3\0\34>cAQ\63"
|
||||
"r\0\10\10\10\0\0\0AA\0\0\60p@A?\1\0A\10\34w"
|
||||
"c\0AA@`p\0\16\34\16\0\6\14\30\0>AAA"
|
||||
">\0AI\11\17\6\0>AA\341\377\276\0A\11\31wf\0\0\42gMYs"
|
||||
"\42\0\0\3AA\3\0?@@@?\0\37?`@`?\37\0?`\70`"
|
||||
"?\0cw\34\10\34wc\0\0\7OxxO\7\0GcqYMgs\0\0\0AA"
|
||||
"\0\0\1\3\6\14\30\60`\0\0\0AA\0\0\10\14\6\3\6\14\10\0\200\200\200\200\200\200"
|
||||
"\200\200\0\0\1\3\6\4\0\0 tTT<x@\0A?DD|\70\0\70|DDDl"
|
||||
"(\0\70|DE?@\0\70|TTT\134\30\0H~I\11\3\2\0\230\274\244\244\370|"
|
||||
"\4\0A\10\4|x\0\0\0D}}@\0\0\0`\340\200\200\375}\0A\20\70l"
|
||||
"D\0\0\0A@\0\0||\14x\14|x\0\4|x\4\4|x\0\70|DDD|"
|
||||
"\70\0\204\374\370\244$<\30\0\30<$\244\370\374\204\0D|xL\4\14\10\0H\134TTTt"
|
||||
"$\0\4\4?Dd \0<|@@<|@\0\34<`@`<\34\0<|`\70`|"
|
||||
"<\0Dl\70\20\70lD\0\234\274\240\240\240\374|\0\0Ldt\134Ld\0\0\10\10>wA"
|
||||
"A\0\0\0\0\357\357\0\0\0\0AAw>\10\10\0\2\3\1\3\2\3\1\0pxLFLx"
|
||||
"p";
|
||||
/*
|
||||
Fontname: -FreeType-PxPlus TandyNew TV-Medium-R-Normal--8-80-72-72-P-70-ISO10646-1
|
||||
Copyright: Outline (vector) version (c) 2015 VileR
|
||||
Glyphs: 18/781
|
||||
BBX Build Mode: 3
|
||||
*/
|
||||
const uint8_t u8x8_font_pxplustandynewtv_n[218] U8X8_FONT_SECTION("u8x8_font_pxplustandynewtv_n") =
|
||||
" :\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
|
||||
"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\10*>\34\34>*\10\0\10\10>>\10"
|
||||
"\10\0\0\0\200\340`\0\0\0\0\10\10\10\10\10\10\0\0\0\0``\0\0\0`\60\30\14\6\3"
|
||||
"\1\0\34>cIc>\34\0\0@B@@\0BcqYIof\0\42cIII"
|
||||
"\66\0\30\34\26SP\0/oIIIy\61\0<~KIIx\60\0\3\3qy\15\7"
|
||||
"\3\0\66III\66\0\6OIIi?\36\0\0\0\0ff\0\0";
|
||||
/*
|
||||
Fontname: -FreeType-PxPlus TandyNew TV-Medium-R-Normal--8-80-72-72-P-70-ISO10646-1
|
||||
Copyright: Outline (vector) version (c) 2015 VileR
|
||||
Glyphs: 64/781
|
||||
BBX Build Mode: 3
|
||||
*/
|
||||
const uint8_t u8x8_font_pxplustandynewtv_u[515] U8X8_FONT_SECTION("u8x8_font_pxplustandynewtv_u") =
|
||||
" _\0\0\0\0\0\0\0\0\0\0\6__\6\0\0\0\3\7\0\0\7\3\0\24\24"
|
||||
"\24\0\0$.kk:\22\0Ff\60\30\14fb\0\60zO]\67zH\0\0\0\4\7\3\0"
|
||||
"\0\0\0\0\34>cA\0\0\0\0Ac>\34\0\0\10*>\34\34>*\10\0\10\10>>\10"
|
||||
"\10\0\0\0\200\340`\0\0\0\0\10\10\10\10\10\10\0\0\0\0``\0\0\0`\60\30\14\6\3"
|
||||
"\1\0\34>cIc>\34\0\0@B@@\0BcqYIof\0\42cIII"
|
||||
"\66\0\30\34\26SP\0/oIIIy\61\0<~KIIx\60\0\3\3qy\15\7"
|
||||
"\3\0\66III\66\0\6OIIi?\36\0\0\0\0ff\0\0\0\0\0\200\346f\0"
|
||||
"\0\0\0\0\10\34\66cA\0\0$$$$$$\0\0\0Ac\66\34\10\0\2\3\1Y]\7"
|
||||
"\2\0>A]]\37\36\0|~\13\11\13~|\0AII\66\0\34>cAAc"
|
||||
"\42\0AAc>\34\0AI]Ac\0AI\35\1\3\0\34>cAQ\63"
|
||||
"r\0\10\10\10\0\0\0AA\0\0\60p@A?\1\0A\10\34w"
|
||||
"c\0AA@`p\0\16\34\16\0\6\14\30\0>AAA"
|
||||
">\0AI\11\17\6\0>AA\341\377\276\0A\11\31wf\0\0\42gMYs"
|
||||
"\42\0\0\3AA\3\0?@@@?\0\37?`@`?\37\0?`\70`"
|
||||
"?\0cw\34\10\34wc\0\0\7OxxO\7\0GcqYMgs\0\0\0AA"
|
||||
"\0\0\1\3\6\14\30\60`\0\0\0AA\0\0\10\14\6\3\6\14\10\0\200\200\200\200\200\200"
|
||||
"\200\200";
|
||||
|
||||
@@ -58,6 +58,7 @@ void u8x8_SetupDefaults(u8x8_t *u8x8)
|
||||
u8x8->gpio_and_delay_cb = u8x8_dummy_cb;
|
||||
u8x8->is_font_inverse_mode = 0;
|
||||
u8x8->device_address = 0;
|
||||
u8x8->utf8_state = 0; /* also reset by u8x8_utf8_init */
|
||||
u8x8->i2c_address = 255;
|
||||
u8x8->debounce_default_pin_state = 255; /* assume all low active buttons */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user