Вместо использования бесконечных циклов вы можете просто проверить, получена ли какая-либо другая команда.
Например:
вместо
while ( key_value == key_value ) //This is a weird infinite loop condition but whatever
{
// do stuff
}
, которые вы можете иметь
while ( decode() == condition_for_this_loop )
{
// do stuff
}
или
for(;;) //This also is just an infinite loop, but looks nicer.
{
// do stuff
if ( decode() != condition_for_this_loop ) { break; }
}
Обратите внимание, что это псевдокод. Вы должны правильно реализовать это. И вам может понадобиться немного изменить логику c вашей программы.
Поскольку вы определили объект irrecv глобально, он будет виден для других функций ниже, это не будет проблемой , Ваш код может даже работать, просто заменив условие l oop. Но если вы получаете ошибки, вам нужно их устранить, я просто указываю на логи c. В итоге у вас может получиться что-то вроде этого:
irrecv.decode( &results );
switch ( results )
{
case CONDITION_1:
inf_loop1();
break;
case CONDITION_2:
int_loop2();
break;
}
...
void inf_loop1()
{
for(;;)
{
// do stuff
irrecv.decode( &results );
if ( results != CONDITION_1 ) { break; }
}
}
void inf_loop2()
{
for(;;)
{
// do stuff
irrecv.decode( &results );
if ( results != CONDITION_2 ) { break; }
}
}
Кстати, начинать с относительно больших проектов не очень хорошая идея , По вашему вопросу, я предполагаю, что это не только ваша первая программа для Arduino, но и ваша первая в мире программа. Вы не бежите, прежде чем идти. Начните медленно, мигайте несколькими светодиодами, реализуйте забавные алгоритмы со светодиодами, я не знаю, их несколько, они загораются в разной последовательности, имеют несколько кнопок и объединяют их со светодиодами. Просто играйте со светодиодами. По мере накопления опыта вы не будете задавать подобные вопросы. И если вы начнете с какого-то большого проекта, скорее всего, вы не сможете это сделать и будете разочарованы, или вы просто будете следовать некоторым онлайн-учебникам и копировать-вставлять код, следовательно, вы не будете чувствовать себя так, как вы. это.