├── README.md ├── alldigits.c ├── illustration.jpg └── nixietubeM5.ino /README.md: -------------------------------------------------------------------------------- 1 | # nixietubeM5 2 | (Fake) Nixie Tube Display on a M5Stack 3 | 4 | ![Illustration](illustration.jpg) 5 | 6 | For a video see 7 | https://twitter.com/drayde/status/995242200631054336 8 | 9 | 10 | Original Nixie tube images © 2007-08 Čestmír Hýbl 11 | Taken from http://cestmir.freeside.sk/projects/dhtml-nixie-display/ 12 | Free for non-commercial use only 13 | -------------------------------------------------------------------------------- /illustration.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/drayde/nixietubeM5/585874c2e7226f0ee2b6c8feac897ab0ce2fd8f6/illustration.jpg -------------------------------------------------------------------------------- /nixietubeM5.ino: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | 4 | extern const unsigned char d0[], d1[], d2[], d3[], d4[], d5[], d6[], d7[], d8[], d9[]; 5 | extern const unsigned long d0len, d1len, d2len, d3len, d4len, d5len, d6len, d7len, d8len, d9len; 6 | 7 | int number = 0; 8 | 9 | void setup() 10 | { 11 | M5.begin(); 12 | M5.Lcd.fillScreen(TFT_BLACK); 13 | M5.Lcd.setBrightness(255); 14 | } 15 | 16 | void loop() 17 | { 18 | if (number>99) 19 | number = 0; 20 | 21 | showNumber(number); 22 | delay(1000); 23 | 24 | number++; 25 | } 26 | 27 | void showNumber(byte number) 28 | { 29 | byte d1 = number / 10; 30 | byte d2 = number % 10; 31 | showDigit(d1, 14); 32 | showDigit(d2, 160); 33 | } 34 | 35 | void showDigit(byte digit, uint16_t xpos) 36 | { 37 | switch (digit) 38 | { 39 | case 0: M5.Lcd.drawJpg(d0, d0len, xpos, 0); return; 40 | case 1: M5.Lcd.drawJpg(d1, d1len, xpos, 0); return; 41 | case 2: M5.Lcd.drawJpg(d2, d2len, xpos, 0); return; 42 | case 3: M5.Lcd.drawJpg(d3, d3len, xpos, 0); return; 43 | case 4: M5.Lcd.drawJpg(d4, d4len, xpos, 0); return; 44 | case 5: M5.Lcd.drawJpg(d5, d5len, xpos, 0); return; 45 | case 6: M5.Lcd.drawJpg(d6, d6len, xpos, 0); return; 46 | case 7: M5.Lcd.drawJpg(d7, d7len, xpos, 0); return; 47 | case 8: M5.Lcd.drawJpg(d8, d8len, xpos, 0); return; 48 | case 9: M5.Lcd.drawJpg(d9, d9len, xpos, 0); return; 49 | } 50 | } 51 | 52 | --------------------------------------------------------------------------------