количество импульсов по времени.
- Войдите на сайт для отправки комментариев
Ср, 03/11/2021 - 23:49
Итак.... развиваю тему часов на ГРИ. За основу была взята "древняя" прошивка, без наворотов. Из "плюшек" только перебор цифр при смене времени. Для начала "прикрутил" сигнал часа на пищалке. Затем для сигнала часа "прикрутил" МР3 модуль. Теперь есть идея, но нет понимания как её реализовать. Задача выводить на пин импульсы с определённым периодом количеством равное часам. По итогу к пину будет подключаться либо эл.магнит (бой), либо шаговый двигатель.
понимаю что нужно взять переменную, прировнять её к часам, а вот что дальше делать с этой переменной... как задать длительность импульса и промежуток между ними?
У переменной нет ни длительности импульса, ни промежутка между ними...
Это я прекрасно понимаю. Но количество импульсов завязывается именно на неё. Ну хорошо... Как я делал раньше.... Создавал условие типа: если часы=12 и мин=0 и сек=0 , то ... далее либо включение пина либо команда на мр3. при этом замечал что на пищалке каждый час разная длительность импульса. как я понимаю, это потому что прошивка "находит" эту строку в разное время в течении секунды.
Я вижу вариант с созданием условий типа :
если часы=8 и минуты=0 и сек=00 то пин=1
иначе часы=0 и мин=0 и сек=2 то пин=1... и тд до нужного количества импульсов.
Но в таком варианте длительность импульса секунда (или меньше), что много, но решаемо на железе. а вот промежуток между уже не уменьшить. да и код на каждый час получается большим. Должен же быть способ проще.
Выложенный вами ваш скетчик оживит обсуждение вашей проблемы. Это я вам как врач говорю
Нарисуйте импульс на ноге через delay - всё равно часы, им спешить не положено. Возьмите обратный цикл for в котором переменная со значением часов будет уменьшаться до нуля и прокрутите ранее написанный импульс. На ноге выпадет точно соответствующее часам количество импульсов.
Это я вам как врач говорю
А заодно и "как мать и как женщина" :-)
..."но сися у меня одна...")
Есть у этой прошивки ещё одна особенность. Если документирую вывод в монитор порта состояние клавиатуры, то кнопки работать перестают.
Код то хоть можешь правильно вставить? И со спойлером, а не простынёй.
мог бы .... вставил.
мог бы .... вставил.
где тебе часами заниматься, если ты код не можешь вставить...
Вот вот. Посмотри вокруг - другие ведь могут.
думаю это не самый оптимальный вариант. "делей" же буквально тормозит полностью программу. Предполагается, что вся канитель с импульсами займёт 1-8 сек (от количества часов). То есть на это время мигание разделителей прекратится...
спасибо! понял.
мог бы .... вставил.
Вот и вставьте. Как выражается граф, это входной тест
Вашу портянку я удалю
код показывает, что ни про массивы, ни про циклы, ни про switch() вы не в курсе....
Может какую-то книжку почитать?
не то что бы совсем не в курсе..... Код изначально не мой и ему лет энцать.... Более того это уже плод коллективного (хоть и не сильно развитого) разума. Моё тут только "пищалка" и "мр3". Книжку обязательно почитаю, уроки Гайвера пересмотрю....
Интересно, вот тут делей для чего? - чтобы цифры мигали?
если зажигать цифру на 2 миллисекунды -думаете кто-то это сможет заметить?
На сколько я понимаю, это для работы динамической индикации. Цифры выводятся последовательно. Кстати... Если тот же импульс реализовать через "делей" , то и индикация "повиснет". Не вариант....
Ну значит не через делей, а через блинк визаут делей. Тема такая есть . Посмотрите и сделайте импульс. Обратный фор всё равно делать надо, только не через фор, а самому по тому же принципу растягивая на весь луп.
На сколько я понимаю, это для работы динамической индикации
во-первых, в комментариях написано совсем иное - я специально их оставил, копируя код. Во-вторых, при динамической индикации никто не ставит задержек в выключенном состоянии - это нарушит показ соседних цифр.
Думаю, это никакая не "динамика". а именно что попытка мигать цифрой. Только реализованное вообще без понимания предмета.
Почитал я "напутствие" для новичков..... Почитал соседние темы.... Пересмотрел свою.... И меня что то терзают смутные сомнения..... Это форум вообще про Ардуино? Только самый ленивый меня не "пнул" и "носом не тыкнул".... Вы тут как "камеди клаб" что ли? все из бывших КВНовцов? И главное на это времени и сил не жалко, а вот просто взять и по теме ответить.... Вас в школе били что ли, что Вы тут самоутверждаетесь.... Как там в "напутсвии"? " уровень подготовки старожилов известен, ваш, еще нужно подтвердить." Возможно уровень и известен.... но каков он на самом то деле? что то не бросается в глаза. Уровень "дедовщины", да высокий.... ну так форум то вроде не про это.
А вот этот участок кода у вас работает?
тут же вместо логических операций битовые используются, как оно вообще работает? Или компилятор сам исправляет такое в ардуино?
ТС перезалей пожалуйста свой код, чтобы номера строк были. Как у вас вообще получилось без номеров код вставить?
А дубли Сообщения получились потому, что задолбали 502 и 504 ошибки форума!!! Когда уже починят?!
А вот этот участок кода у вас работает?
тут же вместо логических операций битовые используются, как оно вообще работает? Или компилятор сам исправляет такое в ардуино?
ТС перезалей пожалуйста свой код, чтобы номера строк были. Как у вас вообще получилось без номеров код вставить?
ТС, вот смотри какая мысль у меня по твоему вопросу. Вместо запуска mp3 (или перед ним - я не знаю как он работает - отдал команду на проигрывание и пошёл дальше или ждёт завершения проигрыша?) в этом участке кода взводишь флаг «надо бы подолбить в колокол», ещё одной переменной присваиваешь значение часа, в другой запоминаешь значение миллис. Я думаю идею понял? По типу блин без делея уже управляешь электромагнитом или чем там в колокол хотел долбить. )
А вот этот участок кода у вас работает?
тут же вместо логических операций битовые используются, как оно вообще работает? Или компилятор сам исправляет такое в ардуино?
ТС перезалей пожалуйста свой код, чтобы номера строк были. Как у вас вообще получилось без номеров код вставить?
Да, всё работает. Это моё "произведение". не вижу ни какого противоречия. А без номеров вставил убрав их во вкладке "дополнительно" окна вставки.
МР3 плеер подключен с библиотекой и используются штатные команды.
По своему вопросу... подумываю попробовать использовать библиотеку Гайвера для шаговых двигателей. Прописать по образу и подобию, только на выполнение шагов мотора. Там и количество можно задать и скорость , то есть промежуток между ними.
ТС, вот смотри какая мысль у меня по твоему вопросу. Вместо запуска mp3 (или перед ним - я не знаю как он работает - отдал команду на проигрывание и пошёл дальше или ждёт завершения проигрыша?) в этом участке кода взводишь флаг «надо бы подолбить в колокол», ещё одной переменной присваиваешь значение часа, в другой запоминаешь значение миллис. Я думаю идею понял? По типу блин без делея уже управляешь электромагнитом или чем там в колокол хотел долбить. )
Вот с языка сорвал. Секунду будет пытаться воспроизвести музыку?
Надо поставить флаг, что воспроизвёл. И на первой секунде снять.
в прошивке с колоколом МР3 не будет совсем. За ненадобностью.
МР3 работает стабильно. Глюков за почти 2 года не замечал. И собрано уже 4 экземпляра.
Ардуино окончания воспроизведения не ждёт. У неё вообще с модулем МР3 обратной связи нет. Отправила команду и дальше своими делами занимается.
Есть вот такой пример. Допустим я убираю опрос с датчика, а переменную количества шагов приравниваю к часам. Скорость мне даст нужный промежуток между импульсами. (то что 4 пина, это пока не принципиально)
Количество шагов задается при создании объекта. Ничего из вашей задумки не выйдет.
в прошивке с колоколом МР3 не будет совсем.
Так зачем Вы это говно нам показываете?
в прошивке с колоколом МР3 не будет совсем.
Так зачем Вы это говно нам показываете?
А нахрена тогда просили всю прошивку выкатить?
Количество шагов задается при создании объекта. Ничего из вашей задумки не выйдет.
Это число шагов на 360 градусов. Так что нормальная идея, в принципе. К тому же библиотечки шаговых умеют в неблокирующем режиме работать, без delay и sms.
Количество шагов задается при создании объекта. Ничего из вашей задумки не выйдет.
Задаётся количество шагов на полный оборот мотора. А сколько шагов он сделает зависит от положения потенциометра. Вроде так.
А вот этот участок кода у вас работает?
тут же вместо логических операций битовые используются, как оно вообще работает? Или компилятор сам исправляет такое в ардуино?
А чем вообще вообще логические операции отличаются от битовых?
Только тем, что битовые работают с каждым битом числа, а логические работают с любым числом как с однобитным.
Но в логических переменных используется всего один бит. Результат конъюнкции или дизъюнкции при работе с такими переменными приводят к одному и тому же результату вне зависимости от того, логическая это операция или битовая (все биты кроме нулевого как были, так и останутся равными 0).
Другими словами, в данном конкретном случае (пока, например, не используются отрицания) это работает. Но гарантий, что будет продолжать работать и при усложнении выражений, естественно, нет.
Не прокатывает с этой библиотекой для шаговых моторов. Она тормозит выполнение кода пока шаговик работает....
Ну не может быть, что бы у такой простой задачи не было лёгкого решения.
Может так попробовать
Неправильно библиотеку используете, думаю. Должен у неё быть и неблокирующий ход.
Может так попробовать
Ну я типа таком и писал выше. ))
Может так попробовать
Ну я типа таком и писал выше. ))
Да почините уже сервер, задолбало!!!
Ну я типа таком и писал выше. ))
Да. похоже что так.
Когда-то Alexey_Rem показал мне пример (ещё раз ему спасибо), по сути это его разновидность,
где угодно может подойти)))
честно говоря, на практике не пробовал ещё. В описании библиотеки нашёл, что команда "шагать" останавливает выполнение кода до завершения действия. Ну это видимо самая простая библиотека и пример работает по принципу "блинк", действие происходит и ладно....
добился таки я результата. Пересмотрел уроки, всеми тут так не любимого, Гайвера и нашёл пару примеров из которых вывел нужный мне. потом подработал его по примеру от ВООМ. По сути можно было добиться полного выполнения исходной задачи, но вовремя себя остановил. Пришло понимание, что получить, например, в 8 вечера 20 сигналов, это явный перебор. Пока остановился на пяти. Но количество, длительность, пауза... это всё легко меняется и уже можно подогнать на конечном изделии. Главное часть кода сформирована и удачно вписалась в исходный код и проходит "обкатку" на готовых часах.
Как в китайском боевике: главный герой пошел учится к Великому мастеру(там ему открылась истина) и потом сам сам тал Великим воином и всех победил
Офигенный сюжет! Буду к этому стремиться.
Как в китайском боевике: главный герой пошел учится к Великому мастеру(там ему открылась истина)
не, конец другой - после обучения герою открыдась Истина, что бежать побеждать никого не надо, и он предался размышлениям и созерцанию тишины, в которой можно расслышать хлопок одной ладонью...
Думаю, это никакая не "динамика". а именно что попытка мигать цифрой. Только реализованное вообще без понимания предмета.
"Думать надо меньше, а соображать больше!" (с)
Ни какой попытки мигать цифрой тут нет! Ну и само собой это не динамическая индикация.... (тут я конечно тупанул) Это просто задержка, что бы действие не выполнялось несколько раз за кротчайший промежуток времени и всё! как я выяснил, это не редко практикуется не только для часов ГРИ, но и на других видах часов и вообще при выводе на экран или сегменты.
.... потом подработал его по примеру от ВООМ. .....
прошу прощения... пример был от Дим-мычъ.