Ответы Mail.ru: Можно ли задержать цикл пока не исполнится условие

Для реализации вашей задачи на базе Arduino, где двигатель должен вращаться в одну сторону при достижении определенного уровня освещенности и останавливаться, а затем начинать вращение в другую сторону при понижении уровня света до заданного значения, можно использовать следующий подход:

1. Подключение компонентов

- **Двигатель**: Подключите двигатель к Arduino через драйвер двигателя (например, L298N или L293D), который позволит управлять направлением вращения.

- **Светорезистор**: Подключите светорезистор к одному из аналоговых входов Arduino.

2. Написание кода

Вам нужно будет написать код, который будет постоянно проверять значение, считываемое с светорезистора, и управлять двигателем в зависимости от этого значения. Вот пример кода на C++ для Arduino:

 #include  
 
const int motorPin1 = 3; // Пин для управления двигателем 
const int motorPin2 = 4; // Пин для управления двигателем 
const int lightSensorPin = A0; // Аналоговый пин, к которому подключен светорезистор 
const int lightThresholdHigh = 600; // Порог света для включения двигателя 
const int lightThresholdLow = 300; // Порог света для смены направления двигателя 
 
void setup() { 
  pinMode(motorPin1, OUTPUT); 
  pinMode(motorPin2, OUTPUT); 
  pinMode(lightSensorPin, INPUT); 
} 
 
void loop() { 
  int lightValue = analogRead(lightSensorPin); // Чтение значения с светорезистора 
 
  if (lightValue > lightThresholdHigh) { 
    // Вращение в одну сторону 
    digitalWrite(motorPin1, HIGH); 
    digitalWrite(motorPin2, LOW); 
  } else if (lightValue < lightThresholdLow) { 
    // Вращение в другую сторону 
    digitalWrite(motorPin1, LOW); 
    digitalWrite(motorPin2, HIGH); 
  } else { 
    // Остановка двигателя 
    digitalWrite(motorPin1, LOW); 
    digitalWrite(motorPin2, LOW); 
  } 
} 
 

3. Тестирование и настройка

- Загрузите код в вашу плату Arduino и проверьте, как система реагирует на изменения уровня освещенности.

- Возможно, вам потребуется отрегулировать пороговые значения `lightThresholdHigh` и `lightThresholdLow` в зависимости от условий освещенности в вашем проекте.

Этот код позволяет двигателю вращаться в одну сторону, когда уровень света выше заданного порога, и останавливаться, когда уровень света находится между двумя порогами, а затем начинать вращение в обратную сторону, когда уровень света падает ниже второго порога.