Официальный сайт компании Arduino по адресу arduino.cc
Управление мотором DC через драйвер L293D
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ср, 20/11/2019 - 01:51
Какого характера проблема...на базе Уно соединены кнопка тактовая и мотор постоянного питания через драйвер l293d, при нажатии кнопки мотор начинает вращаться в одну сторону беспрерывно до нажатия кнопки ещё раз, подскажите, как сделать так, чтобы он вращался определенное время, а затем переходил в режим ожидания?
Путем изменения скетча управляющего двигателем. В момент нажатия кнопки и запуска двигателя запоминаем текущее время, а потом проверяем не истек ли интервал. Если истек - выключаем
Путем изменения скетча управляющего двигателем. В момент нажатия кнопки и запуска двигателя запоминаем текущее время, а потом проверяем не истек ли интервал. Если истек - выключаем
Т.е. через millis решать проблему? Я пробовал через delay, но после него просто часть скетча игнорируется, а именно
digitalWrite(mp1, LOW);
digitalWrite(mp2,LOW);
Скетч такой набросал, на дребезжание пока забил
int i=0;
int mp1=3;
int mp2=4;
int BUTTON=5;
void setup(){
pinMode(mp1, OUTPUT);
pinMode(mp2,OUTPUT);
pinMode(BUTTON,INPUT);
void loop(){
if(digitalRead(BUTTON)==HIGH)
{i+=1;
}
if (i==1)
{
digitalWrite(mp1, LOW);
digitalWrite(mp2, HIGH);
delay(200);
digitalWrite(mp1,LOW);
digitalWrite(mp2,LOW);
}
else
{
if(i==2)
{
digitalWrite(mp1,HIGH);
digitalWrite(mp2,LOW);
delay(200);
digitalWrite(mp1,LOW);
digitalWrite(mp2,LOW);
i=0;
}
}
Ты мня прости, канеш, но альтернативно мыслящим тут редко помогают.
Тут вопрос не в плане мышления, а в опыте программирования
тут вопрос в том, что ты даже не удосужился прочитать как правильно вставить код
http://arduino.ru/forum/obshchii/pesochnitsa-dlya-vsekh-novichkov#comment-406075
да еще и зачем-то разбил его на несколько сообщений.
Спасибо за ссылку, информативно, но к сожалению кнопки вставить код я не наблюдаю, возможно из-за мобильной версии форума
Двигатель в каждую сторону должен вращаться 200мс (0.2с)? Он хоть дернуться успевает? Какое питание поступает на ардуину и двигатель?
Дёргаться успевает, на ардуинка поступает 4,61в, время условное, потом менять конкретно под задачу буду, основная проблема в том, что при установки времени, к примеру 2000мс он не устанавливается через 2 секунды, а крутится дальше, хотя в коде прописано отключить напряжение на 3 и 4 пине
тут вопрос в том, что ты даже не удосужился прочитать как правильно вставить код
http://arduino.ru/forum/obshchii/pesochnitsa-dlya-vsekh-novichkov#comment-406075
да еще и зачем-то разбил его на несколько сообщений.
чел для нас старался, пытался повысить читабельность кода, не оценили )))
делал для внучки радиоуправление тележкой, код тут, там в комментариях написано, что управлять тележкой (мотором) с временными отрезками менее 10 мсек бессмысленно )))
Ржу ни магу.
Т.е. если питание снять мотор развалится.
//**************************************************************
П.С. так попробуй
29 строка возможно логическая ошибка - скобок не хватает. И 18 тоже.
Перед 42 строкой добавить то что в 34 строке.
22 строку перенести в секцию setup. Или лучше убрать совсем, а в ините этой переменной поставить 1 вместо 0.
В 37 строке скобка не закрыта - а оно компилится вообще?
Спасибо за замечания, вернусь домой-проверю на работоспособность
По поводу ошибок в скобках-опечатки, на компьютере интернета нет, вручную с тлф набирал, вот и накосячил в скобках
Увы и ах, но все также работает два раза, на 3е нажатие не реагирует
Начните с простого: сделайте так, чтобы мотор крутился в одну сторону заданное количество времени. Без кнопок.
смотрите какая идея: по нажатию на кнопку и отпускании ее мотор начинает вращаться в одну сторону 2 секунды, затем он переходит в режим ожидания, при повторном нажатии кнопки он вращается в другую сторону 2 секунды, и далее все с начала. вот два нажатия кнопки все хорошо, но после этого складывается ощущение, что скетч "застревает" где-то в конце, где-то в районе 42-43 строки.
Идея мне понятна. Вы хотите результата самостоятельно добиться или просто чтобы кто-то всё Вам разжевал и в рот положил?
по поводу крутящегося в одну сторону мотора-это уже пройденный этап, я же не сходу этот скетч написал
Т.е. не хотите ничего добиваться.
Ну что же, тут не ясли - ложку с кашей в рот никто насильно запихивать не будет.
Я же говорю-с того и начинал, мотор крутился в одну сторону и кнопки не было
ну дак, теперь в другую покрути
Я же говорю-с того и начинал, мотор крутился в одну сторону и кнопки не было
Ну, я вижу, что скетч есть: http://arduino.ru/forum/programmirovanie/upravlenie-motorom-dc-cherez-draiver-l293d#comment-494315
Схемы нет, поэтому что в реальности происходит при mp1 =>LOW и mp2 => LOW никому неизвестно.
начинать надо всё же с определения функций работы мотора, то-есть от может находиться в трёх состояниях:
1. Остановлен
2. Вращение вала по часовой
3. Вращение вала против часовой
Вот рабочий вариант
Благодарю, буду разбираться
Так не интересно.
Все пункты что написал исправил?
Где исправленный скетч который не заработал? По логике косяков прямых больше не заметил в том скетче. Основное было только в том что при каждом нажатии менялась переменная на прямое движение. И она же не менялась при обратном движении.
Чего вы хотели добиться в 18 строке (butt_flag==1)? Вообще в условие есть вхождение учитывая следующее условие и начальное значение переменной? Ну конечно если при подаче питания кнопка не зажата?
Кстати какой уровень зажатой кнопки?
В остальном не вижу причин скетчу не работать.
Не совсем понял по поводу зажатой кнопки, по поводу 18 строчки проверю дома
Пока неизвестно как присоеденены управляющие входы драйвера - все может работать как заблагорассудится бозону Хиггса.
1й вход 5в, 2вход-3йпин, 3 вход-первый контакт мотора, 4 и 5 вход земля, 6 вход-второй контакт мотора, 7 вход-4пин, 8 вход-5в
Чего вы хотели добиться в 18 строке (butt_flag==1)? Вообще в условие есть вхождение учитывая следующее условие и начальное значение переменной? Ну конечно если при подаче питания кнопка не зажата?
Кстати какой уровень зажатой кнопки?
В остальном не вижу причин скетчу не работать.
Огромное Вам спасибо, все дело было в 18 строке, если бы не Ваши замечания и помощь-ничего бы у меня не вышло, теперь все работает как задумано