Jump to content
crusherhead

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

Recommended Posts

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

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

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

IMG-20201122-WA0000.jpeg

Share this post


Link to post
Share on other sites

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

Edited by Yurkin2015

Share this post


Link to post
Share on other sites
3 часа назад, Yurkin2015 сказал:

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

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

 

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

Edited by crusherhead

Share this post


Link to post
Share on other sites

Приглашаем на вебинар «Инновационные технологии Analog Devices в области управления питанием» (11.08.2021)

В программе вебинара технология Silent Switcher® - сочетание высокого КПД и сверхмалого уровня ЭМИ, технология uModule® - высокоинтегрированные решения для источников питания, микро- и нанопотребляющие DC/DC-преобразователи, решения для резервного питания, цифровое управление системой питания (PSM), безоптронные изолированные обратноходовые преобразователи. В практической части вебинара будут продемонстрированы примеры работы с инструментами Analog Devices для проектирования источников питания.
Подробнее

Попробуй написать в setup так:

Цитата

tone(3,5000);

delay(500);

notone();

 


Пока ты жив, надежда есть.

Share this post


Link to post
Share on other sites

Концевые микропереключатели KLS – простая и надежная коммутация по оптимальной цене

На складе Компэл широко представлены нажимные переключатели от KLS в стандартных и миниатюрных корпусах с различными типами актуаторов. Микропереключатели серий KLS7-KW10 и KLS7-KW4-3Z соответствуют строгим стандартам электрической безопасности и эффективности, что гарантирует надежную коммутацию цепей управления.

Подробнее

1 hour ago, crusherhead said:

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

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

Share this post


Link to post
Share on other sites

Датчики STMicroelectronics – новые возможности систем умного дома ST

Согласно прогнозам аналитиков, в ближайшие пару лет будет наблюдаться заметный рост рынка датчиков движения и положения для умного дома. Компания STMicroelectronics предлагает одну из самых широких линеек MEMS-датчиков, включая акселерометры, гироскопы, цифровые компасы, модули IMU, микрофоны и датчики параметров окружающей среды. Рассмотрим применение датчиков и тенденции их развития.
Подробнее

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

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

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

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

Share this post


Link to post
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
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...

×
×
  • Create New...