Entspannung 25min mit Aufwachphase, Auto-Start, Pin D10 GPIO18
This commit is contained in:
+25
-10
@@ -26,21 +26,21 @@ typedef struct {
|
||||
} preset_t;
|
||||
|
||||
static const preset_t presets[] = {
|
||||
// Optimiertes 25-Minuten-Entspannungsprogramm basierend auf Brainwave Entrainment Forschung
|
||||
// Phase 1: Einstieg / Orientierung - Alpha hoch für sanftes Einschwingen
|
||||
{"Entspannung Einstieg", 12, 5, 15},
|
||||
// Phase 2: Alpha-Entspannung - 10 Hz ist am besten erforscht für Entspannung & Kreativität
|
||||
{"Alpha Entspannung", 10, 7, 0},
|
||||
// Phase 3: Tiefe Entspannung - Theta nähern, warmes Orange-Rot
|
||||
{"Tiefe Entspannung", 8, 8, 20},
|
||||
// Phase 4: Integration / Abschwung - tiefer Alpha/Theta Übergang
|
||||
{"Integration", 6, 5, 10}
|
||||
// 25-Minuten-Entspannungsprogramm mit absteigender Frequenz und Aufwachphase
|
||||
// Alpha -> Theta -> sanfter Aufweck-Anstieg für sicheren Abschluss
|
||||
{"Einschwingen", 12, 3, 15},
|
||||
{"Alpha Entspannung", 10, 5, 0},
|
||||
{"Alpha/Theta Übergang", 8, 6, 20},
|
||||
{"Theta Entspannung", 6, 6, 10},
|
||||
{"Tiefe Theta", 4, 3, 5},
|
||||
{"Aufwachen", 10, 2, 30}
|
||||
};
|
||||
#define PRESET_COUNT (sizeof(presets)/sizeof(presets[0]))
|
||||
|
||||
static int current_preset = -1;
|
||||
static bool led_on = false;
|
||||
static uint64_t last_toggle_ms = 0;
|
||||
static uint64_t phase_start_ms = 0;
|
||||
|
||||
static void hsv2rgb(uint32_t h, uint32_t s, uint32_t v, uint32_t *r, uint32_t *g, uint32_t *b) {
|
||||
h %= 360;
|
||||
@@ -82,7 +82,8 @@ static void apply_preset(int idx){
|
||||
set_all_pixels(r,g,b);
|
||||
led_on = true;
|
||||
last_toggle_ms = esp_timer_get_time()/1000;
|
||||
ESP_LOGI(TAG, "Preset %d %s %dHz", idx, p->name, p->freq_hz);
|
||||
phase_start_ms = esp_timer_get_time()/1000;
|
||||
ESP_LOGI(TAG, "Preset %d %s %dHz %dmin", idx, p->name, p->freq_hz, p->duration_min);
|
||||
}
|
||||
|
||||
static void stop_leds(void){
|
||||
@@ -144,6 +145,10 @@ void app_main(void){
|
||||
memset(led_pixels,0,sizeof(led_pixels));
|
||||
flush_leds();
|
||||
|
||||
// Auto-Start des 25-Minuten Entspannungsprogramms beim Einschalten
|
||||
apply_preset(0);
|
||||
ESP_LOGI(TAG,"Auto-Start: Relaxation Programm gestartet (Pin D10/GPIO18)");
|
||||
|
||||
char line_buf[64];
|
||||
int line_pos=0;
|
||||
|
||||
@@ -182,6 +187,16 @@ void app_main(void){
|
||||
}
|
||||
flush_leds();
|
||||
}
|
||||
// Auto-weiter zur nächsten Phase nach Ablauf der Dauer
|
||||
uint64_t elapsed_ms = now - phase_start_ms;
|
||||
if(elapsed_ms >= (uint64_t)p->duration_min * 60 * 1000){
|
||||
if(current_preset + 1 < PRESET_COUNT){
|
||||
apply_preset(current_preset + 1);
|
||||
}else{
|
||||
stop_leds();
|
||||
ESP_LOGI(TAG,"25-Minuten Programm beendet");
|
||||
}
|
||||
}
|
||||
}
|
||||
vTaskDelay(pdMS_TO_TICKS(5));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user