Биполярный шаговый двигатель
- Войдите на сайт для отправки комментариев
Пнд, 20/03/2017 - 23:22
Здравствуйте.Уважаемые форумчане подскажите как добавить третью кнопку в этом скетче после нажатия на которую шаговик вращался сначала чуть вперёд а затем чуть назад (без удержания кнопки).Хочу сделать дозатор паяльной пасты. С вращением двумя кнопками с удержанием разобрался( вперёд - назад).А вот дабавить трётью ... увы )
#define step_pin 3 // Define pin 3 as the steps pin
#define dir_pin 2 // Define pin 2 as the direction pin
#define MS1 5 // Define pin 5 as "MS1"
#define MS2 4 // Define pin 4 as "MS2"
#define button1 7
#define button2 8
int direction; // Variable to determine the sense of the motor
int steps = 500; // Number of steps that you want to execute (for full steps, 200 = 1 turn)
void setup() {
pinMode(MS1, OUTPUT); // Configures "MS1" as output
pinMode(MS2, OUTPUT); // Configures "MS2" as output
pinMode(dir_pin, OUTPUT); // Configures "dir_pin" as output
pinMode(step_pin, OUTPUT); // Configures "step_pin" as output
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
digitalWrite(MS1, LOW); // Configures the steps division (see above)
digitalWrite(MS2, LOW); // Configures the steps division (see above)
digitalWrite(dir_pin, LOW); // Sense (HIGH = anti-clockwise / LOW = clockwise) - It can be also changed
}
void loop() {
if (digitalRead(button1) == LOW || digitalRead(button2) == LOW) { // ako ni jedan taster nije pritisnut
digitalWrite(step_pin, LOW);
digitalWrite(step_pin, LOW);
}
if (digitalRead(button1) == LOW && digitalRead(button2) == HIGH) { // ako je taster 1 idle, a taster 2 pritisnut
digitalWrite(dir_pin, LOW); // move in the LOW direction
digitalWrite(step_pin, LOW);
delay(3);
digitalWrite(step_pin, HIGH);
delay(3);
} else if (digitalRead(button1) == HIGH && digitalRead(button2) == LOW) { // ako je taster 2 idle, a taster 1 pritisnut
digitalWrite(dir_pin, HIGH); // move in HIGH direction
digitalWrite(step_pin, LOW);
delay(3);
digitalWrite(step_pin, HIGH);
delay(3);
}
}

да можно и на двух кнопках сделать
ну можно и на одной кнопке.:) одно нажатие вперед, 2 нажатие назад ,3 нажатие вперед,-назад 4 стоп. и это без длиных нажатий. Вот только ТС поленился перевести комментарии. Так что я поленюсь делать за ТС его хотелку.
В ближайщем будущем можно будет вообще без кнопок - телепатия ) А пока как сделать с тремя кнопками?
выделить в отдельную функцию объединив обе ваши и удалив условия, на нажатие выставить флаг, в лупе если был выставлен флаг выполнить эту функцию, в самой функции после выполнения сбрасываем флаг, как бы всё