new songs added

This commit is contained in:
Jens Noack 2021-12-21 14:26:51 +01:00
parent b4a5f759e0
commit a3aa425379

View file

@ -32,20 +32,23 @@ void setup() {
taster_aussen_licht.begin();
taster_aussen_move.begin();
taster_train_unten.begin();
taster_train_oben.begin();
taster_schiene.begin();
//taster_train_unten.begin();
//taster_train_oben.begin();
//taster_schiene.begin();
relais_wolke_schiene.begin();
relais_spiegel.begin();
//relais_wolke.begin();
zugoben.begin();
zugunten.begin();
licht.begin();
NVS.begin();
licht_all_count = NVS.getInt("licht");
move_all_count = NVS.getInt("move");
disco_all_count = NVS.getInt("disco");
licht_all_count = NVS.getInt("licht_cnt"); //1985
delay(500);
move_all_count = NVS.getInt("move_cnt"); //978
delay(500);
disco_all_count = NVS.getInt("disco_cnt"); //100
moni.init();
moni.setBrigthness(100);
@ -67,6 +70,7 @@ void setup() {
//blau led_back.setHS(32000,200);
led_back.setHS(9000,180);
led_teich.setHS(40000,255);
}
void loop() {
@ -169,21 +173,12 @@ void szene_oh_tannebaum()
mp3_isused = true;
tanne_state = TA_MIN_PLAYING;
Serial.printf("All lights are ready for Oh Tannebaum\n");
mp3ply.play_vol(SONG_OH_TANNEBAUM, TANNENBAUM_VOL);
//mp3ply.play_vol(SONG_OH_TANNEBAUM, TANNENBAUM_VOL);
mp3ply.play_vol(SONG_WINTER, TANNENBAUM_VOL);
szene_time_ms = msecs;
}
}
break;
/*
case TA_START_PLAYING:
szene_time_ms = msecs;
if(mp3ply.is_playing() > 0)
{
tanne_state = TA_MIN_PLAYING;
Serial.printf("Oh Tannebaum is playing\n");
}
break;
*/
case TA_MIN_PLAYING:
taster_aussen_licht.reset();
if(msecs - szene_time_ms > 1000)
@ -320,9 +315,9 @@ void szene_tag_dorf()
unsigned int zugunten_error = 0;
const unsigned int ZUGUNTEN_MAX_ERROR_COUNT = 5;
const unsigned long ZUGUNTEN_DRIVES_TO_STATION_MS = 5000;
const unsigned long ZUGUNTEN_DRIVES_TO_STATION_MS = 4300;
const unsigned long ZUGUNTEN_STOPPED_AT_STATION_MS = 5000;
const unsigned long ZUGUNTEN_MAX_TIME_TO_HOME_MS = 15000; ///timeout time
const unsigned long ZUGUNTEN_MAX_TIME_TO_HOME_MS = 35000;///21000; ///timeout time
typedef enum {ZU_INIT = 0, ZU_AT_HOME , ZU_DRIVES_TO_STATION, ZU_STOPPES_AT_STATION, ZU_STOPPED_AT_STATION, ZU_DRIVES_HOME, ZU_STOPPES_AT_HOME, ZU_STOPPED_PLAYING, ZU_DONE} szene_zugunten_t;
szene_zugunten_t zugunten_state = ZU_INIT;
bool mp3_zugunten = false;
@ -333,7 +328,7 @@ void move_zugunten()
{
case ZU_INIT:
Serial.printf("Zugunten fährt\n");
taster_train_unten.reset();
//taster_train_unten.reset();
if (zugunten_error > ZUGUNTEN_MAX_ERROR_COUNT)
{
zugunten_state = ZU_DONE;
@ -345,7 +340,8 @@ void move_zugunten()
if(mp3_isused == false)
{
Serial.printf("Playing Eine Insel\n");
mp3ply.play_vol(SONG_EINE_INSEL, 20);
//mp3ply.play_vol(SONG_EINE_INSEL, 20);
mp3ply.play_vol(SONG_WEIHNACHTSZEIT, 20);
mp3_zugunten = true;
mp3_isused = true;
}
@ -356,7 +352,8 @@ void move_zugunten()
case ZU_AT_HOME:
szene_time_ms = msecs;
if(zugunten.fade_on() == false)
zugunten_state = ZU_DRIVES_TO_STATION;
//zugunten_state = ZU_DRIVES_TO_STATION;
zugunten_state = ZU_DRIVES_HOME;
break;
case ZU_DRIVES_TO_STATION:
if(msecs - szene_time_ms > ZUGUNTEN_DRIVES_TO_STATION_MS)
@ -378,13 +375,13 @@ void move_zugunten()
}
break;
case ZU_DRIVES_HOME:
if(zugunten.fade_on() == false)
if(taster_train_unten.pressed() == true || (msecs-szene_time_ms) > ZUGUNTEN_MAX_TIME_TO_HOME_MS)
//if(zugunten.fade_on() == false)
if( (msecs-szene_time_ms) > ZUGUNTEN_MAX_TIME_TO_HOME_MS ) //taster_train_unten.pressed() == true ||)
{
if( (msecs-szene_time_ms) > ZUGUNTEN_MAX_TIME_TO_HOME_MS)
{
Serial.printf("Train unten runs ins timeout while driving back at Home\n");
zugunten_error++;
// zugunten_error++;
}
else{
Serial.printf("Train unten back at Home pressed\n");
@ -422,11 +419,11 @@ void move_zugunten()
bool mp3_zugoben = false;
unsigned int zugoben_error = 0;
const unsigned int ZUGOBEN_MAX_ERROR_COUNT = 5;
const unsigned long ZUGOBEN_DRIVES_TO_BRIDGE_MS = 2000;
const unsigned long ZUGOBEN_DRIVES_ON_BRIDGE_MS = 2000;
const unsigned long ZUGOBEN_MAX_TIME_TO_HOME_MS = 10000; ///timeout time
const unsigned long ZUGOBEN_DRIVES_TO_BRIDGE_MS = 1000;
const unsigned long ZUGOBEN_DRIVES_ON_BRIDGE_MS = 5500;
const unsigned long ZUGOBEN_MAX_TIME_TO_HOME_MS = 3*11550; ///timeout time
const uint8_t ZUGOBEN_SPEED_ON_BRIDGE = 80;
typedef enum {ZO_INIT = 0, ZO_AT_HOME, ZO_DRIVES_TO_BRIDGE, ZO_DRIVES_SLOWDOWN_ON_BRIDGE, ZO_DRIVES_ON_BRIDGE, ZO_DRIVES_HOME, ZO_STOPPES_AT_HOME,ZO_STOPPED_PLAYING,ZO_DONE} szene_zugoben_t;
typedef enum {ZO_INIT = 0, ZO_AT_HOME, ZO_DRIVES_HOME, ZO_STOPPES_AT_HOME,ZO_STOPPED_PLAYING,ZO_DONE} szene_zugoben_t;
szene_zugoben_t zugoben_state = ZO_INIT;
void move_zugoben()
{
@ -435,7 +432,7 @@ void move_zugoben()
{
case ZO_INIT:
Serial.printf("Zugoben fährt\n");
taster_train_oben.reset();
//taster_train_oben.reset();
if (zugoben_error > ZUGOBEN_MAX_ERROR_COUNT)
zugoben_state = ZO_STOPPES_AT_HOME;
else
@ -443,7 +440,8 @@ void move_zugoben()
if(mp3_isused == false)
{
Serial.printf("Playing Weihnachtsbahn\n");
mp3ply.play_vol(SONG_WEIHNACHTSBAHN, 20);
//mp3ply.play_vol(SONG_WEIHNACHTSBAHN, 20);
mp3ply.play_vol(SONG_ZEIT_ANGEKOMMEN, 20);
mp3_zugoben = true;
mp3_isused = true;
}
@ -455,32 +453,16 @@ void move_zugoben()
case ZO_AT_HOME:
szene_time_ms = msecs;
if(zugoben.fade_on() == false)
zugoben_state = ZO_DRIVES_TO_BRIDGE;
break;
case ZO_DRIVES_TO_BRIDGE:
if(msecs - szene_time_ms > ZUGOBEN_DRIVES_TO_BRIDGE_MS)
zugoben_state = ZO_DRIVES_SLOWDOWN_ON_BRIDGE;
break;
case ZO_DRIVES_SLOWDOWN_ON_BRIDGE:
szene_time_ms = msecs;
if(zugoben.fade_down_to(ZUGOBEN_SPEED_ON_BRIDGE) == false)
zugoben_state = ZO_DRIVES_ON_BRIDGE;
break;
case ZO_DRIVES_ON_BRIDGE:
if(msecs - szene_time_ms > ZUGOBEN_DRIVES_ON_BRIDGE_MS)
{
zugoben_state = ZO_DRIVES_HOME;
szene_time_ms = msecs;
}
break;
case ZO_DRIVES_HOME:
if(zugoben.fade_on() == false)
if(taster_train_oben.pressed() == true || (msecs-szene_time_ms) > ZUGOBEN_MAX_TIME_TO_HOME_MS)
if( (msecs-szene_time_ms) > ZUGOBEN_MAX_TIME_TO_HOME_MS ) //||taster_train_oben.pressed() == true )
{
if((msecs-szene_time_ms) > ZUGOBEN_MAX_TIME_TO_HOME_MS)
{
Serial.printf("Train oben runs in time out while driving back at home\n");
zugoben_error++;
// zugoben_error++;
}
else
{
@ -497,7 +479,7 @@ void move_zugoben()
case ZO_STOPPED_PLAYING:
if(mp3_zugoben == true)
{
if(mp3ply.fade_out() == false ) // && mp3ply.is_playing() == 0)
if(mp3ply.fade_out() == false )
{
zugoben_state = ZO_DONE;
mp3_isused = false;
@ -518,7 +500,7 @@ void move_zugoben()
bool mp3_soben = false;
unsigned int soben_error = 0;
const unsigned int SOBEN_MAX_ERROR_COUNT = 5;
const unsigned long SOBEN_MAX_DRIVES_TIME_MS = 30000; ///timeout time
const unsigned long SOBEN_MAX_DRIVES_TIME_MS = 30400; ///timeout time
typedef enum {SO_INIT = 0, SO_AT_HOME, SO_DRIVES_HOME, SO_STOPPES_AT_HOME,SO_STOPPED_PLAYING, SO_DONE} szene_soben_t;
szene_soben_t soben_state = SO_INIT;
void move_schiene_oben()
@ -528,7 +510,7 @@ void move_schiene_oben()
{
case SO_INIT:
Serial.printf("Schiene oben fährt\n");
taster_schiene.reset();
//taster_schiene.reset();
if(soben_error > SOBEN_MAX_ERROR_COUNT)
soben_state = SO_STOPPES_AT_HOME;
else
@ -536,7 +518,10 @@ void move_schiene_oben()
if(mp3_isused == false)
{
Serial.printf("Playing Weihnachtsbäckerei\n");
mp3ply.play_vol(SONG_WEIHNACHTSBAECKEREI, 20);
if( random(0, 2) == 0 )
mp3ply.play_vol(SONG_WEIHNACHTSBAECKEREI, 23);
else
mp3ply.play_vol(SONG_WEIHNACHTSTRAUM, 23);
mp3_soben = true;
mp3_isused = true;
}
@ -548,14 +533,15 @@ void move_schiene_oben()
case SO_AT_HOME:
szene_time_ms = millis();
relais_wolke_schiene.on();
//relais_wolke.on();
soben_state = SO_DRIVES_HOME;
break;
case SO_DRIVES_HOME:
if(taster_schiene.pressed() == true || (msecs-szene_time_ms) > SOBEN_MAX_DRIVES_TIME_MS)
if( (msecs-szene_time_ms) > SOBEN_MAX_DRIVES_TIME_MS) //||taster_schiene.pressed() == true )
{
if((msecs-szene_time_ms) > SOBEN_MAX_DRIVES_TIME_MS)
{
soben_error++;
// soben_error++;
Serial.printf("Schiene oben timeout while driving home.\n");
}
else
@ -568,6 +554,7 @@ void move_schiene_oben()
break;
case SO_STOPPES_AT_HOME:
relais_wolke_schiene.off();
//relais_wolke.off();
soben_state = SO_STOPPED_PLAYING;
break;
case SO_STOPPED_PLAYING:
@ -597,21 +584,24 @@ void disco()
disco_all_count++;
uint32_t stored_licht_state_flag = licht_state_flag;
uint8_t randSongNumber = random(0, 3);
uint8_t randSongNumber = random(0, 4);
Serial.printf("Disco! Playing Song %d\n", randSongNumber);
switch(randSongNumber)
{
case 0:
mp3ply.play_vol(SONG_DISCO_LASTCHRISTMAS,20);
mp3ply.play_vol(SONG_DISCO_LASTCHRISTMAS,25);
break;
case 1:
mp3ply.play_vol(SONG_DISCO_DOTHEYKNOWITSCHRISTMAS,20);
mp3ply.play_vol(SONG_DISCO_DOTHEYKNOWITSCHRISTMAS,25);
break;
case 2:
mp3ply.play_vol(SONG_DISCO_MARYSBOYCHILD,20);
mp3ply.play_vol(SONG_DISCO_MARYSBOYCHILD,25);
break;
case 3:
mp3ply.play_vol(SONG_DISCO_MERRY_CHRISTMAS,25);
break;
default:
mp3ply.play_vol(SONG_DISCO_LASTCHRISTMAS,20);
mp3ply.play_vol(SONG_DISCO_LASTCHRISTMAS,25);
break;
}
@ -695,7 +685,7 @@ void disco_licht()
led_back.theaterChaseRainbow();
licht.fade_off();
relais_spiegel.off();
relais_spiegel.on();
rgb_leds.show();
}
@ -732,27 +722,29 @@ void taster_abfrage()
}
}
uint8_t nvs_value = 0;
void updateNVS()
{
static uint8_t value = 0;
if(millis() - last_updated_NVS > 1000)
if(millis() - last_updated_NVS > 1000)
{
last_updated_NVS = millis();
switch(value)
switch(nvs_value)
{
case 0:
NVS.setInt("licht_cnt", licht_all_count);
break;
case 1:
NVS.setInt("licht", licht_all_count);
NVS.setInt("move_cnt", move_all_count);
break;
case 2:
NVS.setInt("move", move_all_count);
NVS.setInt("disco_cnt", disco_all_count);
break;
case 3:
NVS.setInt("disco",disco_all_count);
break;
default:
value = 0;
}
value++;
if(nvs_value == 2)
nvs_value = 0;
else
nvs_value++;
}
}