Нужен скетч для управления ШГ

Шаговый двигатель должен перемещать каретку по винту до концевика, затем резко менять направление вращения - до другого концевика и т.д. Задача тривиальная, но подходящего рабочего решения найти не могу. Аппаратная часть: Arduino Nano, Nema 17, A4988, два оптрона, кнопка без фиксации для запуска и переменный резистор для регулировки скорости. Максимальная скорость - 800 шагов в секунду. Схему сейчас попробую загрузить. Жду предложений.

Здравствуйте! Пишите на почту - wizard-sen@yandex.ru Последнее время только и делаю, что всяческими ШД управляю и с вашим управимся

У аффтора темы оговорка “по Фрейду”?
Для тех, кто не прошарен - поясню:
На форуме sextalk, поосвященном обмену опытом использования коммерческих услуг в сфере б…ядтсва и равзрата, аббревиатура ШГ имеет весьма конкретное значение. :wink:


В этой связи, словосочетание “управление ШГ” обозначает еще более занимательную задачу!

ну штош тут поделать. в детстве мы били волосатых, потом ходили на концерты сектора, потом сплин, потом Путин, эмо, готы, потом я работал много хз что было, а сейчас у деток есть современные аналоги: гачимучи, бурлестание и боллбастинг. Не удумайте искать эти слова в интернетах, я вас предупредил.

да, залипший прикормочный кораблик получается )))

сделаю за 2тыс, fridgetester@mail.ru

1 лайк

На D8 пожалели резистор?

Нет, просто в скетче, которым я пытался крутить двигатель, этот пин подтянут к +5.


const int startButton = 8;
const int reversSwitch1 = 9;
const int reversSwitch2 = 10;
int flag1 = 0;//Переменная 1
int flag2 = 0;//Переменная 2
const int stepPin = 11;
const int enablePin = 12;
const int dirPin = 13;

int i = 0, j = 0, k = 0, l = 0, stepState = 0;
unsigned long previousMillis = 0;
long interval = 0;
long previousMillis2 = 0;
long previousMillis3 = 0;

void setup()
{
 pinMode( startButton, INPUT_PULLUP);
 pinMode( reversSwitch1, INPUT);
 pinMode( reversSwitch2, INPUT);
 pinMode( stepPin, OUTPUT); digitalWrite( stepPin, LOW);
 pinMode( enablePin, OUTPUT); digitalWrite( enablePin, LOW);
 pinMode( dirPin, OUTPUT); digitalWrite( dirPin, LOW);
}

void loop()
{
 int sensorReading = analogRead(A3);
 interval = map(sensorReading, 0, 1023, 32767, 1000);
 unsigned long currentMillis = micros();
 if (currentMillis - previousMillis >= interval) {
 previousMillis = currentMillis;
 if (stepState == LOW) {
 stepState = HIGH;
 } else {
 stepState = LOW;
 }
 digitalWrite( stepPin, stepState);
 } else {
 digitalWrite( stepPin, LOW);
 }
 if (digitalRead( startButton) == LOW) {
 if (millis() - previousMillis2 > 100)
 { previousMillis2 = millis(); i++; if (i == 1) {
 j++;
 } if (j > 1) {
 j = 0;
 }
 }
 } else {
 i = 0;
 }
 if (j == 0) {
 digitalWrite( enablePin, HIGH);
 } else {
 digitalWrite( enablePin, LOW);
 }
 { flag1 = digitalRead(reversSwitch1);  //Первая переменная означает: считывание первой кнопки
  flag2 = digitalRead(reversSwitch2);  //Вторая переменная означает: считывание второй кнопки
  if (flag1 == HIGH) digitalWrite(dirPin, HIGH); // Если кнопка 1 нажата, то сменить направление вращения
  if (flag2 == HIGH) digitalWrite(dirPin, LOW);  // Если кнопка 2 нажата, то вернуть направление по умолчанию
}
}


И ты, конечно, искренне полагаешь, что на данном форуме всем без исключения это значение хорошо известно?

Нет, что ты! Только в тебе я уверен на 100%.

Чудненький у вас междусобойик! Жаль только, что в мои 72 эта тема мне совсем не интересна…

а если еще тунеядцы обсудили почему это не реально, почему 200 оборотов жалких можно получить, что бы школа вроде меня не откликалась на заказы, это было бы вообще чудесно)))

DropMeFiles – free one-click file sharing service мдааа (нецензурная лексика) сделал библиотеку с 0, (нецензурная лексика) ))) нужна кому то пищалка из шаговика ? это отнюдь не самый быстрый и громкий режим… отдам за дорого! отлично умеет раздражающе будить с утра…

Вопрос решен, спасибо fridgetester