Разная сигнализация при увеличении или уменьшении высоты
- Войдите на сайт для отправки комментариев
Пнд, 31/05/2021 - 01:35
Здравствуйте!
Подскажите, как реализовать такое дело: есть датчик bmp280 и пищалка с 3мя контактами - VCC, S, GND.
Все это подключено к Arduino Pro Mini 3.3V, питается от батареи и отлично работает. По отдельности :)
Нужно все это связать в кучу и реализовать две штуки:
1 - Датчик отдает значение высоты. Если это значение увеличивается - он пищит одними звуками, если уменьшается - другими.
2 - В остальное время - пищалка должна просто молчать.
Основная проблема - я даже не понимаю как спросить у гугла про такое.
Подскажите пожалуйста! Заранее большое спасибо!
Считываете значение высоты, запоминаете. Потом снова считываете - и сравниваете с запомненным. Если новое больше старого - высота растет, играем одну мелодию. Если новое меньше - высота падает, играем другую мелодию. После этого запоминаем текущее значение и цикл повторяется.
Вся программа - один цикл и два оператора if
параплан?
Считываете значение высоты, запоминаете. Потом снова считываете - и сравниваете с запомненным. Если новое больше старого - высота растет, играем одну мелодию. Если новое меньше - высота падает, играем другую мелодию. После этого запоминаем текущее значение и цикл повторяется.
Вся программа - один цикл и два оператора if
Спасибо огромное! Есть ещё проблема. Если с 3 вывода ардуинки я назначаю его выходом, то пищалка начинает орать, независимо от того, использую ли я функцию tone().
Существует способ открыть этот вывод, покричать звук и потом снова закрыть наглухо, чтобы пищалка не орала?
параплан?
Так точно! Для параплана это дело, чтобы дядя понимал набирает высоту или снижается.
Есть ещё проблема. Если с 3 вывода ардуинки я назначаю его выходом, то пищалка начинает орать, независимо от того, использую ли я функцию tone().
покажите код
параплан
можно у Андрея Лысенко (по ссылке что приводил) спросить, что использует, у него всё по фэншую и время автономной работы очень приличное, точно более 8 часов
Есть ещё проблема. Если с 3 вывода ардуинки я назначаю его выходом, то пищалка начинает орать, независимо от того, использую ли я функцию tone().
А буззер, случайно, не активный ли? Проверить просто - если при подаче напряжения напрямую на контакты пищалки она пищит, значит активная. Ей никакой tone() не нужен, но и частотой звука управлять не получится
А буззер, случайно, не активный ли? Проверить просто - если при подаче напряжения напрямую на контакты пищалки она пищит, значит активная. Ей никакой tone() не нужен, но и частотой звука управлять не получится
Отнюдь.
Если запитать активный буззер от tone, можно подобрать очень интересные звуки.
А буззер, случайно, не активный ли? Проверить просто - если при подаче напряжения напрямую на контакты пищалки она пищит, значит активная. Ей никакой tone() не нужен, но и частотой звука управлять не получится
Отнюдь.
Если запитать активный буззер от tone, можно подобрать очень интересные звуки.
Во, блин. Никогда такое в голову не приходило. А действительно можно получить что-то интересное или просто необычные?
Частотная модуляция ))) Да, это будет довольно необычно
Необычно, но слабоуправляемо, поэтому неинтересно. Но с ума посводить какого-нибудь обалдуя-студента - самое то.
Во, блин. Никогда такое в голову не приходило. А действительно можно получить что-то интересное или просто необычные?
Честно говоря, скорее - необычные.
Но кому-то может показаться и интересными.
Кстати, на мой взгляд, у активной пищалки получается довольно интересный короткий звук, если подать на нее питание на 5-10 мс.
Ну почему же слабоуправляемое: управляется частотой, скважностью, а также функцией изменения частоты от времени.
Есть ещё проблема. Если с 3 вывода ардуинки я назначаю его выходом, то пищалка начинает орать, независимо от того, использую ли я функцию tone().
покажите код
Вот если просто даже так сделать, то спикер пищит не переставая:
Если даже использовать функцию tone() или функции analogWrite(pin, value) для управления ШИМ, то после выполнения всех этих функций писк продолжается.
Если убрать из кода pinMode(buzzer, OUTPUT); - он перестает постоянно пищать.
Как я понимаю, он не пищит, когда вывод 3 внутри контроллера закрывается резистором. Возможно такое делать каждый раз при использовании спикера, чтобы он пищал только тогда когда нужно?
Спикер вот такой -
Ну почему же слабоуправляемое: управляется частотой, скважностью, а также функцией изменения частоты от времени.
Хорошо, малопредсказуемое. Какой у неё звук на выходе будет - зависит от десятка факторов, но не от пользователя.
Вот если просто даже так сделать, то спикер пищит не переставая:
Если даже использовать функцию tone() или функции analogWrite(pin, value) для управления ШИМ, то после выполнения всех этих функций писк продолжается.
Если убрать из кода pinMode(buzzer, OUTPUT); - он перестает постоянно пищать.
Как я понимаю, он не пищит, когда вывод 3 внутри контроллера закрывается резистором. Возможно такое делать каждый раз при использовании спикера, чтобы он пищал только тогда когда нужно?
сразу после
pinMode(buzzer, OUTPUT);
вставьте
digitalWrite(buzzer, HIGH);
Хорошо, малопредсказуемое. Какой у неё звук на выходе будет - зависит от десятка факторов, но не от пользователя.
Этот фактор всего один и имя ему - программист.
А от пользователя в любой программе мало что зависит.
Как пожелаете. В бессмысленный спор о неизвестно чем вступать желания не имею. Мой экземпляр плавает по звуку даже просто при замкнутом на питание входе.
Признаю свою неправоту: от двух факторов - экземпляра буззера и программиста.
Вот если просто даже так сделать, то спикер пищит не переставая:
Если даже использовать функцию tone() или функции analogWrite(pin, value) для управления ШИМ, то после выполнения всех этих функций писк продолжается.
Если убрать из кода pinMode(buzzer, OUTPUT); - он перестает постоянно пищать.
Как я понимаю, он не пищит, когда вывод 3 внутри контроллера закрывается резистором. Возможно такое делать каждый раз при использовании спикера, чтобы он пищал только тогда когда нужно?
сразу после
pinMode(buzzer, OUTPUT);
вставьте
digitalWrite(buzzer, HIGH);
Это не поменяло ничего, если я пишу
То звук с частотой 6500 пищит 500 мс, а потом 9 секунд спикер просто орет одним звуком и так по кругу.
Спикер подключен таким образом: VCC - питания от литиевой батареи, S - 3 пин ардуины, GND - земля.
От этой же батареи через вход RAW питается и ардуина
Вот что больше всего раздражает, когда вместо того, чтобы поблагодарить за совет, мигом изменяют условия задачи.
В исходнике, опубликованном в посте №13, предложенная мной строчка решает проблему?
Через 500мс после tone() ставьте HIGH на выходе. Управление-то инверсное.
Вот что больше всего раздражает, когда вместо того, чтобы поблагодарить за совет, мигом изменяют условия задачи.
В исходнике, опубликованном в посте №13, предложенная мной строчка решает проблему?
Прошу прощения, я не хотел никого обидеть! Я вам очень благодарен, после работы все проверю и отпишусь.
После работы проверю, спасибо!