├── THUMB_attiny85_turbo_gauge.jpg ├── turbo_boost_gauge_attiny_128x64px.psd ├── LICENSE ├── README.md └── attiny85_turbo_gauge ├── attiny85_turbo_gauge.ino └── image.h /THUMB_attiny85_turbo_gauge.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/upiir/turbo_gauge_attiny85/HEAD/THUMB_attiny85_turbo_gauge.jpg -------------------------------------------------------------------------------- /turbo_boost_gauge_attiny_128x64px.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/upiir/turbo_gauge_attiny85/HEAD/turbo_boost_gauge_attiny_128x64px.psd -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 upir 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Turbo Gauge on SSD1306 IIC OLED with Sparkfun ATtiny85 board 2 | Turbo Gauge on SSD1306 IIC OLED with Sparkfun ATtiny85 board 3 | 4 | 5 | **YOUTUBE VIDEO: https://youtu.be/8IKBzZKTgD0** 6 | 7 | **WOKWI sketch: https://wokwi.com/projects/378474884125460481** 8 | 9 | **Same project with Arduino UNO: https://youtu.be/JXmw1xOlBdk** 10 | 11 | 12 | 13 | Links from the video: 14 | - Attiny85 Digispark board: https://s.click.aliexpress.com/e/_DC6lBqT 15 | - SSD1306xled library: https://github.com/tinusaur/ssd1306xled 16 | - Digistump drivers: https://github.com/digistump/DigistumpArduino/releases 17 | - Additional boards json file: http://digistump.com/package_digistump_index.json 18 | - 128x64 SSD1306 OLED Display 1.54": https://s.click.aliexpress.com/e/_DCYdWXb 19 | - Colorful breadboards: https://s.click.aliexpress.com/e/_DmQH8V9 20 | - Potentiometer 10K: https://s.click.aliexpress.com/e/_DkU6R5D 21 | - Colorful knobs: https://s.click.aliexpress.com/e/_DlOIaoj 22 | - Image2cpp (convert array to image): https://javl.github.io/image2cpp/ 23 | - Photopea (online graphics editor like Photoshop): https://www.photopea.com/ 24 | 25 | 26 | Related videos with Arduino UNO and 128x64 OLED screen: 27 | - Arduino + OLED displays: https://www.youtube.com/playlist?list=PLjQRaMdk7pBZ1UV3IL5ol8Qc7R9k-kwXA 28 | 29 | 30 | 31 | ![THUMB_attiny85_turbo_gauge](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/b11f9041-ac43-463a-8eb7-d44b17678ec8) 32 | 33 | 34 | 35 | 36 | Small animations: 37 | 38 | ![attiny85_turbo_gauge_timer](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/ceee48a2-508d-4c57-9bc3-c46b202cde59) 39 | 40 | 41 | ![attiny85_turbo_gauge_pot](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/88968ee4-abaf-4a90-acee-e5f00adb92dc) 42 | 43 | 44 | 45 | 46 | Screenshots from the video: 47 | 48 | ![CAMTASIA_attiny_turbo_oled (Time 0_00_00;00)](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/564a0028-b42f-4762-ad26-6b69ea6dc8df) 49 | ![CAMTASIA_attiny_turbo_oled (Time 0_00_11;28)](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/f4fa7997-6c4d-439e-ac99-07d25b2a4b41) 50 | ![CAMTASIA_attiny_turbo_oled (Time 0_00_27;13)](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/d3c1d889-230f-49d7-be35-b383f998faa7) 51 | ![CAMTASIA_attiny_turbo_oled (Time 0_04_00;27)](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/78a39981-50c6-4394-ac30-be0bb3562eff) 52 | ![CAMTASIA_attiny_turbo_oled (Time 0_04_11;12)](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/5d29cc24-f01a-4558-9c25-98e8991d719b) 53 | ![CAMTASIA_attiny_turbo_oled (Time 0_07_43;00)](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/1202e561-5dc3-4136-b191-1718b6c2732a) 54 | ![CAMTASIA_attiny_turbo_oled (Time 0_10_59;21)](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/27676de3-74ca-48ee-aff2-e069982e1799) 55 | ![CAMTASIA_attiny_turbo_oled (Time 0_11_30;18)](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/4b3ff9be-26a1-42bd-9f22-e679cd8b7f36) 56 | ![CAMTASIA_attiny_turbo_oled (Time 0_11_58;07)](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/51ce841c-8745-4187-b3bd-3633c693700d) 57 | ![CAMTASIA_attiny_turbo_oled (Time 0_13_21;26)](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/7cf48abb-8406-4cac-a414-f09e27c18863) 58 | ![CAMTASIA_attiny_turbo_oled (Time 0_13_45;02)](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/8de3c8aa-4c65-4482-ba8f-448936dc3592) 59 | ![CAMTASIA_attiny_turbo_oled (Time 0_22_13;27)](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/b6ccf02d-b81a-4cc1-86b4-11cccc17dd10) 60 | ![CAMTASIA_attiny_turbo_oled (Time 0_22_17;10)](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/79a97626-c58c-4751-94b7-5640d1c19146) 61 | ![CAMTASIA_attiny_turbo_oled (Time 0_22_23;19)](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/165bc913-102d-4df1-ab49-c4a97a7f6030) 62 | ![CAMTASIA_attiny_turbo_oled (Time 0_22_36;16)](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/80b69be8-a382-4481-8503-eb3f0cb0f080) 63 | ![CAMTASIA_attiny_turbo_oled (Time 0_23_16;08)](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/3df328e1-32e4-48fe-9f68-4ae4956f26ed) 64 | ![CAMTASIA_attiny_turbo_oled (Time 0_23_39;24)](https://github.com/upiir/turbo_gauge_attiny85/assets/117754156/c2bc43d7-bc35-4429-ae77-388aa6253e79) 65 | -------------------------------------------------------------------------------- /attiny85_turbo_gauge/attiny85_turbo_gauge.ino: -------------------------------------------------------------------------------- 1 | // simple project using ATTINY85 on Digispark board and SSD1306 128x64pxIIC OLED Display to show turbo gauge indicator 2 | 3 | // created by upir, 2023 4 | // youtube channel: https://www.youtube.com/upir_upir 5 | 6 | // YOUTUBE VIDEO: https://youtu.be/8IKBzZKTgD0 7 | // Same project using Arduino UNO: https://youtu.be/JXmw1xOlBdk 8 | 9 | // Links from the video: 10 | // Attiny85 Digispark board: https://s.click.aliexpress.com/e/_DC6lBqT 11 | // SSD1306xled library: https://github.com/tinusaur/ssd1306xled 12 | // Digistump drivers: https://github.com/digistump/DigistumpArduino/releases 13 | // Additional boards json file: http://digistump.com/package_digistump_index.json 14 | // 128x64 SSD1306 OLED Display 1.54": https://s.click.aliexpress.com/e/_DCYdWXb 15 | // Colorful breadboards: https://s.click.aliexpress.com/e/_DmQH8V9 16 | // Potentiometer 10K: https://s.click.aliexpress.com/e/_DkU6R5D 17 | // Colorful knobs: https://s.click.aliexpress.com/e/_DlOIaoj 18 | // Image2cpp (convert array to image): https://javl.github.io/image2cpp/ 19 | // Photopea (online graphics editor like Photoshop): https://www.photopea.com/ 20 | 21 | // Related videos with Arduino UNO and 128x64 OLED screen: 22 | // Arduino + OLED displays: https://www.youtube.com/playlist?list=PLjQRaMdk7pBZ1UV3IL5ol8Qc7R9k-kwXA 23 | 24 | #include 25 | //#include - fonts for the ssd1306xled library, but we are not drawing any strings 26 | //#include - fonts for the ssd1306xled library, but we are not drawing any strings 27 | #include 28 | #include "image.h" // fullscreen image for the turbo gauge, generated by image2cpp website 29 | 30 | // default PIN configuration for OLED display and ATTINY85 is: 31 | // VCC ---- vcc 32 | // GND ---- gnd 33 | // SCL ---- pb2 34 | // SDA ---- pb0 35 | 36 | // animated piece of the turbo icon (3 frames) 37 | const unsigned char epd_bitmap_icon_anim_01 [] PROGMEM = { 0x42, 0xc3, 0x3c, 0x3c, 0x3c, 0x3c, 0xc3, 0x42}; 38 | const unsigned char epd_bitmap_icon_anim_02 [] PROGMEM = { 0x42, 0xa9, 0x1a, 0x7c, 0x3e, 0x58, 0x95, 0x42}; 39 | const unsigned char epd_bitmap_icon_anim_03 [] PROGMEM = { 0x42, 0x95, 0x58, 0x3e, 0x7c, 0x1a, 0xa9, 0x42}; 40 | 41 | const unsigned char* icon_anim_array[3] = { 42 | epd_bitmap_icon_anim_01, 43 | epd_bitmap_icon_anim_02, 44 | epd_bitmap_icon_anim_03 45 | }; 46 | 47 | byte icon_anim_frame = 0; // current frame 48 | 49 | const uint8_t gauge_fill [] PROGMEM = { B11111111 }; // image for fully filled gauge 50 | const uint8_t gauge_empty [] PROGMEM = { B00000000 }; // image for fully empty gauge 51 | const uint8_t gauge_red_a [] PROGMEM = { B01010101 }; // image for red area (checkerboard) 52 | const uint8_t gauge_red_b [] PROGMEM = { B10101010 }; // image for red area (checkerboard) 53 | 54 | int gauge_width = 30; // width of the gauge - size could be from 0-122px 55 | 56 | void setup() { 57 | _delay_ms(40); 58 | SSD1306.ssd1306_init(); // display initialization 59 | 60 | SSD1306.ssd1306_draw_bmp(0, 0, 128, 8, turbo_gauge_128x64_image); // draw fullscreen 128x64 image, only once 61 | pinMode(A2, INPUT); // set pin A2 (pin PB4) as input to measure voltage - potentiometer value 62 | } 63 | 64 | void loop() { 65 | 66 | int pot_value = analogRead(A2); // read potentiometer value, 0-1023 67 | gauge_width = map(pot_value, 0, 1023, 0, 112); // remap the potentiometer value between values 0-122px (max gauge width) 68 | 69 | for (int i = 0; i < 112; i++) { // go over entire width of the gauge 70 | if (i < gauge_width) { // if the current position is smaller than gauge width 71 | SSD1306.ssd1306_draw_bmp(8 + i, 2, 8 + i + 1, 3, gauge_fill); // draw filled gauge 72 | } else { // not the filled gauge - could be the empty gauge or checkerboard 73 | if (i > 88) { // draw checkerboard 74 | SSD1306.ssd1306_draw_bmp(8 + i, 2, 8 + i + 1, 3, i % 2 ? gauge_red_a : gauge_red_b); // draw checkerboard, toggle between two images based on the x position 75 | } else { // draw empty gauge 76 | SSD1306.ssd1306_draw_bmp(8 + i, 2, 8 + i + 1, 3, gauge_empty); // draw empty gauge 77 | } 78 | } 79 | } 80 | 81 | SSD1306.ssd1306_draw_bmp(5 * 8, 5, 6 * 8, 6, icon_anim_array[icon_anim_frame]); // draw the animation part of the turbo gauge 82 | icon_anim_frame = (icon_anim_frame + 1) % 3; // increase the current frame, go over values 0-2 83 | 84 | 85 | // gauge_width = (gauge_width + 1) % 112; // increase the gauge_width between 0-112px 86 | } 87 | -------------------------------------------------------------------------------- /attiny85_turbo_gauge/image.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | const uint8_t turbo_gauge_128x64_image [] PROGMEM = { 4 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xf8, 0x08, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 5 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 7 | 0xf8, 0xf8, 0x00, 0x00, 0xf8, 0xf8, 0x08, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 9 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0xe8, 0x28, 0x38, 0x38, 10 | 0x00, 0xf8, 0xf8, 0x08, 0xf8, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 11 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 12 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x41, 0x5d, 0x41, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 13 | 0x40, 0x40, 0x40, 0x50, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x5c, 0x40, 14 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x50, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 15 | 0x41, 0x41, 0x41, 0x40, 0x5d, 0x41, 0x41, 0x41, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x50, 16 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x5c, 0x40, 0x40, 0x40, 0x40, 0x40, 17 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x50, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, 0x41, 0x41, 18 | 0x5c, 0x41, 0x41, 0x41, 0x41, 0x41, 0x40, 0x40, 0x40, 0x40, 0x40, 0x50, 0x40, 0x40, 0x40, 0x40, 19 | 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x5c, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 20 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 21 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 22 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 23 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 24 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 25 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 26 | 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 27 | 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 28 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 29 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 30 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 31 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 32 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 33 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 34 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 35 | 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 36 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 37 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 38 | 0x00, 0x00, 0x80, 0x60, 0x10, 0x08, 0x08, 0x04, 0x04, 0x02, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 39 | 0x82, 0x82, 0x82, 0x82, 0x82, 0x01, 0x01, 0x01, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 40 | 0x00, 0x10, 0x10, 0xf0, 0xf0, 0x10, 0x10, 0x00, 0xf0, 0xf0, 0x00, 0xf0, 0xf0, 0x00, 0xf0, 0xf0, 41 | 0x90, 0xf0, 0x70, 0x00, 0xf0, 0xf0, 0x50, 0xf0, 0xb0, 0x00, 0xf0, 0xf0, 0x10, 0xf0, 0xf0, 0x00, 42 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 43 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 44 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 45 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 46 | 0x00, 0x7e, 0x81, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x42, 0x95, 0x58, 0x3e, 0x7c, 0x1a, 0xa9, 0x42, 47 | 0x3c, 0x00, 0x00, 0x00, 0x00, 0x81, 0x7f, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 48 | 0x00, 0xc0, 0xc0, 0x43, 0xc3, 0xc0, 0x00, 0xc0, 0xc3, 0x43, 0xc2, 0xc3, 0x03, 0xc0, 0xc3, 0x43, 49 | 0xc0, 0xc3, 0x03, 0xc0, 0xc3, 0x43, 0x42, 0x43, 0x03, 0x40, 0x43, 0xc3, 0xc2, 0x43, 0x43, 0x00, 50 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 51 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 52 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 53 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 54 | 0x00, 0x00, 0x01, 0x06, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x41, 0x41, 0x41, 0x41, 0x40, 0x20, 55 | 0x20, 0x10, 0x10, 0x08, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 56 | 0x00, 0x0f, 0x0f, 0x09, 0x0f, 0x0e, 0x00, 0x0f, 0x0f, 0x08, 0x0f, 0x0f, 0x00, 0x0f, 0x0f, 0x08, 57 | 0x0f, 0x0f, 0x00, 0x0d, 0x0d, 0x09, 0x0f, 0x0f, 0x00, 0x00, 0x00, 0x0f, 0x0f, 0x00, 0x00, 0x00, 58 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 59 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 60 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 61 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 62 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 63 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 64 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 65 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 66 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 67 | 0x00, 0x00, 0x00, 0xf0, 0x80, 0x70, 0x00, 0xf0, 0x50, 0x30, 0x00, 0xd0, 0x00, 0xf0, 0x50, 0xb0 68 | }; 69 | --------------------------------------------------------------------------------