From 5e7421ec827e5a8a475173c2b54cb4b94cda9413 Mon Sep 17 00:00:00 2001 From: radex Date: Sat, 23 Mar 2024 19:06:39 +0100 Subject: [PATCH] show animation --- firmware/gfx/01.bmp | Bin 0 -> 142 bytes firmware/gfx/02.bmp | Bin 0 -> 142 bytes firmware/gfx/03.bmp | Bin 0 -> 142 bytes firmware/gfx/04.bmp | Bin 0 -> 142 bytes firmware/gfx/05.bmp | Bin 0 -> 142 bytes firmware/gfx/06.bmp | Bin 0 -> 142 bytes firmware/gfx/07.bmp | Bin 0 -> 142 bytes firmware/gfx/08.bmp | Bin 0 -> 142 bytes firmware/gfx/09.bmp | Bin 0 -> 142 bytes firmware/gfx/10.bmp | Bin 0 -> 142 bytes firmware/gfx/11.bmp | Bin 0 -> 142 bytes firmware/gfx/12.bmp | Bin 0 -> 142 bytes firmware/gfx/13.bmp | Bin 0 -> 142 bytes firmware/gfx/14.bmp | Bin 0 -> 142 bytes firmware/gfx/15.bmp | Bin 0 -> 142 bytes firmware/gfx/16.bmp | Bin 0 -> 142 bytes firmware/gfx/17.bmp | Bin 0 -> 138 bytes firmware/gfx/18.bmp | Bin 0 -> 142 bytes firmware/gfx/19.bmp | Bin 0 -> 142 bytes firmware/gfx/20.bmp | Bin 0 -> 142 bytes firmware/gfx/21.bmp | Bin 0 -> 142 bytes firmware/gfx/22.bmp | Bin 0 -> 142 bytes firmware/gfx/23.bmp | Bin 0 -> 142 bytes firmware/gfx/24.bmp | Bin 0 -> 142 bytes firmware/scripts/gfx_convert.py | 55 +++ firmware/src/gfx.h | 585 ++++++++++++++++++++++++++++++++ firmware/src/main.cpp | 58 ++-- 27 files changed, 667 insertions(+), 31 deletions(-) create mode 100644 firmware/gfx/01.bmp create mode 100644 firmware/gfx/02.bmp create mode 100644 firmware/gfx/03.bmp create mode 100644 firmware/gfx/04.bmp create mode 100644 firmware/gfx/05.bmp create mode 100644 firmware/gfx/06.bmp create mode 100644 firmware/gfx/07.bmp create mode 100644 firmware/gfx/08.bmp create mode 100644 firmware/gfx/09.bmp create mode 100644 firmware/gfx/10.bmp create mode 100644 firmware/gfx/11.bmp create mode 100644 firmware/gfx/12.bmp create mode 100644 firmware/gfx/13.bmp create mode 100644 firmware/gfx/14.bmp create mode 100644 firmware/gfx/15.bmp create mode 100644 firmware/gfx/16.bmp create mode 100644 firmware/gfx/17.bmp create mode 100644 firmware/gfx/18.bmp create mode 100644 firmware/gfx/19.bmp create mode 100644 firmware/gfx/20.bmp create mode 100644 firmware/gfx/21.bmp create mode 100644 firmware/gfx/22.bmp create mode 100644 firmware/gfx/23.bmp create mode 100644 firmware/gfx/24.bmp create mode 100644 firmware/scripts/gfx_convert.py create mode 100644 firmware/src/gfx.h diff --git a/firmware/gfx/01.bmp b/firmware/gfx/01.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d581f929a14cd6207b4fa7e8045b7c808f4cbbe3 GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()_SpfrTVSOBCyFfcHFU|>G*fq}`P wfPv{y0RwZx0tWU50S3MX1_rJKAO@-e=>=gvAeI7RK_C`rfMAIOKn@T900Mjyt^fc4 literal 0 HcmV?d00001 diff --git a/firmware/gfx/02.bmp b/firmware/gfx/02.bmp new file mode 100644 index 0000000000000000000000000000000000000000..dda32b94ac21d236654b79cef23a43a015807b85 GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()_SpfrTVSOBCyFfgzH@kbz@0OW4~ u;s*^3j1L4Dm=`cGFfCAEU;)w$6M(pZfq@Z-nGXQP6(E>V04N5;AOHZAW)?gE literal 0 HcmV?d00001 diff --git a/firmware/gfx/03.bmp b/firmware/gfx/03.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5afb4dc533e0e3da1834213cda839bf40ed280aa GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()_SpfrTVSOBCyFfgzHF(VMm0r^5e qEY`rlAS1xQU;~scQD9&Q0n$@|SO|!L!VCsLTmi%`P^<)`ffxXR3lTT~ literal 0 HcmV?d00001 diff --git a/firmware/gfx/04.bmp b/firmware/gfx/04.bmp new file mode 100644 index 0000000000000000000000000000000000000000..bcea0bfd60936775944d0645f3ea1fd45a708226 GIT binary patch literal 142 zcmXZR!3lsc5Jb^QA}Ssf#3HOhf_EXMq=Zyp4VGd-9_%1~5*Oag!0yMXdKX1sRDyT6ybYk;rPL*9#DE#rLsE+geJVa14iyXl literal 0 HcmV?d00001 diff --git a/firmware/gfx/05.bmp b/firmware/gfx/05.bmp new file mode 100644 index 0000000000000000000000000000000000000000..217dc26891c4efa4b4f13fbaae3f40378bcc970e GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()_SpfrTVSOBCyFfgzHF(VK&6o8=z iP~3wd0E$6kAo&YG9KgW91jGyuP<#L=_5g?lz!(4uP8A>k literal 0 HcmV?d00001 diff --git a/firmware/gfx/06.bmp b/firmware/gfx/06.bmp new file mode 100644 index 0000000000000000000000000000000000000000..6149dd0323f2447d196dd3a62f73eccf1772ea49 GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()_Spfr@F0Hg(gcmfa`05Jo@9UvBB bP+*t@ra^3w7)T9BUIB<5fEWgl#T6I;uU-v; literal 0 HcmV?d00001 diff --git a/firmware/gfx/07.bmp b/firmware/gfx/07.bmp new file mode 100644 index 0000000000000000000000000000000000000000..bb9c0619c2288cb6ed25cb4a8a24abfaca249b49 GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()_Spfr*wDsy)O1A~$S1A`F|gJ=*2 Hi4g+;nwkvY literal 0 HcmV?d00001 diff --git a/firmware/gfx/08.bmp b/firmware/gfx/08.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d74cc0deb11a035b110e2f2c6cd4f589201402ce GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()_Spfr*wD)Zd~28NCa3=C(07(|0G INQ@W&0BY3{5&!@I literal 0 HcmV?d00001 diff --git a/firmware/gfx/09.bmp b/firmware/gfx/09.bmp new file mode 100644 index 0000000000000000000000000000000000000000..b809f7f00fa047d87c5c3d5592d8b58b9699e0a1 GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()_Spfr*wDl_&D14Ez?14HB_2n}M- I1&R>^0K9q)m;e9( literal 0 HcmV?d00001 diff --git a/firmware/gfx/10.bmp b/firmware/gfx/10.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e1d5ab2e5efd3402f93fd2a85710f2ac56b2b54b GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()_Spfr*wDpR~1XogDzgIG!fLkN%t K;pIRvVgLZ(Kn{Qa literal 0 HcmV?d00001 diff --git a/firmware/gfx/11.bmp b/firmware/gfx/11.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e28ef718b56d8764bac5e576e5a1d1b9f7f4c224 GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()_Spfr*wD%17u0R~q=1qRod3Jjq@ L8iX~0V#ELd0KX3U literal 0 HcmV?d00001 diff --git a/firmware/gfx/12.bmp b/firmware/gfx/12.bmp new file mode 100644 index 0000000000000000000000000000000000000000..708e3dd6a2336859c447423419de02a67b384f7b GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()_SpfrS~0Hk0TBEsN$_W*;dpaO&I hOa+EeAPvHrKrsd-r~;q{2Pl)V0m7I75@2Cq0020l5itM& literal 0 HcmV?d00001 diff --git a/firmware/gfx/13.bmp b/firmware/gfx/13.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5d10d42e4020761d666359f1ca270f36c6a3fc38 GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()_SpfrS~<-ov^31mJ2aRnHd7BVon z{=L8uDyYEVKKB7bsBi(0oxqTJ_W%P!wE}~L0Rw{v#{vci4g&@Spz(^WAbkuB7aV{D H3j+fHT)!7; literal 0 HcmV?d00001 diff --git a/firmware/gfx/14.bmp b/firmware/gfx/14.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a7a6e387501c11b9f5ce53f22bb3c6204fa020ca GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()WZKqUSP!M3~Qej|dcrt;3MTvo-zu^Fb6Hv{9D*_DDFCJhx`>%i@L}&uT R_dgF97}NzA?p1$a005WUCmjF) literal 0 HcmV?d00001 diff --git a/firmware/gfx/15.bmp b/firmware/gfx/15.bmp new file mode 100644 index 0000000000000000000000000000000000000000..0943f5d2cf506344b5c992a9a32df222d9b1ebd4 GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()WZKqULDZs!mJ+OhHQ%ry%glPgp^A`uO;2EU^ F1^}P38aMy| literal 0 HcmV?d00001 diff --git a/firmware/gfx/16.bmp b/firmware/gfx/16.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e46205564a4e243418629c08facb3808fa1be382 GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()WZKqU+e4h;+nK(Pi+28JdeodD)B h07(Z14yf7&h6!+%1C+%O2xI^a697V>QZP6HBmv&O4)6c~ literal 0 HcmV?d00001 diff --git a/firmware/gfx/17.bmp b/firmware/gfx/17.bmp new file mode 100644 index 0000000000000000000000000000000000000000..53fbc100541da7256a1e140a744c41616eecf179 GIT binary patch literal 138 ocmZ?r?P7ocDTit4l^8D literal 0 HcmV?d00001 diff --git a/firmware/gfx/20.bmp b/firmware/gfx/20.bmp new file mode 100644 index 0000000000000000000000000000000000000000..fc0ba158e1b0b92dfe8f0591f6a3201953566772 GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()WZKqU;TRxMx%2?+qxp`j4k)ztxo HPl`MMdMhQk literal 0 HcmV?d00001 diff --git a/firmware/gfx/21.bmp b/firmware/gfx/21.bmp new file mode 100644 index 0000000000000000000000000000000000000000..dc2c51e74303d6dd77c48e8b5de61436f06f5e06 GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()_Spfs2j8XCZ$q@=(AqB%Giz%-2C L(9nRwCq^CsIj9%9 literal 0 HcmV?d00001 diff --git a/firmware/gfx/22.bmp b/firmware/gfx/22.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3fe237398f3c5d6372bfa36313a29700b622e7a9 GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()_Spfs2zC@27?U0oee_%1G}d}8GR DnF0;E literal 0 HcmV?d00001 diff --git a/firmware/gfx/23.bmp b/firmware/gfx/23.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e0112c6e6772f57c33d5bf0760414528f4ce6738 GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()_Spfr*wgvlPpz`zs&#AQ$#$cKU7 k(gzrR&wjvg_;vvh8!&tZ;c5eh!(d#%@Z0(U5FcOw0NNoPmjD0& literal 0 HcmV?d00001 diff --git a/firmware/gfx/24.bmp b/firmware/gfx/24.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e0112c6e6772f57c33d5bf0760414528f4ce6738 GIT binary patch literal 142 zcmZ?r?PGudJ0PV2#3Dfa=Kufyj0}umi2yJOA()_Spfr*wgvlPpz`zs&#AQ$#$cKU7 k(gzrR&wjvg_;vvh8!&tZ;c5eh!(d#%@Z0(U5FcOw0NNoPmjD0& literal 0 HcmV?d00001 diff --git a/firmware/scripts/gfx_convert.py b/firmware/scripts/gfx_convert.py new file mode 100644 index 0000000..6f36496 --- /dev/null +++ b/firmware/scripts/gfx_convert.py @@ -0,0 +1,55 @@ +# read gfx folder + +import os +import sys +import PIL +from PIL import Image + +def get_all_gfx(): + gfx = [] + for root, dirs, files in os.walk("gfx"): + for file in files: + # file name without extention + name = os.path.splitext(file)[0] + gfx.append((name, os.path.join(root, file))) + + gfx.sort() + return gfx + +def to_code(name, path): + img = Image.open(path) + img = img.convert("1", dither=Image.Dither.FLOYDSTEINBERG) + w, h = img.size + colors = img.getcolors() + print(colors) + + code = f"uint32_t gfx_{name}[{h}] = {'{'}\n" + + for y in range(h): + code += " 0b" + for x in range(w): + px = img.getpixel((x, y)) + code += '1' if px == 0 else '0' + code += ",\n" + + code += "};\n\n" + return code + +if __name__ == "__main__": + gfx = get_all_gfx() + gfx_code = ''.join(to_code(name, path) for name, path in gfx) + + header = f"#pragma once\n#include \n\n/* DO NOT MODIFY - AUTOGENERATED! */\n\n" + + index = f"uint32_t* frames[{len(gfx)}] = {'{'}\n" + for name, _ in gfx: + index += f" gfx_{name},\n" + index += "};\n" + + with open("src/gfx.h", "w") as f: + f.write(header) + f.write("#define GFX_COUNT " + str(len(gfx)) + "\n\n") + f.write(gfx_code) + f.write(index) + + print("gfx.h generated!") diff --git a/firmware/src/gfx.h b/firmware/src/gfx.h new file mode 100644 index 0000000..32f0529 --- /dev/null +++ b/firmware/src/gfx.h @@ -0,0 +1,585 @@ +#pragma once +#include + +/* DO NOT MODIFY - AUTOGENERATED! */ + +#define GFX_COUNT 24 + +uint32_t gfx_01[20] = { + 0b00000000000000010111, + 0b00000000000000001111, + 0b00000000000000011111, + 0b00000011110000001111, + 0b00000010010000000111, + 0b00000010110000100111, + 0b00000011100000001010, + 0b00000111100000000001, + 0b00001110100000000000, + 0b00001010011000000000, + 0b00001010000000000000, + 0b00000010000000000000, + 0b00000010000000000000, + 0b00001110000000000000, + 0b00011010000000000000, + 0b00010001000000000000, + 0b00010000100000000000, + 0b00010000100000000000, + 0b00011000110000000000, + 0b00000000000000000000, +}; + +uint32_t gfx_02[20] = { + 0b00000000000000010111, + 0b00000000000000001111, + 0b00000000000001001111, + 0b00000000111100011111, + 0b00000000100100000111, + 0b00000000101100000111, + 0b00000000111000001000, + 0b00000001111000000001, + 0b00000011101000000000, + 0b00000010101000000010, + 0b00000100101000000000, + 0b00000000100100000000, + 0b00000000100000000000, + 0b00000001100000000000, + 0b00000011110000000000, + 0b00000010001000000000, + 0b00000010001000000000, + 0b00000001000100000000, + 0b00000001000100000000, + 0b00000000000000000000, +}; + +uint32_t gfx_03[20] = { + 0b00000000000000010111, + 0b00000000000000001111, + 0b00000000000001001111, + 0b00000000000000011111, + 0b00000000000111100111, + 0b00000000000100100111, + 0b00000000000101101000, + 0b00000000000111000001, + 0b00000000001111000000, + 0b00000000011101000010, + 0b00000000010101000000, + 0b00000000100101000000, + 0b00000000000100100000, + 0b00000000000100000000, + 0b00000000001100000000, + 0b00000000011110000000, + 0b00000000010001000000, + 0b00000000010001000000, + 0b00000000001000100000, + 0b00000000001000100000, +}; + +uint32_t gfx_04[20] = { + 0b00000000000000010111, + 0b00000000000000001111, + 0b00000000000001001111, + 0b00000000000000011111, + 0b00000000000000000111, + 0b10000000000000000111, + 0b01000000000000111100, + 0b01000000000000100101, + 0b01000000000000101100, + 0b01000000000000111010, + 0b10000000000001111000, + 0b00000000000011101000, + 0b00000000000010101000, + 0b00000000000100101000, + 0b00000000000000100100, + 0b00000000000000100000, + 0b00000000000001100000, + 0b00000000000011110000, + 0b00000000000010001000, + 0b00000000000010001000, +}; + +uint32_t gfx_05[20] = { + 0b00000000000000010111, + 0b00000000000000001111, + 0b00000000000001001111, + 0b00000000000000011111, + 0b00000000000000000111, + 0b01110000000000000111, + 0b01001000000000010111, + 0b01001000000000000101, + 0b01001000000000000101, + 0b01001000000000000111, + 0b01110000000000001111, + 0b00000000000000011101, + 0b00000000000000010101, + 0b00000000000000100101, + 0b00000000000000000100, + 0b00000000000000000100, + 0b00000000000000001100, + 0b00000000000000011110, + 0b00000000000000010001, + 0b00000000000000010001, +}; + +uint32_t gfx_06[20] = { + 0b00000000000000000010, + 0b00000000000000000001, + 0b00000000000000001001, + 0b00000000000000000011, + 0b00000000000000000000, + 0b11011100000000000000, + 0b00010010000000000010, + 0b10010010000000000000, + 0b00010010000000000000, + 0b00010010000000000000, + 0b11011100000000000001, + 0b00000000000000000011, + 0b00000000000000000010, + 0b00000000000000000100, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000001, + 0b00000000000000000011, + 0b00000000000000000010, + 0b00000000000000000010, +}; + +uint32_t gfx_07[20] = { + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b10111011100000000000, + 0b00100010010000000000, + 0b00110010010000000000, + 0b00100010010000000000, + 0b00100010010000000000, + 0b10111011100000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, +}; + +uint32_t gfx_08[20] = { + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b11101110111000000000, + 0b10001000100100000000, + 0b11001100100100000000, + 0b10001000100100000000, + 0b10001000100100000000, + 0b11101110111000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, +}; + +uint32_t gfx_09[20] = { + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b01011101110111000000, + 0b01010001000100100000, + 0b01011001100100100000, + 0b01010001000100100000, + 0b01010001000100100000, + 0b10011101110111000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, +}; + +uint32_t gfx_10[20] = { + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00010111011101110000, + 0b00010100010001001000, + 0b00010110011001001000, + 0b01010100010001001000, + 0b01010100010001001000, + 0b10100111011101110000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, +}; + +uint32_t gfx_11[20] = { + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b01000101110111011100, + 0b01000101000100010010, + 0b01000101100110010010, + 0b01010101000100010010, + 0b01010101000100010010, + 0b00101001110111011100, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, +}; + +uint32_t gfx_12[20] = { + 0b00000000001000000000, + 0b00000000001000000000, + 0b00000000001000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b01000101110111011100, + 0b01000101000100010010, + 0b01000101100110010010, + 0b01010101000100010010, + 0b01010101000100010010, + 0b00101001110111011100, + 0b00000000001000100000, + 0b00000000000000000000, + 0b00000000000000000010, + 0b01000000000000000000, + 0b00000000000000000000, + 0b00000001100000000000, + 0b00000000000000000000, + 0b10010000010000000000, + 0b00000000000001000000, +}; + +uint32_t gfx_13[20] = { + 0b00000000001010100100, + 0b00001000011010010000, + 0b00000000111001000000, + 0b00000000000000000001, + 0b00000010101000010000, + 0b01000101111111011101, + 0b01010101000100010010, + 0b01000111100111011110, + 0b01010101000100110111, + 0b01010101000100010110, + 0b01101001110111011100, + 0b00000000011110110010, + 0b00011000001100000000, + 0b01001000000010001010, + 0b01000000000010000011, + 0b00100000000000010000, + 0b00100001100001010000, + 0b00000000000000000000, + 0b11010000010000000000, + 0b00000000000001000000, +}; + +uint32_t gfx_14[20] = { + 0b00100000001111100100, + 0b10011000111111010000, + 0b00001000111101000000, + 0b00110101011101000001, + 0b00001010101101110000, + 0b01110111111111111111, + 0b01011111111101011010, + 0b11010111110111111110, + 0b01110101110110111111, + 0b01111111000110110110, + 0b11111011110111011111, + 0b01110000011111110011, + 0b10111101011101000001, + 0b01011111001010111110, + 0b01101000001011100011, + 0b00110010000000011000, + 0b10101011111011010110, + 0b00001000000000110001, + 0b11111111110110001110, + 0b00100001100001000000, +}; + +uint32_t gfx_15[20] = { + 0b01100000101111110111, + 0b11011100111111011001, + 0b00111110111101100000, + 0b01110101111111110001, + 0b10001111111111111000, + 0b11110111111111111111, + 0b01011111111111111010, + 0b11110111110111111111, + 0b01110111110111111111, + 0b01111111101111110110, + 0b11111111111111111111, + 0b01111101011111110111, + 0b10111101011111111111, + 0b11111111111011111111, + 0b01101000101011100111, + 0b01110110111010011110, + 0b10101011111111010110, + 0b01111100000010111011, + 0b11111111111111111110, + 0b00110011110111011001, +}; + +uint32_t gfx_16[20] = { + 0b11111111101111110111, + 0b11011111111111111111, + 0b01111111111101101111, + 0b01111101111111111111, + 0b10011111111111111101, + 0b11111111111111111111, + 0b11011111111111111011, + 0b11110111111111111111, + 0b11111111111111111111, + 0b01111111111111110110, + 0b11111111111111111111, + 0b11111111111111110111, + 0b10111111111111111111, + 0b11111111111111111111, + 0b11111111101011101111, + 0b11111111111111011111, + 0b11101111111111111110, + 0b11111111101111111111, + 0b11111111111111111111, + 0b00110111111111111111, +}; + +uint32_t gfx_17[20] = { + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, + 0b11111111111111111111, +}; + +uint32_t gfx_18[20] = { + 0b01110111011101110111, + 0b11111111111111111111, + 0b11011111110111111101, + 0b11111111111111111111, + 0b01110111011101110111, + 0b11111111111111111111, + 0b11011101110111011101, + 0b11111111111111111111, + 0b01110111011101110111, + 0b11111111111111111111, + 0b11011111110111111101, + 0b11111111111111111111, + 0b01110111011101110111, + 0b11111111111111111111, + 0b11011101110111011101, + 0b11111111111111111111, + 0b01110111011101110111, + 0b11111111111111111111, + 0b11011111110111111101, + 0b11111111111111111111, +}; + +uint32_t gfx_19[20] = { + 0b01010101010101010101, + 0b11111111111111111111, + 0b01010101010101010101, + 0b11111111111111111111, + 0b01010101010101010101, + 0b11111111111111111111, + 0b01010101010101010101, + 0b11111111111111111111, + 0b01010101010101010101, + 0b11111111111111111111, + 0b01010101010101010101, + 0b11111111111111111111, + 0b01010101010101010101, + 0b11111111111111111111, + 0b01010101010101010101, + 0b11111111111111111111, + 0b01010101010101010101, + 0b11111111111111111111, + 0b01010101010101010101, + 0b11111111111111111111, +}; + +uint32_t gfx_20[20] = { + 0b01010101010101010101, + 0b10101011101010111010, + 0b01010101010101010101, + 0b10101010101010101010, + 0b01010101010101010101, + 0b10111010101110101011, + 0b01010101010101010101, + 0b10101010101010101010, + 0b01010101010101010101, + 0b10101011101010111010, + 0b01010101010101010101, + 0b10101010101010101010, + 0b01010101010101010101, + 0b10111010101110101011, + 0b01010101010101010101, + 0b10101010101010101010, + 0b01010101010101010101, + 0b10101011101010111010, + 0b01010101010101010101, + 0b10101010101010101010, +}; + +uint32_t gfx_21[20] = { + 0b01010101010101010101, + 0b00100010001000100010, + 0b01010101010101010101, + 0b00001000000010000000, + 0b01010101010101010101, + 0b00100010001000100010, + 0b01010101010101010101, + 0b10000000100000001000, + 0b01010101010101010101, + 0b00100010001000100010, + 0b01010101010101010101, + 0b00001000000010000000, + 0b01010101010101010101, + 0b00100010001000100010, + 0b01010101010101010101, + 0b10000000100000001000, + 0b01010101010101010101, + 0b00100010001000100010, + 0b01010101010101010101, + 0b00001000000010000000, +}; + +uint32_t gfx_22[20] = { + 0b00010001000100010001, + 0b00000000000000000000, + 0b01000101010001010100, + 0b00000000000000000000, + 0b00010001000100010001, + 0b00000000000000000000, + 0b01000100010001000100, + 0b00000000000000000000, + 0b00010001000100010001, + 0b00000000000000000000, + 0b01000101010001010100, + 0b00000000000000000000, + 0b00010001000100010001, + 0b00000000000000000000, + 0b01000100010001000100, + 0b00000000000000000000, + 0b00010001000100010001, + 0b00000000000000000000, + 0b01000101010001010100, + 0b00000000000000000000, +}; + +uint32_t gfx_23[20] = { + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000111010101100000, + 0b00000010010101000000, + 0b00000010011101100000, + 0b00000010010101000000, + 0b00000010010101100000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b11111011000110111100, + 0b11111011100110111110, + 0b11000011110110110111, + 0b11000011110110110011, + 0b11110011110110110011, + 0b11110011011110110011, + 0b11000011011110110011, + 0b11000011011110110111, + 0b11111011001110111110, + 0b11111011001110111100, +}; + +uint32_t gfx_24[20] = { + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b00000111010101100000, + 0b00000010010101000000, + 0b00000010011101100000, + 0b00000010010101000000, + 0b00000010010101100000, + 0b00000000000000000000, + 0b00000000000000000000, + 0b11111011000110111100, + 0b11111011100110111110, + 0b11000011110110110111, + 0b11000011110110110011, + 0b11110011110110110011, + 0b11110011011110110011, + 0b11000011011110110011, + 0b11000011011110110111, + 0b11111011001110111110, + 0b11111011001110111100, +}; + +uint32_t* frames[24] = { + gfx_01, + gfx_02, + gfx_03, + gfx_04, + gfx_05, + gfx_06, + gfx_07, + gfx_08, + gfx_09, + gfx_10, + gfx_11, + gfx_12, + gfx_13, + gfx_14, + gfx_15, + gfx_16, + gfx_17, + gfx_18, + gfx_19, + gfx_20, + gfx_21, + gfx_22, + gfx_23, + gfx_24, +}; diff --git a/firmware/src/main.cpp b/firmware/src/main.cpp index 6845866..7e2d211 100644 --- a/firmware/src/main.cpp +++ b/firmware/src/main.cpp @@ -1,4 +1,5 @@ #include +#include "gfx.h" #define COL_SER 0 #define COL_OE 26 @@ -12,35 +13,13 @@ #define ROW_SRCLK 5 #define ROW_SRCLR 4 -#define ROW_COUNT 24 -#define COL_COUNT 21 +#define ROW_COUNT 20 //24 +#define COL_COUNT 20 //21 -uint32_t demo_pic[ROW_COUNT] = { - 0b111011001001111011110, - 0b010010101010000010000, - 0b010010101001110011100, - 0b010010011000001010000, - 0b111010001011110011110, - 0b000000000000000000000, - 0b111001110001110001100, - 0b100100100001001010010, - 0b111000100001110011110, - 0b100100100001001010010, - 0b100100100001110010010, - 0b000000000000000000000, - 0b111000001100111001000, - 0b100100010010100101000, - 0b100100011110111001000, - 0b100100010010100001000, - 0b111000010010100001110, - 0b000000000000000000000, - 0b111100100101110111000, - 0b100000100101000100100, - 0b111000111101100111000, - 0b100000100101000100100, - 0b111100100101110100100, - 0b000000000000000000000, -}; +uint8_t frameIndex = 0; +uint16_t frameLastChangedAt; + +#define MS_PER_FRAME 150 void printOut() { Serial.println("------"); @@ -120,7 +99,9 @@ void setup() { digitalWrite(ROW_OE, LOW); - // printOut(); + // clear frames + frameIndex = 0; + frameLastChangedAt = millis(); } void loop() { @@ -129,7 +110,7 @@ void loop() { printOut(); } - auto b4 = millis(); + uint32_t *frame = frames[frameIndex]; // clear columns digitalWrite(COL_SRCLR, LOW); @@ -152,10 +133,16 @@ void loop() { digitalWrite(COL_SRCLK, LOW); } + // clear row + digitalWrite(ROW_SRCLR, LOW); + digitalWrite(ROW_SRCLK, HIGH); + digitalWrite(ROW_SRCLK, LOW); + digitalWrite(ROW_SRCLR, HIGH); + // set column with rows' data for (int y = 0; y < ROW_COUNT; y++) { // get value - bool pxValue = demo_pic[ROW_COUNT - 1 - y] & (1 << ((COL_COUNT - 1) - x)); + bool pxValue = frame[ROW_COUNT - 1 - y] & (1 << ((COL_COUNT - 1) - x)); digitalWrite(ROW_SER, pxValue); // push value digitalWrite(ROW_SRCLK, HIGH); @@ -172,4 +159,13 @@ void loop() { // enable rows after latch digitalWrite(ROW_OE, LOW); } + + // next frame + if (millis() - frameLastChangedAt > MS_PER_FRAME) { + frameLastChangedAt = millis(); + frameIndex++; + if (frameIndex == GFX_COUNT) { + frameIndex = 0; + } + } }