Запустить код по сигналу
- Drakon88
- Рядовой
- Сообщения: 32
- Зарегистрирован: 02 июл 2019, 20:24
- Имя: Михаил
- Благодарил (а): 4 раза
Запустить код по сигналу
Доброго времени всем участникам!
Такой немного странный вопрос. Возникла необходимость быстро проверить идею по механики движений и потребовалось управлять несколькими сервомашинками с ардуины (8шт).
Машинки выполняют последовательно 28 движений (кадров) за один цикл (представим что это робот и цикл - например один шаг паука, и при этом в одном кадре может быть несколько движений одновременно).
Долго пытался сделать это в ФЛ прог, пока ещё не получилось. Нашел автоматизированное решение для этой как казалось бы сложной задачи - есть одна программулина, которой просто указываешь положения сервомашинок и кадры. Далее она просто всё это генерирует в массив точек и готовый код для ардуины. Дело 5 минут. Но огромная проблема в том, что программу писал любитель-программист и там только нужные ему функции, а то чего нужно мне сейчас - нет. В частности при генерации кода есть галочка - повтор циклично. Если её поставить, то при подаче питания ардуина просто будет выполнять кадры с 0-го по 27-ой и всё. Если галочку не ставить, то выполнит один цикл - 28 кадров и всё.
А мне нужно чтобы цикл запускался например при срабатывании датчика или ещё от чего. Упростим задачу до предела - просто при появлении сигнала высокого уровня на какой-нибудь ножке. Но кроме выводов D2-D13, так как на них повешаны сервомашинки и они используются программой.
Более мене изучаю ардуино и т.д. и могу сделать такое для многих примеров как вручную (прописать условия сравнения FOR больше меньше, равно и т.д.) или же сделать это в ФЛ прог. Но с этим кодом ничего не получается!(
То что я вижу необычным - то что весь массив точек находится до блока "VOID LOOP" !
Более того - он находится даже перед "VOID SETUP" !!! Это как вообще ? (при этом оно отлично работает)
Вообще не могу понять как работает данный код.. Может кто объяснит в чём тут загвоздка?
Прилагаю два примера кода - робот27-1 - это однократный цикл, робот27-888 - это бесконечный повтор циклов.
Они фактически одинаковые, разницы почти не нашел, но то что нашел, особо не помогло (в одном месте true, в другом false).
Название проги, которая генерит массив в третьей строчке кода , прописывается автоматически...
Такой немного странный вопрос. Возникла необходимость быстро проверить идею по механики движений и потребовалось управлять несколькими сервомашинками с ардуины (8шт).
Машинки выполняют последовательно 28 движений (кадров) за один цикл (представим что это робот и цикл - например один шаг паука, и при этом в одном кадре может быть несколько движений одновременно).
Долго пытался сделать это в ФЛ прог, пока ещё не получилось. Нашел автоматизированное решение для этой как казалось бы сложной задачи - есть одна программулина, которой просто указываешь положения сервомашинок и кадры. Далее она просто всё это генерирует в массив точек и готовый код для ардуины. Дело 5 минут. Но огромная проблема в том, что программу писал любитель-программист и там только нужные ему функции, а то чего нужно мне сейчас - нет. В частности при генерации кода есть галочка - повтор циклично. Если её поставить, то при подаче питания ардуина просто будет выполнять кадры с 0-го по 27-ой и всё. Если галочку не ставить, то выполнит один цикл - 28 кадров и всё.
А мне нужно чтобы цикл запускался например при срабатывании датчика или ещё от чего. Упростим задачу до предела - просто при появлении сигнала высокого уровня на какой-нибудь ножке. Но кроме выводов D2-D13, так как на них повешаны сервомашинки и они используются программой.
Более мене изучаю ардуино и т.д. и могу сделать такое для многих примеров как вручную (прописать условия сравнения FOR больше меньше, равно и т.д.) или же сделать это в ФЛ прог. Но с этим кодом ничего не получается!(
То что я вижу необычным - то что весь массив точек находится до блока "VOID LOOP" !
Более того - он находится даже перед "VOID SETUP" !!! Это как вообще ? (при этом оно отлично работает)
Вообще не могу понять как работает данный код.. Может кто объяснит в чём тут загвоздка?
Прилагаю два примера кода - робот27-1 - это однократный цикл, робот27-888 - это бесконечный повтор циклов.
Они фактически одинаковые, разницы почти не нашел, но то что нашел, особо не помогло (в одном месте true, в другом false).
Название проги, которая генерит массив в третьей строчке кода , прописывается автоматически...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Запустить код по сигналу
[ref]Drakon88[/ref], Попробуйте. Весь код загнал в блок. Ничем от исходного не отличается.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Drakon88
- Рядовой
- Сообщения: 32
- Зарегистрирован: 02 июл 2019, 20:24
- Имя: Михаил
- Благодарил (а): 4 раза
Запустить код по сигналу
[ref]dsfbuy[/ref], Спасибо огромное! Утром попробую. Интересно как оно выглядит, я тоже пытался объединить всё это в FL Prog, но видимо что-то пошло не так. Интересно сравнить со своими попытками:)
Отправлено спустя 39 минут 28 секунд:
Блин, я не могу файл открыть, FL Prog его не видит..
Хотя указываю правильную папку. Какая у Вас версия? У меня 6.2.1. и она при открытии требует файл формата *.FLP. Пробовал через блоки пользователей - в правую колонку добавляет, но в итоге я с этим блоком ничего сделать не могу, при перетаскивании в рабочее поле он просто не перетаскивается - вернее перетаскивается, но потом убегает обратно и выдает ошибку. Может у нас разные версии и из-за этого такой глюк?
Отправлено спустя 39 минут 28 секунд:
Блин, я не могу файл открыть, FL Prog его не видит..

Запустить код по сигналу
[ref]Drakon88[/ref], пробуйте. Я не проверял, так как у меня нет нужной библиотеки.
Пока есть "1" на входе REPEAT должен двигаться.
Пока есть "1" на входе REPEAT должен двигаться.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Drakon88
- Рядовой
- Сообщения: 32
- Зарегистрирован: 02 июл 2019, 20:24
- Имя: Михаил
- Благодарил (а): 4 раза
Запустить код по сигналу
Теперь нормально открылся, прописал цифровой вход на 1 ногу, подтянул эту ногу к +5вольт, добавил инвертирование - чтобы при нажатии кнопки на 1 ноге был низкий уровень, проходя сквозь инвертор он становился высоким и приходил на EN. Проверка вроде ошибок не выдала, всё скомпилировалось. Но в ардуину не загружает (хотя настройки верные - атмега328 + старый бутлоадер), другие проекты проверил - загружаются нормально... Что-то ему мешает.. Кстати, необычный момент - если я загружаю чистый код - то он выполняется один раз при подаче питания с нормальной скоростью.
А когда после компиляции жму загрузить в ардуину - на экране появляются попытки 1, 2, 3, 4 и т.д. до 10 раз. Прикрепил скрин, и вот когда они начинаются, то сервы начинают сумасшедше быстро двигаться с утроенной или учетверенной скоростью наверно и выполняют не один цикл, а наверно штук 20. Подумал что это возможно побочный эффект при загрузке, но в конце вышла ошибка и сервы затихли... Эти 10 попыток длились примерно минуту (возможно чуть меньше - секунд 50)
А когда после компиляции жму загрузить в ардуину - на экране появляются попытки 1, 2, 3, 4 и т.д. до 10 раз. Прикрепил скрин, и вот когда они начинаются, то сервы начинают сумасшедше быстро двигаться с утроенной или учетверенной скоростью наверно и выполняют не один цикл, а наверно штук 20. Подумал что это возможно побочный эффект при загрузке, но в конце вышла ошибка и сервы затихли... Эти 10 попыток длились примерно минуту (возможно чуть меньше - секунд 50)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Запустить код по сигналу
Если честно, то перечитал несколько раз, но так и не понял.
Если вы не смогли загрузить проект FLProg, то он и не может выполняться. А значит дёрганье серв по какой-то другой причине происходит.
Попробуйте всё отключить, залить проект, выключить, всё подцепить, а потом подать питание.
Если вы не смогли загрузить проект FLProg, то он и не может выполняться. А значит дёрганье серв по какой-то другой причине происходит.
Попробуйте всё отключить, залить проект, выключить, всё подцепить, а потом подать питание.
-
- Полковник
- Сообщения: 3357
- Зарегистрирован: 24 дек 2016, 16:55
- Откуда: Уфа
- Имя: Айдар
- Благодарил (а): 12 раз
- Поблагодарили: 100 раз
- Контактная информация:
Запустить код по сигналу
У Вас проблема не в программе, хотя и стоит плата Нодемсу у edyapd , надеюсь исправили МК.
Загружается в МЕГУ, что было под рукой, без проблем. Что то с ардуино или неправильно выбираете плату. Попробуйте загрузить ардуино без подключения серво и тп.
Загружается в МЕГУ, что было под рукой, без проблем. Что то с ардуино или неправильно выбираете плату. Попробуйте загрузить ардуино без подключения серво и тп.
- Drakon88
- Рядовой
- Сообщения: 32
- Зарегистрирован: 02 июл 2019, 20:24
- Имя: Михаил
- Благодарил (а): 4 раза
Запустить код по сигналу
[ref]edyapd[/ref], в ардуине был же старый скетч, вот видимо он пытался запуститься.
А с заливкой были глюки от того что вывод D1 был заведен на кнопку, забыл что он же завязан на UART
Перенес кнопку на аналоговый вход. Всё загрузилось нормально. Но к сожалению не реагирует на кнопку. Цикл выполняется также как и было - при включении, только ускорен в несколько раз почему-то. Думаю дальше..
[ref]aidar_i[/ref], МК конечно исправил в настройках проекта.
Отправлено спустя 25 минут 33 секунды:
В итоге теперь имею два скетча, которые нужно как то объединить.
Первый это который для одного цикла (второй файл из начального поста для бесконечного повтора циклов нафиг не нужен получается).
И второй сделал часть для обработки кнопки -
На ножку А0 повесил светодиод для индикации (чтобы можно было визуально наблюдать за состоянием)
Логика работы такая - нажали кратковременно на кнопку (А2) - переключился как бы триггер-таймер, который ставит переменную shag в состояние 1 на заданное время - 5 секунд.
При этом любые нажатия на кнопку будут игнорироваться. Это для того чтобы цикл выполнился полностью без сбоев (вдруг случайно нажать кнопку до момента завершения цикла).
А с заливкой были глюки от того что вывод D1 был заведен на кнопку, забыл что он же завязан на UART

[ref]aidar_i[/ref], МК конечно исправил в настройках проекта.
Отправлено спустя 25 минут 33 секунды:
В итоге теперь имею два скетча, которые нужно как то объединить.
Первый это который для одного цикла (второй файл из начального поста для бесконечного повтора циклов нафиг не нужен получается).
И второй сделал часть для обработки кнопки -
На ножку А0 повесил светодиод для индикации (чтобы можно было визуально наблюдать за состоянием)
Логика работы такая - нажали кратковременно на кнопку (А2) - переключился как бы триггер-таймер, который ставит переменную shag в состояние 1 на заданное время - 5 секунд.
При этом любые нажатия на кнопку будут игнорироваться. Это для того чтобы цикл выполнился полностью без сбоев (вдруг случайно нажать кнопку до момента завершения цикла).
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Запустить код по сигналу
[ref]Drakon88[/ref], попробуйте это
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- rw6cm
- Полковник
- Сообщения: 2372
- Зарегистрирован: 06 сен 2015, 20:25
- Имя: Владимир
- Поблагодарили: 41 раз
Запустить код по сигналу
[ref]Drakon88[/ref],
Подредактировал свой первый вариант
Подредактировал свой первый вариант
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Win10-64, FLProg (portable)
- Drakon88
- Рядовой
- Сообщения: 32
- Зарегистрирован: 02 июл 2019, 20:24
- Имя: Михаил
- Благодарил (а): 4 раза
Запустить код по сигналу
[ref]edyapd[/ref], сейчас ошибок никаких не было, скомпилировалось, загрузилось нормально, но почему-то машинки вообще не шевятся, от кнопки тоже((. [ref=#ff8000]rw6cm[/ref], сейчас скачаю, попробую, спасибо за попытки! 
Отправлено спустя 24 минуты 5 секунд:
[ref=#ff8000]rw6cm[/ref], работает! переписал выводы под имеющиеся и пошло всё, огромное спасибо!
Посмотрел, вы его совсем переделали, но вроде разобрался как менять значения 

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


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