Изменение кода
Я использую этот код для включения/выключения небольшого двигателя постоянного тока 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);
@Medhat Hamed, 👍0
Обсуждение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);
Я предлагаю, что лучший способ продолжить — добавить операторы печати и использовать последовательный монитор, чтобы проверить, какие значения вы получаете, и посмотреть, что вы ожидаете (что не совсем ясно).
,
@Michel Keijzers
о, я только что понял: D я использовал этот оператор AnalogWrite (enable, Motorstate*speed), @Medhat Hamed
Смотрите также:
- Как использовать SPI на Arduino?
- Как решить проблему «avrdude: stk500_recv(): programmer is not responding»?
- Как создать несколько запущенных потоков?
- Как подключиться к Arduino с помощью WiFi?
- avrdude ser_open() can't set com-state
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Я закирпичил свой Arduino Uno? Проблемы с загрузкой скетчей на плату
Это зависит от того, является ли вывод «enable» поддерживающим ШИМ или «analogWrite(enable,speed)»., @Dave X
Да, это. я попытался удалить последний оператор вывода и заменил его на
`
if (motorstate == 1) AnalogWrite (включить, скорость);`
но это не работает., @Medhat Hamed