Как использовать цикл while(1) в arduino?
Я пытался выйти из цикла while(1)
, получив значение от датчика, а затем запустив код вне while(1)
.Но проблема в том, что он не выходит. Как я могу решить эту проблему?
Смотрите Код ниже ........
void setup() {
pinMode(2,INPUT);
Serial.begin(9600);
}
void loop() {
int sensor;
while(1)
{
sensor = digitalRead(2);
if(sensor == 0)
{
Serial.println("inside while loop");
}
break;
}
Serial.println("Break......");
}
@Uttam, 👍-2
Обсуждение3 ответа
В парадигме Arduino, в отличие от обычного программирования на C, где есть только 1 точка входа, называемая "main ()", есть 2 точки входа, называемые "setup ()" и "loop ()". "setup ()" вызывается только один раз после загрузки. Но "loop ()" вызывается снова и снова сразу после вызова "setup ()". Нет необходимости создавать свой собственный бесконечный цикл (например, оператор "while (1)"), как в обычном программировании на языке Си.
Есть ли в любом случае выход из цикла while(1) внутри цикла void(), @Uttam
Извините за задержку, каникулы. Да, но большинство не считает это хорошим программированием. Вы можете выполнить "разрыв" внутри цикла и выйти из цикла. [Этот вопрос / ответ на Stackexchange] (http://stackoverflow.com/questions/29485340/how-to-exit-while1-loop-after-sometime-in-c ) вдается в подробности., @st2000
вместо while(1) можно использовать имя переменной в while и изменять значение переменной, когда вы хотите выйти из цикла. часть кода может быть изменена на основе следующей концепции.
условие bool= true;
в то время как(условие){
если (датчик==0)
условие=false;
Это мое предложение для решения вышеуказанной проблемы.
Используется вот так
void setup() {
pinMode(2,INPUT);
Serial.begin(9600);
}
void loop() {
bool cond = true;
int sensor;
while(cond)
{
sensor = digitalRead(2);
if(sensor == 0)
{
Serial.println("inside while loop");
}
cond = false;
}
// таким образом, вы можете использовать его внутри цикла void()
}
Не могли бы вы, пожалуйста, добавить некоторые пояснения о том, как это решает проблему., @sa_leinad
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Цикл
while (1)
выполняется один раз, каждый раз, когда вызываетсяloop ()
, печатается или нет, в зависимости от состояния pin2. Я бы ожидал, что этот код будет печатать: либо "внутри цикла while" (если вывод 2 равен false), либо ничего, за чем следует "Break ......"; снова и снова. Это то, что ты получаешь? Ваш вопрос является неполным. Пожалуйста, опишите, что вы ожидали увидеть и что вы видите на терминале., @JRobertФункция
loop
зацикливается (вызывается повторно). Почему вы помещаете неопределенный цикл внутри функции, которая вызывается бесконечно?, @Nick Gammon