int color = 0;
<................>
#if IR_Key_Solid_Black
case IR_Key_Solid_Black :
demorun = 0; ledMode = 255; palchg=0;
#if color == 0
solid = CRGB::Black;
color++;
#endif
#if color == 1
solid = CRGB::Red;
color++;
#endif
#if color == 2
solid = CRGB::Orange;
color++;
#endif
#if color == 3
solid = CRGB::Yellow;
color++;
#endif
#if color == 4
solid = CRGB::Green;
color++;
#endif
#if color == 5
solid = CRGB::SkyBlue;
color++;
#endif
#if color == 6
solid = CRGB::Blue;
color++;
#endif
#if color == 7
solid = CRGB::Violet;
color++;
#endif
#if color == 8
solid = CRGB::White;
color = 0;
#endif
#if LOG_ON == 1
Serial.println(F("Solid"));
Serial.println(color);
#endif
break;
#endif
#if / #endif всегда относилось к препроцессору и означало условную компиляцию, не?Я, чесно гря, фиг его знает :) Я по паскалю больше.
Ага, на этапе компиляции. И если не - то этот код не компилируется.#if / #endif всегда относилось к препроцессору и означало условную компиляцию, не?Я, чесно гря, фиг его знает :) Я по паскалю больше.
Но не суть, сравнивать-то должно по идее?
сравнивать-то должно по идее?Да. Но только во время компиляции. :fly:
Тащемта по-человечески это пишется так: https://ravesli.com/urok-65-operator-switch/Ну это по-человечески :)
color++ отрабатывает и после компиляцииЛогично, этот оператор компилируется в любом случае.
то правильно туда просто нормальный if запихнуть
Но хороший стиль требует switchЯ честно почитал, но не до конца понял синтаксис :pardon:
#if IR_Key_Solid_Black
case IR_Key_Solid_Black : /////////////////////////////////////////////////////////////////////////// Установить цвет Черный
demorun = 0; ledMode = 255; palchg=0; color++;
if (color == 0)
{
solid = CRGB::Black;
}
else if (color == 1)
{
solid = CRGB::Red;
}
else if (color == 2)
{
solid = CRGB::Orange;
}
else if (color == 3)
{
solid = CRGB::Yellow;
}
else if (color == 4)
{
solid = CRGB::Green;
}
else if (color == 5)
{
solid = CRGB::SkyBlue;
}
else if (color == 6)
{
solid = CRGB::Blue;
}
else if (color == 7)
{
solid = CRGB::Violet;
}
else if (color == 8)
{
solid = CRGB::White;
color = 0;
}
#if LOG_ON == 1
Serial.println(F("Solid_Black"));
Serial.println(color);
#endif
break;
#endif
Скомпилировалось без ошибокВ случае плюсов это еще ни о чем не говорит. :D
где ты определил переменную color и какие у нее область видимости и время жизниЯ ее определили как int color; в основном коде где и остальные общие переменные...
Условие (color == 0) не выполнится никогдаПочему? ???
demorun = 0; ledMode = 255; palchg=0; color++;
if (color == 1)
{
solid = CRGB::Black;
}
else if (color == 2)
{
solid = CRGB::Red;
}
else if (color == 3)
{
solid = CRGB::Orange;
}
else if (color == 4)
{
solid = CRGB::Yellow;
}
else if (color == 5)
{
solid = CRGB::Green;
}
else if (color == 6)
{
solid = CRGB::SkyBlue;
}
else if (color == 7)
{
solid = CRGB::Blue;
}
else if (color == 8)
{
solid = CRGB::Violet;
}
else if (color == 9)
{
solid = CRGB::White;
color = 0;
}
Но хороший стиль требует switchДедушка, а ты Ленина видел?
Не слушай его Фрай, если дороги тебе здравый рассудок и внутренняя гармония.Я и не послушал :) switch не осилил, быстрее esle if напихать кучу :)