Помогите написать скетч для ШД
- Войдите на сайт для отправки комментариев
Вс, 02/07/2017 - 23:14
Здравствуйте! Помогите написать скетч под конкретную задачу. И так, что требуется: есть 2 кнопки, 3 потенциометра один драйвер (dir/step) и один ШД, Arduino Pro Mini
Принцип работы:
При кратковременном нажатиии на кнопку К1 ШД совершает Х1 оборотов по часовой стрелке и сразу
(или с паузой t) Х2 оборотов против часовой стрелки. То есть выполняется подпрограмма.
Х1 задается положением резистора R1, Х2 положением резистора R2.
При длительном нажатии на кнопку К1 бесконечно повторяется выполнение подпрограммы с промежутками Т(0-3с). Промежутки (паузы) Т задаются резистором R3.
При нажатии кнопки К2 ШД вращается против часовой стрелки постоянно, пока нажата кнопка К2.
К сожалению я совсем не Дока в программировании, поэтому прошу у вас помощи. Спасибо!
Вам в раздел Ищу исполнителя
Мне помощь нужна! Пару лет назад сам писал, а теперь подзабыл...
Мне помощь нужна! Пару лет назад сам писал, а теперь подзабыл...
Программирование это как езда на велосипеде, если научился, то забыть не возможно.
Мне помощь нужна! Пару лет назад сам писал, а теперь подзабыл...
Помогают тем, кто сам что-то пытается сделать и задаёт конкретные вопросы. А Вы хотите, чтобы всё сделали за Вас и дали готовый код. В таком случае - Ищу исполнителя
напомню: если двигатель 2-полярный (4 проводный интерфейс, две обмотки A и B), то управлять полным шагом можно в виде повтора последовательности из 4 шагов: Ш1) A+, задержка; Ш2) A-, задержка; Ш3) B-, задержка; Ш4) B+, задержка, где A+/ B+ (или A-/ B-) = подача положительной (отрицательной) полярности на обмотку A /B.
С микрошагами и удержанием в промежуточном положении несколько сложнее. Если напишешь программу для полношагового управления, помогу дальше.
Спасибо! Найду свои старые скетчи, попробую вспомнить. Если что, отпишусь.
p.s. Вот нашел старый скетч, переделанный из какого то примера. Крутит мотор вправо-влево от 2-х кнопок. Скорость задается переменным резистором. Немного не то что надо. Как его переделать, чтобы отсчитывал шаги и количество шагов задавалось резистором (или может кодировать количество шагов перемычками)?
Всем спасибо за помощь! На редкость отзывчивый форум!
Начните с изучения простых примеров действий, прилагаемых к библиотеке ШД AccelStepper https://github.com/bildr-org/AccelStepper
посмотрите в примере как переместить вал на заданное количество шагов и понемногу добавляйте в пример свой код - условия и направления перемещения
Может так
Такие конструкции , как в строке 41 неудобны и могут приводит к проблемам из-за повторной обработки программой loop этой же нажатой кнопки и дребезга (в схеме предусмотрена антидребезговая цепь?).
Чтобы преждевременно не обрабатывать еще раз нажатие той кнопки, после выполнения нужного действия ( вращения мотора, а оно тоже занимает время) применяют таймаут, в течение которого обработка нажатий этой кнопки (или всех кнопок) игнорируется.
Чтобы не превращать loop в свалку, в будущем лучше обрабатывать нажатия и отпускания кнопок в прерываниях и записывать их в буфер. Чтение и опустошение буфера будет выполнять главная программа looр.
Рекомендую не торопиться и для начала освоить обработку нажатия кнопок. У двух кнопок могут быть 4 состояния, из которых надо рассматривать как минимум 3, а не 2 как в вашей программе.
Не тот алгоритм: от одной кнопки крутится в одну сторону постоянно, от другой в другую, пока держишь кнопку.
Не тот алгоритм: от одной кнопки крутится в одну сторону постоянно, от другой в другую, пока держишь кнопку.
Не может быть в отладчике он считает 400 в одну сторону 100 в другую а вторая крутит пока держиш, все как вы просили в #9 (Вперед шагает на 400 шагов, назад на 100. В принципе то что надо. Как правильно задействовать кнопку на пине 2, чтобы при нажатии на нее мотор постоянно крутился обратно)
Спасибо за помощь. Вот снял видео, как твой код работает: https://cloud.mail.ru/public/8YeU/DevHnZp6P
А вот как должно работать, но мой код кривой: https://cloud.mail.ru/public/AbPE/eJ2pi3Mwa
Да я как раз и пытаюсь и понять и разобраться, но знаний не хватает.
ДА прошу прощения, вкралась ошибочка
ДА прошу прощения, вкралась ошибочка
Ну уж если у местных Гуру ошибки случаются, то что же про меня говорить! Спасибо за помощь, но...
При первом нажатии на КН1 мотор крутится на 1 оборот, потом возвращается на 1/4 обратно. При повторном нажатии на КН1 мотор крутится только на 1/4 оборота, потом возвращается на 1/4 обратно. При нажатии на КН2 мотор крутится в обраном направлении сколько надо. После этого КН1 один раз работает правильно, потом только на 1/4 оборота. https://cloud.mail.ru/public/NDsk/5hYu5D8MP
А можно добавить паузу между циклами при длительном нажатии на КН1?
Начнем с того что я не гуру а такойже любитель как и ВЫ. Во вторых это называется отладка. Пробуйте так
Восара! Я просто стоя аплодирую ТС! Тебя развели на халявное написание кода ленивому недоумку, а ты еще извиняешься? АБАЛДЕТЬ!
Цыганка развела на деньги, а ты, типа: "Простите, что что купюры мятые...".
Я, как доктор, могу заявить, что острые пароксизмы наглости, почти на 100% купируются "на..уй терапией". Очень рекомендую. Также эффективно при дамских истериках.
Начнем с того что я не гуру а такойже любитель как и ВЫ. Во вторых это называется отладка. Пробуйте так
Ну, по стравнению со мной, ГУРУ!
Заработало! Большое спасибо!Путался втиснуть паузу между циклами delay(500), так тормозит все... Теперь буду пробовать потенциометры прилаживать...
Vosara!
Большое спасибо за помощь!
Что же касается написавшего комментарий "доктора" то, видимо от жадности и сильно жмущей короны, ему совсем поплохело! Не стоит на таких даже обращать внимание!
Еще раз спасибо за помощь!
Спасибо за понимание! Как доделаю проект, покажу, что получилось!
боюсь расстроить вас... мир не совершенен.
Путался втиснуть паузу между циклами delay(500), так тормозит все...
Вам вместо задержки нужно вставить блокировку кнопки , чтобы она не срабатывала до отпускания. Примерный код привожу а вставите его сами
Спасибо!