такая вот штука, все работает но дописать кнопки регулировки с менюнкойи вывод на дисплей меня нехватает #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); #include <AccelStepper.h> AccelStepper Stepper1(1, 13, 12); //использует пин 12 и 13 для dir и step, 1 - режим "external driver" (A4988) int dir = 1; int a = 0; int relayPin = 11; int b = (3400); void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(0, 1); lcd.print(b); pinMode (relayPin, OUTPUT); digitalWrite (relayPin, HIGH); } void loop() { Stepper1.setMaxSpeed(1500.0); Stepper1.setAcceleration(1500.0); if (Stepper1.distanceToGo() == 0) { digitalWrite (relayPin, LOW); delay(30); Stepper1.move(b); delay(500); } if (Stepper1.distanceToGo() == b) { digitalWrite (relayPin, HIGH); delay(30); a = 0; } Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя }
вот чтото получилось ))) но этого мало #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); #include <iarduino_Encoder_tmr.h> // Подключаем библиотеку iarduino_Encoder_tmr для работы с энкодерами через аппаратный таймер iarduino_Encoder_tmr enc(9, 10); // Объявляем объект enc для работы с энкодером указывая (№ вывода A, № вывода B) int b = 850; #include <AccelStepper.h> AccelStepper Stepper1(1, 13, 12); //использует пин 12 и 13 для dir и step, 1 - режим "external driver" (A4988) int dir = 1; int a = 0; int relayPin = 11; int i = enc.read(); void setup() { pinMode (relayPin, OUTPUT); digitalWrite (relayPin, HIGH); Serial.begin(9600); // Инициируем передачу данных в монитор последовательного порта enc.begin(); // Инициируем работу с энкодером // Читаем состояние энкодера в переменную i lcd.init(); lcd.backlight(); lcd.print("shtamp"); } void loop() { int i = enc.read(); // Читаем состояние энкодера в переменную i if (i) { // Если энкодер зафиксировал поворот, то ... Stepper1.stop(); b = b + i; /* b+=i*/ // Меняем значение счётчика n, т.к. в переменной i находится -1 (при повороте влево), или +1 (при повороте вправо). Serial.println(b); lcd.setCursor(4, 1); lcd.print(b); // Выводим значение счётчика n if (b=b){ a=0; Stepper1.setMaxSpeed(2000.0); Stepper1.setAcceleration(1000.0); if (Stepper1.distanceToGo() == 0) { digitalWrite (relayPin, LOW); delay(30); Stepper1.move(b); delay(5); } if (Stepper1.distanceToGo() == b) { digitalWrite (relayPin, HIGH); delay(3); a = 0; } Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя } Stepper1.run(); } Stepper1.run(); }
если хотите заказать работу напишите просто свою задачу. то что у вас есть сейчас исполнителя не интересует...