Arduino Поворотное устройство для камеры Android Bluetooth Servo Pan Tilt Лайфхак Своими руками
36:39
Frankentrain Laboratories building a Next Gen Flyer S. What's inside? Everything! Prewar O too!
12:30
Arduino Servo rotation without delay in the code Servo write rotate
Вставка
- Опубліковано 29 лис 2016
- 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 вращаем ... - Наука та технологія
Долго не мог понять кого он мене напоминает. Это Жан Рено
спасибо за труды
спасибо ,я долго искал такую информацию.
Спасибо за урок )
Добавлю. Сервами можно управлять не только без 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);
}
}
Благодарю уникальный код
Не за что. И да что бы движение одного потенциметра не отражалось на всех сервах желательно иметь индивидульное подключение по земле и питанию на каждую серву.Конечно по такому подкючению можно сервы подключить на все выводы ардуины , которые у нее есть. Так же сделать ШИМ даже на тех выводах, на которые аппаратно они не реализованы.
А для чего объявлялось servo_value_old ?
MrStephanthe так была задумка, если значение поворота у нужной сервы не поменялось, то и подавать команду на управление сервой не надо. Меньше жужать серва будет.
Иштван Галга, хотелось бы пояснений.
Класс!!! Мне нравится. Осталось разобраться с ускорением сервы и передачей управляющих команд от ЧПУ. И можно наконец-то делать управление на управляемый программно манипулятор.
Ура , снова канал заработал. Я уж подумал что Дмитрий забил на ютюб.
хотелось бы увидеть урок о работе двух и более устройств по SPI интерфейсе к примеру ads712
Дмитрий.
Сделал плату управления паяльным жалом Т12 с ПИД регулятором.
Так вот, если по моей схеме с ноги МК, которая идёт к транзистору, подать на управляющий вывод сервы и в программе понизить ШИМ с 10кГц до 100 Гц, то получите схему управления сервами с помощью энкодера с отображением положения сервы на экране.
Единственное придётся калибровать серву и записывать минимальные значения положений сервы и отключить ПИД в коде.
Таким образом вы будите полностью аппаратно управлять сервами и они у вас не будут дёргаться, как больные ;)
Спасибо большое!Ваши уроки очень полезны!
На данный момент делаю серво-манипулятор, который состоит из 3 сервоприводов. Можно Вас попросить выложить пример скетча, который позволит управлять тремя сервами одновременно.
Например:
1.включение Ардуино Уно
2.Через две секунды, после включения - начинает двигаться СЕРВО1 с 0 до 180 градусов(отложенный старт, после включения)
3.Через 0,5 секунды после начала движения СЕРВО1 - включается СЕРВО2 и начинает двигаться с 0 до 60 градусов
4.Через 0,5 секунды после начала движения СЕРВО2 - включается СЕРВО и начинает двигаться с 45 до 78 градусов
Спасибо
Дмитрий а как вы относитесь к BBC Micro bit - как к платформе для начинающих.
А если делаете то хотел бы собрать по вашему видео приемник в две сервы моторчики на l293d .радиомодульnrf24 .передатчик в два жестики кнопка вкл.на одном жестике две сервы на втором для моторчика .и обе на ардуино нано или микро.спасибо
// 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]);
}
//
СПАСИБО ЗА ЭТОТ УРОК! Ты просто нереально мне жизнь упростил , теперь кучу задач могу решить не расписывая их в тонны текста!
извините, .. я хочу спросить, как сделать обратный вызов Bluetooth приложение изобретатель, который не подключиться? чтобы подключить обратно без необходимости выхода из приложения.
спасибо.
Подскажите - где можно купить управлющую плату из недр этого сервопривода? Как она хоть назывется првильно?.... А то надо шутк 40, и расковыривать двигатели ради платы - дороговато выходит.....
подскажите пожалуйста, как , хоть примерно, должен выглядеть код для поворота сервы через определенный отрезок времени?
Спасибо! А Сбербанк или Яндекс кошелек есть у Вас ?
ты прям как леон киллер
даже штаны специальные на заднем плане
ли сообщение должно учебники кнопку передатчика и приемника Arduino изобретателя приложения?
спасибо
Как вовремя, я только сервы из китая получил, хотел робота сам собрать, а управлять сервами одновременно код не придумал, к стати сервы буду подключать через PCA9685 если есть инфа про этот модуль, пожалуйста дайте ссылку или видео урок сделайте.
Дмитрий спасибо за видео. Хотелось бы узнать можно ли использовать блютуз и нрф модули одновременно на одной ардуино. Например я отправляю команду по блютуз с телефона а ардуино уже отправляем по нрф другим приемника с ардуино.
можно
Dmitry OSIPOV а можете пример написать? Хотя-бы на мигание светодиодом.
Чума! :))) Особенно проверять чётность остатком от деления. :))) X and 1 :)))
Спасибо за урок Дмитрий.
Пробую переделать ваш скетч под свои нужды и ни как не получается . Задача управлять сервой двумя кнопками при каждом нажатии на одну кнопку серва поворачивается на угол +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?
Отличный урок. К сожалению автор канала больше не выпускает уроки.
Здравствуйте .а вы делаете платный урок
Что то нет новых видео.в чём дело?
Код Вы сами придумали ? :) Может я и ошибаюсь, но в чем преимущество сравнения путем вычисления остатка от деления ? Не проще ли написать q[1]>q[0] ? [Идеи в коде интересные (тактирование проверкой четности остатком деления), но слишком все запутано, от того что оно все записывается одной строкой быстрей работать вряд ли будет.
в самом начале он сказал что отказался от функции delay а это значит он тормозит другими способами, например чтобы поднять скорость работы на альфа процессорах в них тогда отказались от умножения, дабы каждая подобная операция имеет н-ое количество циклов чтобы выдать результат
С delay() и так ясно, подход хороший, не ясно другое - зачем все записывать в одну строку и запутывать код конструкциями вида q[1] / q[0] ? ++q[0] : --q[0] ? Либо я чего-то не понимаю.
По работе мне приходится заниматься "стихийным программированием" - это когда нужно решить задачу и только потом задумываешся об адекватности кодинга :)
Сергей Леванчук Одно дело "дырку" срочно заткнуть, абы работало, а другое дело уроки выкладывать. Люди ведь берут пример, многие вообще не в теме что такое байты, массивы. Мне кажется, что если код делается для публики и называется "уроком", то и качество у него должно быть хорошее, чтобы каждая строчка всем была понятна. А то я читаю и думаю, что автор хотел этим добиться, и чувствую себя полным дураком от того что не могу понять.
#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]);
}
}
//
ЗДРАВСТВУЙТЕ, ДМИТРИЙ . ТАКУЮ ШТУКУ ХОЧУ ПОДОБНУЮ СОБРАТЬ КАК У ВАС , НО СО СВОИ МИ ЗАДАЧАМИ . МОЖЕТ У ВАС ЕСТЬ ПОХОЖЕЕ ВИДЕО С УДОВОЛЬСТВИЕМ БЫ ГЛЯНУЛ . ВОТ КАК МНЕ НАДО . ВСЕ НА АРДУНКЕ КОНЕШКО С ШАГОВЫМ ДВИГАТЕЛЕМ . ФУНКЦИИ ТАКИЕ МОТОР ВСЕГДА ВРАЩАЛСЯ И С ВОЗМОЖНОСТЬЮ ДЕЛАТЬ СТОП ИЛИ ПАУЗУ . С ВОЗМОЖНОСТЬЮ РЕВЕРСА И РЕГУЛИРОВКА ОБОРОТОВ . МОЖЕТ НАЙДЕТСЯ ВИДЕО ИЛИ СХЕМЫ С БИБЛОТЕКАМИ ГОТОВЫМИ ПРОШИВОК
не понял, почему переменная имеет 2 элемента? Если отсчет с нуля то тогда 3 элемента или имеется ввиду {0;0} это 2 элемента, а если переменная равна 3 то 3 элемента {0;0;0} не совсем я это понял. Программируя под винду переменная вида например b(2) имеет 3 b - b0, b1, и b2.
это двух мерный массив, например x,y
b[2] при обьявлении массива указывает что массив будет состоять из двух элементов. Тогда как при обращении к такому массиву можно использовать только b[0] 1-ый элемент, b[1] 2-ой, а вот b[2] уже вызовет ошибку. Согласен, обьвление массива и доступ к его элементам имеет одинаковую запись что может сбить с толку :) но такие правила С++, никуда не деться
Stanislav Ilchenko сдается мне что тут дело не в кол-ве записанных данных а в размере заявленной памяти для работы, не забывайте что ардуина ограниченна прошивкой и размер памяти чипсета, которых намного меньше чем у стм или es8266
всё о так иересно, но ни )(#я не понятно. .. ! основа ґде? массив? переменная? где основа?
хорошии́ урок, но для знающих☺️☺️
Димасик, прикупи рулон обоев, поклей и сделай обзор. Раскошеливаться на игрушки это конечно хорошо, но не когда у тебя дома беспредел
О чем ты говоришь, какие обои. Человек Дзен познал, а ты про обои ему говоришь.
Базара ноль
Дмитрий, добрый день. Разрешите с Вами связаться. Можете дать Ваш SKYPE или почту? СПАСИБО !!!
помогите написать скеч ( код) к ардуино на вот эти вещи в коде не сильно силен надо для гаража подвал сырой
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%
выводилось на дисплей температура влажность с лева температура с права влажность какая на данный момент
как подключить датчик влажности и реле понял с дисплее нужна подсказка а лучше картинка ОЧЕНЬ ПРОШУ ПОМОГИТЕ С КОДОМ
Пойдут уроки как сделать робота ?
Очень плохо объясняете. Если это расчитано на начинающих программистов, то они ничего не поняли. Смысл оператора % объяснять не долго. Это остаток от целочисленного деления одного целого числа на другое.
спасибо за "скучное и занудное" видео!!!! :)))