13.03.2017, 15:24 | #26 |
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,667
Поблагодарили 3,281 раз(а) в 1,177 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3292)
|
Хм. Скорее delay() - это зло для программ реального времени.
detach() надо делать после достижения сервой целевого угла, а достижение угла должно отрабатываться в фоновом режиме. иначе пока переводится одна стрелка - декодер может пропустить команды по остальным. |
|
13.03.2017, 15:41 | #27 |
Местный
Регистрация: 06.03.2014
Адрес: Москва
Сообщений: 1,741
Сказал(а) 'не согласен(а)'!: 5
Сказали 'не согласен'! 9 раз(а) в 7 сообщениях
Сказал(а) спасибо: 553
Поблагодарили 2,794 раз(а) в 755 сообщениях
:
0 за это сообщение 0 Всего Репутация: репутация неоспорима (2791)
|
я вам больше скажу, даже 40 можно. Но, куда вы кнопки и светодиоды подключать собрались?
пять. на одну уну три сервы. Да, если количество серв большое - то их на отдельный источник нужно вешать. на видео у меня есть такой момент. специально делал, чтобы показать одновременную работу серв именно поэтому я и не люблю delay() совершенно верно. но поворачивает она не при каждом проходе цикла, а только если время предыдущего поворота меньше текущего на заданный интервал (таким образом регулируется скорость вращения) ---------- Сообщение добавлено в 15:37 ---------- Предыдущие сообщение было в 15:36 ---------- нет, не так. для многозадачных программ. Поэтому, если нужна одновременная работа нескольких серв с раздельным управлением (многозадачность) - delay() зло ---------- Сообщение добавлено в 15:41 ---------- Предыдущие сообщение было в 15:37 ---------- Нет. Вы схему смотрели? 3 кнопки, 6 светодиодов, 3 сервы итого: 4 выхода на один канал. Ну еще можно аналоговые задействовать, еще одна серва будет. |
|
13.03.2017, 15:45 | #28 |
Пользователь
Регистрация: 23.06.2016
Адрес: Санкт-Петербург
Сообщений: 925
Сказал(а) 'не согласен(а)'!: 25
Сказали 'не согласен'! 11 раз(а) в 11 сообщениях
Сказал(а) спасибо: 1,321
Поблагодарили 606 раз(а) в 318 сообщениях
:
0 за это сообщение 0 Всего Репутация: - это имя известно всем (618)
|
У меня стоит на меге такая на 16 серв:
Их можно до 30 таких плат на одну Дуню. И джитера нет, проверял сразу 10 серв работали и после остановки полное спокойствие. Кнопки и диоды можно через сдвиговые регистры, тогда их количество не ограничено в разумных пределах. |
|
13.03.2017, 15:46 | #29 |
Заглянувший
Регистрация: 15.01.2012
Адрес: Минск
Сообщений: 30
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 7
Поблагодарили 12 раз(а) в 7 сообщениях
:
0 за это сообщение 0 Всего Репутация: на пути к лучшему (12)
|
Я уже нашел как делать. Перед "поворотом" сервы, запоминать момент времени, и потом просто сравнивать сколько времени прошло, и после этого отключать серву. Ну и вроде где то видел команду (или показалось), которая возвращает текущий угол сервы.
|
|
13.03.2017, 15:49 | #30 | |
Местный
Регистрация: 06.03.2014
Адрес: Москва
Сообщений: 1,741
Сказал(а) 'не согласен(а)'!: 5
Сказали 'не согласен'! 9 раз(а) в 7 сообщениях
Сказал(а) спасибо: 553
Поблагодарили 2,794 раз(а) в 755 сообщениях
:
0 за это сообщение 0 Всего Репутация: репутация неоспорима (2791)
|
Цитата:
неплохой вариант. |
|
|
13.03.2017, 15:55 | #31 |
Заглянувший
Регистрация: 09.01.2016
Адрес: Санкт-Петербург
Сообщений: 103
Сказал(а) 'не согласен(а)'!: 3
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 305
Поблагодарили 50 раз(а) в 29 сообщениях
:
0 за это сообщение 0 Всего Репутация: скоро придёт к известности (50)
|
|
|
13.03.2017, 16:01 | #32 |
Пользователь
Регистрация: 23.06.2016
Адрес: Санкт-Петербург
Сообщений: 925
Сказал(а) 'не согласен(а)'!: 25
Сказали 'не согласен'! 11 раз(а) в 11 сообщениях
Сказал(а) спасибо: 1,321
Поблагодарили 606 раз(а) в 318 сообщениях
:
0 за это сообщение 0 Всего Репутация: - это имя известно всем (618)
|
Почитайте здесь. Через неделю все будет понятно.
http://wiki.iarduino.ru http://arduino.ru/Reference http://wiki.amperka.ru |
|
Пользователь сказал cпасибо: |
13.03.2017, 16:08 | #33 |
Местный
Регистрация: 06.03.2014
Адрес: Москва
Сообщений: 1,741
Сказал(а) 'не согласен(а)'!: 5
Сказали 'не согласен'! 9 раз(а) в 7 сообщениях
Сказал(а) спасибо: 553
Поблагодарили 2,794 раз(а) в 755 сообщениях
:
0 за это сообщение 0 Всего Репутация: репутация неоспорима (2791)
|
любая плата имеет ограниченное количество входов/выходов.
Если вам не нужна индикация - вы на одну Arduino Uno можно подключить до 6-ти серв. Если вы используете внешний модуль, по типу https://ru.aliexpress.com/item/Free-...568608562.html то можно и 16-ть, но тоже без индикации. |
|
13.03.2017, 16:17 | #34 | ||
Заглянувший
Регистрация: 17.06.2013
Адрес: Санкт-Петербург
Сообщений: 227
Сказал(а) 'не согласен(а)'!: 8
Сказали 'не согласен'! 4 раз(а) в 2 сообщениях
Сказал(а) спасибо: 206
Поблагодарили 329 раз(а) в 99 сообщениях
:
0 за это сообщение 0 Всего Репутация: как роза среди колючек (329)
|
Цитата:
Издеваетесь? Всё просто: Вам нужно для начала 1. поставить перед собой какую-либо очень простую, элементарную цель (например, мигание встроенным диодом с желаемой частотой, поворот вала сервомотора на 90°), 2. освоить самые азы программирования написания ардуиновых скетчей и 3. знать, что скетч заливается в ардуину через USB-кабель и ардуина может через оный же получать электропитание. А дальше Вы будете усложнять Ваши скетчи и увидите сами - возврата предела нет... Будут конкретные вопросы, задавайте! Цитата:
а потом сами наприбавляете компонентов по вкусу (диодов, сервомоторов и сдвиговых регистров и прочего...). Как справедливо написал коллега . |
||
|
2 пользователя(ей) сказали cпасибо: |
13.03.2017, 16:23 | #35 | ||
Местный
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,865
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,667
Поблагодарили 3,281 раз(а) в 1,177 сообщениях
:
0 за это сообщение 1 Всего Репутация: репутация неоспорима (3292)
|
Цитата:
---------- Сообщение добавлено в 16:20 ---------- Предыдущие сообщение было в 16:18 ---------- Цитата:
---------- Сообщение добавлено в 16:23 ---------- Предыдущие сообщение было в 16:20 ---------- Совершенно верно, только еще и сам поворот выполняется дискретно, тоже на основе запоминания времени с последней итерации. Поэтому можно плавно (по шагам) поворачивать серву не используя delay() совсем и в определенных границах регулировать скорость перевода сервы/стрелки, если analogWrite, то 256 положений сервы возможно. Если задействовать PCA9685 - там, возможно, дискретность можно повысить, т.к. там, кажись, можно управлять шириной импульса в более широких пределах. |
||
|
13.03.2017, 16:28 | #36 |
Новичок
Регистрация: 28.12.2016
Адрес: Нижний Новгород
Сообщений: 48
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 12
Поблагодарили 34 раз(а) в 15 сообщениях
:
0 за это сообщение 0 Всего Репутация: на пути к лучшему (34)
|
Я тоже на Ардуине хочу замутить управление блок-участками, светофорами и стрелками.
В первом приближении у меня получается так. Входы 21 штука: - 16 кнопок без фиксации для перевода стрелок - 5 датчиков тока с путевых блок-участков Выходы 41 штука (силовые через реле): - 8 стрелок на соленоидах (16 выходов) - 5 путевых блок участков с датчиками тока (5 выходов) - 10 присветофорных блок участков, завязанных на сигнал светофора - при красном свете нет питания на коротком участке перед светофором. - 10 светофоров, завязанных на занятости последующего блок-участка и положении стрелки. Черновик схемки проводки (не электрическая, а блок-схемка) есть у меня в блоге, но я постоянно перерисовываю схему, поэтому пока не хочу публиковать тут. Так вот. Проблему с количеством входов-выходов я думаю решить несколькими платами конвертации сигналов в шину IIC (ссылка на eBay). Но это только теория. Платы IIC и блоки реле я пока не получил, чтобы посмотреть, как это вживую работает. Буду ждать свои элементы и следить за вашей темой, отличие в реализации у нас только в типе приводов стрелок. У меня проще вариант, так как просто надо подать питание на электромагнит на секунду и снять приние. Не нужен модуль управления сервоприводом. |
|
13.03.2017, 16:44 | #37 | |
Ĩ.Ĉ.Š.ҧрѻҫҭҩ мӥҫҭҿӄѣӤ.Ҟ.Ҫ
Регистрация: 10.07.2006
Адрес: 13 верста У.Г.Ж.Д. HOe.N.Z? . . G.Oe.HO!
Сообщений: 2,434
Сказал(а) 'не согласен(а)'!: 466
Сказали 'не согласен'! 136 раз(а) в 123 сообщениях
Сказал(а) спасибо: 3,326
Поблагодарили 7,266 раз(а) в 2,870 сообщениях
:
0 за это сообщение 0 Всего Репутация: репутация неоспорима (7895)
|
Цитата:
Кстати светодиоды у вас парные (один горит, другой нет) значит можно использовать один выход на пару. схема простая. Кнопки от 2 до 5 штук через резисторы, легко сажаются на один аналоговый выход. итого умещаемся по количеству ног. |
|
|
Пользователь сказал cпасибо: |
13.03.2017, 16:57 | #38 | ||
Местный
Регистрация: 14.02.2014
Адрес: Санкт-Петербург, Пушкин, Александровская
Сообщений: 1,968
Сказал(а) 'не согласен(а)'!: 118
Сказали 'не согласен'! 26 раз(а) в 22 сообщениях
Сказал(а) спасибо: 3,182
Поблагодарили 5,756 раз(а) в 1,222 сообщениях
:
0 за это сообщение 0 Всего Репутация: репутация неоспорима (5777)
|
Цитата:
Кроме того: Цитата:
|
||
|
13.03.2017, 17:13 | #39 |
Заглянувший
Регистрация: 26.01.2013
Адрес: Минск
Сообщений: 204
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 1 раз в 1 сообщении
Сказал(а) спасибо: 458
Поблагодарили 454 раз(а) в 135 сообщениях
:
0 за это сообщение 0 Всего Репутация: - луч света в тёмном царстве (454)
|
Это такая "городская легенда" для ардуино
Если открыть фаил Servo.h, то там написано, что на каждые 12 сервоприводов нужен один 16-ти битный таймер: #define SERVOS_PER_TIMER 12 // the maximum number of servos controlled by one timer #define MAX_SERVOS (_Nbr_16timers * SERVOS_PER_TIMER) Скрытый текст
У уно такой один, а у мега2560 их уже 4 (4*12=48). |
|
3 пользователя(ей) сказали cпасибо: |
13.03.2017, 17:40 | #40 | |
Местный
Регистрация: 06.03.2014
Адрес: Москва
Сообщений: 1,741
Сказал(а) 'не согласен(а)'!: 5
Сказали 'не согласен'! 9 раз(а) в 7 сообщениях
Сказал(а) спасибо: 553
Поблагодарили 2,794 раз(а) в 755 сообщениях
:
0 за это сообщение 0 Всего Репутация: репутация неоспорима (2791)
|
Так что, ни чего дефицитного ни у кого не отнял
Цитата:
КМК, при стоимости платы 200р - слишком много геморроя... Я не против оптимизации. Но я за разумную оптимизацию. |
|
|
Пользователь сказал cпасибо: |
13.03.2017, 18:59 | #41 | |
Местный
Регистрация: 06.03.2014
Адрес: Москва
Сообщений: 1,741
Сказал(а) 'не согласен(а)'!: 5
Сказали 'не согласен'! 9 раз(а) в 7 сообщениях
Сказал(а) спасибо: 553
Поблагодарили 2,794 раз(а) в 755 сообщениях
:
0 за это сообщение 0 Всего Репутация: репутация неоспорима (2791)
|
Цитата:
Поделитесь схемой. Если что - это не троллинг, на самом деле ума не хватает. Вроде все очевидно, но рабочей не получается. |
|
|
13.03.2017, 19:36 | #42 |
Пользователь
Регистрация: 23.06.2016
Адрес: Санкт-Петербург
Сообщений: 925
Сказал(а) 'не согласен(а)'!: 25
Сказали 'не согласен'! 11 раз(а) в 11 сообщениях
Сказал(а) спасибо: 1,321
Поблагодарили 606 раз(а) в 318 сообщениях
:
0 за это сообщение 0 Всего Репутация: - это имя известно всем (618)
|
|
|
5 пользователя(ей) сказали cпасибо: |
13.03.2017, 21:16 | #43 | |
Заглянувший
Регистрация: 15.01.2012
Адрес: Минск
Сообщений: 30
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 7
Поблагодарили 12 раз(а) в 7 сообщениях
:
0 за это сообщение 0 Всего Репутация: на пути к лучшему (12)
|
По поводу легенд ШИМа. 28-30-32, если верить интернету, то ШИМ: пины 2–13 и 44–46.
Ща малые спать пойдут, буду экспериментировать дальше. |
|
|
14.03.2017, 06:38 | #44 | |
Ĩ.Ĉ.Š.ҧрѻҫҭҩ мӥҫҭҿӄѣӤ.Ҟ.Ҫ
Регистрация: 10.07.2006
Адрес: 13 верста У.Г.Ж.Д. HOe.N.Z? . . G.Oe.HO!
Сообщений: 2,434
Сказал(а) 'не согласен(а)'!: 466
Сказали 'не согласен'! 136 раз(а) в 123 сообщениях
Сказал(а) спасибо: 3,326
Поблагодарили 7,266 раз(а) в 2,870 сообщениях
:
0 за это сообщение 0 Всего Репутация: репутация неоспорима (7895)
|
+100. схема в центре, если посадить на цифровой выход, получим "резкое" переключение светодиодов, а если на аналоговый, то меняя постепенно напругу на выходе, можно сделать плавное "перетекание" яркости с одного светодиода на другой, на средних значениях будут светится оба, но не ярко.
Цитата:
|
|
|
14.03.2017, 08:41 | #45 | |
Заглянувший
Регистрация: 15.01.2012
Адрес: Минск
Сообщений: 30
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 7
Поблагодарили 12 раз(а) в 7 сообщениях
:
0 за это сообщение 0 Всего Репутация: на пути к лучшему (12)
|
Поигрался еще ночью. Возник вопрос. Если нажать одновременно на 2 кнопки, то работает только одна серва, если успеть поочередно нажать, с полным отпусканием первой, то работают 2 сервы.
Да, Servo.Read() возвращает значение угла поданное командой Write, а не реальное. Переписал Delay() на Millis(). Светодиоды горят в то время, когда серва подключена, пока выставил на 750 мс, вроде хватает для оборота 90 градусов. Ну и подрубил экранчик, жутко тормозной. |
|
|
Пользователь сказал cпасибо: |
14.03.2017, 09:17 | #46 |
Пользователь
Регистрация: 23.06.2016
Адрес: Санкт-Петербург
Сообщений: 925
Сказал(а) 'не согласен(а)'!: 25
Сказали 'не согласен'! 11 раз(а) в 11 сообщениях
Сказал(а) спасибо: 1,321
Поблагодарили 606 раз(а) в 318 сообщениях
:
0 за это сообщение 0 Всего Репутация: - это имя известно всем (618)
|
|
|
14.03.2017, 10:08 | #47 | ||
Местный
Регистрация: 06.03.2014
Адрес: Москва
Сообщений: 1,741
Сказал(а) 'не согласен(а)'!: 5
Сказали 'не согласен'! 9 раз(а) в 7 сообщениях
Сказал(а) спасибо: 553
Поблагодарили 2,794 раз(а) в 755 сообщениях
:
0 за это сообщение 0 Всего Репутация: репутация неоспорима (2791)
|
AleksSF,
мистер И.К.С., Спасибо. Все элементарно... Это надо же было так мозг "засрать" в понедельник. Сидел пытался пристроить пулап/пушдаун резисторы на выход во всех примерах именно на ШИМ выходы цепляют... Код покажите. Очевидно, опрос одной кнопки блокирует опрос другой. Цитата:
Цитата:
|
||
|
14.03.2017, 10:21 | #48 |
Заглянувший
Регистрация: 15.01.2012
Адрес: Минск
Сообщений: 30
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 0 раз(а) в 0 сообщениях
Сказал(а) спасибо: 7
Поблагодарили 12 раз(а) в 7 сообщениях
:
0 за это сообщение 0 Всего Репутация: на пути к лучшему (12)
|
Вечером скину код, но там вроде нет блокировки, сначала одну опрашиваю, а следом другую.
А Вы у себя пробовали, нажать одну кнопку, и не отпуская ее, нажать вторую кнопку? ЗЫ. Возможно из за того что я использую Bounce.h , а не Bounce2.h |
|
14.03.2017, 10:59 | #49 |
Пользователь
Регистрация: 23.06.2016
Адрес: Санкт-Петербург
Сообщений: 925
Сказал(а) 'не согласен(а)'!: 25
Сказали 'не согласен'! 11 раз(а) в 11 сообщениях
Сказал(а) спасибо: 1,321
Поблагодарили 606 раз(а) в 318 сообщениях
:
0 за это сообщение 0 Всего Репутация: - это имя известно всем (618)
|
По-моему это библиотеки для устранения дребезга кнопок программным способом и в них идет задержка обработки кнопки. Если хотите чтобы одновременно несколько кнопок опрашивалось, лучше сделать аппаратную стабилизацию.
http://wiki.amperka.ru/видеоуроки:10...я-стабилизация |
|
14.03.2017, 11:27 | #50 | |
Местный
Регистрация: 06.03.2014
Адрес: Москва
Сообщений: 1,741
Сказал(а) 'не согласен(а)'!: 5
Сказали 'не согласен'! 9 раз(а) в 7 сообщениях
Сказал(а) спасибо: 553
Поблагодарили 2,794 раз(а) в 755 сообщениях
:
0 за это сообщение 0 Всего Репутация: репутация неоспорима (2791)
|
не принципиально. смысл в них один и тотже
Цитата:
там нет задержки в виде паузы и (теоретически) одновременное нажатие на несколько кнопок должно нормально обрабатываться. Вопрос в том, как это в программе опрашивается. |
|
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Простой блок управления освещением аналогового макета на базе Ардуино Нано | morshamenn | Arduino | 13 | 10.12.2022 22:51 |
Пульт аналогового управления макетом | SergiyW | Электрика и DCC | 46 | 10.05.2016 00:00 |
Управление траверсером | Crown | Электрика и DCC | 34 | 13.11.2012 22:35 |
Управление на ик лучах | GOGA | Электрика и DCC | 38 | 29.12.2008 00:56 |
Цифровое управление | Илья | Электрика и DCC | 26 | 15.07.2008 19:52 |