работает схема но не так как надо
- Войдите на сайт для отправки комментариев
Друзья. собрал схему. Написал программу. Всё работает,но...
Задача в том что нажимаю одну кнопку мотор крутит влево. Нажимаю другую - вправо. А в результате крутит куда хочет. И когда нажимаю много раз на одну кнопку также криутит то влево то вправо. В чем проблема?
Прикладываю схему сборки и скетч
http://pixs.ru/showimage/shemamotor_7779304_17186882.jpg
Вот скетч:
int m1=4;
int m2=5;
int b1=7;
int b2=8;
void setup() {
pinMode(m1, OUTPUT);
pinMode(m2, OUTPUT);
pinMode(b1, INPUT);
pinMode(b2, INPUT);
}
void loop() {
// Основной код
if (digitalRead(b1)){
digitalWrite(m1, HIGH);
digitalWrite(m2, LOW);
delay(4000);
}
if (digitalRead(b2)){
digitalWrite(m2, HIGH);
digitalWrite(m1, LOW);
delay(4000);
}
}
//здесь мотор подключен к пинам 4 и 5, кнопки к 7 и 8
А с чем сравнивается if? Прочитали состояние входа и чё дальше?
заметил еще одну особенность. При долгом удерживании кнопки направление может меняться прямо во время нажатия
"else"
Отметим, что конструкция else if может быть использована с или без заключительного else и наоборот. Допускается неограниченное число таких переходов else if.
У Вас кнопка при нажатии даёт низкий уровень на входе, а Вы проверяет на высокий. Задержка на 4 секунды зачем такая большая?
delay убрал из кода вообще. Заработало как надо. А ставил 50 было точно также. Интересно....
Надо кнопки подтянуть на землю резисторами. И учесть дебонсинг.
А с чем сравнивается if? Прочитали состояние входа и чё дальше?
сдесь не обезательно сравнивать, действие выполняется при истина != 0 и не выполняется лож == 0 примеры:
По теме устранить наводку на кнопки (занулить резистором на 10к) и всё будет работать.