РЕШЕНО Зуммер на iskra js

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем _FoX_, 9 мар 2020.

  1. _FoX_

    _FoX_ Нуб

    Вот на днях хотел сделать проект, но не хватает одной изюминки. Хотел, чтобы зуммер проигрывал какую-нибудь простую мелодию, но не знаю как это сделать на JavaScript. Помогите пожалуйста!
     
  2. Vitaliy-Sh

    Vitaliy-Sh Нерд

    Эксперимент 2. Восьмибитный аудиоплеер - http://wiki.amperka.ru/iot

    И вот прям пример http://wiki.amperka.ru/js:ringtone

    Мелодии можно в инете найти, видел сборник на 10000 мелодий в формате RTTTL в файлах.
     
    Последнее редактирование: 10 мар 2020
    _FoX_ нравится это.
  3. NikitOS

    NikitOS Король шутов Администратор

    Ну или открываем тему: http://forum.amperka.ru/threads/Мелодии-для-пьезопищалки.272/
    Смотрим, как люди делали на Arduino, затем делаем под JS.
    У Arduino функция tone берет три параметра: pin, frequency, duration, где pin — пин, к которому подключен зуммер, frequency — частота в герцах, а duration — время звучания в миллисекундах.
    Что у JS? В библиотеке @amperka/buzzer есть несколько методов, которые помогут сделать подобное: frequency() — та самая частота в герцах, beep(onTime [,offTime]) — функция заставляет баззер издавать периодический прерывистый звуковой сигнал с указанным временем включенного и выключенного состояния, в секундах. Опускаем второй параметр — получаем одиночный сигнал.

    Тогда, функция tone(9, 700, 300); в JS будет выглядеть так:
    Код (Text):
    myBuzzer.frequency(700);
    myBuzzer.beep(300/1000);  //У Arduino миллисекунды, а тут секунды, не забываем.
    Ну или делаем дуиновскую функцию:
    Код (Javascript):
    function tone(obj, frequency, frequency) {
        obj.frequency(frequency);
        obj.beep(duration/1000);
    }
    А потом используем ее как дуиновскую, только вместо пина, первым параметром указываем объект Buzzer, тобишь если библиотеку подключили так:
    Код (Javascript):
     var myBuzzer = require('@amperka/buzzer').connect(P6);
    То вызываем так:
    Код (Javascript):
    tone(myBuzzer, 700, 300);  // Все равно, что tone(6, 700, 300); в Arduino
     
    _FoX_ нравится это.
  4. _FoX_

    _FoX_ Нуб

    Спасибо большое!