├── LICENSE
├── N5110_GUI_encoder_demo.ino
├── README.md
├── c64enh_font.h
├── small4x7_font.h
├── small5x7_font.h
├── small5x7bold_font.h
├── term9x14_font.h
├── times_dig_16x24_font.h
└── tiny3x7_font.h
/LICENSE:
--------------------------------------------------------------------------------
1 | GNU LESSER GENERAL PUBLIC LICENSE
2 | Version 3, 29 June 2007
3 |
4 | Copyright (C) 2007 Free Software Foundation, Inc.
5 | Everyone is permitted to copy and distribute verbatim copies
6 | of this license document, but changing it is not allowed.
7 |
8 |
9 | This version of the GNU Lesser General Public License incorporates
10 | the terms and conditions of version 3 of the GNU General Public
11 | License, supplemented by the additional permissions listed below.
12 |
13 | 0. Additional Definitions.
14 |
15 | As used herein, "this License" refers to version 3 of the GNU Lesser
16 | General Public License, and the "GNU GPL" refers to version 3 of the GNU
17 | General Public License.
18 |
19 | "The Library" refers to a covered work governed by this License,
20 | other than an Application or a Combined Work as defined below.
21 |
22 | An "Application" is any work that makes use of an interface provided
23 | by the Library, but which is not otherwise based on the Library.
24 | Defining a subclass of a class defined by the Library is deemed a mode
25 | of using an interface provided by the Library.
26 |
27 | A "Combined Work" is a work produced by combining or linking an
28 | Application with the Library. The particular version of the Library
29 | with which the Combined Work was made is also called the "Linked
30 | Version".
31 |
32 | The "Minimal Corresponding Source" for a Combined Work means the
33 | Corresponding Source for the Combined Work, excluding any source code
34 | for portions of the Combined Work that, considered in isolation, are
35 | based on the Application, and not on the Linked Version.
36 |
37 | The "Corresponding Application Code" for a Combined Work means the
38 | object code and/or source code for the Application, including any data
39 | and utility programs needed for reproducing the Combined Work from the
40 | Application, but excluding the System Libraries of the Combined Work.
41 |
42 | 1. Exception to Section 3 of the GNU GPL.
43 |
44 | You may convey a covered work under sections 3 and 4 of this License
45 | without being bound by section 3 of the GNU GPL.
46 |
47 | 2. Conveying Modified Versions.
48 |
49 | If you modify a copy of the Library, and, in your modifications, a
50 | facility refers to a function or data to be supplied by an Application
51 | that uses the facility (other than as an argument passed when the
52 | facility is invoked), then you may convey a copy of the modified
53 | version:
54 |
55 | a) under this License, provided that you make a good faith effort to
56 | ensure that, in the event an Application does not supply the
57 | function or data, the facility still operates, and performs
58 | whatever part of its purpose remains meaningful, or
59 |
60 | b) under the GNU GPL, with none of the additional permissions of
61 | this License applicable to that copy.
62 |
63 | 3. Object Code Incorporating Material from Library Header Files.
64 |
65 | The object code form of an Application may incorporate material from
66 | a header file that is part of the Library. You may convey such object
67 | code under terms of your choice, provided that, if the incorporated
68 | material is not limited to numerical parameters, data structure
69 | layouts and accessors, or small macros, inline functions and templates
70 | (ten or fewer lines in length), you do both of the following:
71 |
72 | a) Give prominent notice with each copy of the object code that the
73 | Library is used in it and that the Library and its use are
74 | covered by this License.
75 |
76 | b) Accompany the object code with a copy of the GNU GPL and this license
77 | document.
78 |
79 | 4. Combined Works.
80 |
81 | You may convey a Combined Work under terms of your choice that,
82 | taken together, effectively do not restrict modification of the
83 | portions of the Library contained in the Combined Work and reverse
84 | engineering for debugging such modifications, if you also do each of
85 | the following:
86 |
87 | a) Give prominent notice with each copy of the Combined Work that
88 | the Library is used in it and that the Library and its use are
89 | covered by this License.
90 |
91 | b) Accompany the Combined Work with a copy of the GNU GPL and this license
92 | document.
93 |
94 | c) For a Combined Work that displays copyright notices during
95 | execution, include the copyright notice for the Library among
96 | these notices, as well as a reference directing the user to the
97 | copies of the GNU GPL and this license document.
98 |
99 | d) Do one of the following:
100 |
101 | 0) Convey the Minimal Corresponding Source under the terms of this
102 | License, and the Corresponding Application Code in a form
103 | suitable for, and under terms that permit, the user to
104 | recombine or relink the Application with a modified version of
105 | the Linked Version to produce a modified Combined Work, in the
106 | manner specified by section 6 of the GNU GPL for conveying
107 | Corresponding Source.
108 |
109 | 1) Use a suitable shared library mechanism for linking with the
110 | Library. A suitable mechanism is one that (a) uses at run time
111 | a copy of the Library already present on the user's computer
112 | system, and (b) will operate properly with a modified version
113 | of the Library that is interface-compatible with the Linked
114 | Version.
115 |
116 | e) Provide Installation Information, but only if you would otherwise
117 | be required to provide such information under section 6 of the
118 | GNU GPL, and only to the extent that such information is
119 | necessary to install and execute a modified version of the
120 | Combined Work produced by recombining or relinking the
121 | Application with a modified version of the Linked Version. (If
122 | you use option 4d0, the Installation Information must accompany
123 | the Minimal Corresponding Source and Corresponding Application
124 | Code. If you use option 4d1, you must provide the Installation
125 | Information in the manner specified by section 6 of the GNU GPL
126 | for conveying Corresponding Source.)
127 |
128 | 5. Combined Libraries.
129 |
130 | You may place library facilities that are a work based on the
131 | Library side by side in a single library together with other library
132 | facilities that are not Applications and are not covered by this
133 | License, and convey such a combined library under terms of your
134 | choice, if you do both of the following:
135 |
136 | a) Accompany the combined library with a copy of the same work based
137 | on the Library, uncombined with any other library facilities,
138 | conveyed under the terms of this License.
139 |
140 | b) Give prominent notice with the combined library that part of it
141 | is a work based on the Library, and explaining where to find the
142 | accompanying uncombined form of the same work.
143 |
144 | 6. Revised Versions of the GNU Lesser General Public License.
145 |
146 | The Free Software Foundation may publish revised and/or new versions
147 | of the GNU Lesser General Public License from time to time. Such new
148 | versions will be similar in spirit to the present version, but may
149 | differ in detail to address new problems or concerns.
150 |
151 | Each version is given a distinguishing version number. If the
152 | Library as you received it specifies that a certain numbered version
153 | of the GNU Lesser General Public License "or any later version"
154 | applies to it, you have the option of following the terms and
155 | conditions either of that published version or of any later version
156 | published by the Free Software Foundation. If the Library as you
157 | received it does not specify a version number of the GNU Lesser
158 | General Public License, you may choose any version of the GNU Lesser
159 | General Public License ever published by the Free Software Foundation.
160 |
161 | If the Library as you received it specifies that a proxy can decide
162 | whether future versions of the GNU Lesser General Public License shall
163 | apply, that proxy's public statement of acceptance of any version is
164 | permanent authorization for you to choose that version for the
165 | Library.
166 |
--------------------------------------------------------------------------------
/N5110_GUI_encoder_demo.ino:
--------------------------------------------------------------------------------
1 | /*
2 | (c)2018 Pawel A. Hernik
3 | YouTube video: https://youtu.be/GHULqZpVpz4
4 | */
5 | // *** CONNECTIONS ***
6 | // N5110 LCD from left:
7 | // #1 RST - Pin 9
8 | // #2 CS/CE - Pin 10
9 | // #3 DC - Pin 8
10 | // #4 MOSI/DIN - Pin 11
11 | // #5 SCK/CLK - Pin 13
12 | // #6 VCC 3.3V or 5V
13 | // #7 LIGHT
14 | // #8 GND
15 |
16 | // DHT11 pinout from left:
17 | // VCC DATA NC GND
18 |
19 | // Encoder pins to 2 and 4 (uses 1st interrupt)
20 | // Encoder push button to pin 3 (can use 2nd interrupt)
21 | // use debouncing capacitors (100nF seems to be enough)
22 |
23 | #define DHT11_PIN 14
24 | #define BACKLIGHT 6
25 |
26 | // uncomment to write min/max to EEEPROM
27 | //#define USE_EEPROM
28 |
29 | #include
30 | #include
31 | #include
32 |
33 | // define USESPI in LCD driver header for HW SPI version
34 | #include "N5110_SPI.h"
35 | #if USESPI==1
36 | #include
37 | #endif
38 | N5110_SPI lcd(9,10,8); // RST,CS,DC
39 |
40 | #include "c64enh_font.h"
41 | #include "times_dig_16x24_font.h"
42 | #include "term9x14_font.h"
43 | #include "tiny3x7_font.h"
44 | #include "small4x7_font.h"
45 | #include "small5x7_font.h"
46 | #include "small5x7bold_font.h"
47 | //#include "fonts_all.h"
48 |
49 | // -------------------------
50 | #define encoderPinA 2
51 | #define encoderPinB 4
52 | #define encoderButton 3
53 | volatile int encoderPos = 0;
54 |
55 | void initEncoder()
56 | {
57 | encoderPos=0;
58 | pinMode(encoderPinA, INPUT_PULLUP);
59 | pinMode(encoderPinB, INPUT_PULLUP);
60 | pinMode(encoderButton, INPUT_PULLUP);
61 | attachInterrupt(digitalPinToInterrupt(encoderPinA), readEncoderInt, CHANGE); // encoder pin on interrupt 0 = pin 2
62 | attachInterrupt(digitalPinToInterrupt(encoderButton), buttonInt, CHANGE); // encoder pin on interrupt 1 = pin 3
63 | }
64 |
65 | void buttonInt() {}
66 |
67 | void readEncoderInt()
68 | {
69 | //(digitalRead(encoderPinA) == digitalRead(encoderPinB)) ? encoderPos++ : encoderPos--;
70 | uint8_t pd = PIND & B10100; // pins 2 and 4 direct reading
71 | ((pd == B10100) || (pd == B00000)) ? encoderPos++ : encoderPos--;
72 | }
73 |
74 | int readButton()
75 | {
76 | static int lastState = HIGH;
77 | int v=0,state = digitalRead(encoderButton);
78 | if(state==LOW && lastState==HIGH) v=1;
79 | lastState = state;
80 | return v;
81 | }
82 |
83 | // -------------------------
84 | int freeMemory ()
85 | {
86 | extern int __heap_start, *__brkval;
87 | int v;
88 | return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
89 | }
90 | // -------------------------
91 | long readVcc()
92 | {
93 | long result;
94 | // Read 1.1V reference against AVcc
95 | ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1);
96 | delay(2); // Wait for Vref to settle
97 | ADCSRA |= _BV(ADSC); // Convert
98 | while (bit_is_set(ADCSRA,ADSC));
99 | result = ADCL;
100 | result |= ADCH<<8;
101 | result = 1125300L / result; // Back-calculate AVcc in mV
102 | return result;
103 | }
104 | // -------------------------
105 |
106 | #define DHT_OK 0
107 | #define DHT_CHECKSUM -1
108 | #define DHT_TIMEOUT -2
109 | int humidity,hum;
110 | int temp1,temp10;
111 |
112 | int readDHT11(int pin)
113 | {
114 | uint8_t bits[5];
115 | uint8_t bit = 7;
116 | uint8_t idx = 0;
117 |
118 | for (int i = 0; i < 5; i++) bits[i] = 0;
119 |
120 | // REQUEST SAMPLE
121 | pinMode(pin, OUTPUT);
122 | digitalWrite(pin, LOW);
123 | delay(18);
124 | digitalWrite(pin, HIGH);
125 | delayMicroseconds(40);
126 | pinMode(pin, INPUT_PULLUP);
127 |
128 | // ACKNOWLEDGE or TIMEOUT
129 | unsigned int loopCnt = 10000;
130 | while(digitalRead(pin) == LOW) if(!loopCnt--) return DHT_TIMEOUT;
131 |
132 | loopCnt = 10000;
133 | while(digitalRead(pin) == HIGH) if(!loopCnt--) return DHT_TIMEOUT;
134 |
135 | // READ OUTPUT - 40 BITS => 5 BYTES or TIMEOUT
136 | for (int i = 0; i < 40; i++) {
137 | loopCnt = 10000;
138 | while(digitalRead(pin) == LOW) if(!loopCnt--) return DHT_TIMEOUT;
139 |
140 | unsigned long t = micros();
141 | loopCnt = 10000;
142 | while(digitalRead(pin) == HIGH) if(!loopCnt--) return DHT_TIMEOUT;
143 |
144 | if(micros() - t > 40) bits[idx] |= (1 << bit);
145 | if(bit == 0) {
146 | bit = 7; // restart at MSB
147 | idx++; // next byte!
148 | }
149 | else bit--;
150 | }
151 | // bits[1] and bits[3] are always zero???
152 | hum = bits[0];
153 | //humidity = map(hum,33,55,50,78);
154 | humidity = hum;
155 | temp1 = bits[2];
156 | temp10 = bits[3];
157 | if(bits[4] != bits[0]+bits[1]+bits[2]+bits[3]) return DHT_CHECKSUM;
158 | return DHT_OK;
159 | }
160 |
161 | // -------------------------
162 | // -100.0 to 199.9 to integer
163 | void wrFloat(float f, int addr)
164 | {
165 | #ifdef USE_EEPROM
166 | unsigned int ui = (f+100)*10;
167 | EEPROM.write(addr+0, ui&0xff);
168 | EEPROM.write(addr+1, (ui>>8)&0xff);
169 | #endif
170 | }
171 |
172 | float rdFloat(int addr)
173 | {
174 | unsigned int ui = EEPROM.read(addr) + (EEPROM.read(addr+1)<<8);
175 | return (ui/10.0)-100.0;
176 | }
177 |
178 | // -------------------------
179 |
180 | enum wdt_time {
181 | SLEEP_15MS,
182 | SLEEP_30MS,
183 | SLEEP_60MS,
184 | SLEEP_120MS,
185 | SLEEP_250MS,
186 | SLEEP_500MS,
187 | SLEEP_1S,
188 | SLEEP_2S,
189 | SLEEP_4S,
190 | SLEEP_8S,
191 | SLEEP_FOREVER
192 | };
193 |
194 | ISR(WDT_vect) { wdt_disable(); }
195 |
196 | void powerDown(uint8_t time)
197 | {
198 | ADCSRA &= ~(1 << ADEN); // turn off ADC
199 | if(time != SLEEP_FOREVER) { // use watchdog timer
200 | wdt_enable(time);
201 | WDTCSR |= (1 << WDIE);
202 | }
203 | set_sleep_mode(SLEEP_MODE_PWR_DOWN); // most power saving
204 | cli();
205 | sleep_enable();
206 | sleep_bod_disable();
207 | sei();
208 | sleep_cpu();
209 | // ... sleeping here
210 | sleep_disable();
211 | ADCSRA |= (1 << ADEN); // turn on ADC
212 | }
213 |
214 | // --------------------------------------------------------------------------
215 | byte scr[84*4]; // frame buffer
216 | byte scrWd = 84;
217 | byte scrHt = 4;
218 |
219 | void clrBuf()
220 | {
221 | for(int i=0;i= scrWd) || (y < 0) || (y >= scrHt*8)) return;
227 | switch (color)
228 | {
229 | case 1: scr[x+(y/8)*scrWd] |= (1 << (y&7)); break;
230 | case 0: scr[x+(y/8)*scrWd] &= ~(1 << (y&7)); break;
231 | case 2: scr[x+(y/8)*scrWd] ^= (1 << (y&7)); break;
232 | }
233 | }
234 |
235 | void drawLineV(int x, int y0, int y1)
236 | {
237 | if(y1>y0)
238 | for(int y=y0; y<=y1; y++) drawPixel(x,y,1);
239 | else
240 | for(int y=y1; y<=y0; y++) drawPixel(x,y,1);
241 | }
242 |
243 | // --------------------------------------------------------------------------
244 |
245 | char buf[25],buf2[15];
246 | float temp,mint=1000,maxt=-1000;
247 | float minh=1000,maxh=-1000;
248 |
249 | int numT=0;
250 | int curT=0;
251 | float bufT[300];
252 | int mint2;
253 | int maxt2;
254 | int graphStart=0;
255 |
256 | int first=1;
257 | char *menuTxt[] = {"Temperature","Humidity","Both","Battery","Backlight","Contrast","EEPROM dump","Graph","Help","Reboot"};
258 | int numMenus=0;
259 | int menuLine;
260 | int menuStart;
261 | int numScrLines = 6;
262 | int menuMode = -1; // -1 -> menu of options, 0..n -> option
263 | int oldPos = 0;
264 |
265 |
266 | void setup()
267 | {
268 | first = 1;
269 | Serial.begin(9600);
270 | lcd.init();
271 | lcd.clrScr();
272 | for(int i=0;i<14;i++) pinMode(i, OUTPUT);
273 | #ifdef USE_EEPROM
274 | mint=rdFloat(0);
275 | maxt=rdFloat(2);
276 | minh=rdFloat(4);
277 | maxh=rdFloat(6);
278 | #endif
279 | //Serial.println(mint); Serial.println(maxt);
280 | if(mint<-40 || mint>100) mint=99;
281 | if(maxt<-40 || maxt>100) maxt=-99;
282 | if(minh<0 || minh>100) minh=99;
283 | if(maxh<0 || maxh>100) maxh=0;
284 | //CLKPR = 0x80; // lower internal clock frequency to save power
285 | //CLKPR = 0x02; // 0-16MHz, 1-8MHz, 2-4MHz, 3-2MHz, ..
286 | initEncoder();
287 | numMenus = sizeof(menuTxt)/sizeof(char*);
288 | analogWrite(BACKLIGHT,0); // 0=max
289 | }
290 |
291 | void drawBatt(int x, int y, int wd, int perc)
292 | {
293 | int w = wd*perc/100;
294 | lcd.fillWin(x,y,1+w,1,B01111111);
295 | x+=w+1;
296 | w=wd-w;
297 | if(w>0) {
298 | lcd.fillWin(x,y,w,1,B01000001);
299 | x+=w;
300 | }
301 | lcd.fillWin(x++,y,1,1,B01111111);
302 | lcd.fillWin(x++,y,1,1,B00011100);
303 | lcd.fillWin(x++,y,1,1,B00011100);
304 | }
305 |
306 | void drawBattBig(int x, int y, int wd, int perc)
307 | {
308 | int w = wd*perc/100;
309 | lcd.fillWin(x,y+0,1+w,1,B11111110);
310 | lcd.fillWin(x,y+1,1+w,1,B01111111);
311 | x+=w+1;
312 | w=wd-w;
313 | if(w>0) {
314 | lcd.fillWin(x,y+0,w,1,B00000010);
315 | lcd.fillWin(x,y+1,w,1,B01000000);
316 | x+=w;
317 | }
318 | lcd.fillWin(x,y+0,1,1,B11111110);
319 | lcd.fillWin(x,y+1,1,1,B01111111); x++;
320 | lcd.fillWin(x,y+0,1,1,B11110000);
321 | lcd.fillWin(x,y+1,1,1,B00001111); x++;
322 | lcd.fillWin(x,y+0,1,1,B11110000);
323 | lcd.fillWin(x,y+1,1,1,B00001111);
324 | }
325 |
326 | // ---------------------------------------
327 | int t=0;
328 | void drawSin()
329 | {
330 | if(encoderPos<0) encoderPos=0;
331 | if(encoderPos>30) encoderPos=30;
332 | float mult = encoderPos-15;
333 | int x,y,yold;
334 | scrWd = 84;
335 | scrHt = 4;
336 | clrBuf();
337 | for(x=0; x<84; x++) {
338 | y = 16+mult*(sin((x+t/4.0)/5.0)*cos(x/22.0));
339 | if(x==0 || y==yold)
340 | drawPixel(x,y,1);
341 | else
342 | drawLineV(x,y,yold);
343 | yold = y;
344 | }
345 | lcd.drawBuf(scr,0,1,scrWd,4);
346 | lcd.setFont(Small5x7PLBold);
347 | lcd.setDigitMinWd(4);
348 | snprintf(buf,99," Mult: %2d ",(int)mult);
349 | lcd.printStr(ALIGN_CENTER,0,buf);
350 | t+=4;
351 | }
352 |
353 | // ---------------------------------------
354 | int x;
355 | long v;
356 |
357 | void showTemp()
358 | {
359 | lcd.setFont(c64enh);
360 | lcd.printStr(ALIGN_CENTER, 0, "Temperature");
361 | buf[0]=0;
362 | strcat(buf," <"); dtostrf(mint,1,1,buf2); strcat(buf,buf2);
363 | strcat(buf,"' >"); dtostrf(maxt,1,1,buf2); strcat(buf,buf2); strcat(buf,"' ");
364 | lcd.printStr(ALIGN_CENTER, 5, buf);
365 |
366 | snprintf(buf,10,"%d",(int)temp);
367 | lcd.setFont(times_dig_16x24);
368 | lcd.setDigitMinWd(17);
369 | x=3;
370 | x=lcd.printStr(x, 1, buf);
371 | snprintf(buf,10,":%d",(int)temp10);
372 | x=lcd.printStr(x, 1, buf);
373 | lcd.setFont(Term9x14);
374 | lcd.printStr(x+1, 1, "`C");
375 | }
376 |
377 | void showHum()
378 | {
379 | lcd.setFont(c64enh);
380 | lcd.printStr(ALIGN_CENTER, 0, "Humidity");
381 | buf[0]=0;
382 | strcat(buf," <"); dtostrf(minh,1,0,buf2); strcat(buf,buf2);
383 | strcat(buf,"% >"); dtostrf(maxh,1,0,buf2); strcat(buf,buf2); strcat(buf,"% ");
384 | lcd.printStr(ALIGN_CENTER, 5, buf);
385 |
386 | snprintf(buf,10,"%d",humidity);
387 | lcd.setFont(times_dig_16x24);
388 | lcd.setDigitMinWd(17);
389 | x=lcd.printStr(22, 1, buf);
390 | lcd.setFont(Term9x14);
391 | lcd.printStr(x+2, 2, "%");
392 | }
393 |
394 | void showTempHum()
395 | {
396 | snprintf(buf,10,"%d",(int)temp);
397 | lcd.setFont(times_dig_16x24);
398 | lcd.setDigitMinWd(17);
399 | x=lcd.printStr(0, 0, buf);
400 | lcd.setFont(Term9x14);
401 | lcd.printStr(x+0, 0, "`C");
402 |
403 | snprintf(buf,10,"%d",humidity);
404 | lcd.setFont(times_dig_16x24);
405 | lcd.setDigitMinWd(17);
406 | lcd.printStr(39, 3, buf);
407 | lcd.setFont(Term9x14);
408 | lcd.printStr(ALIGN_RIGHT, 3, "%");
409 |
410 | lcd.setFont(c64enh);
411 | lcd.setDigitMinWd(6);
412 |
413 | buf[0]=0; strcat(buf,"<"); dtostrf(mint,1,0,buf2); strcat(buf,buf2); strcat(buf,"'");
414 | lcd.printStr(ALIGN_RIGHT, 0, buf);
415 | buf[0]=0; strcat(buf,">"); dtostrf(maxt,1,0,buf2); strcat(buf,buf2); strcat(buf,"'");
416 | lcd.printStr(ALIGN_RIGHT, 1, buf);
417 |
418 | buf[0]=0; strcat(buf,"<"); dtostrf(minh,1,0,buf2); strcat(buf,buf2); strcat(buf,"%");
419 | lcd.printStr(ALIGN_LEFT, 4, buf);
420 | buf[0]=0; strcat(buf,">"); dtostrf(maxh,1,0,buf2); strcat(buf,buf2); strcat(buf,"%");
421 | lcd.printStr(ALIGN_LEFT, 5, buf);
422 | }
423 |
424 | void showBattery()
425 | {
426 | lcd.setFont(c64enh);
427 | lcd.printStr(ALIGN_CENTER, 0, "Battery");
428 | lcd.setFont(c64enh);
429 | lcd.setDigitMinWd(6);
430 | dtostrf(v/1000.0,1,3,buf);
431 | drawBattBig(8,2,62,constrain(map(v,2900,4200,0,100),0,100));
432 | x=lcd.printStr(20, 5, buf);
433 | lcd.printStr(x+2, 5, "V");
434 | }
435 |
436 | void dumpEEPROM()
437 | {
438 | lcd.setFont(Tiny3x7PL);
439 | lcd.setCharMinWd(3);
440 | lcd.setDigitMinWd(3);
441 | if(encoderPos>=(128-6)*2) encoderPos=(128-6)*2;
442 | int st = encoderPos/2;
443 | for(int j=0;j84) encoderPos=84;
492 | snprintf(buf,6," %d ",encoderPos*255/84);
493 | lcd.setFont(Small5x7PL);
494 | lcd.setCharMinWd(5);
495 | lcd.setDigitMinWd(5);
496 | lcd.printStr(ALIGN_CENTER, 1, buf);
497 | lcd.printStr(ALIGN_LEFT, 1, "000");
498 | lcd.printStr(ALIGN_RIGHT, 1, "255");
499 | lcd.fillWin(0,2,encoderPos,1,0xfc);
500 | if(encoderPos<84) lcd.fillWin(encoderPos,2,84-encoderPos,1,0);
501 | analogWrite(BACKLIGHT,255-encoderPos*3);
502 | }
503 |
504 | void setContrast()
505 | {
506 | if(encoderPos>63) encoderPos=63;
507 | snprintf(buf,6,"%02X",encoderPos*2);
508 | lcd.setFont(Small5x7PL);
509 | lcd.setCharMinWd(5);
510 | lcd.setDigitMinWd(5);
511 | lcd.printStr(28, 1, buf);
512 | lcd.printStr(ALIGN_LEFT, 1, "00");
513 | lcd.printStr(58, 1, "7F");
514 | lcd.fillWin(0,2,encoderPos,1,0xfc);
515 | if(encoderPos<84) lcd.fillWin(encoderPos,2,84-encoderPos,1,0);
516 | lcd.setContrast(encoderPos*2);
517 | }
518 |
519 | void (*doReset)(void) = 0;
520 | void reboot()
521 | {
522 | if(encoderPos>=1*2) encoderPos=1*2;
523 | int st = encoderPos/2;
524 | lcd.setFont(c64enh);
525 | lcd.printStr(ALIGN_CENTER, 1, "Reboot?");
526 | lcd.setInvert(st?0:1);
527 | lcd.printStr(10, 3, " NO ");
528 | lcd.setInvert(st?1:0);
529 | lcd.printStr(43, 3, " YES ");
530 | lcd.setInvert(0);
531 | if(readButton()<=0) return;
532 | menuMode=-1;
533 | lcd.clrScr();
534 | if(st>0) { // yes
535 | lcd.printStr(ALIGN_CENTER, 2, "Rebooting ..."); delay(500);
536 | lcd.clrScr();
537 | doReset();
538 | }
539 | encoderPos=oldPos;
540 | }
541 |
542 | void setMenu(int m)
543 | {
544 | menuMode=m;
545 | lcd.clrScr();
546 | oldPos=encoderPos;
547 | encoderPos=0;
548 | }
549 |
550 | void endMenu()
551 | {
552 | if(readButton()>0) {
553 | menuMode=-1;
554 | lcd.clrScr();
555 | encoderPos=oldPos;
556 | }
557 | }
558 |
559 | void formatMenu(char *in, char *out, int num)
560 | {
561 | int j=strlen(in);
562 | out[0]=' ';
563 | strncpy(out+1,in,j++);
564 | for(;j=numMenus) { menuLine=numMenus-1; encoderPos=menuLine*2; }
602 | if(menuLine>=menuStart+numScrLines) menuStart=menuLine-numScrLines+1;
603 | if(menuLinemaxt) { maxt=temp; wrFloat(maxt,2); }
642 | if(humiditymaxh) { maxh=humidity; wrFloat(maxh,6); }
644 | if(first) {
645 | #ifndef USE_EEPROM
646 | mint=maxt=temp;
647 | minh=maxh=humidity;
648 | #endif
649 | first=0;
650 | lcd.clrScr();
651 | }
652 | }
653 | if(first && ret!=DHT_OK) {
654 | lcd.clrScr();
655 | lcd.setFont(Term9x14);
656 | lcd.printStr(ALIGN_CENTER, 1, "Sensor");
657 | lcd.printStr(ALIGN_CENTER, 3, "init");
658 | powerDown(SLEEP_2S);
659 | return;
660 | }
661 |
662 | handleMenu();
663 | //powerDown(SLEEP_2S);
664 | }
665 |
666 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # N5110_GUI_encoder_demo
2 | Simple GUI with Arduino, Encoder and Nokia LCD
3 |
4 | # YouTube video:
5 | https://youtu.be/GHULqZpVpz4
6 |
7 | # Connections:
8 |
9 | ## Encoder
10 | |Signal|Pin|
11 | |-|-|
12 | |PinA|2|
13 | |PinB|4|
14 | |Button|3|
15 |
16 | ## Nokia 5110 LCD
17 | |No|Signal | Pin|
18 | |-|-|-|
19 | | 1|RST | 9 |
20 | | 2|CS/CE | 10 |
21 | | 3|DC| 8 |
22 | | 4| MOSI/DIN | 11|
23 | |5| SCK/CLK | 13|
24 | |6| VCC | Vcc|
25 | |7| LIGHT |6|
26 | |8| GND |GND|
27 |
28 | ## DHT11 (for demo)
29 | |No|Signal|Pin|
30 | |-|-|-|
31 | |1|VCC|7|
32 | |2|DATA|2|
33 | |3|NC||
34 | |4|GND|GND|
35 |
36 |
--------------------------------------------------------------------------------
/c64enh_font.h:
--------------------------------------------------------------------------------
1 | #ifndef c64enh_font_h
2 | #define c64enh_font_h
3 |
4 | const uint8_t c64enh[] PROGMEM =
5 | {
6 | -7, 8, 32, '~'+1+18, // -width, height, firstChar, lastChar
7 | 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //
8 | 0x02, 0x5F, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, // !
9 | 0x06, 0x07, 0x07, 0x00, 0x00, 0x07, 0x07, 0x00, // "
10 | 0x07, 0x14, 0x7F, 0x7F, 0x14, 0x7F, 0x7F, 0x14, // #
11 | 0x06, 0x24, 0x2E, 0x6B, 0x6B, 0x3A, 0x12, 0x00, // $
12 | 0x06, 0x63, 0x73, 0x18, 0x0C, 0x67, 0x63, 0x00, // %
13 | 0x07, 0x32, 0x7F, 0x4D, 0x4D, 0x77, 0x72, 0x50, // &
14 | 0x04, 0x06, 0x09, 0x09, 0x06, 0x00, 0x00, 0x00, // '
15 | 0x04, 0x1C, 0x3E, 0x63, 0x41, 0x00, 0x00, 0x00, // (
16 | 0x04, 0x41, 0x63, 0x3E, 0x1C, 0x00, 0x00, 0x00, // )
17 | 0x07, 0x08, 0x2A, 0x3E, 0x1C, 0x3E, 0x2A, 0x08, // *
18 | 0x06, 0x08, 0x08, 0x3E, 0x3E, 0x08, 0x08, 0x00, // +
19 | 0x03, 0x80, 0xE0, 0x60, 0x00, 0x00, 0x00, 0x00, // ,
20 | 0x06, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, // -
21 | 0x02, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, // .
22 | 0x07, 0x40, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x02, // /
23 | 0x06, 0x3E, 0x7F, 0x49, 0x45, 0x7F, 0x3E, 0x00, // 0
24 | 0x06, 0x40, 0x44, 0x7F, 0x7F, 0x40, 0x40, 0x00, // 1
25 | 0x06, 0x62, 0x73, 0x59, 0x49, 0x4F, 0x46, 0x00, // 2
26 | 0x06, 0x22, 0x63, 0x49, 0x49, 0x7F, 0x36, 0x00, // 3
27 | 0x07, 0x18, 0x1C, 0x16, 0x13, 0x7F, 0x7F, 0x10, // 4
28 | 0x06, 0x27, 0x67, 0x45, 0x45, 0x7D, 0x39, 0x00, // 5
29 | 0x06, 0x3E, 0x7F, 0x49, 0x49, 0x7B, 0x32, 0x00, // 6
30 | 0x06, 0x01, 0x01, 0x79, 0x7D, 0x07, 0x03, 0x00, // 7
31 | 0x06, 0x36, 0x7F, 0x49, 0x49, 0x7F, 0x36, 0x00, // 8
32 | 0x06, 0x26, 0x6F, 0x49, 0x49, 0x7F, 0x3E, 0x00, // 9
33 | 0x02, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, // :
34 | 0x03, 0x80, 0xC4, 0x44, 0x00, 0x00, 0x00, 0x00, // ;
35 | 0x06, 0x10, 0x30, 0x7F, 0x7F, 0x30, 0x10, 0x00, // < min
36 | 0x05, 0x00, 0x7E, 0x43, 0x43, 0x7E, 0x00, 0x00, // = batt
37 | 0x06, 0x04, 0x06, 0x7F, 0x7F, 0x06, 0x04, 0x00, // > max
38 | 0x06, 0x02, 0x03, 0x51, 0x59, 0x0F, 0x06, 0x00, // ?
39 | 0x06, 0x3E, 0x7F, 0x41, 0x4D, 0x6F, 0x2E, 0x00, // @
40 | 0x06, 0x7C, 0x7E, 0x13, 0x13, 0x7E, 0x7C, 0x00, // A
41 | 0x06, 0x7F, 0x7F, 0x49, 0x49, 0x7F, 0x36, 0x00, // B
42 | 0x06, 0x3E, 0x7F, 0x41, 0x41, 0x63, 0x22, 0x00, // C
43 | 0x06, 0x7F, 0x7F, 0x41, 0x41, 0x7F, 0x3E, 0x00, // D
44 | 0x06, 0x7F, 0x7F, 0x49, 0x49, 0x41, 0x41, 0x00, // E
45 | 0x06, 0x7F, 0x7F, 0x09, 0x09, 0x01, 0x01, 0x00, // F
46 | 0x06, 0x3E, 0x7F, 0x41, 0x49, 0x7B, 0x3A, 0x00, // G
47 | 0x06, 0x7F, 0x7F, 0x08, 0x08, 0x7F, 0x7F, 0x00, // H
48 | 0x04, 0x41, 0x7F, 0x7F, 0x41, 0x00, 0x00, 0x00, // I
49 | 0x06, 0x20, 0x60, 0x41, 0x7F, 0x3F, 0x01, 0x00, // J
50 | 0x06, 0x7F, 0x7F, 0x1C, 0x36, 0x63, 0x41, 0x00, // K
51 | 0x06, 0x7F, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, // L
52 | 0x07, 0x7F, 0x7F, 0x06, 0x0C, 0x06, 0x7F, 0x7F, // M
53 | 0x06, 0x7F, 0x7F, 0x0C, 0x18, 0x7F, 0x7F, 0x00, // N
54 | 0x06, 0x3E, 0x7F, 0x41, 0x41, 0x7F, 0x3E, 0x00, // O
55 | 0x06, 0x7F, 0x7F, 0x09, 0x09, 0x0F, 0x06, 0x00, // P
56 | 0x06, 0x1E, 0x3F, 0x21, 0x61, 0x7F, 0x5E, 0x00, // Q
57 | 0x06, 0x7F, 0x7F, 0x19, 0x39, 0x6F, 0x46, 0x00, // R
58 | 0x06, 0x26, 0x6F, 0x49, 0x49, 0x7B, 0x32, 0x00, // S
59 | 0x06, 0x01, 0x01, 0x7F, 0x7F, 0x01, 0x01, 0x00, // T
60 | 0x06, 0x3F, 0x7F, 0x40, 0x40, 0x7F, 0x3F, 0x00, // U
61 | 0x06, 0x1F, 0x3F, 0x60, 0x60, 0x3F, 0x1F, 0x00, // V
62 | 0x07, 0x7F, 0x7F, 0x30, 0x18, 0x30, 0x7F, 0x7F, // W
63 | 0x06, 0x41, 0x63, 0x3E, 0x3E, 0x63, 0x41, 0x00, // X
64 | 0x06, 0x07, 0x0F, 0x78, 0x78, 0x0F, 0x07, 0x00, // Y
65 | 0x06, 0x61, 0x71, 0x59, 0x4D, 0x47, 0x43, 0x00, // Z
66 | 0x04, 0x7F, 0x7F, 0x41, 0x41, 0x00, 0x00, 0x00, // [
67 | 0x07, 0x02, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, // BackSlash
68 | 0x04, 0x41, 0x41, 0x7F, 0x7F, 0x00, 0x00, 0x00, // ]
69 | 0x06, 0x08, 0x0C, 0xFE, 0xFE, 0x0C, 0x08, 0x00, // ^
70 | 0x07, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, // _
71 | 0x07, 0x1C, 0x3E, 0x63, 0x41, 0x63, 0x14, 0x14, // `
72 | 0x06, 0x20, 0x74, 0x54, 0x54, 0x7C, 0x78, 0x00, // a
73 | 0x06, 0x7F, 0x7F, 0x44, 0x44, 0x7C, 0x38, 0x00, // b
74 | 0x05, 0x38, 0x7C, 0x44, 0x44, 0x44, 0x00, 0x00, // c
75 | 0x06, 0x38, 0x7C, 0x44, 0x44, 0x7F, 0x7F, 0x00, // d
76 | 0x06, 0x38, 0x7C, 0x54, 0x54, 0x5C, 0x18, 0x00, // e
77 | 0x05, 0x08, 0x7E, 0x7F, 0x09, 0x09, 0x00, 0x00, // f
78 | 0x06, 0x98, 0xBC, 0xA4, 0xA4, 0xFC, 0x7C, 0x00, // g
79 | 0x06, 0x7F, 0x7F, 0x04, 0x04, 0x7C, 0x78, 0x00, // h
80 | 0x04, 0x44, 0x7D, 0x7D, 0x40, 0x00, 0x00, 0x00, // i
81 | 0x05, 0x80, 0x80, 0x80, 0xFD, 0x7D, 0x00, 0x00, // j
82 | 0x06, 0x7F, 0x7F, 0x10, 0x38, 0x6C, 0x44, 0x00, // k
83 | 0x04, 0x41, 0x7F, 0x7F, 0x40, 0x00, 0x00, 0x00, // l
84 | 0x07, 0x78, 0x7C, 0x0C, 0x38, 0x0C, 0x7C, 0x78, // m
85 | 0x06, 0x7C, 0x7C, 0x04, 0x04, 0x7C, 0x78, 0x00, // n
86 | 0x06, 0x38, 0x7C, 0x44, 0x44, 0x7C, 0x38, 0x00, // o
87 | 0x06, 0xFC, 0xFC, 0x24, 0x24, 0x3C, 0x18, 0x00, // p
88 | 0x06, 0x18, 0x3C, 0x24, 0x24, 0xFC, 0xFC, 0x00, // q
89 | 0x06, 0x7C, 0x7C, 0x04, 0x04, 0x0C, 0x08, 0x00, // r
90 | 0x06, 0x48, 0x5C, 0x54, 0x54, 0x74, 0x24, 0x00, // s
91 | 0x05, 0x04, 0x3F, 0x7F, 0x44, 0x44, 0x00, 0x00, // t
92 | 0x06, 0x3C, 0x7C, 0x40, 0x40, 0x7C, 0x7C, 0x00, // u
93 | 0x06, 0x1C, 0x3C, 0x60, 0x60, 0x3C, 0x1C, 0x00, // v
94 | 0x07, 0x1C, 0x7C, 0x60, 0x38, 0x60, 0x7C, 0x1C, // w
95 | 0x06, 0x44, 0x6C, 0x38, 0x38, 0x6C, 0x44, 0x00, // x
96 | 0x06, 0x9C, 0xBC, 0xA0, 0xE0, 0x7C, 0x3C, 0x00, // y
97 | 0x06, 0x44, 0x64, 0x74, 0x5C, 0x4C, 0x44, 0x00, // z
98 | 0x05, 0x08, 0x3E, 0x7F, 0x41, 0x41, 0x00, 0x00, // {
99 | 0x02, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, // |
100 | 0x05, 0x41, 0x41, 0x7F, 0x3E, 0x08, 0x00, 0x00, // }
101 | 0x05, 0x10, 0x18, 0x18, 0x18, 0x08, 0x00, 0x00, // ~
102 | 0x02, 0x7E, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, //
103 |
104 | 0x07, 0x7C, 0x7E, 0x13, 0x13, 0x7E, 0xFC, 0x80, // Ą
105 | 0x06, 0x3C, 0x7E, 0x46, 0x43, 0x66, 0x24, 0x00, // !
106 | 0x07, 0x7F, 0x7F, 0x49, 0x49, 0x41, 0xC1, 0x80, // "
107 | 0x06, 0x7F, 0x7F, 0x48, 0x44, 0x40, 0x40, 0x00, // #
108 | 0x06, 0x7E, 0x7E, 0x0C, 0x19, 0x7E, 0x7E, 0x00, // $
109 | 0x06, 0x3C, 0x7E, 0x46, 0x43, 0x7E, 0x3C, 0x00, // %
110 | 0x06, 0x24, 0x6E, 0x4A, 0x4E, 0x7B, 0x30, 0x00, // &
111 | 0x06, 0x62, 0x76, 0x5A, 0x4F, 0x46, 0x42, 0x00, // '
112 | 0x06, 0x69, 0x79, 0x59, 0x4D, 0x4F, 0x4B, 0x00, // (
113 |
114 | 0x07, 0x20, 0x74, 0x54, 0x54, 0x7C, 0xF8, 0x80, // ą
115 | 0x05, 0x38, 0x7C, 0x44, 0x46, 0x45, 0x00, 0x00, // *
116 | 0x06, 0x38, 0x7C, 0x54, 0x54, 0xDC, 0x98, 0x00, // +
117 | 0x04, 0x51, 0x7F, 0x7F, 0x44, 0x00, 0x00, 0x00, // ,
118 | 0x06, 0x7C, 0x7C, 0x04, 0x06, 0x7D, 0x78, 0x00, // -
119 | 0x06, 0x38, 0x7C, 0x44, 0x46, 0x7D, 0x38, 0x00, // .
120 | 0x06, 0x48, 0x5C, 0x54, 0x56, 0x75, 0x24, 0x00, // /
121 | 0x06, 0x44, 0x64, 0x76, 0x5D, 0x4C, 0x44, 0x00, // 0
122 | 0x06, 0x44, 0x64, 0x75, 0x5D, 0x4C, 0x44, 0x00, // 1
123 | };
124 |
125 | #endif
126 |
--------------------------------------------------------------------------------
/small4x7_font.h:
--------------------------------------------------------------------------------
1 | #ifndef Small4x7PL_font_h
2 | #define Small4x7PL_font_h
3 |
4 | #include "Arduino.h"
5 |
6 | const uint8_t Small4x7PL[] PROGMEM =
7 | {
8 | -5, 8, 32, '~'+1+18+2, // -width, height, firstChar, lastChar
9 | 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, //
10 | 0x01, 0x5F, 0x00, 0x00, 0x00, 0x00, // !
11 | 0x03, 0x03, 0x00, 0x03, 0x00, 0x00, // "
12 | 0x05, 0x14, 0x7F, 0x14, 0x7F, 0x14, // #
13 | 0x05, 0x24, 0x4A, 0xFF, 0x4A, 0x34, // $
14 | 0x03, 0x61, 0x1C, 0x43, 0x00, 0x00, // %
15 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // &
16 | 0x03, 0x02, 0x05, 0x02, 0x00, 0x00, // '
17 | 0x02, 0x3E, 0x41, 0x00, 0x00, 0x00, // (
18 | 0x02, 0x41, 0x3E, 0x00, 0x00, 0x00, // )
19 | 0x05, 0x14, 0x08, 0x1C, 0x08, 0x14, // *
20 | 0x03, 0x08, 0x1C, 0x08, 0x00, 0x00, // +
21 | 0x02, 0x80, 0x40, 0x00, 0x00, 0x00, // ,
22 | 0x03, 0x08, 0x08, 0x08, 0x00, 0x00, // -
23 | 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, // .
24 | 0x03, 0x60, 0x1C, 0x03, 0x00, 0x00, // /
25 | 0x04, 0x3E, 0x41, 0x41, 0x3E, 0x00, // 0
26 | 0x03, 0x42, 0x7F, 0x40, 0x00, 0x00, // 1
27 | 0x04, 0x62, 0x51, 0x49, 0x46, 0x00, // 2
28 | 0x04, 0x22, 0x49, 0x49, 0x36, 0x00, // 3
29 | 0x04, 0x18, 0x14, 0x12, 0x7F, 0x00, // 4
30 | 0x04, 0x4F, 0x49, 0x49, 0x31, 0x00, // 5
31 | 0x04, 0x3E, 0x49, 0x49, 0x32, 0x00, // 6
32 | 0x04, 0x01, 0x71, 0x09, 0x07, 0x00, // 7
33 | 0x04, 0x36, 0x49, 0x49, 0x36, 0x00, // 8
34 | 0x04, 0x26, 0x49, 0x49, 0x3E, 0x00, // 9
35 | 0x01, 0x28, 0x00, 0x00, 0x00, 0x00, // :
36 | 0x01, 0xC8, 0x00, 0x00, 0x00, 0x00, // ;
37 | 0x03, 0x08, 0x14, 0x22, 0x00, 0x00, // <
38 | 0x03, 0x14, 0x14, 0x14, 0x00, 0x00, // =
39 | 0x03, 0x22, 0x14, 0x08, 0x00, 0x00, // >
40 | 0x04, 0x02, 0x51, 0x09, 0x06, 0x00, // ?
41 | 0x05, 0x3E, 0x59, 0x59, 0x59, 0x46, // @
42 | 0x04, 0x7E, 0x11, 0x11, 0x7E, 0x00, // A
43 | 0x04, 0x7F, 0x49, 0x49, 0x36, 0x00, // B
44 | 0x04, 0x3E, 0x41, 0x41, 0x22, 0x00, // C
45 | 0x04, 0x7F, 0x41, 0x41, 0x3E, 0x00, // D
46 | 0x04, 0x7F, 0x49, 0x49, 0x41, 0x00, // E
47 | 0x04, 0x7F, 0x09, 0x09, 0x01, 0x00, // F
48 | 0x04, 0x3E, 0x41, 0x49, 0x3A, 0x00, // G
49 | 0x04, 0x7F, 0x08, 0x08, 0x7F, 0x00, // H
50 | 0x01, 0x7F, 0x00, 0x00, 0x00, 0x00, // I
51 | 0x04, 0x21, 0x41, 0x41, 0x3F, 0x00, // J
52 | 0x04, 0x7F, 0x08, 0x14, 0x63, 0x00, // K
53 | 0x04, 0x7F, 0x40, 0x40, 0x40, 0x00, // L
54 | 0x05, 0x7F, 0x02, 0x1C, 0x02, 0x7F, // M
55 | 0x04, 0x7F, 0x02, 0x04, 0x7F, 0x00, // N
56 | 0x04, 0x3E, 0x41, 0x41, 0x3E, 0x00, // O
57 | 0x04, 0x7F, 0x11, 0x11, 0x0E, 0x00, // P
58 | 0x04, 0x3E, 0x41, 0xC1, 0xBE, 0x00, // Q
59 | 0x04, 0x7F, 0x11, 0x11, 0x6E, 0x00, // R
60 | 0x04, 0x26, 0x49, 0x49, 0x32, 0x00, // S
61 | 0x03, 0x01, 0x7F, 0x01, 0x00, 0x00, // T
62 | 0x04, 0x3F, 0x40, 0x40, 0x3F, 0x00, // U
63 | 0x05, 0x07, 0x18, 0x60, 0x18, 0x07, // V
64 | 0x05, 0x1F, 0x60, 0x18, 0x60, 0x1F, // W
65 | 0x05, 0x63, 0x14, 0x08, 0x14, 0x63, // X
66 | 0x05, 0x03, 0x0C, 0x70, 0x0C, 0x03, // Y
67 | 0x04, 0x71, 0x49, 0x45, 0x43, 0x00, // Z
68 | 0x03, 0x7F, 0x41, 0x41, 0x00, 0x00, // [
69 | 0x05, 0x02, 0x04, 0x08, 0x10, 0x20, // BackSlash
70 | 0x03, 0x41, 0x41, 0x7F, 0x00, 0x00, // ]
71 | 0x03, 0x02, 0x01, 0x02, 0x00, 0x00, // ^
72 | 0x04, 0x80, 0x80, 0x80, 0x80, 0x00, // _
73 | 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, // `
74 | 0x05, 0x20, 0x54, 0x54, 0x38, 0x40, // a
75 | 0x04, 0x3F, 0x48, 0x44, 0x38, 0x00, // b
76 | 0x04, 0x38, 0x44, 0x44, 0x28, 0x00, // c
77 | 0x04, 0x38, 0x44, 0x44, 0x7F, 0x00, // d
78 | 0x04, 0x38, 0x54, 0x54, 0x18, 0x00, // e
79 | 0x03, 0x08, 0x7E, 0x09, 0x00, 0x00, // f
80 | 0x04, 0x98, 0xA4, 0xA4, 0x58, 0x00, // g
81 | 0x04, 0x7F, 0x04, 0x04, 0x78, 0x00, // h
82 | 0x01, 0x7D, 0x00, 0x00, 0x00, 0x00, // i
83 | 0x03, 0x80, 0x80, 0x7D, 0x00, 0x00, // j
84 | 0x04, 0x7F, 0x10, 0x28, 0x44, 0x00, // k
85 | 0x02, 0x3F, 0x40, 0x00, 0x00, 0x00, // l
86 | 0x05, 0x78, 0x04, 0x18, 0x04, 0x78, // m
87 | 0x04, 0x7C, 0x04, 0x04, 0x78, 0x00, // n
88 | 0x04, 0x38, 0x44, 0x44, 0x38, 0x00, // o
89 | 0x04, 0xFC, 0x24, 0x24, 0x18, 0x00, // p
90 | 0x04, 0x18, 0x24, 0x24, 0xFC, 0x00, // q
91 | 0x04, 0x7C, 0x08, 0x04, 0x04, 0x00, // r
92 | 0x04, 0x48, 0x54, 0x54, 0x24, 0x00, // s
93 | 0x03, 0x04, 0x3F, 0x44, 0x00, 0x00, // t
94 | 0x04, 0x3C, 0x40, 0x40, 0x7C, 0x00, // u
95 | 0x05, 0x1C, 0x20, 0x40, 0x20, 0x1C, // v
96 | 0x05, 0x1C, 0x60, 0x18, 0x60, 0x1C, // w
97 | 0x05, 0x44, 0x28, 0x10, 0x28, 0x44, // x
98 | 0x04, 0x9C, 0xA0, 0xA0, 0x7C, 0x00, // y
99 | 0x04, 0x64, 0x54, 0x54, 0x4C, 0x00, // z
100 | 0x03, 0x08, 0x36, 0x41, 0x00, 0x00, // {
101 | 0x01, 0x7F, 0x00, 0x00, 0x00, 0x00, // |
102 | 0x03, 0x41, 0x36, 0x08, 0x00, 0x00, // }
103 | 0x04, 0x02, 0x01, 0x02, 0x01, 0x00, // ~
104 | 0x05, 0xFF, 0x81, 0x81, 0x81, 0xFF, //
105 |
106 | 0x04, 0x7E, 0x11, 0x91, 0x7E, 0x00, // €
107 | 0x04, 0x3C, 0x46, 0x43, 0x24, 0x00, //
108 | 0x04, 0x7F, 0x49, 0xC9, 0x81, 0x00, // ‚
109 | 0x04, 0x7F, 0x48, 0x44, 0x40, 0x00, //
110 | 0x04, 0x7E, 0x05, 0x0B, 0x7C, 0x00, // „
111 | 0x04, 0x3C, 0x46, 0x43, 0x3C, 0x00, // …
112 | 0x04, 0x24, 0x4E, 0x4B, 0x32, 0x00, // †
113 | 0x04, 0x62, 0x56, 0x4B, 0x46, 0x00, // ‡
114 | 0x04, 0x69, 0x59, 0x4D, 0x4B, 0x00, //
115 | 0x05, 0x20, 0x54, 0x54, 0xF8, 0x80, // ‰
116 |
117 | 0x04, 0x38, 0x44, 0x46, 0x29, 0x00, // Š
118 | 0x04, 0x38, 0x54, 0xD4, 0x98, 0x00, // ‹
119 | 0x03, 0x08, 0x3F, 0x42, 0x00, 0x00, // Ś
120 | 0x04, 0x7C, 0x06, 0x05, 0x78, 0x00, // Ť
121 | 0x04, 0x38, 0x44, 0x46, 0x39, 0x00, // Ž
122 | 0x04, 0x48, 0x54, 0x56, 0x25, 0x00, // Ź
123 | 0x04, 0x64, 0x56, 0x55, 0x4C, 0x00, //
124 | 0x04, 0x64, 0x54, 0x55, 0x4C, 0x00, // ‘
125 |
126 | 0x05, 0x3E, 0x55, 0x61, 0x55, 0x3E, // ’
127 | 0x05, 0x3E, 0x65, 0x51, 0x65, 0x3E, // “
128 | };
129 |
130 | #endif
131 |
132 |
--------------------------------------------------------------------------------
/small5x7_font.h:
--------------------------------------------------------------------------------
1 | #ifndef Small5x7PL_font_h
2 | #define Small5x7PL_font_h
3 |
4 | #include "Arduino.h"
5 |
6 | const uint8_t Small5x7PL[] PROGMEM =
7 | {
8 | -5, 8, 32, '~'+1+18, // -width, height, firstChar, lastChar
9 | 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, //
10 | 0x01, 0x5F, 0x00, 0x00, 0x00, 0x00, // !
11 | 0x03, 0x03, 0x00, 0x03, 0x00, 0x00, // "
12 | 0x05, 0x14, 0x7F, 0x14, 0x7F, 0x14, // #
13 | 0x05, 0x24, 0x4A, 0xFF, 0x4A, 0x34, // $
14 | 0x03, 0x61, 0x1C, 0x43, 0x00, 0x00, // %
15 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // &
16 | 0x04, 0x06, 0x09, 0x09, 0x06, 0x00, // '
17 | 0x02, 0x3E, 0x41, 0x00, 0x00, 0x00, // (
18 | 0x02, 0x41, 0x3E, 0x00, 0x00, 0x00, // )
19 | 0x05, 0x14, 0x08, 0x1C, 0x08, 0x14, // *
20 | 0x05, 0x08, 0x08, 0x3E, 0x08, 0x08, // +
21 | 0x02, 0x80, 0x40, 0x00, 0x00, 0x00, // ,
22 | 0x05, 0x08, 0x08, 0x08, 0x08, 0x08, // -
23 | 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, // .
24 | 0x03, 0x60, 0x1C, 0x03, 0x00, 0x00, // /
25 | 0x05, 0x3E, 0x41, 0x41, 0x41, 0x3E, // 0
26 | 0x05, 0x44, 0x42, 0x7F, 0x40, 0x40, // 1
27 | 0x05, 0x62, 0x51, 0x49, 0x49, 0x46, // 2
28 | 0x05, 0x22, 0x41, 0x49, 0x49, 0x36, // 3
29 | 0x05, 0x18, 0x14, 0x12, 0x7F, 0x10, // 4
30 | 0x05, 0x4F, 0x49, 0x49, 0x49, 0x31, // 5
31 | 0x05, 0x3E, 0x49, 0x49, 0x49, 0x32, // 6
32 | 0x05, 0x01, 0x61, 0x11, 0x09, 0x07, // 7
33 | 0x05, 0x36, 0x49, 0x49, 0x49, 0x36, // 8
34 | 0x05, 0x26, 0x49, 0x49, 0x49, 0x3E, // 9
35 | 0x01, 0x28, 0x00, 0x00, 0x00, 0x00, // :
36 | 0x02, 0x80, 0x48, 0x00, 0x00, 0x00, // ;
37 | 0x04, 0x08, 0x14, 0x22, 0x41, 0x00, // <
38 | 0x04, 0x14, 0x14, 0x14, 0x14, 0x00, // =
39 | 0x04, 0x41, 0x22, 0x14, 0x08, 0x00, // >
40 | 0x04, 0x02, 0x51, 0x09, 0x06, 0x00, // ?
41 | 0x05, 0x3E, 0x59, 0x59, 0x59, 0x46, // @
42 | 0x05, 0x7E, 0x11, 0x11, 0x11, 0x7E, // A
43 | 0x05, 0x7F, 0x49, 0x49, 0x49, 0x36, // B
44 | 0x05, 0x3E, 0x41, 0x41, 0x41, 0x22, // C
45 | 0x05, 0x7F, 0x41, 0x41, 0x41, 0x3E, // D
46 | 0x05, 0x7F, 0x49, 0x49, 0x41, 0x41, // E
47 | 0x05, 0x7F, 0x09, 0x09, 0x01, 0x01, // F
48 | 0x05, 0x3E, 0x41, 0x49, 0x49, 0x3A, // G
49 | 0x05, 0x7F, 0x08, 0x08, 0x08, 0x7F, // H
50 | 0x01, 0x7F, 0x00, 0x00, 0x00, 0x00, // I
51 | 0x05, 0x21, 0x41, 0x41, 0x41, 0x3F, // J
52 | 0x05, 0x7F, 0x08, 0x14, 0x22, 0x41, // K
53 | 0x05, 0x7F, 0x40, 0x40, 0x40, 0x40, // L
54 | 0x05, 0x7F, 0x02, 0x1C, 0x02, 0x7F, // M
55 | 0x05, 0x7F, 0x02, 0x04, 0x08, 0x7F, // N
56 | 0x05, 0x3E, 0x41, 0x41, 0x41, 0x3E, // O
57 | 0x05, 0x7F, 0x11, 0x11, 0x11, 0x0E, // P
58 | 0x05, 0x3E, 0x41, 0xC1, 0xA1, 0xBE, // Q
59 | 0x05, 0x7F, 0x11, 0x11, 0x29, 0x46, // R
60 | 0x05, 0x26, 0x49, 0x49, 0x49, 0x32, // S
61 | 0x05, 0x01, 0x01, 0x7F, 0x01, 0x01, // T
62 | 0x05, 0x3F, 0x40, 0x40, 0x40, 0x3F, // U
63 | 0x05, 0x07, 0x18, 0x60, 0x18, 0x07, // V
64 | 0x05, 0x1F, 0x60, 0x18, 0x60, 0x1F, // W
65 | 0x05, 0x63, 0x14, 0x08, 0x14, 0x63, // X
66 | 0x05, 0x03, 0x0C, 0x70, 0x0C, 0x03, // Y
67 | 0x05, 0x61, 0x51, 0x49, 0x45, 0x43, // Z
68 | 0x03, 0x7F, 0x41, 0x41, 0x00, 0x00, // [
69 | 0x05, 0x02, 0x04, 0x08, 0x10, 0x20, // BackSlash
70 | 0x03, 0x41, 0x41, 0x7F, 0x00, 0x00, // ]
71 | 0x05, 0x04, 0x02, 0x01, 0x02, 0x04, // ^
72 | 0x05, 0x80, 0x80, 0x80, 0x80, 0x80, // _
73 | 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, // `
74 | 0x05, 0x20, 0x54, 0x54, 0x38, 0x40, // a
75 | 0x05, 0x3F, 0x48, 0x44, 0x44, 0x38, // b
76 | 0x05, 0x38, 0x44, 0x44, 0x44, 0x28, // c
77 | 0x05, 0x38, 0x44, 0x44, 0x28, 0x7F, // d
78 | 0x05, 0x38, 0x54, 0x54, 0x54, 0x18, // e
79 | 0x04, 0x08, 0x7E, 0x09, 0x01, 0x00, // f
80 | 0x05, 0x98, 0xA4, 0xA4, 0xA4, 0x58, // g
81 | 0x05, 0x7F, 0x04, 0x04, 0x04, 0x78, // h
82 | 0x01, 0x7D, 0x00, 0x00, 0x00, 0x00, // i
83 | 0x03, 0x80, 0x80, 0x7D, 0x00, 0x00, // j
84 | 0x05, 0x7F, 0x10, 0x10, 0x28, 0x44, // k
85 | 0x03, 0x3F, 0x40, 0x40, 0x00, 0x00, // l
86 | 0x05, 0x78, 0x04, 0x18, 0x04, 0x78, // m
87 | 0x05, 0x7C, 0x04, 0x04, 0x04, 0x78, // n
88 | 0x05, 0x38, 0x44, 0x44, 0x44, 0x38, // o
89 | 0x05, 0xFC, 0x24, 0x24, 0x24, 0x18, // p
90 | 0x05, 0x18, 0x24, 0x24, 0x24, 0xFC, // q
91 | 0x04, 0x7C, 0x08, 0x04, 0x04, 0x00, // r
92 | 0x05, 0x48, 0x54, 0x54, 0x54, 0x24, // s
93 | 0x04, 0x04, 0x3F, 0x44, 0x40, 0x00, // t
94 | 0x05, 0x3C, 0x40, 0x40, 0x20, 0x7C, // u
95 | 0x05, 0x1C, 0x20, 0x40, 0x20, 0x1C, // v
96 | 0x05, 0x1C, 0x60, 0x18, 0x60, 0x1C, // w
97 | 0x05, 0x44, 0x28, 0x10, 0x28, 0x44, // x
98 | 0x05, 0x9C, 0xA0, 0xA0, 0xA0, 0x7C, // y
99 | 0x05, 0x64, 0x54, 0x54, 0x54, 0x4C, // z
100 | 0x03, 0x08, 0x36, 0x41, 0x00, 0x00, // {
101 | 0x01, 0x7F, 0x00, 0x00, 0x00, 0x00, // |
102 | 0x03, 0x41, 0x36, 0x08, 0x00, 0x00, // }
103 | 0x04, 0x02, 0x01, 0x02, 0x01, 0x00, // ~
104 | 0x05, 0xFF, 0x81, 0x81, 0x81, 0xFF, //
105 |
106 | 0x05, 0x7E, 0x11, 0x91, 0x51, 0x7E, // Ą
107 | 0x05, 0x3C, 0x42, 0x46, 0x43, 0x24, //
108 | 0x05, 0x7F, 0x49, 0x49, 0xC1, 0x81, // ‚
109 | 0x05, 0x7F, 0x48, 0x44, 0x42, 0x40, //
110 | 0x05, 0x7E, 0x04, 0x0A, 0x11, 0x7E, // „
111 | 0x05, 0x3C, 0x42, 0x46, 0x43, 0x3C, // …
112 | 0x05, 0x24, 0x4A, 0x4E, 0x4B, 0x32, // †
113 | 0x05, 0x62, 0x56, 0x4B, 0x4A, 0x46, // ‡
114 | 0x05, 0x69, 0x59, 0x49, 0x4D, 0x4B, //
115 |
116 | 0x05, 0x20, 0x54, 0x54, 0xF8, 0x80, // ą
117 | 0x04, 0x38, 0x44, 0x46, 0x45, 0x00, // Š
118 | 0x05, 0x38, 0x54, 0x54, 0xD4, 0x98, // ‹
119 | 0x04, 0x08, 0x3F, 0x42, 0x40, 0x00, // Ś
120 | 0x05, 0x7C, 0x04, 0x06, 0x05, 0x78, // Ť
121 | 0x05, 0x38, 0x44, 0x46, 0x45, 0x38, // Ž
122 | 0x05, 0x48, 0x54, 0x56, 0x55, 0x24, // Ź
123 | 0x05, 0x64, 0x54, 0x56, 0x55, 0x4C, //
124 | 0x05, 0x64, 0x54, 0x55, 0x54, 0x4C, // ‘
125 | };
126 |
127 | #endif
128 |
129 |
--------------------------------------------------------------------------------
/small5x7bold_font.h:
--------------------------------------------------------------------------------
1 | #ifndef Small5x7PLBold_font_h
2 | #define Small5x7PLBold_font_h
3 |
4 | #include "Arduino.h"
5 |
6 | const uint8_t Small5x7PLBold[] PROGMEM =
7 | {
8 | -5, 8, ' ', '~'+1+18, // -width, height, firstChar, lastChar
9 | 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, //
10 | 0x02, 0x5F, 0x5F, 0x00, 0x00, 0x00, // !
11 | 0x05, 0x03, 0x03, 0x00, 0x03, 0x03, // "
12 | 0x05, 0x14, 0x7F, 0x14, 0x7F, 0x14, // #
13 | 0x05, 0x24, 0x4A, 0xFF, 0x4A, 0x34, // $
14 | 0x04, 0x61, 0x7C, 0x1F, 0x43, 0x00, // %
15 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // &
16 | 0x04, 0x06, 0x09, 0x09, 0x06, 0x00, // '
17 | 0x03, 0x3E, 0x7F, 0x41, 0x00, 0x00, // (
18 | 0x03, 0x41, 0x7F, 0x3E, 0x00, 0x00, // )
19 | 0x05, 0x14, 0x08, 0x1C, 0x08, 0x14, // *
20 | 0x05, 0x08, 0x08, 0x3E, 0x08, 0x08, // +
21 | 0x03, 0x80, 0xC0, 0x40, 0x00, 0x00, // ,
22 | 0x05, 0x08, 0x08, 0x08, 0x08, 0x08, // -
23 | 0x02, 0x60, 0x60, 0x00, 0x00, 0x00, // .
24 | 0x04, 0x60, 0x7C, 0x1F, 0x03, 0x00, // /
25 | 0x05, 0x3E, 0x7F, 0x41, 0x7F, 0x3E, // 0
26 | 0x04, 0x42, 0x7F, 0x7F, 0x40, 0x00, // 1
27 | 0x05, 0x62, 0x73, 0x59, 0x4F, 0x46, // 2
28 | 0x05, 0x22, 0x63, 0x49, 0x7F, 0x36, // 3
29 | 0x05, 0x0F, 0x0F, 0x08, 0x7F, 0x7F, // 4
30 | 0x05, 0x4F, 0x4F, 0x49, 0x79, 0x31, // 5
31 | 0x05, 0x3E, 0x7F, 0x49, 0x7B, 0x32, // 6
32 | 0x05, 0x01, 0x71, 0x79, 0x0F, 0x07, // 7
33 | 0x05, 0x36, 0x7F, 0x49, 0x7F, 0x36, // 8
34 | 0x05, 0x26, 0x6F, 0x49, 0x7F, 0x3E, // 9
35 | 0x02, 0x28, 0x28, 0x00, 0x00, 0x00, // :
36 | 0x03, 0x80, 0xC8, 0x48, 0x00, 0x00, // ;
37 | 0x05, 0x08, 0x1C, 0x36, 0x63, 0x41, // <
38 | 0x05, 0x14, 0x14, 0x14, 0x14, 0x14, // =
39 | 0x05, 0x41, 0x63, 0x36, 0x1C, 0x08, // >
40 | 0x05, 0x02, 0x53, 0x59, 0x0F, 0x06, // ?
41 | 0x05, 0x3E, 0x7F, 0x5D, 0x5F, 0x4E, // @
42 | 0x05, 0x7E, 0x7F, 0x11, 0x7F, 0x7E, // A
43 | 0x05, 0x7F, 0x7F, 0x49, 0x7F, 0x36, // B
44 | 0x05, 0x3E, 0x7F, 0x41, 0x63, 0x22, // C
45 | 0x05, 0x7F, 0x7F, 0x41, 0x7F, 0x3E, // D
46 | 0x05, 0x7F, 0x7F, 0x49, 0x49, 0x41, // E
47 | 0x05, 0x7F, 0x7F, 0x09, 0x09, 0x01, // F
48 | 0x05, 0x3E, 0x7F, 0x41, 0x79, 0x3A, // G
49 | 0x05, 0x7F, 0x7F, 0x08, 0x7F, 0x7F, // H
50 | 0x02, 0x7F, 0x7F, 0x00, 0x00, 0x00, // I
51 | 0x05, 0x21, 0x61, 0x41, 0x7F, 0x3F, // J
52 | 0x05, 0x7F, 0x7F, 0x1C, 0x36, 0x63, // K
53 | 0x05, 0x7F, 0x7F, 0x40, 0x40, 0x40, // L
54 | 0x05, 0x7F, 0x7E, 0x1C, 0x7E, 0x7F, // M
55 | 0x05, 0x7F, 0x7E, 0x04, 0x08, 0x7F, // N
56 | 0x05, 0x3E, 0x7F, 0x41, 0x7F, 0x3E, // O
57 | 0x05, 0x7F, 0x7F, 0x11, 0x1F, 0x0E, // P
58 | 0x05, 0x3E, 0x7F, 0xC1, 0xFF, 0xBE, // Q
59 | 0x05, 0x7F, 0x7F, 0x11, 0x7F, 0x6E, // R
60 | 0x05, 0x26, 0x6F, 0x49, 0x7B, 0x32, // S
61 | 0x04, 0x01, 0x7F, 0x7F, 0x01, 0x00, // T
62 | 0x05, 0x3F, 0x7F, 0x40, 0x7F, 0x3F, // U
63 | 0x05, 0x07, 0x1F, 0x78, 0x1F, 0x07, // V
64 | 0x05, 0x1F, 0x7F, 0x18, 0x7F, 0x1F, // W
65 | 0x05, 0x63, 0x77, 0x1C, 0x77, 0x63, // X
66 | 0x05, 0x07, 0x0F, 0x78, 0x0F, 0x07, // Y
67 | 0x05, 0x71, 0x79, 0x4D, 0x47, 0x43, // Z
68 | 0x04, 0x7F, 0x7F, 0x41, 0x41, 0x00, // [
69 | 0x05, 0x03, 0x06, 0x0C, 0x18, 0x30, // BackSlash
70 | 0x04, 0x41, 0x41, 0x7F, 0x7F, 0x00, // ]
71 | 0x05, 0x04, 0x06, 0x03, 0x06, 0x04, // ^
72 | 0x05, 0x80, 0x80, 0x80, 0x80, 0x80, // _
73 | 0x03, 0x01, 0x03, 0x02, 0x00, 0x00, // `
74 | 0x05, 0x30, 0x7A, 0x4A, 0x7E, 0x7C, // a
75 | 0x05, 0x3F, 0x7F, 0x44, 0x7C, 0x38, // b
76 | 0x05, 0x38, 0x7C, 0x44, 0x44, 0x44, // c
77 | 0x05, 0x38, 0x7C, 0x44, 0x7F, 0x7F, // d
78 | 0x05, 0x38, 0x7C, 0x54, 0x5C, 0x18, // e
79 | 0x04, 0x7E, 0x7F, 0x09, 0x01, 0x00, // f
80 | 0x05, 0x98, 0xBC, 0xA4, 0xFC, 0x58, // g
81 | 0x05, 0x7F, 0x7F, 0x04, 0x7C, 0x78, // h
82 | 0x02, 0x7D, 0x7D, 0x00, 0x00, 0x00, // i
83 | 0x05, 0x40, 0xC0, 0x80, 0xFD, 0x7D, // j
84 | 0x05, 0x7F, 0x7F, 0x38, 0x6C, 0x44, // k
85 | 0x04, 0x3F, 0x7F, 0x40, 0x40, 0x00, // l
86 | 0x05, 0x78, 0x7C, 0x18, 0x7C, 0x78, // m
87 | 0x05, 0x7C, 0x7C, 0x04, 0x7C, 0x78, // n
88 | 0x05, 0x38, 0x7C, 0x44, 0x7C, 0x38, // o
89 | 0x05, 0xFC, 0xFC, 0x24, 0x3C, 0x18, // p
90 | 0x05, 0x18, 0x3C, 0x24, 0xFC, 0xFC, // q
91 | 0x05, 0x7C, 0x7C, 0x04, 0x0C, 0x08, // r
92 | 0x05, 0x48, 0x5C, 0x54, 0x74, 0x24, // s
93 | 0x05, 0x04, 0x3F, 0x7F, 0x44, 0x40, // t
94 | 0x05, 0x3C, 0x7C, 0x40, 0x7C, 0x7C, // u
95 | 0x05, 0x1C, 0x3C, 0x60, 0x3C, 0x1C, // v
96 | 0x05, 0x1C, 0x7C, 0x18, 0x7C, 0x1C, // w
97 | 0x05, 0x44, 0x6C, 0x10, 0x6C, 0x44, // x
98 | 0x05, 0x9C, 0xBC, 0xA0, 0xFC, 0x7C, // y
99 | 0x05, 0x64, 0x74, 0x54, 0x5C, 0x4C, // z
100 | 0x04, 0x08, 0x3E, 0x77, 0x41, 0x00, // {
101 | 0x02, 0x7F, 0x7F, 0x00, 0x00, 0x00, // |
102 | 0x04, 0x41, 0x77, 0x3E, 0x08, 0x00, // }
103 | 0x04, 0x02, 0x01, 0x02, 0x01, 0x00, // ~
104 | 0x05, 0x7F, 0x41, 0x41, 0x41, 0x7F, //
105 |
106 | 0x05, 0x7E, 0x7F, 0x91, 0xFF, 0x7E, // €
107 | 0x05, 0x3C, 0x7E, 0x46, 0x43, 0x42, //
108 | 0x05, 0x7F, 0x7F, 0x49, 0xC1, 0x81, // ‚
109 | 0x05, 0x7F, 0x7F, 0x48, 0x44, 0x40, //
110 | 0x05, 0x7E, 0x7E, 0x0A, 0x7D, 0x7E, // „
111 | 0x05, 0x3C, 0x7E, 0x46, 0x7B, 0x3C, // …
112 | 0x05, 0x24, 0x6E, 0x4E, 0x7B, 0x32, // †
113 | 0x05, 0x62, 0x76, 0x5B, 0x4E, 0x46, // ‡
114 | 0x05, 0x69, 0x79, 0x5D, 0x4F, 0x4B, //
115 |
116 | 0x05, 0x20, 0x74, 0x54, 0xFC, 0xB8, // ‰
117 | 0x05, 0x38, 0x7C, 0x47, 0x45, 0x44, // Š
118 | 0x05, 0x38, 0x7C, 0x54, 0xDC, 0x98, // ‹
119 | 0x05, 0x10, 0x3F, 0x7F, 0x42, 0x40, // Ś
120 | 0x05, 0x7C, 0x7C, 0x07, 0x7D, 0x78, // Ť
121 | 0x05, 0x38, 0x7C, 0x47, 0x7D, 0x38, // Ž
122 | 0x05, 0x48, 0x5C, 0x57, 0x75, 0x24, // Ź
123 | 0x05, 0x64, 0x74, 0x57, 0x5D, 0x4C, //
124 | 0x05, 0x64, 0x74, 0x55, 0x5C, 0x4C, // ‘
125 | };
126 |
127 | #endif
128 |
129 |
--------------------------------------------------------------------------------
/term9x14_font.h:
--------------------------------------------------------------------------------
1 | #ifndef Term9x14_font_h
2 | #define Term9x14_font_h
3 |
4 | const uint8_t Term9x14[] PROGMEM =
5 | {
6 | -9, 16, ' ', '~'+1,
7 | 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //
8 | 0x05, 0x3E, 0x00, 0xFF, 0x33, 0xFF, 0x33, 0xFF, 0x33, 0x3E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // !
9 | 0x07, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // "
10 | 0x09, 0x20, 0x01, 0xFE, 0x1F, 0xFE, 0x1F, 0xFE, 0x1F, 0x20, 0x01, 0xFE, 0x1F, 0xFE, 0x1F, 0xFE, 0x1F, 0x20, 0x01, // #
11 | 0x09, 0x38, 0x06, 0x3C, 0x0E, 0x6C, 0x0C, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x8C, 0x0B, 0x1C, 0x0F, 0x18, 0x07, // $
12 | 0x09, 0x1E, 0x30, 0x33, 0x3C, 0x33, 0x1F, 0xDE, 0x07, 0xF0, 0x01, 0x7C, 0x1E, 0x1F, 0x33, 0x07, 0x33, 0x01, 0x1E, // %
13 | 0x09, 0x1E, 0x1F, 0xBF, 0x3F, 0xF3, 0x31, 0xE1, 0x20, 0xF3, 0x31, 0xBF, 0x3F, 0x1E, 0x1F, 0x80, 0x3B, 0x80, 0x31, // &
14 | 0x03, 0x0B, 0x00, 0x0F, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // '
15 | 0x05, 0xF8, 0x07, 0xFE, 0x3F, 0xFF, 0x7F, 0x07, 0x78, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // (
16 | 0x05, 0x01, 0x40, 0x07, 0x78, 0xFF, 0x7F, 0xFE, 0x3F, 0xF8, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // )
17 | 0x09, 0x80, 0x00, 0xA0, 0x02, 0xE0, 0x03, 0xE0, 0x03, 0xC0, 0x01, 0xE0, 0x03, 0xE0, 0x03, 0xA0, 0x02, 0x80, 0x00, // *
18 | 0x09, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0xE0, 0x03, 0xE0, 0x03, 0xE0, 0x03, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, // +
19 | 0x03, 0x00, 0xB0, 0x00, 0xF0, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ,
20 | 0x09, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, // -
21 | 0x03, 0x00, 0x30, 0x00, 0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // .
22 | 0x09, 0x00, 0x30, 0x00, 0x3C, 0x00, 0x3F, 0xC0, 0x0F, 0xF0, 0x03, 0xFC, 0x00, 0x3F, 0x00, 0x0F, 0x00, 0x03, 0x00, // /
23 | 0x09, 0xFC, 0x0F, 0xFE, 0x1F, 0xFF, 0x3F, 0x83, 0x37, 0xE1, 0x21, 0x7B, 0x30, 0xFF, 0x3F, 0xFE, 0x1F, 0xFC, 0x0F, // 0
24 | 0x09, 0x04, 0x20, 0x04, 0x20, 0x06, 0x20, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, // 1
25 | 0x09, 0x0C, 0x38, 0x0E, 0x3C, 0x0F, 0x3E, 0x03, 0x27, 0x81, 0x23, 0xC3, 0x21, 0xFF, 0x20, 0x7E, 0x20, 0x3C, 0x20, // 2
26 | 0x09, 0x0C, 0x0C, 0x0E, 0x1C, 0x4F, 0x3C, 0x43, 0x30, 0x41, 0x20, 0x43, 0x30, 0xFF, 0x3F, 0xFE, 0x1F, 0xBC, 0x0F, // 3
27 | 0x09, 0x00, 0x0F, 0xE0, 0x0F, 0xFC, 0x0F, 0xFF, 0x08, 0x1F, 0x08, 0x83, 0x3F, 0x80, 0x3F, 0x00, 0x08, 0x00, 0x08, // 4
28 | 0x09, 0x3F, 0x0C, 0x3F, 0x1C, 0x3F, 0x3C, 0x21, 0x30, 0x21, 0x20, 0x61, 0x30, 0xE1, 0x3F, 0xC1, 0x1F, 0x81, 0x0F, // 5
29 | 0x09, 0xE0, 0x0F, 0xF8, 0x1F, 0xFC, 0x3F, 0x5E, 0x30, 0x47, 0x20, 0xC3, 0x30, 0xC1, 0x3F, 0x80, 0x1F, 0x00, 0x0F, // 6
30 | 0x09, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x3C, 0x81, 0x3F, 0xF1, 0x3F, 0xFF, 0x03, 0x7F, 0x00, 0x0F, 0x00, // 7
31 | 0x09, 0x1C, 0x0F, 0xBE, 0x1F, 0xFF, 0x3F, 0xE3, 0x30, 0x41, 0x20, 0xE3, 0x30, 0xFF, 0x3F, 0xBE, 0x1F, 0x1C, 0x0F, // 8
32 | 0x09, 0x3C, 0x00, 0x7E, 0x00, 0xFF, 0x20, 0xC3, 0x30, 0x81, 0x38, 0x83, 0x1E, 0xFF, 0x0F, 0xFE, 0x07, 0xFC, 0x01, // 9
33 | 0x03, 0x60, 0x30, 0x60, 0x30, 0x60, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // :
34 | 0x03, 0x60, 0xB0, 0x60, 0xF0, 0x60, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ;
35 | 0x08, 0x80, 0x00, 0xC0, 0x01, 0xE0, 0x03, 0x70, 0x07, 0x38, 0x0E, 0x1C, 0x1C, 0x0C, 0x18, 0x04, 0x10, 0x00, 0x00, // <
36 | 0x09, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0x01, // =
37 | 0x08, 0x04, 0x10, 0x0C, 0x18, 0x1C, 0x1C, 0x38, 0x0E, 0x70, 0x07, 0xE0, 0x03, 0xC0, 0x01, 0x80, 0x00, 0x00, 0x00, // >
38 | 0x09, 0x06, 0x00, 0x07, 0x00, 0x07, 0x00, 0x03, 0x33, 0xC1, 0x33, 0xF3, 0x33, 0xFF, 0x00, 0x3F, 0x00, 0x1E, 0x00, // ?
39 | 0x09, 0xFC, 0x0F, 0xFE, 0x1F, 0xFF, 0x3F, 0xE3, 0x31, 0xF1, 0x23, 0xF1, 0x23, 0x13, 0x23, 0xFF, 0x33, 0xFE, 0x33, // @
40 | 0x09, 0xFC, 0x3F, 0xFE, 0x3F, 0xFF, 0x3F, 0x03, 0x01, 0x01, 0x01, 0x03, 0x01, 0xFF, 0x3F, 0xFE, 0x3F, 0xFC, 0x3F, // A
41 | 0x09, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x41, 0x20, 0x41, 0x20, 0xE3, 0x30, 0xFF, 0x3F, 0xBE, 0x1F, 0x1C, 0x0F, // B
42 | 0x09, 0xFC, 0x0F, 0xFE, 0x1F, 0xFF, 0x3F, 0x03, 0x30, 0x01, 0x20, 0x03, 0x30, 0x0F, 0x3C, 0x0E, 0x1C, 0x0C, 0x0C, // C
43 | 0x09, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x01, 0x20, 0x01, 0x20, 0x07, 0x38, 0xFF, 0x3F, 0xFE, 0x1F, 0xF8, 0x07, // D
44 | 0x09, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x41, 0x20, 0x41, 0x20, 0x41, 0x20, 0x41, 0x20, 0x41, 0x20, 0x01, 0x20, // E
45 | 0x09, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x01, 0x00, // F
46 | 0x09, 0xFC, 0x0F, 0xFE, 0x1F, 0xFF, 0x3F, 0x03, 0x30, 0x81, 0x20, 0x83, 0x30, 0x8F, 0x3F, 0x8E, 0x1F, 0x8C, 0x0F, // G
47 | 0x09, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x40, 0x00, 0x40, 0x00, 0x40, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, // H
48 | 0x09, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x01, 0x20, 0x01, 0x20, 0x01, 0x20, // I
49 | 0x09, 0x00, 0x0C, 0x00, 0x1C, 0x00, 0x3C, 0x00, 0x30, 0x00, 0x20, 0x00, 0x30, 0xFF, 0x3F, 0xFF, 0x1F, 0xFF, 0x0F, // J
50 | 0x09, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xE0, 0x01, 0xF8, 0x07, 0x3C, 0x0F, 0x1F, 0x3E, 0x0F, 0x3C, 0x03, 0x30, // K
51 | 0x09, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x20, // L
52 | 0x09, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xF8, 0x00, 0xC0, 0x03, 0xF8, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, // M
53 | 0x09, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x7C, 0x00, 0xF0, 0x01, 0xC0, 0x07, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, // N
54 | 0x09, 0xFC, 0x0F, 0xFE, 0x1F, 0xFF, 0x3F, 0x03, 0x30, 0x01, 0x20, 0x03, 0x30, 0xFF, 0x3F, 0xFE, 0x1F, 0xFC, 0x0F, // O
55 | 0x09, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x81, 0x00, 0x81, 0x00, 0xC3, 0x00, 0xFF, 0x00, 0x7E, 0x00, 0x3C, 0x00, // P
56 | 0x09, 0xFC, 0x0F, 0xFE, 0x1F, 0xFF, 0x3F, 0x03, 0x30, 0x01, 0x60, 0x03, 0xF0, 0xFF, 0xFF, 0xFE, 0x9F, 0xFC, 0x0F, // Q
57 | 0x09, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x81, 0x00, 0x81, 0x01, 0xC3, 0x1F, 0xFF, 0x3F, 0x7E, 0x3E, 0x3C, 0x20, // R
58 | 0x09, 0x3C, 0x0C, 0x7E, 0x1C, 0x7F, 0x3C, 0xE3, 0x30, 0xE1, 0x21, 0xC3, 0x31, 0x8F, 0x3F, 0x8E, 0x1F, 0x0C, 0x0F, // S
59 | 0x09, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, // T
60 | 0x09, 0xFF, 0x0F, 0xFF, 0x1F, 0xFF, 0x3F, 0x00, 0x30, 0x00, 0x20, 0x00, 0x30, 0xFF, 0x3F, 0xFF, 0x1F, 0xFF, 0x0F, // U
61 | 0x09, 0x3F, 0x00, 0xFF, 0x01, 0xFF, 0x0F, 0xC0, 0x3F, 0x00, 0x3C, 0xC0, 0x3F, 0xFF, 0x0F, 0xFF, 0x01, 0x3F, 0x00, // V
62 | 0x09, 0xFF, 0x01, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x3F, 0xC0, 0x01, 0x00, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x01, // W
63 | 0x09, 0x0F, 0x3C, 0x3F, 0x3F, 0xFF, 0x3F, 0xF0, 0x03, 0xC0, 0x00, 0xF0, 0x03, 0xFF, 0x3F, 0x3F, 0x3F, 0x0F, 0x3C, // X
64 | 0x09, 0x3F, 0x00, 0xFF, 0x00, 0xFF, 0x01, 0xC0, 0x3F, 0x80, 0x3F, 0xC0, 0x3F, 0xFF, 0x01, 0xFF, 0x00, 0x3F, 0x00, // Y
65 | 0x09, 0x01, 0x38, 0x01, 0x3E, 0x81, 0x3F, 0xC1, 0x27, 0xE1, 0x21, 0x79, 0x20, 0x3F, 0x20, 0x1F, 0x20, 0x07, 0x20, // Z
66 | 0x05, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x01, 0x20, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // [
67 | 0x09, 0x03, 0x00, 0x0F, 0x00, 0x3F, 0x00, 0xFC, 0x00, 0xF0, 0x03, 0xC0, 0x0F, 0x00, 0x3F, 0x00, 0x3C, 0x00, 0x30, // BackSlash
68 | 0x05, 0x01, 0x20, 0x01, 0x20, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ]
69 | 0x09, 0x04, 0x00, 0x04, 0x00, 0x06, 0x00, 0x07, 0x00, 0x03, 0x00, 0x07, 0x00, 0x06, 0x00, 0x06, 0x00, 0x04, 0x00, // ^
70 | 0x09, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, // _
71 | 0x06, 0x06, 0x00, 0x0F, 0x00, 0x09, 0x00, 0x09, 0x00, 0x0F, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // ` (deg)
72 | 0x09, 0x00, 0x1E, 0x40, 0x3F, 0x60, 0x3F, 0x20, 0x21, 0x20, 0x21, 0x20, 0x31, 0xE0, 0x3F, 0xE0, 0x3F, 0xC0, 0x3F, // a
73 | 0x09, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x60, 0x30, 0x20, 0x20, 0x60, 0x30, 0xE0, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, // b
74 | 0x09, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0x60, 0x30, 0x20, 0x20, 0x20, 0x20, 0x60, 0x30, 0x60, 0x30, 0x40, 0x10, // c
75 | 0x09, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0x60, 0x30, 0x20, 0x20, 0x60, 0x30, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, // d
76 | 0x09, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0x60, 0x32, 0x20, 0x22, 0x60, 0x22, 0xE0, 0x33, 0xC0, 0x33, 0x80, 0x13, // e
77 | 0x09, 0x20, 0x00, 0x20, 0x00, 0xFE, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x21, 0x00, 0x23, 0x00, 0x23, 0x00, 0x02, 0x00, // f
78 | 0x09, 0x80, 0x47, 0xC0, 0x4F, 0xE0, 0xDF, 0x60, 0xD8, 0x20, 0x90, 0x60, 0xD8, 0xE0, 0xFF, 0xE0, 0x7F, 0xE0, 0x3F, // g
79 | 0x09, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x60, 0x00, 0x20, 0x00, 0x60, 0x00, 0xE0, 0x3F, 0xC0, 0x3F, 0x80, 0x3F, // h
80 | 0x07, 0x20, 0x20, 0x20, 0x20, 0xE3, 0x3F, 0xE3, 0x3F, 0xE3, 0x3F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, // i
81 | 0x06, 0x00, 0x40, 0x20, 0xC0, 0x20, 0xC0, 0xE3, 0xFF, 0xE3, 0xFF, 0xE3, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // j
82 | 0x09, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x07, 0x80, 0x0F, 0xC0, 0x1D, 0xE0, 0x38, 0x60, 0x30, 0x20, 0x20, // k
83 | 0x07, 0x01, 0x20, 0x01, 0x20, 0xFF, 0x3F, 0xFF, 0x3F, 0xFF, 0x3F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, // l
84 | 0x09, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x00, 0xC0, 0x1F, 0xE0, 0x00, 0xE0, 0x3F, 0xE0, 0x3F, 0xC0, 0x3F, // m
85 | 0x09, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x3F, 0x60, 0x00, 0x20, 0x00, 0x60, 0x00, 0xE0, 0x3F, 0xC0, 0x3F, 0x80, 0x3F, // n
86 | 0x09, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0x60, 0x30, 0x20, 0x20, 0x60, 0x30, 0xE0, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, // o
87 | 0x09, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, 0x60, 0x30, 0x20, 0x20, 0x60, 0x30, 0xE0, 0x3F, 0xC0, 0x1F, 0x80, 0x0F, // p
88 | 0x09, 0x80, 0x0F, 0xC0, 0x1F, 0xE0, 0x3F, 0x20, 0x20, 0x20, 0x20, 0x60, 0x30, 0xE0, 0xFF, 0xE0, 0xFF, 0xE0, 0xFF, // q
89 | 0x09, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x3F, 0xC0, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x40, 0x00, // r
90 | 0x09, 0xC0, 0x10, 0xE0, 0x31, 0xE0, 0x31, 0x20, 0x23, 0x20, 0x27, 0x20, 0x26, 0x60, 0x3C, 0x60, 0x3C, 0x40, 0x18, // s
91 | 0x07, 0x20, 0x00, 0x20, 0x00, 0xFE, 0x1F, 0xFE, 0x3F, 0xFE, 0x3F, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, // t
92 | 0x09, 0xE0, 0x1F, 0xE0, 0x3F, 0xE0, 0x3F, 0x00, 0x20, 0x00, 0x20, 0x00, 0x30, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x3F, // u
93 | 0x09, 0xE0, 0x03, 0xE0, 0x07, 0xE0, 0x1F, 0x00, 0x3C, 0x00, 0x30, 0x00, 0x3C, 0xE0, 0x1F, 0xE0, 0x07, 0xE0, 0x03, // v
94 | 0x09, 0xE0, 0x07, 0xE0, 0x3F, 0xE0, 0x3F, 0x00, 0x3E, 0xC0, 0x07, 0x00, 0x3E, 0xE0, 0x3F, 0xE0, 0x3F, 0xE0, 0x07, // w
95 | 0x09, 0x60, 0x30, 0xE0, 0x3D, 0xE0, 0x3D, 0x80, 0x0F, 0x00, 0x07, 0x80, 0x0F, 0xE0, 0x3D, 0xE0, 0x3D, 0x60, 0x30, // x
96 | 0x09, 0xE0, 0x83, 0xE0, 0x8F, 0xE0, 0xDF, 0x00, 0xFC, 0x00, 0x70, 0x00, 0x3C, 0xE0, 0x1F, 0xE0, 0x0F, 0xE0, 0x03, // y
97 | 0x09, 0x20, 0x30, 0x20, 0x38, 0x20, 0x3C, 0x20, 0x2E, 0x20, 0x27, 0xA0, 0x23, 0xE0, 0x21, 0xE0, 0x20, 0x60, 0x20, // z
98 | 0x06, 0x80, 0x00, 0xFE, 0x3F, 0xFF, 0x7F, 0x7F, 0x7F, 0x01, 0x40, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // {
99 | 0x03, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // |
100 | 0x06, 0x01, 0x40, 0x01, 0x40, 0x7F, 0x7F, 0xFF, 0x7F, 0xFE, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // }
101 | 0x09, 0x02, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x03, 0x00, 0x02, 0x00, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, // ~
102 | 0x09, 0xE0, 0x3F, 0xF8, 0x3F, 0xFC, 0x3F, 0x1F, 0x30, 0x07, 0x30, 0x1F, 0x30, 0xFC, 0x3F, 0xF8, 0x3F, 0xE0, 0x3F //
103 | };
104 |
105 | #endif
106 |
--------------------------------------------------------------------------------
/times_dig_16x24_font.h:
--------------------------------------------------------------------------------
1 | #ifndef times_dig_16x24_font_h
2 | #define times_dig_16x24_font_h
3 |
4 | const uint8_t times_dig_16x24[] PROGMEM ={
5 | -16, 24, '0', '0'+10,
6 | 0x0F, 0x80, 0xFF, 0x01, 0xF0, 0xFF, 0x0F, 0xF8, 0xFF, 0x1F, 0xFC, 0xFF, 0x3F, 0xFE, 0xFF, 0x7F, 0x07, 0x00, 0xE0, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x01, 0x00, 0x80, 0x03, 0x00, 0xC0, 0xFE, 0xFF, 0x7F, 0xFC, 0xFF, 0x3F, 0xF8, 0xFF, 0x1F, 0xF0, 0xFF, 0x0F, 0x80, 0xFF, 0x01, 0x00, 0x00, 0x00, // 0
7 | 0x0C, 0x10, 0x00, 0x80, 0x18, 0x00, 0x80, 0x08, 0x00, 0x80, 0x1C, 0x00, 0xC0, 0xFC, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xC0, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 1
8 | 0x10, 0x00, 0x00, 0x80, 0x70, 0x00, 0xC0, 0x1C, 0x00, 0xE0, 0x1C, 0x00, 0xF0, 0x0E, 0x00, 0xF8, 0x0F, 0x00, 0xFE, 0x0F, 0x00, 0xFF, 0x0F, 0x80, 0xFB, 0x1F, 0xE0, 0xF9, 0x3F, 0xF8, 0xF8, 0xFF, 0x3F, 0xF8, 0xFE, 0x1F, 0xF8, 0xFE, 0x0F, 0xF8, 0xFC, 0x07, 0xF8, 0xF0, 0x01, 0xFC, 0x00, 0x00, 0x0E, // 2
9 | 0x10, 0x00, 0x00, 0x30, 0x08, 0x00, 0x78, 0x0C, 0x00, 0xF8, 0x04, 0x00, 0xF0, 0x02, 0x00, 0xF0, 0x02, 0x04, 0xE0, 0x03, 0x0C, 0xC0, 0x03, 0x0E, 0xC0, 0x07, 0x1E, 0xC0, 0x8F, 0x3F, 0x40, 0xFF, 0xFE, 0x70, 0xFF, 0xFE, 0x7F, 0x7E, 0xFC, 0x3F, 0x7E, 0xFC, 0x1F, 0x38, 0xF8, 0x0F, 0x00, 0xF0, 0x03, // 3
10 | 0x10, 0x00, 0xC0, 0x07, 0x00, 0xA0, 0x07, 0x00, 0x90, 0x07, 0x00, 0x88, 0x07, 0x00, 0x86, 0x07, 0x00, 0x81, 0x07, 0x80, 0x80, 0x07, 0x60, 0x80, 0x07, 0x10, 0x80, 0x07, 0xF8, 0xFF, 0xFF, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x80, 0x07, 0x00, 0x80, 0x07, // 4
11 | 0x0F, 0x00, 0x0C, 0x30, 0x80, 0x0F, 0x78, 0xF0, 0x0F, 0xF8, 0x9E, 0x0F, 0xF8, 0x9F, 0x0F, 0xF0, 0x9F, 0x0F, 0xE0, 0x9F, 0x1F, 0xC0, 0x1F, 0x1F, 0xC0, 0x1F, 0x1F, 0x80, 0x1F, 0x3F, 0x80, 0x1F, 0x7E, 0x80, 0x1F, 0x7C, 0x40, 0x1F, 0xFC, 0x61, 0x0F, 0xF8, 0x3F, 0x01, 0xE0, 0x0F, 0x00, 0x00, 0x00, // 5
12 | 0x10, 0x00, 0xF8, 0x03, 0x00, 0xFF, 0x0F, 0x80, 0xFF, 0x3F, 0xE0, 0xFF, 0x3F, 0xF0, 0xFF, 0x7F, 0xF8, 0x07, 0xF8, 0x78, 0x04, 0xC0, 0x3C, 0x04, 0x80, 0x1C, 0x04, 0x80, 0x0E, 0x0C, 0x80, 0x06, 0x3C, 0xC0, 0x02, 0xFC, 0x7F, 0x03, 0xF8, 0x7F, 0x03, 0xF8, 0x3F, 0x01, 0xF0, 0x1F, 0x01, 0xC0, 0x07, // 6
13 | 0x0F, 0xC0, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x00, 0x1F, 0x00, 0x80, 0x1F, 0x00, 0xF0, 0x1F, 0x00, 0x7E, 0x1F, 0xC0, 0x0F, 0x1F, 0xF8, 0x01, 0x1F, 0x3E, 0x00, 0xDF, 0x07, 0x00, 0xFF, 0x01, 0x00, 0x3F, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // 7
14 | 0x0F, 0xF0, 0x00, 0x1F, 0xFC, 0xC3, 0x3F, 0xFE, 0xC7, 0x7F, 0xFE, 0xEF, 0x7F, 0xFF, 0x7F, 0xE0, 0xC3, 0x3F, 0xC0, 0x81, 0x3F, 0x80, 0x01, 0x3F, 0x80, 0x01, 0x7E, 0x80, 0x01, 0xFE, 0xC1, 0x07, 0xFF, 0x7F, 0xFE, 0xFB, 0x7F, 0xFE, 0xF3, 0x3F, 0xFC, 0xE1, 0x1F, 0x78, 0x80, 0x0F, 0x00, 0x00, 0x00, // 8
15 | 0x10, 0xE0, 0x03, 0x80, 0xF8, 0x0F, 0x80, 0xFC, 0x1F, 0xC0, 0xFE, 0x1F, 0xC0, 0xFE, 0x3F, 0x40, 0x03, 0x3C, 0x60, 0x01, 0x30, 0x70, 0x01, 0x20, 0x38, 0x01, 0x20, 0x3C, 0x03, 0x20, 0x1E, 0x1E, 0xE0, 0x1F, 0xFE, 0xFF, 0x0F, 0xFC, 0xFF, 0x07, 0xF8, 0xFF, 0x03, 0xF0, 0xFF, 0x00, 0xC0, 0x1F, 0x00, // 9
16 | 0x05, 0x00, 0x00, 0x70, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // : (.)
17 | };
18 | #endif
19 |
20 |
--------------------------------------------------------------------------------
/tiny3x7_font.h:
--------------------------------------------------------------------------------
1 | #ifndef Tiny3x7PL_font_h
2 | #define Tiny3x7PL_font_h
3 |
4 | #include "Arduino.h"
5 |
6 | const uint8_t Tiny3x7PL[] PROGMEM =
7 | {
8 | -5, 8, 32, '~'+1+18, // -width, height, firstChar, lastChar
9 | 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, //
10 | 0x01, 0x5F, 0x00, 0x00, 0x00, 0x00, // !
11 | 0x03, 0x03, 0x00, 0x03, 0x00, 0x00, // "
12 | 0x05, 0x14, 0x7F, 0x14, 0x7F, 0x14, // #
13 | 0x03, 0x66, 0xFF, 0x5A, 0x00, 0x00, // $
14 | 0x03, 0x31, 0x0C, 0x23, 0x00, 0x00, // %
15 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // &
16 | 0x03, 0x02, 0x05, 0x02, 0x00, 0x00, // '
17 | 0x02, 0x3E, 0x41, 0x00, 0x00, 0x00, // (
18 | 0x02, 0x41, 0x3E, 0x00, 0x00, 0x00, // )
19 | 0x05, 0x14, 0x08, 0x1C, 0x08, 0x14, // *
20 | 0x03, 0x08, 0x1C, 0x08, 0x00, 0x00, // +
21 | 0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, // ,
22 | 0x03, 0x08, 0x08, 0x08, 0x00, 0x00, // -
23 | 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, // .
24 | 0x03, 0x70, 0x0C, 0x03, 0x00, 0x00, // /
25 | 0x03, 0x3E, 0x41, 0x3E, 0x00, 0x00, // 0
26 | 0x02, 0x02, 0x7F, 0x00, 0x00, 0x00, // 1
27 | 0x03, 0x72, 0x49, 0x46, 0x00, 0x00, // 2
28 | 0x03, 0x22, 0x49, 0x36, 0x00, 0x00, // 3
29 | 0x03, 0x0F, 0x08, 0x7F, 0x00, 0x00, // 4
30 | 0x03, 0x4F, 0x49, 0x31, 0x00, 0x00, // 5
31 | 0x03, 0x3E, 0x49, 0x32, 0x00, 0x00, // 6
32 | 0x03, 0x01, 0x79, 0x07, 0x00, 0x00, // 7
33 | 0x03, 0x36, 0x49, 0x36, 0x00, 0x00, // 8
34 | 0x03, 0x26, 0x49, 0x3E, 0x00, 0x00, // 9
35 | 0x01, 0x28, 0x00, 0x00, 0x00, 0x00, // :
36 | 0x02, 0x80, 0x48, 0x00, 0x00, 0x00, // ;
37 | 0x03, 0x08, 0x14, 0x22, 0x00, 0x00, // <
38 | 0x03, 0x14, 0x14, 0x14, 0x00, 0x00, // =
39 | 0x03, 0x22, 0x14, 0x08, 0x00, 0x00, // >
40 | 0x03, 0x02, 0x59, 0x06, 0x00, 0x00, // ?
41 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, // @
42 | 0x03, 0x7E, 0x11, 0x7E, 0x00, 0x00, // A
43 | 0x03, 0x7F, 0x49, 0x36, 0x00, 0x00, // B
44 | 0x03, 0x3E, 0x41, 0x22, 0x00, 0x00, // C
45 | 0x03, 0x7F, 0x41, 0x3E, 0x00, 0x00, // D
46 | 0x03, 0x7F, 0x49, 0x41, 0x00, 0x00, // E
47 | 0x03, 0x7F, 0x09, 0x01, 0x00, 0x00, // F
48 | 0x03, 0x3E, 0x41, 0x3A, 0x00, 0x00, // G
49 | 0x03, 0x7F, 0x08, 0x7F, 0x00, 0x00, // H
50 | 0x01, 0x7F, 0x00, 0x00, 0x00, 0x00, // I
51 | 0x03, 0x21, 0x41, 0x3F, 0x00, 0x00, // J
52 | 0x04, 0x7F, 0x08, 0x14, 0x63, 0x00, // K
53 | 0x03, 0x7F, 0x40, 0x40, 0x00, 0x00, // L
54 | 0x05, 0x7F, 0x02, 0x1C, 0x02, 0x7F, // M
55 | 0x04, 0x7F, 0x02, 0x04, 0x7F, 0x00, // N
56 | 0x03, 0x3E, 0x41, 0x3E, 0x00, 0x00, // O
57 | 0x03, 0x7F, 0x11, 0x0E, 0x00, 0x00, // P
58 | 0x03, 0x3E, 0x41, 0xBE, 0x00, 0x00, // Q
59 | 0x03, 0x7F, 0x11, 0x6E, 0x00, 0x00, // R
60 | 0x03, 0x26, 0x49, 0x32, 0x00, 0x00, // S
61 | 0x03, 0x01, 0x7F, 0x01, 0x00, 0x00, // T
62 | 0x03, 0x3F, 0x40, 0x7F, 0x00, 0x00, // U
63 | 0x03, 0x1F, 0x60, 0x1F, 0x00, 0x00, // V
64 | 0x05, 0x1F, 0x60, 0x18, 0x60, 0x1F, // W
65 | 0x03, 0x63, 0x1C, 0x63, 0x00, 0x00, // X
66 | 0x03, 0x07, 0x78, 0x07, 0x00, 0x00, // Y
67 | 0x03, 0x71, 0x49, 0x47, 0x00, 0x00, // Z
68 | 0x02, 0x7F, 0x41, 0x00, 0x00, 0x00, // [
69 | 0x03, 0x03, 0x1C, 0x60, 0x00, 0x00, // BackSlash
70 | 0x02, 0x41, 0x7F, 0x00, 0x00, 0x00, // ]
71 | 0x03, 0x02, 0x01, 0x02, 0x00, 0x00, // ^
72 | 0x03, 0x80, 0x80, 0x80, 0x00, 0x00, // _
73 | 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, // `
74 | 0x03, 0x20, 0x54, 0x78, 0x00, 0x00, // a
75 | 0x03, 0x3F, 0x44, 0x38, 0x00, 0x00, // b
76 | 0x03, 0x38, 0x44, 0x44, 0x00, 0x00, // c
77 | 0x03, 0x38, 0x44, 0x7F, 0x00, 0x00, // d
78 | 0x03, 0x38, 0x54, 0x58, 0x00, 0x00, // e
79 | 0x03, 0x7E, 0x09, 0x02, 0x00, 0x00, // f
80 | 0x03, 0x98, 0xA4, 0x58, 0x00, 0x00, // g
81 | 0x03, 0x7F, 0x04, 0x78, 0x00, 0x00, // h
82 | 0x01, 0x7D, 0x00, 0x00, 0x00, 0x00, // i
83 | 0x02, 0x80, 0x7D, 0x00, 0x00, 0x00, // j
84 | 0x03, 0x7F, 0x10, 0x6C, 0x00, 0x00, // k
85 | 0x03, 0x3F, 0x40, 0x20, 0x00, 0x00, // l
86 | 0x05, 0x78, 0x04, 0x38, 0x04, 0x78, // m
87 | 0x03, 0x7C, 0x04, 0x78, 0x00, 0x00, // n
88 | 0x03, 0x38, 0x44, 0x38, 0x00, 0x00, // o
89 | 0x03, 0xFC, 0x24, 0x18, 0x00, 0x00, // p
90 | 0x03, 0x18, 0x24, 0xFC, 0x00, 0x00, // q
91 | 0x03, 0x7C, 0x08, 0x04, 0x00, 0x00, // r
92 | 0x03, 0x48, 0x54, 0x24, 0x00, 0x00, // s
93 | 0x03, 0x04, 0x3F, 0x44, 0x00, 0x00, // t
94 | 0x03, 0x3C, 0x40, 0x7C, 0x00, 0x00, // u
95 | 0x03, 0x1C, 0x60, 0x1C, 0x00, 0x00, // v
96 | 0x05, 0x3C, 0x40, 0x30, 0x40, 0x3C, // w
97 | 0x03, 0x44, 0x38, 0x44, 0x00, 0x00, // x
98 | 0x03, 0x9C, 0xA0, 0x7C, 0x00, 0x00, // y
99 | 0x03, 0x64, 0x54, 0x4C, 0x00, 0x00, // z
100 | 0x03, 0x08, 0x36, 0x41, 0x00, 0x00, // {
101 | 0x01, 0x7F, 0x00, 0x00, 0x00, 0x00, // |
102 | 0x03, 0x41, 0x36, 0x08, 0x00, 0x00, // }
103 | 0x04, 0x02, 0x01, 0x02, 0x01, 0x00, // ~
104 | 0x03, 0xFF, 0x81, 0xFF, 0x00, 0x00, //
105 |
106 | 0x03, 0x7E, 0x91, 0x7E, 0x00, 0x00, // Ą
107 | 0x03, 0x3C, 0x42, 0x25, 0x00, 0x00, //
108 | 0x03, 0x7F, 0x49, 0x81, 0x00, 0x00, // ‚
109 | 0x03, 0x7F, 0x48, 0x44, 0x00, 0x00, //
110 | 0x04, 0x7E, 0x04, 0x09, 0x7E, 0x00, // „
111 | 0x03, 0x3C, 0x42, 0x3D, 0x00, 0x00, // …
112 | 0x03, 0x24, 0x4A, 0x33, 0x00, 0x00, // †
113 | 0x03, 0x76, 0x4B, 0x46, 0x00, 0x00, // ‡
114 | 0x03, 0x69, 0x5D, 0x4B, 0x00, 0x00, //
115 |
116 | 0x03, 0x20, 0x54, 0xF8, 0x00, 0x00, // ą
117 | 0x03, 0x38, 0x46, 0x45, 0x00, 0x00, // Š
118 | 0x03, 0x38, 0x54, 0x98, 0x00, 0x00, // ‹
119 | 0x03, 0x10, 0x3F, 0x44, 0x00, 0x00, // Ś
120 | 0x03, 0x7C, 0x06, 0x79, 0x00, 0x00, // Ť
121 | 0x03, 0x38, 0x46, 0x39, 0x00, 0x00, // Ž
122 | 0x03, 0x48, 0x56, 0x25, 0x00, 0x00, // Ź
123 | 0x03, 0x64, 0x56, 0x4D, 0x00, 0x00, //
124 | 0x03, 0x64, 0x55, 0x4C, 0x00, 0x00, // ‘
125 | };
126 |
127 | #endif
128 |
129 |
--------------------------------------------------------------------------------