Перейти к содержанию

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


Рекомендуемые сообщения

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

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

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

IMG-20201122-WA0000.jpeg

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

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

Изменено пользователем Yurkin2015
Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

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

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

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

 

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

Изменено пользователем crusherhead
Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

1 hour ago, crusherhead said:

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...