Как выполнить операцию один раз до достижения условия, а затем перезапустить ее с начала
Я делаю проект, используя ИК-датчик, серводвигатель и кнопку. Я не могу написать код для указанной логики: он выполнит операцию, когда он считывает цифровое значение высокого уровня IR и вращает серводвигатель до порогового значения, а затем вращает сервопривод в обратном направлении с помощью кнопки. Он не будет выполнять никаких действий до тех пор, пока не будет использована кнопка, хотя IR-датчик считывает значение. Затем он снова выполнит то же действие после нажатия кнопки.
@Eeshan Amiy, 👍2
Обсуждение1 ответ
Лучший ответ:
Я предлагаю, даже если это кажется простым примером, начать с анализа того, чего вы действительно хотите достичь. В этом примере я бы попытался начать с диаграммы состояний. Благодаря этому вы можете прояснить простые вопросы, например, что произойдет, если IR упадет на низкий уровень во время вращения двигателя. В моем проекте двигатель продолжал бы работать, но, возможно, IR используется из соображений безопасности, и вы хотите остановить двигатель, если что-то приблизится. Если это ваше намерение, вы можете легко добавить дополнительные переходы во все состояния, чтобы вернуться в состояние 00.
Такой подход помогает создавать код, который легко поддерживать и изменять в соответствии с новыми требованиями
После того, как диаграмма состояний готова, зачастую легко приступить к программированию со структурами переключателей/кейсов для получения первого опыта обучения.
Switch(state) {
case 00:
// если IR set state = 10;
break;
case 10:
// если кнопка была нажата, устанавливаем состояние = 11
break;
case 11:
// включаем двигатель
// если пороговое состояние установлено = 12
break;
.
.
.
}
- Как синхронно управлять двумя сервоприводами?
- Бесполезная проводка коробки и код
- Почему loop() останавливается?
- Почему сервопривод вращается на 360 градусов?
- Программирование Сервопривода Как Получить -90 Градусов
- Как использовать фотодиод для arduino?
- Как использовать функцию карты
- Как повторить код
«Я не умею писать код логики» — итак, вы хотите, чтобы кто-то сделал это за вас бесплатно? Звучит справедливо, @Jaromanda X
логика как заявлено
....вы не четко сформулировали желаемое поведение, @jsotola