Запуск двигателя постоянного тока в течение заданного промежутка времени

Я пытаюсь запустить двигатель постоянного тока на 100 мс, а затем полностью выключить его. Вот мой код, есть какие-нибудь предложения о том, почему он может не работать?

Мой Код

const int pirPin = 9;
const int motorPin = 2;
int switchState = 0;
// процедура настройки запускается один раз, когда вы нажимаете сброс:
void setup() {
  // инициализируйте цифровой вывод в качестве выходного сигнала.
  pinMode(motorPin , OUTPUT);
  pinMode(pirPin, INPUT);
}
void loop() {
  while (digitalRead(pirPin) == HIGH) {
    digitalWrite(motorPin, HIGH);
    delay(100);
    digitalRead(pirPin) == LOW;
    break;
  }
}

, 👍0

Обсуждение

Каково напряжение двигателя постоянного тока, используете ли вы какую-либо микросхему драйвера или транзистор, потому что, если вы их не используете, это также может повредить ваш arduino. Не могли бы вы, пожалуйста, также поделиться своими связями, @Maaz Sk

Итак, чего вы точно хотите, так это того, чтобы двигатель работал, когда значение pirpin высокое, и он должен продолжать работать еще 100 мс после того, как значение станет низким, @xbox gamer

Пожалуйста, поделитесь правильным кодом, а не картинкой. Дозировать запуск двигателя?, @xbox gamer

Пожалуйста, объясните, как двигатель должен реагировать на pirPin. Кроме того, взгляните на digitalRead(pirPin) == LOW; который будет принимать значение true или false и нигде не используется., @ocrdu

Итак, вам нужно объяснить, как двигатель будет реагировать на вывод pir, и вы хотите запустить двигатель, когда вывод pir высокий, и работать в течение 100 мс, а затем отключиться, когда вывод pir низкий, @xbox gamer

Пожалуйста, ответьте на это и скажите, вращается ли ваш двигатель в данный момент с помощью Arduino., @xbox gamer

Строка digitalRead(pirPin) == LOW; не имеет никакого эффекта. И вы никогда не выполняете digitalWrite (motorPin, LOW);, @DataFiddler

Я полагаю, что он думает о том, что при digitalRead(pirPin) == LOW; программа выйдет из цикла while, и двигатель перестанет вращаться, @xbox gamer


1 ответ


1
#include <Arduino.h>

const int pirPin = 9;
const int motorPin = 2;
int switchState = 0;
// процедура настройки запускается один раз, когда вы нажимаете сброс:
void setup()
{
 // инициализируйте цифровой вывод в качестве выходного сигнала.
 pinMode(motorPin, OUTPUT);
 pinMode(pirPin, INPUT);
}
void loop()
{
 while (digitalRead(pirPin) == HIGH)//эта часть кода выполняется, если pir 
 //контакт считывается высоко
 {
   digitalWrite(motorPin, HIGH);// вывод двигателя установлен на высоком уровне, поэтому, если двигатель подключен 
   // двигатель начнет вращаться. 
 }
 while (digitalRead(pirPin) == LOW)//эта часть кода выполняется, если pir 
 // контакт считывается низко
 {
   delay(100);// таким образом, ваш двигатель останавливается после работы в течение дополнительных 0,1 секунды 
   digitalWrite(motorPin, LOW);// вывод становится низким, и двигатель должен перестать вращаться
 }
}

Я прокомментировал все строки

Надеюсь, это поможет.

,