Шаговый двигатель должен перемещать каретку по винту до концевика, затем резко менять направление вращения - до другого концевика и т.д. Задача тривиальная, но подходящего рабочего решения найти не могу. Аппаратная часть: Arduino Nano, Nema 17, A4988, два оптрона, кнопка без фиксации для запуска и переменный резистор для регулировки скорости. Максимальная скорость - 800 шагов в секунду. Схему сейчас попробую загрузить. Жду предложений.
Здравствуйте! Пишите на почту - wizard-sen@yandex.ru Последнее время только и делаю, что всяческими ШД управляю и с вашим управимся
У аффтора темы оговорка “по Фрейду”?
Для тех, кто не прошарен - поясню:
На форуме sextalk, поосвященном обмену опытом использования коммерческих услуг в сфере б…ядтсва и равзрата, аббревиатура ШГ имеет весьма конкретное значение. ![]()
В этой связи, словосочетание “управление ШГ” обозначает еще более занимательную задачу!
ну штош тут поделать. в детстве мы били волосатых, потом ходили на концерты сектора, потом сплин, потом Путин, эмо, готы, потом я работал много хз что было, а сейчас у деток есть современные аналоги: гачимучи, бурлестание и боллбастинг. Не удумайте искать эти слова в интернетах, я вас предупредил.
да, залипший прикормочный кораблик получается )))
сделаю за 2тыс, fridgetester@mail.ru
На 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
