Arduino Проекты #2 "Управление сервоприводом"
HTML-код
- Опубликовано: 9 ноя 2016
- Присоединяйтесь к нашему сообществу: arduino_blog
Разработка и скетчи Arduino на заказ: wiresdesign
Привет! В этом видео я расскажу, как управлять сервоприводом с помощью Arduino при помощи джойстика. Будет интересно!
Скетч для подключения: yadi.sk/d/SK_UQQ7kybcy2
Компоненты, используемые в видео:
Набор Arduino для начинающих: ali.pub/3ziv5s
Плата Arduino Uno: ali.pub/1cwrrz
Перемычки: ali.pub/1cws8b
Макетная плата: ali.pub/1cwscl
Джойстик: ali.pub/3zixg8
Сервомотор: ali.pub/1cwtug
По всем вопросам и предложениям: don_arturos
Подписывайтесь на наши социальные сети:
Facebook - / arduino.blog
Telegram - t.me/arduino_blog
VK - arduino_blog - Наука
Я новичок в ардуино. Благодаря данному видео у меня что-то получилось, спасибо автору.
То, что мне нужно было. Спасибо за ролик!
самое нормальное видео по этой теме. Спасибо
Супер гениально!
спасибо очень хорошо обясняешь
Спасибо ! Продолжайте (только с учетом замечаний ) Лайк и подписка ! А другим Ютуберам (буду вашу ссылку толкать) которые выкладывают видео ,а про подробности отвечают что мол коммерческий проект (!?) и это про Ардуино !!
Класс !!! Всьо подробно росказано то что мне нужно . Спасибо !!!
Благодарю за создание полезного видео. Спасибо за обьeснение.
Спасибо, получилось!)
Ты молодец мне понравилось
Для начинающих полезно +
Очень хорошее видео
Спасибо за видео
Подскажите пожалуйста,как сделать так чтобы при возвращении джойстика в исходное положение и серва тоже возвращалась,заранее спасибо
#include Servo.h
int joyX;
int angl;
Servo servo;
void setup()
{
servo.attach(5);
pinMode(joyX,INPUT);
Serial.begin(9600);
}
void loop(){
int val = (analogRead(joyX)64)-8;
if(val0){
angl = angl+abs(val);
}
else {
if(val0){
angl = angl-abs(val);
}
if (angl0) angl = 0;
if (angl180) angl = 180;
Serial.print(Power);
Serial.print(val);
Serial.print(Angle);
Serial.print(angl);
servo.write(angl);
int spd = 500;
if (val != 0){
spd = 600abs(val);
}
Serial.print(Speed);
Serial.println(spd);
Serial.println(-----);
delay(spd);}
}
СПАСИБО ДОБРЫЙ ЧЕЛОВЕК
#include
int joyX = 0;
int angl = 0;
Servo servo;
void setup() {
pinMode(joyX, INPUT); // джостик принимает значение
Serial.begin(9600);
servo.attach(10); // Подключаем к пину 10!
}
void loop() {
int val = (analogRead(joyX)/64)-8;
if(val > 0) {
angl=angl+abs(val);
}
else {
if(val < 0) {
angl=angl-abs(val);
}
} if (angl < 0) angl = 0;
if(angl > 180) angl = 180;
Serial.print("Power: ");
Serial.println(val);
Serial.print("Angle: ");
Serial.println(angl);
servo.write(angl);
int spd = 500;
if(val != 0) {
spd = 600/abs(val);
}
Serial.print("Speed: ");
Serial.println(spd);
Serial.println("----------");
delay(spd);
}
очень круто так бы все обесняли скейчи. Хорошо обьесняеш
Добрый вечер ваш скейтч не работает пишет не допустимая детектива предварительной обработки включить ! Ответьте если не трудно
смотрю канал всего 2 дня и уже много знаю
Хорошо обясняеш
Спасибо. А какой максимум длины можно использовать провод при такой конструкции? 20 метров потянет? Или что сделать что бы ПУ был на 20 метровом проводе? СПС.
ставьте лайки
спасибо Очень круто ! Спасибо за скетч ваще отдельное пожалуйста выкладывай их всегда для лентяев типа меня ! с меня + лайк и комент !
Все очень доступно не слушай зануд .
Не подскажете как разрешить проблему? или может я что делаю не так...
подключил сервопривод Tower Pro MG995, загружаю простейший скетч, который вы первым грузите, но система работает не так как у вас.
привод крутится всё время задержки, т.е. 2 секунды крутит в одну сторону и две в другую. более того, если увеличить время задержки например до 10 секунд, то и вращаться привод будет все 10 секунд без остановки.
А почему map не использовать в коде, - намного проще?
а откуда ардуина узнает на какой провод жойстик прилетел? или она сама "додумается" от servo.h ? и к чему там инициализация сериалпорта?
при старте контроллера серва делает произвольный поворот на 30-40 градусов, а потом принимает, установленное в сетапе, положение. как можно избавиться от этого?
автор, все где указано serial....эра работа с COM портом
Спасибо.
Здравствуйте можете сделать экзоскелет на сервоприводах с управлением?
Спасибо господи! Это мне оочень помогло
Отлично! Если хотите - можете материально поддержать автора видео:)
@@ArturosTV давненько я не пользовался киви кошельком😉
Здравствуйте я хочу задать вопрос. Что делать если мигает светодиод RX?
На протяжение всего ролика ждал, когда же автор наденет тягу на шлицы сервы что бы она не прокручивала.
лайк и подписулька :)
Можно ли увеличить скорость вращения?
молодец
А программа это для компьютерной версии
Спасибо
на этом канале лучшее объяснение скэтча)
Да, хорошее объяснение ! Автор постарался !
Если не считать того, что объяснение неправильное...
как подключить второй серво чтобы управлять по оси y?
ruclips.net/video/kA_pbMR6jVs/видео.html
вот видео
Если необходимо синхронное движение нескольких сервомашинок (10 шт.), можно ли их соеденить паралельно для экономии использования количества пинов ардуины? Т.е. соеденить "+", "-" и "управление" нескольких сервомашинок вместе, а в скетче оставить как для одной сервомашинки. При этом использовать свое питание для серво
да, но нужно объединить минус питания приводов с gnd ардуино
Спасибо за хорошую обучалку ты написал код да ещё и объяснил его - респект
lда можно вот код
#include
int joyX = 0;
int angl = 0;
Servo ser;
void setup() {
ser.attach(9);
pinMode (joyX, INPUT);
Serial.begin(9600);
}
void loop() {
int val = (analogRead(joyX) / 64) - 8;
if (val > 0) {
angl = angl + abs(val);
}
else {
if (val < 0) {
angl = angl - abs(val);
}
}
if (angl < 0) angl = 0;
if (angl > 180) angl = 180;
Serial.print("Power");
Serial.println(val);
Serial.print("Angel:");
Serial.println(angl);
ser.write(angl);
int spd = 10;
if (val != 0){
spd=10/abs(val);
}
Serial.print("Speed:");
Serial.println(spd);
Serial.println("-----------");
delay(spd);
}
// put your main code here, to run repeatedly:
Добрый вечер. А можно ли управлять двумя сервами от одного потенциометра, но чтоб вращения валов были в разные стороны?
Добрый, я предлагаю подключать два сервопривода к драйверу двигателя L298N
Вот тут я в начале видео рассказывал про этот модуль: ruclips.net/video/frEofGeWMOc/видео.html
Можно ли на базе адруино создать автоматический определитель номера, подобия Русь 28 или соната?
Можно
Хочу сделать одно устройство в машину, как быть с напряжением аккумулятора на 12 в? Нужно поставить резистор подходящий чтобы понизить входной напряжение до 6В, или что-то другое?
И ещё один вопрос. Мне нужно задействовать также ось У. В плане джойстика нужно сделать на подобие оси Х, а как быть со скетчем? В каком порядке его нужно писать?
Понижающий модцль
ЭТО МОЖНО СДЕЛАТЬ НАМНОГО ПРОЩЕ :
#include
Servo myservo;
#define joikon A0
#define joikony A1
void setup()
{
myservo.attach(9);
pinMode(joikon,INPUT);
pinMode(joikony,INPUT);
Serial.begin(9600);
}
void loop()
{
int val = analogRead(A0);
val = map(val, 0, 1023, 0, 180);
Serial.println (val);
delay(30);
myservo.write(val);
delay(20);
}
Arduino: 1.8.8 (Windows Store 1.8.19.0) (Windows 10), Плата:"Arduino/Genuino Uno"
sketch_feb18a:21:1: error: stray '\357' in program
}п»ї
^
sketch_feb18a:21:1: error: stray '\273' in program
sketch_feb18a:21:1: error: stray '\277' in program
exit status 1
stray '\357' in program
Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
это программа: #include
int joyX=0;
int angl=0;
Servo myservo;
void setup() {
myservo.attach(9);
pinMode(joyX,INPUT);
Serial.begin(9600);
}
void loop() {
int val = (analogRead(joyX)/64)-8;
if (val > 0){
angl=angl+abs(val);
}
else {
if (val < 0){
angl=angl-abs(val);}
}
if (angl < 0)angl = 0;
if (angl > 180) angl = 180;
Serial.print("Power:");
Serial.println(val);
Serial.print("Angle");
Serial.println(angl);
myservo.write(angl);
int spd = 500;
if (val != 0){
spd = 100/abs(val);
}
Serial.print("Speed:");
Serial.println(spd);
Serial.println(" ");
delay(spd);
}
Можно ли подключить два серво привода??
Да, можно. Только нужно подавать питание для этого на сервоприводы отдельно, иначе плата не выдержит нагрузки. Даже одного мощного серво не выдерживает, но в видео слабый достаточно. Но если их уже два подключить, то плата может и сгореть.
Понял,спасибо.
Можно
можно пожалуйста ссылку на скетч а то ты ссылка неработает
Всё норма. Только одного не понял, почему при вращении влево и доходя до крайней точки, начинает импульсно возвращаться назад?
Потому, что код кривой.
Если исправить значение val так, то не будет:
void loop()
{
int val = (analogRead(joyX)/64)-8;
if (val > 1) {
angl=angl+abs(val);
}
else {
if (val < -1) {
angl=angl-abs(val);}
}
А как правильно запрограммировать сервопривод. Я когда списываю программу как показано, а потом нажимаю загрузить и у меня там миллиард ошибок
Отправьте сюда весь код, который загружаете (текстом прямо). Я посмотрю и скажу, что исправить.
@@ArturosTVА можно джостик и механизм с сервоприводом заказать где то ?
А этот движок может вращаться только на пол оборота от оси?
Артём Всемблагдерсэн да
На 90 градусов
Не знаю почему, но предпоследняя строка не дает скомпилировать
в 1 сторону крутится в другую нет и там вазвращяется обратно
норм
как сделать вращение сервомотора по кнопке - нажал он начал крутится / отпустил он вернулся обратно
Нужно условие задать в функции войд-луп. Если было нажатие кнопки, то выполняется поворот серво ( вращение ) Поищи в интернете скетч для управления светодиодом по кнопке и замени условие со светодиодом на условие с сервоприводом
Крутиться сервопривод не может, мотор конечно может, но для этого его нужно вынуть из сервы и это совсем другая история.
А так, по отпусканию кнопки просто повернуть машинку на базовый угол, допустим 90. Можно прерывание прикрутить к кнопке, если код большой и нужна мгновенная реакция.
почему не воспользовался командый map
Кст, да?)
Не советую подключать серво, непосредственно, к ардуино. Может сгореть плата. Лучше питать серво от другого источника питания.
или параллельна (главное не через ардуина)
Никита Бельтек преувеличиваешь. Сгореть не может. Хотя кто его знает но греется она не слабо
Сгореть может только ams1117 (стабилизатор на 5в)
И от одной сервы не сгорит. AMS'ка рассчитана на токи до 1 амп, а пусковые токи такого сервопривода не превышают 400 миллиампер.
Это только если говорить об одной конкретной серве, а есть и такие, которые в пике пару ампер кушают...
Даже от одной сервы ардуина уходит в ребут. Так что нужно питать от отдельных 5 вольт не менее 1А.
Скинь скетч пж ссылка не работает
Молодец, а схему на заказ можешь собрать?
Пишите на почту salbah.artur@mail.ru
@@ArturosTV написал, получил?
@@ArturosTV Привет! Такой вопрос, по поводу что бы совместить датчик температуры воздуха и сервопривод, что бы по мере нагрева или охлаждения датчика температуры, сервопривод закрывал или открывал заслонку поступающего горячего/холодного воздуха автоматически.Чтоб воздух был В пределах от 36 до 40 градусов по Цельсию. За ранее спасибо!!!
Вставляй в видео схемы как и куда что вставлять, а то так ничего не понятно
#include
Servo servo;
void setup() {
servo.attach(10);
}
void loop() {
servo.write(0);
delay(2000);
servo.write(180);
delay(2000);
}
а как шаговыми двигателями управлять ???
Для это нужно подключать двигатель непосредственно к драйверу специальному ( такие модули есть ) и уже его подключать к Ардуино
дай код в комменты пожалуйста
Я занимаюсь робототехникой. И что папа-папа круглый.
Скетч для подключения: yadi.sk/d/SK_UQQ7kybcy2
Собрал, все работает, но когда серво переходит в одно из крайних положений и я отпускаю джойстик, серво начинает крутить в другое крайнее положение со скоростью 1 шаг в секунду. С чем связанно? Также при этом на плате мигает RX. Думаю что джойстик бракованный
всё ок щя пока без джостека зделал!!!
У меня не работает
if(angl>180)angl=180; Здесь выдает ошибку со скобками
Надо наверное написать
If (angl > 180) { angl = 180; }
Фигурные скобки означают действие, типо если что то там, то ардуино выполняет то-то, в твоём случае присваивает значение angl
9:46. Афтар, ты если хочешь научить людей, разберись с начала сам. Зачем вводишь людей в заблуждение? pinMode(joyX,INPUT) говорит, что пин 0 будет входящий, а не тот бред, что говоришь. Вся твоя глупая писанина вмещается в пару строк. Хотя в плате все пины если не указывать итак считаються входящими.(вроде бы).
#include
Servo myservo;
int AnalogVhod = 0; // analog pin used to connect the potentiometer
void setup() { myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop() {
int UgolPovorota = map(analogRead(AnalogVhod), 0, 1023, 0, 180);//преобразуем полученное значение 0-1023(1023=5В)в угол поворота вала
myservo.write(UgolPovorota); //повернуть двигатель на заданный угол 0-180
delay(15);
}
Это вся твоя писанина. И лучше использовать потенциометр, т.к. джойстик возвращается на ноль.
WAMBoy1984 спасиб
WAMBoy1984 а то думал что за х*ня!
спасибо!
Грубо говоря, по скетчу из видео джойстик говорит сервоприводу "Крутись вправо, когда я отклоняюсь вправо, и останавливайся, когда я вернусь на ноль. Если отклоняюсь влево - крутись влево и останавливайся, когда я вернусь на ноль. И чем сильнее я отклонюсь, тем быстрее поворачивайся". Это совусем другой тип управления, нежели потенциометром, не надо пудрить мозги людям "Лучшеб так сделал"
С delay ардуинка виснет
не заземление, а земля
Школьник не земля, а заземление.
Код на бумажке, серьезно? ))
Ну а если серьезно - бред.
Заземление и земля синонимы?
Объяснение кода с ошибками, сами не знаете и других путаете.
Сам код написан криво, да еще и с полным незнанием языка. else if и map для вас слишком простые способы?
Неуд.
Может тогда вы объясните как управлять сервой с помощью джостика? К идеале через нрф2401))
@@user-hv2ql2me1g зачем? Есть прекрасные уроки от того же Лекса нашего Гайвера, есть масса материала на профильных сайтах и форумах. Не вижу смысла тратить на это свое время. Когда мне нужно было это сделать просто сел и написал за несколько минут, элементарная задача даже для новичка. По секрету вам скажу, что джойсик - это тот же переменный резистор.
Это брат русский брат Джереми.
Нет, я его книгу не копирую. Некоторые просто берут и говорят текст как в книге и показывают.
прописал скетч в ручную не работает не теряйте время
Агдуино.
токо не делай а дэлэй
У тебя вобшето x
Я бы сказал обучение так себе. На двоечку. Ни ответов на возникшие вопросы, ни вообще какой то обратной связи. И начинать надо не с готовых проектов, а с проверки оборудования. у меня вот ни датчики, ни сервопривода не заработали. Надо проверять и саму плату ардуино и датчики. И как? Купить десяток и выбрать те, которые рабочие? А может и эти рабочие, а виноват учитель, ошибся в описании. У другого учителя они же работали, правда тот еще хуже объяснял. Хорошо хоть этих уроков по ардуино - ну просто завались. Можно выбрать и нормальные.
Почему нет обратной связи? Напишите мне по контактам под видео. В вк: vk.com/don_arturos
Но я согласен с Вами насчёт идеи о проверке работоспособности датчиков.
Бля, я рыдал от смеха! 😅😅😅😅😆 Ты выбери платформу без буквы"эр" в названии, а то не могу слушать по существу. Но лайк за "смелость" поставил.👍👍👍👍👍
Я подтяну дикцию, обещаю)
@@ArturosTV Да ладно, не парься, просто ощущение такое, что все картавенькие, где-то собрались и договорились двигаться на ютюб. Каналов двадцать-двадцать пять могу назвать, и все про посылки и самоделки, это треш какой-то. Примечательно, что все картавят по разному, индивидуально. Не у всех смешно выходит, в отличии от тебя. Посмотри зарубежные ролики, аналог твоих, ни единного слова, и все понятно. Вот где креатив блин. И подписчиков сразу станет втрое больше, не сомневайся. А за насмешку не обижайся, я не злодей и не троль, контент действительно стоящий, интересный, но пока хохотал все пропустил. Блин, опять смех разбирает, извини.
{}
Привет! В этом видео я расскажу, как управлять сервоприводом с помощью Arduino ( Ардуино ) автоматически и при помощи джойстика, будет интересно!
Компоненты, используемые в видео:
Набор Arduino для начинающих: ali.pub/1d23wr
Плата Arduino Uno: ali.pub/1cwrrz
Перемычки: ali.pub/1cws8b
Макетная плата: ali.pub/1cwscl
Джойстик: ali.pub/1cwtqk
Сервомотор: ali.pub/1cwtug
Мы в ВКонтакте: vk.com/arduino_proekts
Магазин Roboino: roboino.ru/
Здесь надо уметь
п р о г р а м м и р о в а т ь...........😲😲🤔
Расходимся..........😲😏🤔🐏🐏🐏☝️🗿🤡🤡🤡👎
А вы что хотели? поставил по видео сказал что пускай делает и он сам делает то что вы сказали?
Код с ошибками
#include
int joyX=0;
int angl=0;
Servo myservo;
void setup()
{
myservo.attach(9);
pinMode(joyX,INPUT);
Serial.begin(9600);
}
void loop()
{
int val = (analogRead(joyX)/64)-8;
if (val >0)
{
angl = angl+abs(val);
}
}
else{
if (val
Помогите со скетчем хочу чтобы серва работала от gy 271
Пишите в лс: vk.com/don_arturos