Arduino Servo rotation without delay in the code Servo write rotate

  Рет қаралды 14,724

Dmitry OSIPOV

Dmitry OSIPOV

7 жыл бұрын

Arduino Servo вращаем / поворот без задержки в коде Лайфхак Своими руками.
Servo write without Delay.
Servo rotation without delay in the code.
Servo rotate.
Download - sketch.
yadi.sk/d/jAre1PRZzqqdp
+ sketch оставлю в комментарии - под видео.
_____________.
Вспомогательные видео материалы.
Arduino nRF24L01+ Servo Potentiometer потенциометр wireless Extender multi Лайфхак Своими руками.
• Arduino nRF24L01+ Serv...
v.01 Arduino NRF24L01+ 2 Servo radio potentiometer Переменный резистор wireless Control.
• v.01 Arduino NRF24L01+...
Arduino NRF24L01+ Servo radio potentiometer Переменный резистор wireless Control.
• Arduino NRF24L01+ Serv...
_____________.
Arduino,Control,Servo,Potentiometer,потенциометр,ардуино,sketch,скетч,умный дом,Module,tutorial,датчик,extender,поворот без задержки,Servo write without Delay,Servo rotation without delay,Servo rotate,code,Download,wireless Control
_____________.
Arduino Servo вращаем / поворот без задержки в коде Лайфхак Своими руками.
• Arduino Servo вращаем ...

Пікірлер: 55
@MrPontiPilat
@MrPontiPilat 7 жыл бұрын
Долго не мог понять кого он мене напоминает. Это Жан Рено
@BOTASANROY
@BOTASANROY 7 жыл бұрын
спасибо за труды
@vitalicorsun1190
@vitalicorsun1190 4 жыл бұрын
спасибо ,я долго искал такую информацию.
@ArduBlock
@ArduBlock 3 жыл бұрын
Спасибо за урок )
@user-fz3ks8ew1p
@user-fz3ks8ew1p 7 жыл бұрын
Добавлю. Сервами можно управлять не только без delay(), но и без библиотеки Servo.h Ну в общем ловите мой код /* #1 Серва1 упр. выв -> 2 , 3, 4, 5, 6, 7, 8, 9 (servo_pin[]) +5В -> +5В GND -> GND резистор нижний выв -> GND средний выв -> A0, A1, A2, A3, A4, A5, A6, A7 (R_pin[]) верхний выв -> +5 */ //#1 uint8_t i = 0 ; const int number_of_servo = 8; const int servo_pin[] = { 2, 3, 4, 5, 6, 7, 8, 9 } ; uint16_t servo_value[] = { 544, 544, 544, 544, 544, 544, 544, 544 } ; // величина на серве 544-2400 мкс. uint16_t servo_value_old[] = { 544, 544, 544, 544, 544, 544, 544, 544 } ; // величина на серве 544-2400 мкс. uint8_t servo[] = { 0, 0, 0, 0, 0, 0, 0, 0 } ; const int R_pin[] = { A0, A1, A2, A3, A4, A5, A6, A7 } ; // нога резистора void setup() { //#1 for (i = 0; i < number_of_servo; i++) { pinMode (servo_pin[i], OUTPUT); digitalWrite (servo_pin[i], servo[i] = 0); } i = 0; } void loop() { //#1 3 миллисекунд обслуживание сервы 1 static uint32_t past_1 = 0 ; if (servo[i] && (micros() - past_1 >= servo_value[i])) digitalWrite (servo_pin[i], servo[i] = 0); if (micros() - past_1 >= 3000) { // если прошло 3000 микросек i = (i + 1) % number_of_servo; past_1 = micros() ; digitalWrite (servo_pin[i], servo[i] = 1); servo_value[i] = map (analogRead(R_pin[i]), 0, 1023, 544, 2400); } }
@d36073
@d36073 7 жыл бұрын
Благодарю уникальный код
@user-fz3ks8ew1p
@user-fz3ks8ew1p 7 жыл бұрын
Не за что. И да что бы движение одного потенциметра не отражалось на всех сервах желательно иметь индивидульное подключение по земле и питанию на каждую серву.Конечно по такому подкючению можно сервы подключить на все выводы ардуины , которые у нее есть. Так же сделать ШИМ даже на тех выводах, на которые аппаратно они не реализованы.
@MrStephanthe
@MrStephanthe 7 жыл бұрын
А для чего объявлялось servo_value_old ?
@user-fz3ks8ew1p
@user-fz3ks8ew1p 7 жыл бұрын
MrStephanthe так была задумка, если значение поворота у нужной сервы не поменялось, то и подавать команду на управление сервой не надо. Меньше жужать серва будет.
@AndryG1000
@AndryG1000 6 жыл бұрын
Иштван Галга, хотелось бы пояснений.
@AndryG1000
@AndryG1000 6 жыл бұрын
Класс!!! Мне нравится. Осталось разобраться с ускорением сервы и передачей управляющих команд от ЧПУ. И можно наконец-то делать управление на управляемый программно манипулятор.
@velessn
@velessn 7 жыл бұрын
Ура , снова канал заработал. Я уж подумал что Дмитрий забил на ютюб.
@engineer_Pavlo
@engineer_Pavlo 7 жыл бұрын
хотелось бы увидеть урок о работе двух и более устройств по SPI интерфейсе к примеру ads712
@AleksandrArtroom
@AleksandrArtroom 7 жыл бұрын
Дмитрий. Сделал плату управления паяльным жалом Т12 с ПИД регулятором. Так вот, если по моей схеме с ноги МК, которая идёт к транзистору, подать на управляющий вывод сервы и в программе понизить ШИМ с 10кГц до 100 Гц, то получите схему управления сервами с помощью энкодера с отображением положения сервы на экране. Единственное придётся калибровать серву и записывать минимальные значения положений сервы и отключить ПИД в коде. Таким образом вы будите полностью аппаратно управлять сервами и они у вас не будут дёргаться, как больные ;)
@user-ho1mu4lw6i
@user-ho1mu4lw6i 7 жыл бұрын
Спасибо большое!Ваши уроки очень полезны! На данный момент делаю серво-манипулятор, который состоит из 3 сервоприводов. Можно Вас попросить выложить пример скетча, который позволит управлять тремя сервами одновременно. Например: 1.включение Ардуино Уно 2.Через две секунды, после включения - начинает двигаться СЕРВО1 с 0 до 180 градусов(отложенный старт, после включения) 3.Через 0,5 секунды после начала движения СЕРВО1 - включается СЕРВО2 и начинает двигаться с 0 до 60 градусов 4.Через 0,5 секунды после начала движения СЕРВО2 - включается СЕРВО и начинает двигаться с 45 до 78 градусов Спасибо
@ara7878
@ara7878 7 жыл бұрын
Дмитрий а как вы относитесь к BBC Micro bit - как к платформе для начинающих.
@user-lt5kl2es1x
@user-lt5kl2es1x 5 жыл бұрын
А если делаете то хотел бы собрать по вашему видео приемник в две сервы моторчики на l293d .радиомодульnrf24 .передатчик в два жестики кнопка вкл.на одном жестике две сервы на втором для моторчика .и обе на ардуино нано или микро.спасибо
@d36073
@d36073 7 жыл бұрын
// Servo rotation without delay. #include Servo myservo; int servoSpeed = 50; #define ledPin 11 byte q[2] = {0, 0}; void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); } void loop() { if (Serial.available())q[1] = Serial.parseInt(); // if (q[0] % 2 == millis() / 100 % 2 && q[0] != q[1])Serial.println(q[1] / q[0] ? ++q[0] : --q[0]); // if (q[0] % 2 == millis() / 100 % 2 && q[0] != q[1])analogWrite(ledPin, q[1] / q[0] ? ++q[0] : --q[0]); // if (q[0] % 2 == millis() / servoSpeed % 2 && q[0] != q[1])myservo.write(q[1] / q[0] ? ++q[0] : --q[0]); // if (q[0] == q[1])myservo.detach(); else myservo.attach(9); // if (++q[0] % 2 == 0)Serial.println(q[0]); // Serial.println(millis() / 3000 % 2); // Serial.println(0 ? ++q[0] : --q[0]); } //
@sturm_waffendeveloping3209
@sturm_waffendeveloping3209 7 жыл бұрын
СПАСИБО ЗА ЭТОТ УРОК! Ты просто нереально мне жизнь упростил , теперь кучу задач могу решить не расписывая их в тонны текста!
@agusheripurnomo2881
@agusheripurnomo2881 7 жыл бұрын
извините, .. я хочу спросить, как сделать обратный вызов Bluetooth приложение изобретатель, который не подключиться? чтобы подключить обратно без необходимости выхода из приложения. спасибо.
@Viktor_V.
@Viktor_V. 3 жыл бұрын
Подскажите - где можно купить управлющую плату из недр этого сервопривода? Как она хоть назывется првильно?.... А то надо шутк 40, и расковыривать двигатели ради платы - дороговато выходит.....
@user-gk4he1dd7w
@user-gk4he1dd7w 7 жыл бұрын
подскажите пожалуйста, как , хоть примерно, должен выглядеть код для поворота сервы через определенный отрезок времени?
@rebelidsoftware747
@rebelidsoftware747 7 жыл бұрын
Спасибо! А Сбербанк или Яндекс кошелек есть у Вас ?
@Jeffhda2
@Jeffhda2 7 жыл бұрын
ты прям как леон киллер даже штаны специальные на заднем плане
@agusheripurnomo2881
@agusheripurnomo2881 7 жыл бұрын
ли сообщение должно учебники кнопку передатчика и приемника Arduino изобретателя приложения? спасибо
@user-bg9bi8ug3h
@user-bg9bi8ug3h 7 жыл бұрын
Как вовремя, я только сервы из китая получил, хотел робота сам собрать, а управлять сервами одновременно код не придумал, к стати сервы буду подключать через PCA9685 если есть инфа про этот модуль, пожалуйста дайте ссылку или видео урок сделайте.
@alstaur1337
@alstaur1337 7 жыл бұрын
Дмитрий спасибо за видео. Хотелось бы узнать можно ли использовать блютуз и нрф модули одновременно на одной ардуино. Например я отправляю команду по блютуз с телефона а ардуино уже отправляем по нрф другим приемника с ардуино.
@d36073
@d36073 7 жыл бұрын
можно
@alstaur1337
@alstaur1337 7 жыл бұрын
Dmitry OSIPOV а можете пример написать? Хотя-бы на мигание светодиодом.
@f33net
@f33net 7 жыл бұрын
Чума! :))) Особенно проверять чётность остатком от деления. :))) X and 1 :)))
@egoistv
@egoistv 5 жыл бұрын
Спасибо за урок Дмитрий. Пробую переделать ваш скетч под свои нужды и ни как не получается . Задача управлять сервой двумя кнопками при каждом нажатии на одну кнопку серва поворачивается на угол +5 градусов от положения в котором сейчас находится ,а при нажатии на вторую кнопку на - 5 градусов от положения в котором сейчас находится и ограничить ход от 0 до 180. С Delay написал ,но при это тормозятся остальные функции. #define SHAG 5 if (digitalRead(button1)) angle1 =angle1 + SHAG; //если первая кнопка увеличим угол if (digitalRead(button3)) angle1 =angle1 - SHAG;//если вторая уменьшим if (angle1 > 180) angle1 = 180; //ограничим угол сервы 0..180 if (angle1 < 0) angle1 = 0; { servo2.write(angle1); //задаем получившийся угол delay(100); // подождем перед следующим опросом что можете посоветовать? как реализовать это без Delay?
@yrisu6098
@yrisu6098 4 ай бұрын
Отличный урок. К сожалению автор канала больше не выпускает уроки.
@user-lt5kl2es1x
@user-lt5kl2es1x 5 жыл бұрын
Здравствуйте .а вы делаете платный урок
@zipper41
@zipper41 7 жыл бұрын
Что то нет новых видео.в чём дело?
@stanislavilchenko3368
@stanislavilchenko3368 7 жыл бұрын
Код Вы сами придумали ? :) Может я и ошибаюсь, но в чем преимущество сравнения путем вычисления остатка от деления ? Не проще ли написать q[1]>q[0] ? [Идеи в коде интересные (тактирование проверкой четности остатком деления), но слишком все запутано, от того что оно все записывается одной строкой быстрей работать вряд ли будет.
@SergL637
@SergL637 7 жыл бұрын
в самом начале он сказал что отказался от функции delay а это значит он тормозит другими способами, например чтобы поднять скорость работы на альфа процессорах в них тогда отказались от умножения, дабы каждая подобная операция имеет н-ое количество циклов чтобы выдать результат
@stanislavilchenko3368
@stanislavilchenko3368 7 жыл бұрын
С delay() и так ясно, подход хороший, не ясно другое - зачем все записывать в одну строку и запутывать код конструкциями вида q[1] / q[0] ? ++q[0] : --q[0] ? Либо я чего-то не понимаю.
@SergL637
@SergL637 7 жыл бұрын
По работе мне приходится заниматься "стихийным программированием" - это когда нужно решить задачу и только потом задумываешся об адекватности кодинга :)
@stanislavilchenko3368
@stanislavilchenko3368 7 жыл бұрын
Сергей Леванчук Одно дело "дырку" срочно заткнуть, абы работало, а другое дело уроки выкладывать. Люди ведь берут пример, многие вообще не в теме что такое байты, массивы. Мне кажется, что если код делается для публики и называется "уроком", то и качество у него должно быть хорошее, чтобы каждая строчка всем была понятна. А то я читаю и думаю, что автор хотел этим добиться, и чувствую себя полным дураком от того что не могу понять.
@d36073
@d36073 7 жыл бұрын
#include Servo myservo; int servoSpeed = 50; void setup() { Serial.begin(57600); pinMode(11, OUTPUT); myservo.attach(9); } void loop() { static byte q[2] = {0, 0}; if (q[0] % 2 == millis() / servoSpeed % 2) { if (q[0] = 180)q[1] = 0; q[1] ? ++q[0] : --q[0]; Serial.println(q[0]); myservo.write(q[0]); analogWrite(11, q[0]); } } //
@user-uv7oe9nj9u
@user-uv7oe9nj9u 4 жыл бұрын
ЗДРАВСТВУЙТЕ, ДМИТРИЙ . ТАКУЮ ШТУКУ ХОЧУ ПОДОБНУЮ СОБРАТЬ КАК У ВАС , НО СО СВОИ МИ ЗАДАЧАМИ . МОЖЕТ У ВАС ЕСТЬ ПОХОЖЕЕ ВИДЕО С УДОВОЛЬСТВИЕМ БЫ ГЛЯНУЛ . ВОТ КАК МНЕ НАДО . ВСЕ НА АРДУНКЕ КОНЕШКО С ШАГОВЫМ ДВИГАТЕЛЕМ . ФУНКЦИИ ТАКИЕ МОТОР ВСЕГДА ВРАЩАЛСЯ И С ВОЗМОЖНОСТЬЮ ДЕЛАТЬ СТОП ИЛИ ПАУЗУ . С ВОЗМОЖНОСТЬЮ РЕВЕРСА И РЕГУЛИРОВКА ОБОРОТОВ . МОЖЕТ НАЙДЕТСЯ ВИДЕО ИЛИ СХЕМЫ С БИБЛОТЕКАМИ ГОТОВЫМИ ПРОШИВОК
@user-qc7kh2jx6f
@user-qc7kh2jx6f 7 жыл бұрын
не понял, почему переменная имеет 2 элемента? Если отсчет с нуля то тогда 3 элемента или имеется ввиду {0;0} это 2 элемента, а если переменная равна 3 то 3 элемента {0;0;0} не совсем я это понял. Программируя под винду переменная вида например b(2) имеет 3 b - b0, b1, и b2.
@SergL637
@SergL637 7 жыл бұрын
это двух мерный массив, например x,y
@stanislavilchenko3368
@stanislavilchenko3368 7 жыл бұрын
b[2] при обьявлении массива указывает что массив будет состоять из двух элементов. Тогда как при обращении к такому массиву можно использовать только b[0] 1-ый элемент, b[1] 2-ой, а вот b[2] уже вызовет ошибку. Согласен, обьвление массива и доступ к его элементам имеет одинаковую запись что может сбить с толку :) но такие правила С++, никуда не деться
@SergL637
@SergL637 7 жыл бұрын
Stanislav Ilchenko сдается мне что тут дело не в кол-ве записанных данных а в размере заявленной памяти для работы, не забывайте что ардуина ограниченна прошивкой и размер памяти чипсета, которых намного меньше чем у стм или es8266
@oleksiiton4008
@oleksiiton4008 3 жыл бұрын
всё о так иересно, но ни )(#я не понятно. .. ! основа ґде? массив? переменная? где основа? хорошии́ урок, но для знающих☺️☺️
@allegas1
@allegas1 7 жыл бұрын
Димасик, прикупи рулон обоев, поклей и сделай обзор. Раскошеливаться на игрушки это конечно хорошо, но не когда у тебя дома беспредел
@user-mb4nh6yf3k
@user-mb4nh6yf3k 7 жыл бұрын
О чем ты говоришь, какие обои. Человек Дзен познал, а ты про обои ему говоришь.
@allegas1
@allegas1 7 жыл бұрын
Базара ноль
@Master_Crypter
@Master_Crypter 7 жыл бұрын
Дмитрий, добрый день. Разрешите с Вами связаться. Можете дать Ваш SKYPE или почту? СПАСИБО !!!
@lifetv666
@lifetv666 7 жыл бұрын
помогите написать скеч ( код) к ардуино на вот эти вещи в коде не сильно силен надо для гаража подвал сырой 1 ru.aliexpress.com/item/1pcs-Nano-V3-0-ATmega1.. 2 ru.aliexpress.com/item/DHT22-AM2302-Digital-T.. 3 ru.aliexpress.com/item/1PCS-2-channel-New-2-c.. 4 ru.aliexpress.com/item/0-96-inch-OLED-module-.. суть кода такова датчик dth 22 при показаниях включал 1е реле срабатывало на выдув при температуре +25 градусов и влажности 35% 2е реле срабатывало на вдув при температуре +30 или 35 градусови влажности 45% выводилось на дисплей температура влажность с лева температура с права влажность какая на данный момент как подключить датчик влажности и реле понял с дисплее нужна подсказка а лучше картинка ОЧЕНЬ ПРОШУ ПОМОГИТЕ С КОДОМ
@user-bg9bi8ug3h
@user-bg9bi8ug3h 7 жыл бұрын
Пойдут уроки как сделать робота ?
@kostya1306
@kostya1306 5 жыл бұрын
Очень плохо объясняете. Если это расчитано на начинающих программистов, то они ничего не поняли. Смысл оператора % объяснять не долго. Это остаток от целочисленного деления одного целого числа на другое.
@user-oe8cu9nr3l
@user-oe8cu9nr3l 6 жыл бұрын
спасибо за "скучное и занудное" видео!!!! :)))
Arduino lessons - Servo control by arduino
11:17
Заметки Ардуинщика
Рет қаралды 841 М.
MOM TURNED THE NOODLES PINK😱
00:31
JULI_PROETO
Рет қаралды 19 МЛН
Super sport🤯
00:15
Lexa_Merin
Рет қаралды 20 МЛН
FOOTBALL WITH PLAY BUTTONS ▶️ #roadto100m
00:29
Celine Dept
Рет қаралды 76 МЛН
How to do multiple tasks in Arduino | Beginners | millis() function
10:23
Что не так с электрофорной машиной?
32:47
Main filter..
0:15
CikoYt
Рет қаралды 331 М.
Цифровые песочные часы с AliExpress
0:45
Где раздвижные смартфоны ?
0:49
Не шарю!
Рет қаралды 285 М.
The power button can never be pressed!!
0:57
Maker Y
Рет қаралды 55 МЛН