Ну я же не так написал. В этом случае вам нужны именно две строчки. Поскольку analogWrite перенастраивает выход, я не вникал как перенастраивает, может и будет работать ваша конструкция, но я бы использовал всегда две строчки сначала настройка как цифровой выход, а потом значение этого выхода.
if (runState) {
//...
} else {
pinMode(3,OUTPUT);
digitalWrite(3,LOW);
}
bool btnState = !digitalRead(2);
static bool runState = false;
if (btnState && !flag) { // обработчик нажатия
flag = true;
runState=!runState;
Serial.println("press");
}
if (!btnState && flag) { // обработчик отпускания
flag = false;
Serial.println("release");
}
if (runState) {
//...
} else {
pinMode(3,OUTPUT);
digitalWrite(3,LOW);
}
Инверсия признака работы мотора нужна только в момент нажатия, а я что то стал ей мигать в процессе работы :)
и вот в районе 86 строчки , лучше сделать так:
if (delta < accelTime) { // *** пока время разгона
rpmzad = delta * rpmzad / accelTime; // *** изменяем скорость исходя из прошедшего времени и установки резистора
} else {
accelTimer=millis()-accelTime-1;
}
Для обработки кнопки я ввел переменную, которая считает количество нажатий. И вот по первому двигатель плавно разгоняется до установленных оборотов, благодаря вам. А по второму останавливается.
#34
Что бы опустить шим к нулю лучше сделать не
analogWrite, а вот так :
Ну я же не так написал. В этом случае вам нужны именно две строчки. Поскольку analogWrite перенастраивает выход, я не вникал как перенастраивает, может и будет работать ваша конструкция, но я бы использовал всегда две строчки сначала настройка как цифровой выход, а потом значение этого выхода.
в коде #53 после обработчика отпускания флаг сбрасывается и дальнейшие условия не работают
Полностью выложите ваш код.
Да, точно, ошибся я.... Счаз...
Инверсия признака работы мотора нужна только в момент нажатия, а я что то стал ей мигать в процессе работы :)
и вот в районе 86 строчки , лучше сделать так:
Надо полагать - заработало....
Brokly, я сейчас с телефона, поэтому код текстом вставлю. Вставил как надо.
Для обработки кнопки я ввел переменную, которая считает количество нажатий. И вот по первому двигатель плавно разгоняется до установленных оборотов, благодаря вам. А по второму останавливается.
Ну количество путей решений в си бесконечно, на то он и си . Работает, и хорошо.
Большое спасибо за помощь
Не за что. Вы сам все делали.
Надо полагать - заработало....
Конечно заработал, вот сколько за эти два дня ТС написал? и поблагодарил и окончательный код выложил.