Arduino UNO + шаговый двигатель
- Войдите на сайт для отправки комментариев
Втр, 16/10/2018 - 01:49
Подскажите, пожалуйста. Есть задача: нужно крутить шаговым мотором когда нажата кнопка мотор сделал 1600 шагов и остановился, при поторному нажатия кнопки повторяется, я только начинаю программировать, получилось чтобы мотор крутился при нажиме кнопки, а как дальше не понимаю
#include <AccelStepper.h> const byte btnPin =/*пин*/A0; bool btn; AccelStepper Stepper1(1,13,12); //использует пин 12 и 13 для dir и step, 1 - режим "external driver" (A4988) void setup() { pinMode(btnPin, INPUT_PULLUP); Stepper1.setMaxSpeed(3000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду) Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2) } void loop() { pinMode(btnPin, INPUT_PULLUP); btn = digitalRead(btnPin); if (!btn) { Stepper1.move(1600); Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя } }
пока не научитесь ПРАВИЛЬНО работать с тактовой кнопкой - дальше двигаться не имеет смысла.
http://arduino.ru/forum/programmirovanie/rabota-s-knopkami-v-pomoshch-novichku
какая проблема в этом примере?
я пробовал двигатель включается. и все мне сейчас чтобы работало и все
какая проблема в этом примере?
какая проблема в этом примере?
на каждом форуме свои обычаи.
вы опубликовали свой пост в разделе программирование.
здесь подсказывают, но программы за кого то не пишут.
за денежку в разделе Ищу исполнителя вам напишут что хотите (если договоритесь)
у вас не правильно обрабатывается кнопка, нет защиты от дребезга.
конечный автомат Ищите в гугле
https://tproger.ru/translations/finite-state-machines-theory-and-impleme...
Пока не осознаете это . То дальше будут сплошные овраги.
Вам не нужна защиты от дребезга, а двигателю нужна. Шагать-то ему.
я пробовал двигатель включается. и все мне сейчас чтобы работало и все
ну то есть все работает, как надо? тогда в чем вопрос?
самостоятельная остановка двигателя
если вам этого не нужно, так здесь никому не нужно тем более))))
самостоятельная остановка двигателя
И что?
послушайте, вы нормально излагать мысли можете? Вам надо, чтобы мотор останавливался - а он не останавливается? Или наоборот - надо чтоб крутился, а он. сволочь такая. встает? или еще триста варианто...
Мы тут должны ха вас не только код ваш дописывать, но и сами додумывать, что этот код должен делать?
через флаг будет работать
через флаг будет работать
это вопрос или утверждение ?
при нажиме кнопки двигатель должен сделать какое-то количество шагов и остановиться, при следующем нажатии на кнопку двигатель делает вновь такое же количество шагов, и так далее при каждом нажатии кнопки
через флаг будет работать
это вопрос или утверждение ?
через флаг будет работать
это вопрос? :)
Сразу. чтоб не переписываться как с немым по тридцать раз - этот код, который вы очевидно, где-то стащили - работать не будет.
Забавный сегодня вечер. Сначала упертый подросток пришел с светодиодами и вызвал флейм на 150 страниц, теперь вот вы... Заканчивайте тупить и либо ясно пишите, что вам надо, либо не отнимайте время.
Если он вам должен, то забейте ему стрелу. Угрожайте, пытайте током.
Работать через флаг - решение правильное. +антидребезг. Все подсказки даны. И всё.
при нажиме кнопки двигатель должен сделать какое-то количество шагов и остановиться, при следующем нажатии на кнопку двигатель делает вновь такое же количество шагов, и так далее при каждом нажатии кнопки
вы научились работать с кнопкой,?
покажите код, где вы кнопкой правильно вкл и выкл светодиод.
когда научитесь - начинайте разбираться с шаговиком.
при нажиме кнопки двигатель должен сделать какое-то количество шагов и остановиться, при следующем нажатии на кнопку двигатель делает вновь такое же количество шагов, и так далее при каждом нажатии кнопки
вы научились работать с кнопкой,?
покажите код, где вы кнопкой правильно вкл и выкл светодиод.
когда научитесь - начинайте разбираться с шаговиком.
+антидребезг.
Значит так, обьясняю и ухожу.
Ваша проблема в том, что вы проверяете кнопку при каждом обращении к loop. Микроконтроллер - вещь относительно быстрая, пока вы нажимаете на кнопку, loop успевает выполнится тысячи раз. И каждый раз - смотрите в свой код - ваш мотор делает 1600 шагов. Это понятно?
Решение - вам надо запоминать состояние кнопки и реагировать на одно нажатие ТОЛЬКО один раз. А потом нажатую кнопку игнорировать, пока ее не отожмут.
Но тут есть проблема - в момент, когда вы нажимаете кнопку, она замыкается не сразу - сначала происходит "дребезг" - контакт то есть, то нет - и так десятки раз. То же самое при отпускании кнопки. Для вашего же кода это недопустимо - иначе вы опять будете выполнять свои 1600 шагов мотором по многу раз.
Вывод - антидребезг вам абсолютно необходим.
see an example in arduino IDE Examples - Digital - Debounce
ну это сложно, я только неделю во всем этом, а вы так напали на меня, зачем вы так, сложно
никто на вас не нападал.
вам только подсказали в каком направлении двигаться и с чего начать.
кстати, большинство здесь с этого и начинали.
через флаг будет работать
это вопрос? :)
Сразу. чтоб не переписываться как с немым по тридцать раз - этот код, который вы очевидно, где-то стащили - работать не будет.
Забавный сегодня вечер. Сначала упертый подросток пришел с светодиодами и вызвал флейм на 150 страниц, теперь вот вы... Заканчивайте тупить и либо ясно пишите, что вам надо, либо не отнимайте время.
ну это сложно, я только неделю во всем этом, а вы так напали на меня, зачем вы так, сложно
бляя, он же вам целую лекцию написал про дребезг, а вы его в нападатели записали.
если не верите - погуглите этот вопрос....
да, правда взялся за сложное. попробую с светодиодом
есть такой код, переделанный из двух других
в эту часть думаю поместить мотор
ну это сложно, я только неделю во всем этом, а вы так напали на меня, зачем вы так, сложно
А кому щас легко?
Ну еще одна жертва мифа о кухарко-ориентированности Ардуино.
что это?
зачем тут while?
вот такой код будет делать ровно то же самое, что ваш. Вопросом, будет ли это то, что вы хотели - не заморачивался.
то но, не получилось запустить, буду дальше пробовать
то но, не получилось запустить, буду дальше пробовать
И что сейчас мы видим. Вот где лежит библиотека для ознакомления. https://github.com/waspinator/AccelStepper/blob/master/src/AccelStepper.h
Не знаем английский пользуемся гугло-переводчиком.
http://hobbytech.com.ua/arduino-%D0%B1%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%...
ПС: не наблюдаю в программе метод run() или runSpeed()
Добрый вечер, Вот добился таких успехов, при первом нажатии на кнопку срабатывает реле через 3 секунды двигатель делает 100 шагов и реле отключается. Но при следующем нажатия кнопки реле срабатывает, а двигатель не реагирует. Как сделать чтобы повторялось вновь и вновь
Видите как организован обработчик кнопки. Вот и сделайте его правильно
Отсюда. #4
Видите как организован обработчик кнопки. Вот и сделайте его правильно
Отсюда. #4
А ссылку вы видели?? Или нормальные герои{херои} всегда идут о обход {поступают как велит им собственая жопа}
Так видел, хорошая лекция
ПС:
Зачем ШД куда-то двигаться если он уже стоит в текущей позиции
Значит нужно обнулить эту позицию, чтобы произошла следующая. Так или нет
Значит нужно обнулить эту позицию, чтобы произошла следующая. Так или нет
Значит нужно обнулить эту позицию, чтобы произошла следующая. Так или нет
Данунах. Хоть уже суббота я еще в пятнице. Казус решаемый бритвой Оккамы. Режте код и пишите свои программы на уровне железа. Не пользуйтесь чужими подпрограммами и классами пока они не станут Вашими. Посмотрите "библиотеку" (хреновое слово), в шаговых движках все просто - подаем напряжение на 1 обмотку., потом на 2 и т.д... закончились обмотки - опять на 1. А тупо используя чужие классы Вы понижаете себе карму :)
Данунах. Хоть уже суббота я еще в пятнице. Казус решаемый бритвой Оккамы. Режте код и пишите свои программы на уровне железа. Не пользуйтесь чужими подпрограммами и классами пока они не станут Вашими. Посмотрите "библиотеку" (хреновое слово), в шаговых движках все просто - подаем напряжение на 1 обмотку., потом на 2 и т.д... закончились обмотки - опять на 1. А тупо используя чужие классы Вы понижаете себе карму :)
ну и пусть снижается карма, самое главное чтобы работало
ты уже на разных форумах создал сто тем со своим мотором и упорно не хочешь разобраться со своей кнопкой. она у тебя не правильно работает.
чувак точно как на картинке выше)))))