Использование ИЛИ с циклом while
Я пытаюсь получить два ограничения на одно и то же утверждение while. Можно ли это сделать?
while (digitalRead (home_limit)) {
Это работает для одного(1) лимита, но когда я пытаюсь использовать два(2) лимита, это не работает. Я не могу найти правильную конфигурацию. Я попробовал.
while (digitalRead (home_limit1) || (home_limit2)) {
Я пробовал и другие комбинации, но безуспешно. Кто-нибудь знает, как сделать оператор or (||) с цифровым чтением while?
@Bill Patton, 👍0
Обсуждение1 ответ
digitalRead ()
- это функция. Он принимает один параметр (номер pin) и возвращает состояние этого контакта. Это то возвращаемое значение, которое вы хотите ПОЛУЧИТЬ ИЛИ с другим. Это означает, что вы должны прочитать состояние обоих контактов по отдельности и / ИЛИ результаты вместе:
while (digitalRead(home_limit1) || digitalRead(home_limit2)) {
....
}
Спасибо, не могли бы вы показать мне этот код?Не знаете, как использовать возвращаемые значения обоих to ИЛИ их в программе., @Bill Patton
@BillPatton Вы имеете в виду, помимо примера, который я вам уже приводил?, @Majenko
Да, пожалуйста. Как бы я, по-вашему, добился этого?, @Bill Patton
@BillPatton, используя пример кода, который я уже предоставил!, @Majenko
@БиллПаттон: Строка кода Майенко в этом ответе-это все, что вам нужно. digitalRead(home_limit1) возвращает состояние этого контакта: ноль или единица. Аналогично, digitalRead(home_limit2) возвращает состояние этого контакта: ноль или единица. Цикл while будет выполняться до тех пор, пока оба цифровых считывания не вернут ноль., @PimV
Хорошо, я понимаю. Я попробую, большое вам спасибо., @Bill Patton
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Во-первых, при публикации кода выберите его и нажмите ctrl+k, чтобы правильно его оформить. Попробуйте ввести digitalRead для обоих условий, а также указать, какое значение digitalRead должно быть, @Coder9390
В "while(digitalRead(home_limit1) || home_limit2)" программа не будет оценивать "home_limit2" до тех пор, пока "digitalRead(home_limit1)" возвращает 1, это то, что вы хотите? вы действительно имеете в виду " while(digitalRead(home_limit1) && home_limit2)"? Если это не то, что вы хотите, вам нужно будет отредактировать свой пост, чтобы объяснить на простом английском языке, что вы хотите в первую очередь., @hcheung
У меня есть слайд с двумя ограничениями. По одному на каждом конце слайда. Я провожу эксперименты с этим слайдом. В какой-то момент во время программирования я хочу, чтобы home_limit1 работал как домашний переключатель для направления CW. В другой программе я хочу, чтобы слайд работал в противоположном направлении, CCW, и теперь home_limit2 теперь будет действовать как домашний переключатель. Я просто хотел знать, могу ли я или 2 цифровых считывателя читать вместе, как показано выше. while(digitalRead(home_limit1) || home_limit2). Таким образом, я мог бы изменить логику ниже этого утверждения и заставить двигатель работать против часовой стрелки и отключить home_limit2., @Bill Patton