Шаговик и концевики
- Войдите на сайт для отправки комментариев
Пт, 08/10/2021 - 21:59
Ардуино Uno + мотор 28BYJ-48 с драйвером ULN2003 + два концевика.
Мотор крутится в одну сторону концевик меняет направление в обратную.
Скорость движения мотора выставляется в скетче.
Все.
Отличный случай для ежегодного эксперимента. Платите сколько посчитаете нужным.
01
#include <CustomStepper.h>
02
03
const
uint8_t in1 = 8;
04
const
uint8_t in2 = 9;
05
const
uint8_t in3 = 10;
06
const
uint8_t in4 = 11;
07
08
const
uint8_t limitR = 2;
09
const
uint8_t limitL = 3;
10
const
float
rpm = 12.0;
11
12
CustomStepper stepper(in1, in2, in3, in4);
13
14
void
setup
() {
15
stepper.setRPM(rpm);
16
stepper.setSPR(4075.7728395);
17
pinMode(limitR, INPUT_PULLUP);
18
pinMode(limitL, INPUT_PULLUP);
19
stepper.setDirection(CW);
20
stepper.rotate(0);
21
}
22
23
void
loop
() {
24
if
(LOW == digitalRead(limitR)) {
25
stepper.setDirection(CW);
26
}
27
if
(LOW == digitalRead(limitL)) {
28
stepper.setDirection(CCW);
29
}
30
stepper.run();
31
}
wrk.sadman@gmail.com
Дворник для машины?
Давно не брал ты в руки шашек...
Или ошибок налепил для прикола? Не жалко студента?
barmaley2m@yandex.ru
Ошиб_о_к? Расскажи-ка про них, послушаю.
Одна функция ( rotate ) была забыта - это так. Поленился ночью прицепить драйвер с лампочками.
Помойму направления попутаны, не? Если наименования концевиков соответствуют логике).
Ошиб_о_к? Расскажи-ка про них, послушаю.
Одна функция ( rotate ) была забыта - это так. Поленился ночью прицепить драйвер с лампочками.
Ну да. Заказчик же программист, он сам увидит, что одной функции нет. Вставит.
А это ты наверное на чистом СИ написал?
if
(LOW == digitalRead(limitR))
Ещё или сам признаешься, где ему затычек наставил? Вот не верю, что ТАК случайно ошибся.
А это ты наверное на чистом СИ написал?
if
(LOW == digitalRead(limitR))
Это Yoda Conditions для тех кто понимает.)
Тогда всё правильно :)
Бармалей, ты либо пальцем покажи. либо не выделывайся. Что, например, тебя не устраивает в записи (LOW == digitalRead()) ?
Помойму направления попутаны, не? Если наименования концевиков соответствуют логике).
Какой логике? ТС написал "в одну сторону и в другую". А как у него там мотор стоит - к лесу задом или передом я без понятия.
Бармалей, ты либо пальцем покажи. либо не выделывайся. Что, например, тебя не устраивает в записи (LOW == digitalRead()) ?
То есть, скетч рабочий? Тогда я молчу.
Моей.) Если достигли левого концевика, то начинаем двигаться по часовой (CW). И наоборот. Конечно, если двигатель стоит раком - тогда всё меняется.)
А это ты наверное на чистом СИ написал?
if
(LOW == digitalRead(limitR))
Ещё или сам признаешься, где ему затычек наставил? Вот не верю, что ТАК случайно ошибся.
Познавшие дзен пишут именно так, чтобы не написать случайно оператор присваивания в скобках условия if. Оператор присваивания отдаёт значение правого операнда и поведение программы сложно предсказать в этом случае. Чтобы не наделать трудноуловимых ошибок, гуру пишут именно так
if (5 == i), а не if (i == 5)
тогда ошибочно написанный в скопках оператор присваивания мгновенно выловится компилятором. Станешь гуру - будешь сам так писАть, а пока не позорься.
Очень интересно, но ничего не понятно. Сейчас попробую. Сообщу.
Ага, интересно, как программа заработает.
Моторчик крутится, но концовки не срабатывают. Их надо на 2 и 3 пины, а второй контакт куда?
GND разобрался. Все ок!!!
Моторчик крутится, но концовки не срабатывают. Их надо на 2 и 3 пины, а второй контакт куда?
в розетку.
денехx то переслал?
обязательно