Запустить код по сигналу

Ответить
Аватара пользователя
Drakon88
Рядовой
Сообщения: 32
Зарегистрирован: 02 июл 2019, 20:24
Имя: Михаил
Благодарил (а): 4 раза

Запустить код по сигналу

Сообщение Drakon88 »

Доброго времени всем участникам!
Такой немного странный вопрос. Возникла необходимость быстро проверить идею по механики движений и потребовалось управлять несколькими сервомашинками с ардуины (8шт).
Машинки выполняют последовательно 28 движений (кадров) за один цикл (представим что это робот и цикл - например один шаг паука, и при этом в одном кадре может быть несколько движений одновременно).
Долго пытался сделать это в ФЛ прог, пока ещё не получилось. Нашел автоматизированное решение для этой как казалось бы сложной задачи - есть одна программулина, которой просто указываешь положения сервомашинок и кадры. Далее она просто всё это генерирует в массив точек и готовый код для ардуины. Дело 5 минут. Но огромная проблема в том, что программу писал любитель-программист и там только нужные ему функции, а то чего нужно мне сейчас - нет. В частности при генерации кода есть галочка - повтор циклично. Если её поставить, то при подаче питания ардуина просто будет выполнять кадры с 0-го по 27-ой и всё. Если галочку не ставить, то выполнит один цикл - 28 кадров и всё.
А мне нужно чтобы цикл запускался например при срабатывании датчика или ещё от чего. Упростим задачу до предела - просто при появлении сигнала высокого уровня на какой-нибудь ножке. Но кроме выводов D2-D13, так как на них повешаны сервомашинки и они используются программой.
Более мене изучаю ардуино и т.д. и могу сделать такое для многих примеров как вручную (прописать условия сравнения FOR больше меньше, равно и т.д.) или же сделать это в ФЛ прог. Но с этим кодом ничего не получается!(
То что я вижу необычным - то что весь массив точек находится до блока "VOID LOOP" !
Более того - он находится даже перед "VOID SETUP" !!! Это как вообще ? (при этом оно отлично работает)
Вообще не могу понять как работает данный код.. Может кто объяснит в чём тут загвоздка?

Прилагаю два примера кода - робот27-1 - это однократный цикл, робот27-888 - это бесконечный повтор циклов.
Они фактически одинаковые, разницы почти не нашел, но то что нашел, особо не помогло (в одном месте true, в другом false).
Название проги, которая генерит массив в третьей строчке кода , прописывается автоматически...
Desktop.rar
У вас нет необходимых прав для просмотра вложений в этом сообщении.
dsfbuy
Сержант
Сообщения: 172
Зарегистрирован: 03 ноя 2018, 12:40
Откуда: Братск
Имя: Виктор

Запустить код по сигналу

Сообщение dsfbuy »

[ref]Drakon88[/ref], Попробуйте. Весь код загнал в блок. Ничем от исходного не отличается.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Drakon88
Рядовой
Сообщения: 32
Зарегистрирован: 02 июл 2019, 20:24
Имя: Михаил
Благодарил (а): 4 раза

Запустить код по сигналу

Сообщение Drakon88 »

[ref]dsfbuy[/ref], Спасибо огромное! Утром попробую. Интересно как оно выглядит, я тоже пытался объединить всё это в FL Prog, но видимо что-то пошло не так. Интересно сравнить со своими попытками:)

Отправлено спустя 39 минут 28 секунд:
Блин, я не могу файл открыть, FL Prog его не видит.. :smile37: Хотя указываю правильную папку. Какая у Вас версия? У меня 6.2.1. и она при открытии требует файл формата *.FLP. Пробовал через блоки пользователей - в правую колонку добавляет, но в итоге я с этим блоком ничего сделать не могу, при перетаскивании в рабочее поле он просто не перетаскивается - вернее перетаскивается, но потом убегает обратно и выдает ошибку. Может у нас разные версии и из-за этого такой глюк?
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Запустить код по сигналу

Сообщение edyapd »

[ref]Drakon88[/ref], пробуйте. Я не проверял, так как у меня нет нужной библиотеки.
Пока есть "1" на входе REPEAT должен двигаться.
Robot27.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Drakon88
Рядовой
Сообщения: 32
Зарегистрирован: 02 июл 2019, 20:24
Имя: Михаил
Благодарил (а): 4 раза

Запустить код по сигналу

Сообщение Drakon88 »

Теперь нормально открылся, прописал цифровой вход на 1 ногу, подтянул эту ногу к +5вольт, добавил инвертирование - чтобы при нажатии кнопки на 1 ноге был низкий уровень, проходя сквозь инвертор он становился высоким и приходил на EN. Проверка вроде ошибок не выдала, всё скомпилировалось. Но в ардуину не загружает (хотя настройки верные - атмега328 + старый бутлоадер), другие проекты проверил - загружаются нормально... Что-то ему мешает.. Кстати, необычный момент - если я загружаю чистый код - то он выполняется один раз при подаче питания с нормальной скоростью.
А когда после компиляции жму загрузить в ардуину - на экране появляются попытки 1, 2, 3, 4 и т.д. до 10 раз. Прикрепил скрин, и вот когда они начинаются, то сервы начинают сумасшедше быстро двигаться с утроенной или учетверенной скоростью наверно и выполняют не один цикл, а наверно штук 20. Подумал что это возможно побочный эффект при загрузке, но в конце вышла ошибка и сервы затихли... Эти 10 попыток длились примерно минуту (возможно чуть меньше - секунд 50)
50.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Запустить код по сигналу

Сообщение edyapd »

Если честно, то перечитал несколько раз, но так и не понял.
Если вы не смогли загрузить проект FLProg, то он и не может выполняться. А значит дёрганье серв по какой-то другой причине происходит.
Попробуйте всё отключить, залить проект, выключить, всё подцепить, а потом подать питание.
aidar_i
Полковник
Сообщения: 3357
Зарегистрирован: 24 дек 2016, 16:55
Откуда: Уфа
Имя: Айдар
Благодарил (а): 12 раз
Поблагодарили: 100 раз
Контактная информация:

Запустить код по сигналу

Сообщение aidar_i »

У Вас проблема не в программе, хотя и стоит плата Нодемсу у edyapd , надеюсь исправили МК.
Загружается в МЕГУ, что было под рукой, без проблем. Что то с ардуино или неправильно выбираете плату. Попробуйте загрузить ардуино без подключения серво и тп.
Аватара пользователя
Drakon88
Рядовой
Сообщения: 32
Зарегистрирован: 02 июл 2019, 20:24
Имя: Михаил
Благодарил (а): 4 раза

Запустить код по сигналу

Сообщение Drakon88 »

[ref]edyapd[/ref], в ардуине был же старый скетч, вот видимо он пытался запуститься.
А с заливкой были глюки от того что вывод D1 был заведен на кнопку, забыл что он же завязан на UART :smile44: Перенес кнопку на аналоговый вход. Всё загрузилось нормально. Но к сожалению не реагирует на кнопку. Цикл выполняется также как и было - при включении, только ускорен в несколько раз почему-то. Думаю дальше..
[ref]aidar_i[/ref], МК конечно исправил в настройках проекта.

Отправлено спустя 25 минут 33 секунды:
В итоге теперь имею два скетча, которые нужно как то объединить.
Первый это который для одного цикла (второй файл из начального поста для бесконечного повтора циклов нафиг не нужен получается).
И второй сделал часть для обработки кнопки -
На ножку А0 повесил светодиод для индикации (чтобы можно было визуально наблюдать за состоянием)
Логика работы такая - нажали кратковременно на кнопку (А2) - переключился как бы триггер-таймер, который ставит переменную shag в состояние 1 на заданное время - 5 секунд.
При этом любые нажатия на кнопку будут игнорироваться. Это для того чтобы цикл выполнился полностью без сбоев (вдруг случайно нажать кнопку до момента завершения цикла).
кнопка01.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20 сен 2019, 11:38
Имя: Эдуард

Запустить код по сигналу

Сообщение edyapd »

[ref]Drakon88[/ref], попробуйте это
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
rw6cm
Полковник
Сообщения: 2372
Зарегистрирован: 06 сен 2015, 20:25
Имя: Владимир
Поблагодарили: 41 раз

Запустить код по сигналу

Сообщение rw6cm »

[ref]Drakon88[/ref],
Подредактировал свой первый вариант
Robot27v2.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
Аватара пользователя
Drakon88
Рядовой
Сообщения: 32
Зарегистрирован: 02 июл 2019, 20:24
Имя: Михаил
Благодарил (а): 4 раза

Запустить код по сигналу

Сообщение Drakon88 »

[ref]edyapd[/ref], сейчас ошибок никаких не было, скомпилировалось, загрузилось нормально, но почему-то машинки вообще не шевятся, от кнопки тоже((. [ref=#ff8000]rw6cm[/ref], сейчас скачаю, попробую, спасибо за попытки! :smile427:

Отправлено спустя 24 минуты 5 секунд:
[ref=#ff8000]rw6cm[/ref], работает! переписал выводы под имеющиеся и пошло всё, огромное спасибо! :smile9: Посмотрел, вы его совсем переделали, но вроде разобрался как менять значения :smile152:
Ответить

Вернуться в «Помогите, а то я "нимагу"»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 4 гостя