Изменение кода

Я использую этот код для включения/выключения небольшого двигателя постоянного тока 5 В. Как я могу изменить его так, чтобы arduino записывала значение потенциометра в двигатель, когда он находится в состоянии ON?

int speed = analogRead(pot) / 4;
ButtonState = !digitalRead(Switch);

if (ButtonState != lastButtonState)
{ 
     if (ButtonState == 1) 
     {
         if (motorstate == 1) 
         {
             motorstate = 0;
         } 
         else
         {
             motorstate = 1; 
         }
     } 
     lastButtonState = ButtonState; 
}

digitalWrite(enable, motorstate);
delay(20);

, 👍0

Обсуждение

Это зависит от того, является ли вывод «enable» поддерживающим ШИМ или «analogWrite(enable,speed)»., @Dave X

Да, это. я попытался удалить последний оператор вывода и заменил его на ` if (motorstate == 1) AnalogWrite (включить, скорость); ` но это не работает., @Medhat Hamed


1 ответ


1

(это не ответ, а просто комментарий, используемый для выравнивания кода).

Этот скетч (который я выровнял в вашем коде) можно переписать

int speed = analogRead(pot) / 4;
ButtonState = !digitalRead(Switch);

if (ButtonState != lastButtonState)
{ 
     if (ButtonState == 1) 
     {
         motorstate = (motorstate == 1 ? 0 : 1);
     } 

     lastButtonState = ButtonState; 
}

digitalWrite(enable, motorstate);
delay(20);

Я предлагаю, что лучший способ продолжить — добавить операторы печати и использовать последовательный монитор, чтобы проверить, какие значения вы получаете, и посмотреть, что вы ожидаете (что не совсем ясно).

,

о, я только что понял: D я использовал этот оператор AnalogWrite (enable, Motorstate*speed), @Medhat Hamed