Jump to content

Arduino не читает часть кода написанную в setup


crusherhead
 Share

Recommended Posts

Пробую писать код управляющий Buzzer(ом). Столкнулся с таким явлением, которое не могу объяснить сам. 

Контроллер перестал читать часть кода, которая в setup написана, а сразу переходит к выполнению той части, которая написана в loop. 

Кто может это объяснить ? Почему так происходит ?

IMG-20201122-WA0000.jpeg

Link to comment
Share on other sites

Setup  выполняется полностью. Как только начинает играть первый tone(5000), программа не ждёт окончания тона, а продолжает выполняться. Setup тут же заканчивается, и через несколько микросекунд начинается loop. Тон тут же меняется на другой. Вы просто не успеваете услышать первый тон, ему отводится очень мало времени.

Edited by Yurkin2015
Link to comment
Share on other sites

3 часа назад, Yurkin2015 сказал:

Setup  выполняется полностью. Как только начинает играть первый tone(5000), программа не ждёт окончания тона, а продолжает выполняться. Setup тут же заканчивается, и через несколько микросекунд начинается loop. Тон тут же меняется на другой. Вы просто не успеваете услышать первый тон, ему отводится очень мало времени.

Подождите, а как setup может перескакивать на loop , когда в условии tone  прописано, что при включении buzzer должен издавать звук 0.5 секунду? (500)

 

При том, что я этот параметр меняю , например на 10 секунд , и это ничего не меняет. Часть кода просто не выполняется. 

Edited by crusherhead
Link to comment
Share on other sites

Химические элементы FANSO EVE Energy для питания беспроводных датчиков
Литиевые батарейки различного химического состава и разных типоразмеров широко используются в беспроводных датчиках систем сбора данных, промышленной автоматики и систем умного дома. И в любом из многочисленных вариантов использования беспроводных датчиков основными требованиями к их работе являются автономность и бесперебойность функционирования.
Главным условием, гарантирующим такую работу, является правильный выбор элемента питания для датчика.

Подробнее >>

Сравнительное тестирование алкалиновых батареек POWER FLASH 

В потребительском и промышленном сегментах российского рынка химических источников тока имеется множество щелочных (алкалиновых) батареек различных производителей и ценовых категорий. Но велика ли разница в их качестве?

Провели небольшой сравнительный тест, чтобы понять, могут ли источники тока POWER FLASH эффективно заменить продукцию таких известных производителей, как Duracell и GP, вычислить, чему равна стоимость одного часа работы батареек, а также сравнить полученные данные со значениями, указанными в технической документации.  Подробнее>>

1 hour ago, crusherhead said:

как setup может перескакивать на loop

Запросто перескакивает. Setup запустил звук и не ждёт его окончания, а сразу выходит, и программа попадает в loop. Если не трогать tone(), то этот звук закончится через 500мс сам по себе. Но в loop первым делом этот тон изменяется, тем самым выключая предыдущий звук.

Link to comment
Share on other sites

Новые источники питания на DIN-рейку класса High End от MORNSUN
Компания MORNSUN разработала новую линейку ИП с креплением на DIN-рейку класса High End. Линейка состоит из двух семейств однофазных ИП, различающихся функционалом (LIMF и LIHF) и одного семейства на трехфазное напряжение (LITF). У всех этих ИП печатная плата с компонентами имеет лаковое покрытие. Продукция работоспособна в температурном диапазоне -40...85ºС (для однофазных) и -30...70ºС (для трехфазных). Кроме того, однофазные ИП соответствуют требованиям ATEX и могут использоваться во взрывоопасных зонах. Семейство LIMF имеет стандартный функционал (ККМ, сухой контакт реле, 150% перегрузочная способность), а семейство LIHF – максимальный функционал с доп. функциями селективной защиты (SFB) и возможностью дистанционного управления (может заменить серию QUINT от Phoenix Contact).

Подробнее >>

4 часа назад, Yurkin2015 сказал:

Запросто перескакивает. Setup запустил звук и не ждёт его окончания, а сразу выходит, и программа попадает в loop. Если не трогать tone(), то этот звук закончится через 500мс сам по себе. Но в loop первым делом этот тон изменяется, тем самым выключая предыдущий звук.

Ага, т.е. вы хотите сказать, что начинается звук как бы с setup , но при считывании , звук запустился, но его как бы по энeрции гасит то что в loop написано ? 

Именно по этому в setup необходимо прописать noTone   и delay ? Что бы код в setup не был размыт своеобразной энерцией loop ?

Link to comment
Share on other sites

Энерция - плохое слово.

Функция tone() только включает звук, как выключатель света на кухне: Вы вошли на кухню, щёлкнули выключателем - свет включился, и Вы пошли дальше жарить картошку, например, Вы же не стоите у выключателя, чтобы свет горел?

Тоже самое и в скетче. При выполнении tone() включаются два таймера: один задаёт частоту звука, другой считает время длительности звука. То есть, функция tone() закончилась, программа пошла дальше и продолжает выполнять другие действия, а звук играет сам по себе. Как только таймер длительности закончил работу, он и выключит звук сам.

Энерции loop не существует. Setup и loop - это просто части кода программы.

Сначала выполняются все действия в setup один раз. Потом сразу же переходим в loop и выполняем код, записаный в loop. Дошли до конца loop - прыгаем на начало loop и повторяем эти действия по кругу.

В каком-то месте программы, setup или loop, без разницы, включили звук - и он играет. Звук останавливается, если его время истекло, или включили другой звук, который перебивает первый, или включили noТone().

Поэтому, если хотите послушать звук, надо добавить delay() после tone().

Link to comment
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Сообщения

    • Победил.  ИР23 приживил.  Спасибо всем за советы.  Поехало не сразу, но разобрался
    • Есть  в наличии 4 разрядный 7 сегментный индикатор с общим катодом. Привязку к Ардуино уже освоил, выод чисел облегченным путем через библиотеку SevSeg тоже освоил. Но куда применить оказалось проблемой. Просто будет валяться - не дело. Вот и решил сделать из него самостоятельный тахометр на 4 разряда ессно. Применить много куда можно. Даже обороты двигателя в авто проверить. Так вот.... Этот индикатор идет самостоятельно, а не в виде модуля, подключаемого к Ардуино четырьмя пинами. В примерах, когда изучал, увидел пример обвязки . Вот первый вопрос - надо ли это на самом деле и для чего? На двух приведенных в примере картинка, находящихся рядом, я вижу разногласия. А именно то, что в одном случае резисторы подключены к анодам на каждый сегмент,а во втором к пинам общих точек разряда. Я считаю,  что второй вариант не верный. Нужно подключать резисторы к каждому сегменту свой. Я бы и оставил за основу первую картинку. Вторую привожу ради того, чтобы показать какие транзисторы идут в схеме. Правильно ли они указаны? Ну и достаточно ли указанного на базу резистора 1к ? Питание будет через стабилизатор 5В. Конечно в Ардуинке есть возможность "подтянуть резисторы " к анодам. Но лучше поставить реальные. Посмотрел транзисторы BC547 можно заменить 3102 . У меня есть 3102ГМ.
    • Судя по с конструктивом СВЧ у вас не очень, поэтому ... купите нормальную готовую детекторную головку.
    • Я нормально обратился в теме с проблемой , меня сразу послали , с обвинениями в покупке ворованного. Проект нужно лицензировать , есть различные лицензии с различными запретами и разрешениями . Плохо конечно что в России это всё плохо соблюдается но всё таки . У Вас Виндовс и программы лецензионные ? Вот так и у всех.
    • Ну, понеслась!... С8 надо увеличить раз в 10. Маловато 2200. Сигнальный - 2 проводника Л и П в одной оплётке - разделение каналов похерено. И т.д., и т.п.
    • Радиатор - никакой. Вдоль тонкого дюраля тепло очень плохо идёт.
×
×
  • Create New...