From 4c3967185072d38c774f311199d620d5e86347ed Mon Sep 17 00:00:00 2001 From: Felix Pankratz Date: Sat, 16 Nov 2024 21:15:04 +0100 Subject: [PATCH] matrix rain --- nametag/.gitignore | 4 + nametag/Makefile | 21 ++++ nametag/platformio.ini | 22 ++++ nametag/src/caveatbrush9pt7b.h | 184 +++++++++++++++++++++++++++++++++ nametag/src/main.cpp | 129 +++++++++++++++++++++++ nametag/src/main.h | 10 ++ 6 files changed, 370 insertions(+) create mode 100644 nametag/.gitignore create mode 100644 nametag/Makefile create mode 100644 nametag/platformio.ini create mode 100644 nametag/src/caveatbrush9pt7b.h create mode 100644 nametag/src/main.cpp create mode 100644 nametag/src/main.h diff --git a/nametag/.gitignore b/nametag/.gitignore new file mode 100644 index 0000000..1159b2d --- /dev/null +++ b/nametag/.gitignore @@ -0,0 +1,4 @@ +.pio +.clang_complete +.gcc-flags.json +.ccls diff --git a/nametag/Makefile b/nametag/Makefile new file mode 100644 index 0000000..c5e3ab2 --- /dev/null +++ b/nametag/Makefile @@ -0,0 +1,21 @@ +# Uncomment lines below if you have problems with $PATH +#SHELL := /bin/bash +#PATH := /usr/local/bin:$(PATH) + +all: + pio.exe -f -c vim run + +upload: + pio.exe -f -c vim run --target upload + +clean: + pio.exe -f -c vim run --target clean + +program: + pio.exe -f -c vim run --target program + +uploadfs: + pio.exe -f -c vim run --target uploadfs + +update: + pio.exe -f -c vim update diff --git a/nametag/platformio.ini b/nametag/platformio.ini new file mode 100644 index 0000000..0e62411 --- /dev/null +++ b/nametag/platformio.ini @@ -0,0 +1,22 @@ +; PlatformIO Project Configuration File +; +; Build options: build flags, source filter +; Upload options: custom upload port, speed and extra flags +; Library options: dependencies, extra library storages +; Advanced options: extra scripting +; +; Please visit documentation for the other options and examples +; https://docs.platformio.org/page/projectconf.html + +[env:adafruit_matrixportal_esp32s3] +platform = espressif32 +board = adafruit_matrixportal_esp32s3 +framework = arduino +monitor_speed = 115200 + +lib_deps = + adafruit/Adafruit GFX Library + adafruit/Adafruit BusIO + Wire + fastled/FastLED + https://github.com/mrfaptastic/ESP32-HUB75-MatrixPanel-I2S-DMA.git diff --git a/nametag/src/caveatbrush9pt7b.h b/nametag/src/caveatbrush9pt7b.h new file mode 100644 index 0000000..e35f9a0 --- /dev/null +++ b/nametag/src/caveatbrush9pt7b.h @@ -0,0 +1,184 @@ +const uint8_t CaveatBrush_Regular9pt7bBitmaps[] PROGMEM = { + 0x00, 0x25, 0xB6, 0xDB, 0x6D, 0x81, 0xD8, 0xDE, 0xF5, 0x29, 0x48, 0x06, + 0x40, 0x4E, 0x0C, 0xC0, 0xDF, 0x0F, 0xC7, 0xD8, 0xF1, 0xE1, 0xFE, 0xFF, + 0x0F, 0x30, 0x23, 0x06, 0x20, 0x62, 0x00, 0x10, 0x47, 0xF7, 0xDF, 0x5F, + 0x1E, 0x3C, 0xBA, 0xFF, 0x78, 0x82, 0x00, 0x60, 0x03, 0x80, 0x34, 0x01, + 0xB1, 0x8D, 0x98, 0x68, 0x83, 0x4C, 0x0C, 0xCC, 0x06, 0xF0, 0x66, 0x82, + 0x24, 0x31, 0xA1, 0x0F, 0x08, 0x30, 0x18, 0x1E, 0x0B, 0x05, 0x83, 0x81, + 0xD9, 0xED, 0xF6, 0xCF, 0x67, 0x33, 0xDF, 0xF7, 0x38, 0xFE, 0xA0, 0x3B, + 0x99, 0xCE, 0x63, 0x18, 0xC6, 0x30, 0x86, 0x10, 0xC3, 0x30, 0x41, 0x86, + 0x18, 0x61, 0xC7, 0x18, 0x61, 0x84, 0x33, 0x80, 0x30, 0x5F, 0xCE, 0xF1, + 0x40, 0x10, 0x10, 0x10, 0xFE, 0xFF, 0x18, 0x18, 0x18, 0xFF, 0x80, 0xFF, + 0xE0, 0xBD, 0x0C, 0x21, 0x86, 0x10, 0xC3, 0x08, 0x61, 0x84, 0x30, 0xC3, + 0x08, 0x00, 0x3C, 0x3C, 0x7E, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6E, + 0x7C, 0x3C, 0x08, 0x73, 0x9E, 0xF8, 0x61, 0x86, 0x18, 0x61, 0x86, 0x38, + 0xF9, 0xDB, 0x34, 0xE3, 0x87, 0x1C, 0x70, 0xC3, 0xF3, 0xF0, 0x1C, 0xFD, + 0xFA, 0x30, 0xE1, 0x8F, 0x1F, 0x06, 0x0F, 0xF7, 0xE7, 0x00, 0x0E, 0x0F, + 0x07, 0x86, 0xC7, 0x63, 0x23, 0xBD, 0xFF, 0xFC, 0x76, 0x03, 0x01, 0x80, + 0xC0, 0x7E, 0x7F, 0x60, 0x60, 0x7C, 0xFE, 0x03, 0x07, 0x1E, 0x7C, 0xF8, + 0x40, 0x0C, 0x1C, 0x38, 0x38, 0x30, 0x7E, 0x7F, 0x73, 0x67, 0xE6, 0x6E, + 0x78, 0x10, 0xFD, 0xFD, 0xF8, 0xE1, 0x87, 0x0C, 0x18, 0x70, 0xC1, 0x83, + 0x00, 0x1C, 0x3E, 0x72, 0x72, 0x36, 0x3C, 0x1C, 0x3E, 0x6E, 0x67, 0xE7, + 0x47, 0x6E, 0x3C, 0x1E, 0x3E, 0x77, 0x67, 0xE7, 0xEF, 0xFE, 0x76, 0x0E, + 0x0E, 0x0C, 0x1C, 0x08, 0xFC, 0x2F, 0xC0, 0xFC, 0x0F, 0xF8, 0x0E, 0x38, + 0xE7, 0x06, 0x06, 0x06, 0x06, 0xFF, 0xE0, 0x00, 0xEF, 0xE0, 0xE0, 0xE0, + 0xE0, 0x70, 0xE3, 0x0C, 0x30, 0x11, 0xF6, 0xF3, 0xDC, 0x63, 0x8C, 0x71, + 0x80, 0x00, 0x61, 0x80, 0x03, 0x01, 0xF0, 0x71, 0x18, 0x33, 0x72, 0xDB, + 0xDA, 0xDA, 0x56, 0xDD, 0xD9, 0x81, 0x00, 0x21, 0x83, 0xF0, 0x3C, 0x00, + 0x1C, 0x1C, 0x3E, 0x36, 0x36, 0x66, 0x7E, 0x7E, 0x66, 0x67, 0xE3, 0xE3, + 0x71, 0xFB, 0xB6, 0x2C, 0xDB, 0x3F, 0x63, 0xC7, 0x8F, 0x3F, 0xE7, 0x80, + 0x38, 0xFB, 0xBF, 0x6C, 0xD8, 0x30, 0x60, 0xC1, 0x83, 0xB3, 0xE3, 0x80, + 0x7C, 0xFE, 0xF7, 0x73, 0x63, 0x63, 0x63, 0x63, 0x66, 0x66, 0x7C, 0x78, + 0x20, 0x7D, 0xE6, 0x38, 0xE3, 0x2F, 0xB8, 0xC3, 0x0C, 0x3F, 0x78, 0x0E, + 0xFF, 0xE0, 0x60, 0x60, 0x7C, 0xFC, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, + 0x3E, 0x7A, 0x60, 0xE0, 0xC2, 0xCE, 0xCB, 0xC3, 0xC7, 0xEE, 0xFE, 0x16, + 0x06, 0xE1, 0xE3, 0xE3, 0xE3, 0xC3, 0xFF, 0xFB, 0xC7, 0xC6, 0xC6, 0xE7, + 0x43, 0x08, 0xFD, 0xE0, 0xC3, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC3, 0xEF, + 0x80, 0x1E, 0xFC, 0x30, 0x60, 0xC1, 0x83, 0x06, 0x0D, 0x99, 0x33, 0xC1, + 0x00, 0x60, 0x67, 0x66, 0x6C, 0xF8, 0xF0, 0xF0, 0xF0, 0xF8, 0xDC, 0xCE, + 0xCF, 0xC0, 0x63, 0x39, 0x8C, 0x63, 0x18, 0xC6, 0x76, 0xF0, 0x00, 0x0C, + 0x77, 0x1D, 0xC7, 0x71, 0xDE, 0xFF, 0xBF, 0x6F, 0xDF, 0xF7, 0xBD, 0xCF, + 0x33, 0x40, 0x40, 0x63, 0x63, 0xF3, 0xF3, 0xF2, 0xF2, 0xDA, 0xDA, 0xDE, + 0xDE, 0xCE, 0xC6, 0x38, 0xF9, 0xB7, 0x7C, 0xF8, 0xF1, 0xE3, 0xC7, 0x8F, + 0x37, 0xE7, 0x80, 0x7C, 0xFE, 0x31, 0x31, 0x31, 0x33, 0x37, 0x3E, 0x7C, + 0x30, 0x30, 0x30, 0x10, 0x10, 0x3C, 0x7C, 0x66, 0xE6, 0xE6, 0xE6, 0xC6, + 0xC6, 0xC6, 0xD4, 0xDC, 0x7C, 0x06, 0x03, 0x7C, 0xFE, 0x62, 0x66, 0xDC, + 0xF8, 0xF0, 0xD8, 0xD8, 0xDC, 0xCE, 0xC3, 0x3C, 0x7D, 0xBB, 0x36, 0x4E, + 0x0E, 0x0E, 0x0E, 0x8F, 0x9B, 0xF3, 0xC0, 0x03, 0x8F, 0xFF, 0x01, 0x80, + 0xC0, 0x60, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x00, 0x80, 0xE2, 0xE6, + 0xE6, 0xC6, 0xC6, 0xC6, 0xCE, 0xCE, 0xCE, 0xDE, 0xFE, 0x76, 0x00, 0x01, + 0xB1, 0xD8, 0xCC, 0x66, 0x33, 0x11, 0x98, 0xEC, 0x34, 0x1E, 0x0F, 0x07, + 0x81, 0x80, 0x66, 0xF9, 0xBE, 0x6F, 0x9B, 0xE6, 0xF3, 0xBC, 0xEF, 0x7F, + 0xDF, 0xBD, 0xEF, 0x31, 0x80, 0x61, 0xB1, 0xCC, 0xC6, 0xE1, 0xE0, 0xE0, + 0x70, 0x78, 0x36, 0x3B, 0x39, 0xCC, 0x60, 0x66, 0x66, 0x66, 0x67, 0x67, + 0x76, 0x36, 0x3E, 0x0E, 0x0E, 0xCC, 0x7C, 0x38, 0x7F, 0xBF, 0xC1, 0xC0, + 0xC0, 0xE0, 0xE0, 0x60, 0x60, 0x70, 0x30, 0xBF, 0xDF, 0x84, 0x00, 0x79, + 0xF6, 0x10, 0x41, 0x0C, 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0C, 0x1E, 0x7C, + 0x83, 0x0C, 0x18, 0x60, 0x83, 0x0C, 0x10, 0x61, 0x86, 0x08, 0x30, 0xC0, + 0xF9, 0xE0, 0x82, 0x0C, 0x20, 0x82, 0x08, 0x20, 0x82, 0x18, 0x61, 0xBE, + 0x78, 0x00, 0x63, 0x9F, 0x4E, 0x30, 0x40, 0xFF, 0xFF, 0xE0, 0xC6, 0x30, + 0x79, 0xF3, 0x66, 0xCD, 0xDB, 0xBF, 0x33, 0x43, 0x0C, 0x30, 0xC3, 0x0F, + 0xFB, 0xEF, 0x3C, 0xF3, 0xDB, 0xC0, 0x77, 0xB7, 0xBC, 0x67, 0xCE, 0x0C, + 0x30, 0xC3, 0x0D, 0xFF, 0xF7, 0xDF, 0x7D, 0xF7, 0xFF, 0xB0, 0x00, 0x73, + 0xF7, 0xBF, 0x7B, 0x3F, 0x70, 0x1E, 0x3C, 0xC1, 0x83, 0x1F, 0xBF, 0x38, + 0x70, 0xE1, 0xC3, 0x87, 0x06, 0x00, 0x7F, 0xF7, 0xBD, 0xED, 0xE3, 0x18, + 0xFC, 0xE0, 0xC3, 0x0C, 0x30, 0xC3, 0x6D, 0xFF, 0xEB, 0xAE, 0xB2, 0xDB, + 0x30, 0xF4, 0xBF, 0xFD, 0x0C, 0x70, 0x80, 0x00, 0x61, 0x86, 0x18, 0x61, + 0x86, 0x18, 0x6B, 0x3C, 0x00, 0x41, 0x83, 0x06, 0x0C, 0x59, 0xB6, 0x7C, + 0xE1, 0xE3, 0xE6, 0xF4, 0x00, 0x6B, 0x6D, 0xB6, 0xDB, 0x64, 0xC0, 0x6D, + 0xBF, 0xDD, 0xEE, 0xD7, 0x6B, 0xB6, 0x93, 0xC9, 0xBB, 0xF7, 0xEE, 0xDD, + 0xB3, 0x66, 0x77, 0xF7, 0xBC, 0xEF, 0xEE, 0x01, 0x0D, 0xFF, 0xEF, 0x3C, + 0xB6, 0xF3, 0x0C, 0x30, 0xC1, 0x00, 0x71, 0xF3, 0x36, 0xE9, 0xD7, 0xBB, + 0x16, 0x0C, 0x18, 0x38, 0x60, 0x46, 0xFD, 0xCC, 0x63, 0x18, 0x40, 0x67, + 0xB7, 0x86, 0x1A, 0x52, 0xF0, 0x10, 0x30, 0x61, 0xCF, 0xE6, 0x0C, 0x18, + 0x30, 0x60, 0xC1, 0x81, 0x00, 0x4F, 0xBC, 0xF7, 0xDF, 0x7F, 0xD9, 0x8E, + 0x39, 0xB6, 0xDB, 0xCF, 0x3C, 0x70, 0x80, 0xD3, 0xDB, 0xDA, 0xDA, 0xDE, + 0xFE, 0x7E, 0x20, 0x64, 0xFC, 0xE1, 0x87, 0x8F, 0x13, 0x66, 0x04, 0x4E, + 0xF7, 0xBD, 0xEF, 0xFD, 0x18, 0xFE, 0xE0, 0x7C, 0xF8, 0x38, 0xE7, 0x0C, + 0x30, 0xBF, 0x70, 0x10, 0xF3, 0xCC, 0x30, 0xC3, 0x0C, 0x30, 0xCE, 0x0C, + 0x30, 0xC7, 0x1C, 0x30, 0x70, 0x55, 0x7F, 0xFF, 0xF4, 0x61, 0x8C, 0x63, + 0x18, 0xC4, 0x31, 0xCC, 0x63, 0x18, 0xC6, 0xE0, 0xE3, 0xFC, 0x38 }; + +const GFXglyph CaveatBrush_Regular9pt7bGlyphs[] PROGMEM = { + { 0, 1, 1, 4, 0, 0 }, // 0x20 ' ' + { 1, 3, 15, 4, 0, -13 }, // 0x21 '!' + { 7, 5, 6, 6, 1, -12 }, // 0x22 '"' + { 11, 12, 13, 10, -1, -11 }, // 0x23 '#' + { 31, 6, 15, 8, 1, -12 }, // 0x24 '$' + { 43, 13, 14, 14, 1, -12 }, // 0x25 '%' + { 66, 9, 13, 9, 0, -11 }, // 0x26 '&' + { 81, 2, 6, 3, 1, -12 }, // 0x27 ''' + { 83, 5, 16, 5, 1, -13 }, // 0x28 '(' + { 93, 6, 14, 5, -1, -12 }, // 0x29 ')' + { 104, 6, 6, 7, 0, -12 }, // 0x2A '*' + { 109, 8, 8, 9, 1, -8 }, // 0x2B '+' + { 117, 2, 5, 4, 1, -1 }, // 0x2C ',' + { 119, 6, 2, 7, 1, -4 }, // 0x2D '-' + { 121, 2, 4, 4, 1, -2 }, // 0x2E '.' + { 122, 6, 15, 5, 0, -11 }, // 0x2F '/' + { 134, 8, 12, 8, 0, -11 }, // 0x30 '0' + { 146, 6, 12, 6, 0, -11 }, // 0x31 '1' + { 155, 7, 12, 7, 0, -11 }, // 0x32 '2' + { 166, 7, 13, 8, 0, -11 }, // 0x33 '3' + { 178, 9, 13, 8, 0, -11 }, // 0x34 '4' + { 193, 8, 12, 8, 0, -11 }, // 0x35 '5' + { 205, 8, 13, 8, 0, -11 }, // 0x36 '6' + { 218, 7, 12, 7, 0, -11 }, // 0x37 '7' + { 229, 8, 14, 8, 0, -12 }, // 0x38 '8' + { 243, 8, 13, 8, 0, -11 }, // 0x39 '9' + { 256, 2, 9, 4, 1, -7 }, // 0x3A ':' + { 259, 2, 11, 4, 1, -7 }, // 0x3B ';' + { 262, 7, 8, 9, 1, -8 }, // 0x3C '<' + { 269, 7, 5, 7, 0, -5 }, // 0x3D '=' + { 274, 7, 8, 9, 1, -8 }, // 0x3E '>' + { 281, 6, 14, 8, 1, -12 }, // 0x3F '?' + { 292, 11, 14, 12, 0, -10 }, // 0x40 '@' + { 312, 8, 12, 8, 0, -11 }, // 0x41 'A' + { 324, 7, 13, 9, 1, -11 }, // 0x42 'B' + { 336, 7, 13, 8, 1, -11 }, // 0x43 'C' + { 348, 8, 13, 10, 1, -11 }, // 0x44 'D' + { 361, 6, 13, 7, 1, -11 }, // 0x45 'E' + { 371, 8, 13, 8, 1, -11 }, // 0x46 'F' + { 384, 8, 13, 9, 1, -10 }, // 0x47 'G' + { 397, 8, 12, 10, 1, -12 }, // 0x48 'H' + { 409, 7, 13, 7, 0, -11 }, // 0x49 'I' + { 421, 7, 13, 7, 0, -12 }, // 0x4A 'J' + { 433, 8, 13, 9, 1, -11 }, // 0x4B 'K' + { 446, 5, 12, 7, 1, -11 }, // 0x4C 'L' + { 454, 10, 13, 12, 1, -11 }, // 0x4D 'M' + { 471, 8, 12, 10, 1, -11 }, // 0x4E 'N' + { 483, 7, 13, 9, 1, -11 }, // 0x4F 'O' + { 495, 8, 14, 8, 0, -12 }, // 0x50 'P' + { 509, 8, 14, 9, 1, -11 }, // 0x51 'Q' + { 523, 8, 12, 9, 1, -11 }, // 0x52 'R' + { 535, 7, 13, 8, 0, -11 }, // 0x53 'S' + { 547, 9, 13, 9, 0, -12 }, // 0x54 'T' + { 562, 8, 13, 9, 1, -11 }, // 0x55 'U' + { 575, 9, 13, 9, 0, -12 }, // 0x56 'V' + { 590, 10, 12, 12, 1, -10 }, // 0x57 'W' + { 605, 9, 12, 9, 0, -12 }, // 0x58 'X' + { 619, 8, 13, 8, 0, -11 }, // 0x59 'Y' + { 632, 9, 13, 9, 0, -11 }, // 0x5A 'Z' + { 647, 6, 17, 5, 1, -13 }, // 0x5B '[' + { 660, 6, 15, 5, 0, -11 }, // 0x5C '\' + { 672, 6, 17, 5, -1, -12 }, // 0x5D ']' + { 685, 6, 7, 9, 1, -12 }, // 0x5E '^' + { 691, 10, 2, 12, 1, 2 }, // 0x5F '_' + { 694, 4, 3, 6, 1, -12 }, // 0x60 '`' + { 696, 7, 8, 8, 1, -7 }, // 0x61 'a' + { 703, 6, 14, 8, 1, -12 }, // 0x62 'b' + { 714, 5, 8, 6, 1, -7 }, // 0x63 'c' + { 719, 6, 15, 8, 1, -12 }, // 0x64 'd' + { 731, 5, 9, 7, 1, -7 }, // 0x65 'e' + { 737, 7, 14, 6, 0, -12 }, // 0x66 'f' + { 750, 5, 12, 7, 1, -7 }, // 0x67 'g' + { 758, 6, 14, 8, 1, -12 }, // 0x68 'h' + { 769, 2, 12, 4, 1, -11 }, // 0x69 'i' + { 772, 6, 17, 4, -2, -11 }, // 0x6A 'j' + { 785, 7, 13, 7, 1, -12 }, // 0x6B 'k' + { 797, 3, 13, 4, 1, -11 }, // 0x6C 'l' + { 802, 9, 8, 11, 1, -7 }, // 0x6D 'm' + { 811, 7, 8, 8, 1, -7 }, // 0x6E 'n' + { 818, 5, 8, 7, 1, -7 }, // 0x6F 'o' + { 823, 6, 14, 8, 1, -8 }, // 0x70 'p' + { 834, 7, 12, 8, 1, -7 }, // 0x71 'q' + { 845, 5, 9, 6, 1, -7 }, // 0x72 'r' + { 851, 5, 9, 6, 1, -7 }, // 0x73 's' + { 857, 7, 13, 6, 0, -11 }, // 0x74 't' + { 869, 6, 8, 8, 1, -7 }, // 0x75 'u' + { 875, 6, 9, 7, 1, -7 }, // 0x76 'v' + { 882, 8, 9, 9, 1, -7 }, // 0x77 'w' + { 891, 7, 9, 7, 0, -7 }, // 0x78 'x' + { 899, 5, 12, 7, 1, -7 }, // 0x79 'y' + { 907, 7, 9, 7, 0, -7 }, // 0x7A 'z' + { 915, 6, 18, 5, 0, -13 }, // 0x7B '{' + { 929, 2, 15, 5, 1, -11 }, // 0x7C '|' + { 933, 5, 17, 5, 0, -13 }, // 0x7D '}' + { 944, 7, 3, 9, 1, -6 } }; // 0x7E '~' + +const GFXfont CaveatBrush_Regular9pt7b PROGMEM = { + (uint8_t *)CaveatBrush_Regular9pt7bBitmaps, + (GFXglyph *)CaveatBrush_Regular9pt7bGlyphs, + 0x20, 0x7E, 22 }; + +// Approx. 1619 bytes diff --git a/nametag/src/main.cpp b/nametag/src/main.cpp new file mode 100644 index 0000000..53d5310 --- /dev/null +++ b/nametag/src/main.cpp @@ -0,0 +1,129 @@ +#include +#include "xtensa/core-macros.h" +#include + +#include "main.h" + +#include "caveatbrush9pt7b.h" + +#define R1 42 +#define G1 40 +#define BL1 41 +#define R2 38 +#define G2 37 +#define BL2 39 +#define CH_A 45 +#define CH_B 36 +#define CH_C 48 +#define CH_D 35 +#define CH_E 21 +#define CLK 2 +#define LAT 47 +#define OE 14 + +#define PIN_E 21 +#define PANEL_WIDTH 64 +#define PANEL_HEIGHT 32 // Panel height of 64 will required PIN_E to be defined. + +#define PANELS_NUMBER 1 + +#define PANE_WIDTH PANEL_WIDTH * PANELS_NUMBER +#define PANE_HEIGHT PANEL_HEIGHT +#define NUM_LEDS PANE_WIDTH*PANE_HEIGHT + +#define ONBOARD_LED 13 + +MatrixPanel_I2S_DMA *matrix = nullptr; + +uint16_t colorWheel(uint8_t pos) { + if(pos < 85) { + return matrix->color565(pos * 3, 255 - pos * 3, 0); + } else if(pos < 170) { + pos -= 85; + return matrix->color565(255 - pos * 3, 0, pos * 3); + } else { + pos -= 170; + return matrix->color565(0, pos * 3, 255 - pos * 3); + } +} + +int line_pos[PANEL_WIDTH]; // where a rain marker is (y coordinate) +int line_length[PANEL_WIDTH]; // how long a line is for a given x coord +int line_speed[PANEL_WIDTH]; // how fast each line moves + +void setup(){ + Serial.begin(BAUD_RATE); + pinMode(ONBOARD_LED, OUTPUT); + + for (int i = 0; ibegin(); + matrix->setBrightness8(64); + matrix->fillScreenRGB888(0, 0, 0); + matrix->setFont(&CaveatBrush_Regular9pt7b); +} + +uint8_t color = 0; +const char *str = "Panki"; +void loop() { + + matrix->fillScreenRGB888(0, 0, 0); + for (int x = 0; x < PANEL_WIDTH; x++) { + // step down a pixel + line_pos[x]++; + if (line_pos[x] > PANEL_HEIGHT) { + line_pos[x] = 0; + } + if (line_pos[x] >= 0) { + //draw our pixel + matrix->drawPixel(x, line_pos[x], matrix->color565(128, 255, 128)); + // draw our trail + for (int trail_offset = 1; trail_offset < line_length[x]; trail_offset++) { + //if (random(10) > 8) { + // trail_offset++; + //} + int trail_y = line_pos[x] - trail_offset; + if (trail_y >= 0) { + matrix->drawPixel(x, trail_y, matrix->color565(0, (255 / line_length[x]) * (line_length[x] - trail_offset), 0)); + } else { + if (line_pos[x] >= 0) { + matrix->drawPixel(x, PANEL_HEIGHT + trail_y, matrix->color565(0, 255 - (trail_offset * 16) , 0)); + } else { + break; + } + } + } + } + } + delay(100); + //for (color=0; color<256; color++) { + // // create a border + // matrix->drawRect(0, 0, matrix->width(), matrix->height(), colorWheel(color)); + // matrix->drawRect(1, 1, matrix->width()-2, matrix->height()-2, colorWheel(color)); + + // matrix->setTextSize(1); + // matrix->setTextWrap(false); + // matrix->setCursor(8, 22); + + // //const char *str = "Panki"; + // matrix->setTextColor(colorWheel(color+128)); + // matrix->print(str); + // delay(100); + //} +} + diff --git a/nametag/src/main.h b/nametag/src/main.h new file mode 100644 index 0000000..e4e784a --- /dev/null +++ b/nametag/src/main.h @@ -0,0 +1,10 @@ +#include + +#define BAUD_RATE 115200 // serial debug port baud rate + +void buffclear(CRGB *buf); +uint16_t XY16( uint16_t x, uint16_t y); +void mxfill(CRGB *leds); +uint16_t colorWheel(uint8_t pos); +void drawText(int colorWheelOffset); +