Старик Похабыч, не думали дополнить ваш превосходный наливатор второй помпой и и вторым краником, чтобы была возможность разливать не только один напиток, а например наливать виски с колой?
Если без плеера то даТак.. А из режима налива 1-го по таймауту выходит ? Экран по таймауту гаснет?
void Motors_tick2()
{
// управление помпой, если изменилось состояние
static bool old_pump_state = false;
if (Pump_clear != old_pump_state)
{
if (Pump_clear) pump_enable();
else pump_disable();
old_pump_state = Pump_clear;
}
{
switch (p_State)
{
case ps_idle:
Curent_Step = ws_Step1;
break;
case ps_auto_naliv:
Auto_tick();
break;
case ps_manual_naliv:
Manual_tick();
break;
case ps_game_naliv:
Game_tick();
break;
}
}
};
void pump_enable() {
digitalWrite2(PIN_PUMP, 1);
}
void pump_disable() {
digitalWrite2(PIN_PUMP, 0);
}
bool EnableVolContr = true;
bool isTost = false;
void SayTost()
{
if (!MP3_avail) return; // выход если не иницирован плейер
if (!say_tost) return; // если тосты не говорить, то выход
if ((digitalRead2(BUSY_MP3_PIN) == 0)&&isTost) return; // произносится длинный тост.
EnableVolContr = false;
isTost=true;
static uint16_t OldTost = 0;
static uint16_t NewTost;
do
NewTost = random(MAX_FON_SOUND + 1, MAX_SOUND + 1);
while (NewTost == OldTost);
OldTost = NewTost;
myDFPlayer.stop();
delay(100);
myDFPlayer.volume(MP3_Tost_Vol);
delay(100);
myDFPlayer.play(NewTost);
delay(100);
}
void PlayFon()
{
if (!MP3_avail) return; // выход если не иницирован плейер
static uint16_t OldFon = 0;
static uint16_t NewFon;
do
NewFon = random(1, MAX_FON_SOUND + 1);
while (NewFon == OldFon);
OldFon = NewFon;
myDFPlayer.volume(MP3_Fon_Vol);
delay(200);
myDFPlayer.play(NewFon);
delay(200);
}
void MusicTick()
{
if (!MP3_avail) return; // выход если не иницирован плейер
static uint32_t LastCheck = 0;
if (play_fon)
{
if ((millis() - LastCheck) > 1000)
{
if (EnableVolContr) myDFPlayer.volume(MP3_Fon_Vol);
if (digitalRead2(BUSY_MP3_PIN) == 1)
{
isTost=false;
PlayFon();
EnableVolContr = true;
}
LastCheck = millis();
}
}
else
{
if (digitalRead2(BUSY_MP3_PIN) == 0) // работаетм!
{
if (EnableVolContr) myDFPlayer.stop();
}
else
{
EnableVolContr = true;
}
}
}
enum process_state : uint8_t {ps_idle, ps_auto_naliv, ps_manual_naliv, ps_game_naliv, ps_settings}; //То есть возможно ожидать другой проект от вас?))Думал, но в данной версии уже нет памяти на эти разости