diff --git a/firmware/assets/-grayout.bin b/firmware/assets/-grayout.bin new file mode 100644 index 0000000..b6c7033 Binary files /dev/null and b/firmware/assets/-grayout.bin differ diff --git a/firmware/assets/Fusion_Font.png b/firmware/assets/Fusion_Font.png new file mode 100644 index 0000000..85e26e0 Binary files /dev/null and b/firmware/assets/Fusion_Font.png differ diff --git a/firmware/assets/out.png b/firmware/assets/out.png new file mode 100644 index 0000000..95166cb Binary files /dev/null and b/firmware/assets/out.png differ diff --git a/firmware/include/app.h b/firmware/include/app.h index afccd90..bfeeb21 100644 --- a/firmware/include/app.h +++ b/firmware/include/app.h @@ -29,4 +29,10 @@ struct FackelApp: public App { void init(); void deinit(); void loop(); +}; + +struct ImageDisplayApp: public App { + void init(); + void deinit(); + void loop(); }; \ No newline at end of file diff --git a/firmware/src/applications/fusion_font.bin b/firmware/src/applications/fusion_font.bin new file mode 100644 index 0000000..7e4fdc8 Binary files /dev/null and b/firmware/src/applications/fusion_font.bin differ diff --git a/firmware/src/applications/image_display.cpp b/firmware/src/applications/image_display.cpp new file mode 100644 index 0000000..c89658a --- /dev/null +++ b/firmware/src/applications/image_display.cpp @@ -0,0 +1,57 @@ +#include "app.h" +#include "zauberstab.h" + +#define __stringify_1(x) #x +#define __stringify(x) __stringify_1(x) + +extern "C" +{ +asm( +".macro inc_sample name, filename\n\t" + ".pushsection .rodata\n\t" + "\\name:\n\t" + ".incbin \"\\filename\"\n\t" + "\\name\\()_size:\n\t" + ".int \\name\\()_size - \\name\n\t" + ".popsection\n\t" +".endm\n\t" +); + +#define incbin(label, filename) \ + asm("inc_sample " __stringify(label) ", " filename "\n\t"); \ + extern const unsigned char label[]; \ + extern const unsigned int label##_size; \ + + +incbin(fusion_font, "C:/Users/Binarykitchen/Documents/tom/fusion-zauberstab/firmware/src/applications/fusion_font.bin") +} + +static CRGB get_pixel(unsigned int x, unsigned int y, unsigned int sx, const unsigned char *data) { + unsigned int idx = (x + y * sx) * 3; + + CRGB color{}; + color.r = data[idx]; + color.g = data[idx + 1]; + color.b = data[idx + 2]; + + return color; +} + +void ImageDisplayApp::init() { + +} + +void ImageDisplayApp::deinit() { + +} + +void ImageDisplayApp::loop() { + static unsigned int col = 0; + + for (int i = 0; i< NUM_LEDS; i++) { + leds[i] = get_pixel(col, i, 218, fusion_font); + } + col++; + col = col % 218; + FastLED.show(); +} \ No newline at end of file diff --git a/firmware/src/main.cpp b/firmware/src/main.cpp index 173594a..0dc8192 100644 --- a/firmware/src/main.cpp +++ b/firmware/src/main.cpp @@ -15,11 +15,13 @@ struct FFTTestApp fft_test_app struct FackelApp fackel_app { }; +struct ImageDisplayApp image_display {}; std::vector> apps = { std::ref(beat_detect_app), - std::ref(fackel_app) + std::ref(fackel_app), + std::ref(image_display), }; static unsigned int current_app = 0;