Управление Шаговыми Двигателями с клавиатуры
- Войдите на сайт для отправки комментариев
Чт, 05/04/2018 - 12:25
Доброго всем дня!!! Прошу помощи объединить два скетча в один!
в одном скетче, подключены два ШД.
первый управляется с 1 и 2 кнопок,
(1 нажимаешь, пока держишь - крутит влево, 2 нажимаешь, пока держишь - крутит вправо),
второй управляется с 3 и 4 кнопок,
(3 нажимаешь, пока держишь - крутит влево, 4 нажимаешь, пока держишь - крутит вправо).
Вот скетч!
const int stepPin1 = 39; const int dirPin1 = 38; const int stepPin2 = 41; const int dirPin2 = 40; const int BUTTON1 = 22; const int BUTTON2 = 23; const int BUTTON3 = 24; const int BUTTON4 = 25; void setup() { // put your setup code here, to run once: Serial.begin(9600); pinMode (stepPin1, OUTPUT); pinMode (dirPin1, OUTPUT); pinMode (stepPin2, OUTPUT); pinMode (dirPin2, OUTPUT); pinMode (BUTTON1, INPUT); pinMode (BUTTON2, INPUT); pinMode (BUTTON3, INPUT); pinMode (BUTTON4, INPUT); } void loop() { if (digitalRead(BUTTON1) == HIGH) { digitalWrite(dirPin1,HIGH); digitalWrite(stepPin1,LOW); } if (digitalRead(BUTTON2) == HIGH) { digitalWrite(dirPin1,LOW); digitalWrite(stepPin1,HIGH); } if (digitalRead(BUTTON3) == HIGH) { digitalWrite(dirPin2,HIGH); digitalWrite(stepPin2,LOW); } if (digitalRead(BUTTON4) == HIGH) { digitalWrite(dirPin2,LOW); digitalWrite(stepPin2,HIGH); } delayMicroseconds(1000); if (digitalRead(BUTTON1) == HIGH) { digitalWrite(stepPin1,HIGH); } if (digitalRead(BUTTON2) == HIGH) { digitalWrite(stepPin1,LOW); } if (digitalRead(BUTTON3) == HIGH) { digitalWrite(stepPin2,HIGH); } if (digitalRead(BUTTON4) == HIGH) { digitalWrite(stepPin2,LOW); } delayMicroseconds(1000); }
Все работает, все прекрасно!
второй скетч по работе с матричной клавиатурой!
Хочу что управление двигателями было с клавиатуры!
Вот второй скетч, пматричной клаве!
#include <Keypad.h> // Подключаем библиотеку const byte ROWS = 4; // 4 строки const byte COLS = 4; // 4 столбца char keys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte rowPins[ROWS] = { 26, 27, 28, 29}; byte colPins[COLS] = { 30, 31, 32, 33}; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); void setup(){ Serial.begin(9600); } void loop(){ char key = keypad.getKey(); Serial.println(key); // Передаем название нажатой клавиши в сериал порт delay(100); }
Я в этом деле Новичок, и прошу помочь в данной работе!
А чё новая тема? Старая чем не угодила? Ищите возможность каждый раз получать "текущую нажатость" клавиши а не "один раз получил, а там хоть задержись". Возможно библиотека это умеет - нет, значит надо искать другую или править эту. Я ж всё это уже говорил.
библиотека это умеет, вот только что открыл и посмотрел - в ней есть метод keypad.isPressed(char keyChar)
Метод-то есть, только работает не так, как ожидается. Вообще - в этой либе без поллитры не разобраться. Я с полчаса ее на обычной кнопке потыкал - подловить состояние "нажата и удерживается" запросто так не вышло.
в этой либе без поллитры не разобраться
Берите поллитру и разбирайтесь. Или выбросьте её нахрен и напишите всё руками. Ну, или, наконец, ищите другую.
Я смогу присоединиться только в выходной.
Да мне-то зачем писать-искать? Я не выдержал этого флуда и поставил ее глянуть - действительно ли так все плохо. И на самом деле - все непросто ;)
А, сорри, я воспринял это как от ТС.
пишите, сделаю
пишите, сделаю
А куда писать?
webserpantin gmail
Есть мысль сделать проект: управление одним ШД через матричную клавиатуру. Смысл таков: вводим на клавиатуре число( либо, в идеале, градусы либо количество шагов), а ШД их отрабатывает. Возможна ли вообще реализация такого проекта и, быть может, есть примеры?
Да нет проблем! Единственное Вам надо определить как ардуинка узнает, что Вы закончили ввод числа.
Алгоритм такой - считываем знаки с клавиатуры в массив до ввода символа конца ввода, преобразуем char в числа, поразрядно складываем и выполняем управление двигателем.
Отлично, спасибо, значит всё-таки можно, но я в коде новичок. В голове всё ясно и понятно, алгоритм понимаю, но код не знаю толком.Только начал разбираться.. Если Вы в этом настолько хорошо разбираетесь можете по свободе попробовать накидать программку?
Конечно может!
нет проблем
Ещё как может! Даже две программы, с разными фичами, чтобы Вы могли выбрать более подходящую!
mykaida, мы в Вас верим!
Конечно, может! Все дела бросит - и обязательно может ;)
Спасибо большое всем, кто собрался помочь! Буду очень рад. Чтобы было понятнее : ШД 28BYJ-48, драйвер к нему ULN2003, клавиатура мембранная 4х4, Arduino UNO. Если не будет получатся с чем-то - заменяйте на аналогичные, но в идеале подошло бы всё это. Заранее спасибо! Жду с нетерпением ответов))
Забавные вы люди. Не за спасибо же. Программа в 150-250 строк максимум должна выйти. Если человек знает - то написать сможет за пару вечеров, ему это ничего не стоит, а мне обойдётся в сумму о которой договоримся.
Притом, он единственный кто расписал хотя бы алгоритм действий в отличии от "умников".
Одно моя знакомая дама как-то знатно потролила нас (на форуме она была одна среди мужиков). Она выдала: "Парни, подарите мне приличный ноутбук! Мне же это ничего не стоит, а вам приятно!"
Смешно. Но мне не нужно дарить программу. Понятное дело, кто будет писать её просто так, а вот если не за спасибо, то найдутся люди которые напишут :"поговорим об оплате".
Давайте поговорим об оплате, но в другом разделе - "Ищу исполнителя".
моя почта доступна)
на разных форумах создал одинаковые темы, потратил кучу времени, получил троллинг)))))
давно мог написать в раздел о платной помощи и сейчас крутил бы свой мотор и кайфовал....
/sites/default/files/u28446/matklav_kak_est_0.jpg
Добрый день! Подскажите, что за схема мне попалась сегодня, как ее подключить? (возможно что где-то косяк, не исключено)
Что за контакт 1, куда он и как подключается?
"Но что то схема, мне попалась, привередливая..."
Конечно косяк. Думайте. Это специально что бы вы обратились к автору.)
Но вам 1-й контакт не нужен - забейте на него.)