Биполярный шаговый двигатель
- Войдите на сайт для отправки комментариев
Пнд, 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 стоп. и это без длиных нажатий. Вот только ТС поленился перевести комментарии. Так что я поленюсь делать за ТС его хотелку.
В ближайщем будущем можно будет вообще без кнопок - телепатия ) А пока как сделать с тремя кнопками?
выделить в отдельную функцию объединив обе ваши и удалив условия, на нажатие выставить флаг, в лупе если был выставлен флаг выполнить эту функцию, в самой функции после выполнения сбрасываем флаг, как бы всё