Merge branch 'master' of https://git.binary-kitchen.de/buddhabrot/fusion-zauberstab
This commit is contained in:
commit
b63d338e81
BIN
firmware/assets/Fairydust.png
Normal file
BIN
firmware/assets/Fairydust.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 84 KiB |
BIN
firmware/assets/Fusion_Font.png
Normal file
BIN
firmware/assets/Fusion_Font.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
BIN
firmware/assets/fairydust.bin
Normal file
BIN
firmware/assets/fairydust.bin
Normal file
Binary file not shown.
BIN
firmware/assets/grayout.bin
Normal file
BIN
firmware/assets/grayout.bin
Normal file
Binary file not shown.
BIN
firmware/assets/out.png
Normal file
BIN
firmware/assets/out.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
@ -30,3 +30,9 @@ struct FackelApp: public App {
|
|||||||
void deinit();
|
void deinit();
|
||||||
void loop();
|
void loop();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct ImageDisplayApp: public App {
|
||||||
|
void init();
|
||||||
|
void deinit();
|
||||||
|
void loop();
|
||||||
|
};
|
BIN
firmware/src/applications/assets/fusion_font.bin
Normal file
BIN
firmware/src/applications/assets/fusion_font.bin
Normal file
Binary file not shown.
@ -6,7 +6,7 @@
|
|||||||
#include "zauberstab.h"
|
#include "zauberstab.h"
|
||||||
|
|
||||||
#undef NUM_LEDS
|
#undef NUM_LEDS
|
||||||
#define NUM_LEDS 45
|
#define NUM_LEDS 48
|
||||||
|
|
||||||
#define SAMPLING_FREQUENCY_BP 40 // number of energy chunks per second
|
#define SAMPLING_FREQUENCY_BP 40 // number of energy chunks per second
|
||||||
#define SAMPLING_FREQUENCY_CONTROL \
|
#define SAMPLING_FREQUENCY_CONTROL \
|
||||||
@ -113,7 +113,6 @@ void BeatDetectApp::loop()
|
|||||||
if (micros() - last_us_bp > sampling_period_bp)
|
if (micros() - last_us_bp > sampling_period_bp)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
n_samples = 0;
|
n_samples = 0;
|
||||||
last_us_bp = micros();
|
last_us_bp = micros();
|
||||||
// energy_fil += (energy - energy_fil) * 0.01;
|
// energy_fil += (energy - energy_fil) * 0.01;
|
||||||
@ -132,8 +131,6 @@ void BeatDetectApp::loop()
|
|||||||
// y_fil[i] += (abs(y[i]) - y_fil[i]) * 0.005; //linie der
|
// y_fil[i] += (abs(y[i]) - y_fil[i]) * 0.005; //linie der
|
||||||
// scheitelpunkte
|
// scheitelpunkte
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -183,16 +180,14 @@ void BeatDetectApp::loop()
|
|||||||
|
|
||||||
for (int i = 0; i < NUM_LEDS; i++)
|
for (int i = 0; i < NUM_LEDS; i++)
|
||||||
{
|
{
|
||||||
//leds[i].g = get_value(i, pos_target_filtered);
|
|
||||||
//leds[i].r = get_value(i, pos_target_filtered + 2);
|
|
||||||
//leds[i].b = get_value(i, pos_target_filtered - 2);
|
|
||||||
|
|
||||||
leds[i].g = get_value(i, pos_target_filtered);
|
leds[i].g = get_value(i, pos_target_filtered);
|
||||||
leds[i].r = 0; //get_value(i, pos_target_filtered + 2);
|
leds[i].r = get_value(i, pos_target_filtered + 2);
|
||||||
leds[i].g = get_value(i, pos_target_filtered + 2);
|
|
||||||
leds[i].r = 0;//get_value(i, pos_target_filtered + 2);
|
|
||||||
leds[i].b = get_value(i, pos_target_filtered - 2);
|
leds[i].b = get_value(i, pos_target_filtered - 2);
|
||||||
|
|
||||||
|
//leds[i].g = get_value(i, pos_target_filtered);
|
||||||
|
//leds[i].g = get_value(i, pos_target_filtered + 2);
|
||||||
|
//leds[i].b = get_value(i, pos_target_filtered - 2);
|
||||||
|
|
||||||
}
|
}
|
||||||
FastLED.show();
|
FastLED.show();
|
||||||
}
|
}
|
||||||
|
@ -95,8 +95,8 @@ void FackelApp::init()
|
|||||||
for (int i = 0; i < 128; i++)
|
for (int i = 0; i < 128; i++)
|
||||||
{
|
{
|
||||||
uint8_t r, g, b;
|
uint8_t r, g, b;
|
||||||
//hsl_to_rgb(i / 5, 255, i * 2 > 128 ? 128 : i * 2, &r, &g, &b);
|
hsl_to_rgb(i / 5, 255, i * 2 > 128 ? 128 : i * 2, &r, &g, &b);
|
||||||
hsl_to_rgb(i / 5 + 180, 255, i * 2 > 128 ? 128 : i * 2, &r, &g, &b);
|
//hsl_to_rgb(i / 5 + 180, 255, i * 2 > 128 ? 128 : i * 2, &r, &g, &b);
|
||||||
g = g == 1 ? 0 : g;
|
g = g == 1 ? 0 : g;
|
||||||
b = b == 1 ? 0 : b;
|
b = b == 1 ? 0 : b;
|
||||||
palette[i].r = r;
|
palette[i].r = r;
|
||||||
|
BIN
firmware/src/applications/fusion_font.bin
Normal file
BIN
firmware/src/applications/fusion_font.bin
Normal file
Binary file not shown.
60
firmware/src/applications/image_display.cpp
Normal file
60
firmware/src/applications/image_display.cpp
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
#include "app.h"
|
||||||
|
#include "zauberstab.h"
|
||||||
|
|
||||||
|
#define __stringify_1(x) #x
|
||||||
|
#define __stringify(x) __stringify_1(x)
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
{
|
||||||
|
#define BASE_DIR "C:/Users/Binarykitchen/Documents/tom/fusion-zauberstab/firmware/"
|
||||||
|
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, BASE_DIR "assets/fairydust.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;
|
||||||
|
unsigned int sx = fusion_font_size/(3*48);
|
||||||
|
|
||||||
|
for (int i = 0; i< NUM_LEDS; i++) {
|
||||||
|
leds[i] = get_pixel(col, i, sx, fusion_font);
|
||||||
|
}
|
||||||
|
col++;
|
||||||
|
col = col % 218;
|
||||||
|
FastLED.show();
|
||||||
|
}
|
@ -15,11 +15,13 @@ struct FFTTestApp fft_test_app
|
|||||||
struct FackelApp fackel_app
|
struct FackelApp fackel_app
|
||||||
{
|
{
|
||||||
};
|
};
|
||||||
|
struct ImageDisplayApp image_display {};
|
||||||
|
|
||||||
|
|
||||||
std::vector<std::reference_wrapper<App>> apps = {
|
std::vector<std::reference_wrapper<App>> apps = {
|
||||||
std::ref<App>(beat_detect_app),
|
std::ref<App>(beat_detect_app),
|
||||||
std::ref<App>(fackel_app)
|
std::ref<App>(fackel_app),
|
||||||
|
//std::ref<App>(image_display),
|
||||||
};
|
};
|
||||||
|
|
||||||
static unsigned int current_app = 0;
|
static unsigned int current_app = 0;
|
||||||
|
@ -34,8 +34,8 @@ int zauberstab_init()
|
|||||||
}
|
}
|
||||||
|
|
||||||
myAcc.setDataRate(ADXL345_DATA_RATE_200);
|
myAcc.setDataRate(ADXL345_DATA_RATE_200);
|
||||||
myAcc.setRange(ADXL345_RANGE_8G);
|
myAcc.setRange(ADXL345_RANGE_16G);
|
||||||
myAcc.setGeneralTapParameters(ADXL345_XY0, 3.0, 30, 100.0);
|
myAcc.setGeneralTapParameters(ADXL345_XY0, 5.0, 50, 100.0);
|
||||||
myAcc.setAdditionalDoubleTapParameters(false, 250);
|
myAcc.setAdditionalDoubleTapParameters(false, 250);
|
||||||
myAcc.setInterrupt(ADXL345_DOUBLE_TAP, INT_PIN_1);
|
myAcc.setInterrupt(ADXL345_DOUBLE_TAP, INT_PIN_1);
|
||||||
attachInterrupt(digitalPinToInterrupt(4), double_tab_int, RISING);
|
attachInterrupt(digitalPinToInterrupt(4), double_tab_int, RISING);
|
||||||
|
BIN
inventor/klaue.stl
Normal file
BIN
inventor/klaue.stl
Normal file
Binary file not shown.
BIN
inventor/mutter-halter.stl
Normal file
BIN
inventor/mutter-halter.stl
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user