#1 2023-11-30 13:34:54

TESLA
Учасник
Зареєстрований: 2023-11-11
Повідомлень: 17

Збір інформації для своїх мелодій,активний зуммер.

Доброго дня

Прошу Вашої допомоги розібратися та зібрати інформацію для своїх мелодій по функції ((((tone)))) та зуммер.

1   Можливі програми для переконування midi для Arduino

2   Правильне підключення та команди

3   Таблиці та їх розуміння для нот



Допоможіть будь ласка зрозуміти як цим керувати..

Неактивний

#2 2023-11-30 13:41:40

TESLA
Учасник
Зареєстрований: 2023-11-11
Повідомлень: 17

Re: Збір інформації для своїх мелодій,активний зуммер.

S9d9cc83690a641baa30b32585c83a8dab.jpg

Неактивний

#3 2023-11-30 13:46:58

TESLA
Учасник
Зареєстрований: 2023-11-11
Повідомлень: 17

Re: Збір інформації для своїх мелодій,активний зуммер.

Ось сам зуммер

І підключення до плати....

На пін 8,9 або 3.

Я, так розумію якою командою користуємося, тоді буде різне підключення.

Підключення таке тільки пін 9

Остання редакція TESLA (2023-11-30 13:47:57)

Неактивний

#4 2023-11-30 13:48:09

TESLA
Учасник
Зареєстрований: 2023-11-11
Повідомлень: 17

Re: Збір інформації для своїх мелодій,активний зуммер.

podklyuchenie-zummera-k-arduino_5-1024x421.jpg

Неактивний

#5 2023-11-30 13:55:17

TESLA
Учасник
Зареєстрований: 2023-11-11
Повідомлень: 17

Re: Збір інформації для своїх мелодій,активний зуммер.

Встановив "pitches.h"

Тепер як правильно творити мелодії.....

Ось е таблиця ноти та продовження її....

Неактивний

#6 2023-11-30 13:56:19

TESLA
Учасник
Зареєстрований: 2023-11-11
Повідомлень: 17

Re: Збір інформації для своїх мелодій,активний зуммер.

IMG_20231130_124953.jpg

Неактивний

#7 2023-11-30 14:01:13

TESLA
Учасник
Зареєстрований: 2023-11-11
Повідомлень: 17

Re: Збір інформації для своїх мелодій,активний зуммер.

Наприклад, маемо  ноти.

Як їх перекласти для Ардуіно, або якийсь  конвертор midi , для готових мелодій.

По типу, скачав мелодію яку потрибно і перекодував, потім взяв скільки потрібно мелодіїї....

Неактивний

#8 2023-11-30 14:02:14

TESLA
Учасник
Зареєстрований: 2023-11-11
Повідомлень: 17

Re: Збір інформації для своїх мелодій,активний зуммер.

page1-1241px-Derzhavnijj_gmn_Ukrani_pdf.jpg

Неактивний

#9 2023-11-30 14:11:55

TESLA
Учасник
Зареєстрований: 2023-11-11
Повідомлень: 17

Re: Збір інформації для своїх мелодій,активний зуммер.

void setup() {
   pinMode(10, OUTPUT); // объявляем пин 10 как выход
}

void loop() {
   tone(10, 600);  // включаем сигнал с частотой 600 Гц
   delay(1000);     // ждем 1 секунду
   tone(10, 900);  // включаем сигнал с частотой 900 Гц
   delay(1000);     // ждем 1 секунду
   noTone(10);      // отключаем сигнал
   delay(1000);     // ждем 1 секунду
}



Написав грубо так, пін моде 9 оутпут
Треба писати
Тоне (потім номер піні (9)) 9,600(включаем сигнал з частотою 600Гц)

Зрозумів правильно???

Потім делай і но тоне, грубо.....

Як завантажити необхідну мелодію??

Неактивний

#10 2023-11-30 14:15:01

TESLA
Учасник
Зареєстрований: 2023-11-11
Повідомлень: 17

Re: Збір інформації для своїх мелодій,активний зуммер.

Но тоне не проходе, пищить після програвання мелодії.

Виключів поки пін моде 9,інпут

Неактивний

#11 2023-11-30 16:42:11

Honey
Учасник
З Київ
Зареєстрований: 2020-09-26
Повідомлень: 414

Re: Збір інформації для своїх мелодій,активний зуммер.

В чому Ваше запитання? Перекласти нотний запис в частоти і тривалості? Тоді гугліть по ключовим словам "нотний запис", "музична нотація".
Але враховуйте, що ардуіно-пищалка за допомогою tone() може відтворювати одночасно лише одну ноту, тому там, де в записі одночасно має звучати кілька нот, використовуйте найвищу (з найбільшою частотою).

Неактивний

#12 2023-11-30 19:19:08

TESLA
Учасник
Зареєстрований: 2023-11-11
Повідомлень: 17

Re: Збір інформації для своїх мелодій,активний зуммер.

Дякую, зараз пошукаю

Неактивний

#13 2023-11-30 19:25:24

TESLA
Учасник
Зареєстрований: 2023-11-11
Повідомлень: 17

Re: Збір інформації для своїх мелодій,активний зуммер.

Ще питання в тому як, по цій схемі підключення та командам pinmode, tone, правильно вказати довжину сигналу.
Маю на увазі з чого складається скетч.

Та як прив'язати різні звуки до функцій

Наприклад, температура піднялась вище вказаного, програе мелодія ошибка

Неактивний

#14 2023-11-30 19:48:40

TESLA
Учасник
Зареєстрований: 2023-11-11
Повідомлень: 17

Re: Збір інформації для своїх мелодій,активний зуммер.

f655d5055c794e7166a0f60a61ee8bfd.png

Неактивний

#15 2023-11-30 19:49:58

TESLA
Учасник
Зареєстрований: 2023-11-11
Повідомлень: 17

Re: Збір інформації для своїх мелодій,активний зуммер.

Знайшов таку таблицю

Зможете надати приклад, як користуючись нею можливо створити мелодії

Неактивний

#16 2023-11-30 20:10:26

Batu
Учасник
З Харьков
Зареєстрований: 2017-11-08
Повідомлень: 301

Re: Збір інформації для своїх мелодій,активний зуммер.

Есть профессиональные студии на дестопе. https://filmora.wondershare.com.ru/best-audio-recording-software.html
Могут все. И хранить и редактировать и многодорожечные и с микрофона и линейный вход-выход и с нот и на ноты.

Неактивний

#17 2023-11-30 20:18:48

Honey
Учасник
З Київ
Зареєстрований: 2020-09-26
Повідомлень: 414

Re: Збір інформації для своїх мелодій,активний зуммер.

Спочатку вчитесь, як прочитати ноти, ось знайшов такий матеріал: Як навчитися читати ноти.
Потім перетворюєте кожну ноту на послідовність команд за допомогою таблички, яку Ви знайшли.
Наприклад програти ноту Ля (частота 440Гц) на протязі 1/4 секунди (250мс):
tone(10, 440);
delay(250);
noTone(10);
Коротеньку мелодію можна вставити в тіло функції:

void melody1() {
 tone(...);
 delay(...);
 ...
 tone(...);
 delay(...);
 noTone(...);
}

І потім викликати функцію коли потрібно.
melody1();

Неактивний

#18 2023-11-30 20:56:50

TESLA
Учасник
Зареєстрований: 2023-11-11
Повідомлень: 17

Re: Збір інформації для своїх мелодій,активний зуммер.

Дякую
Буду вчитися

Неактивний

#19 2023-11-30 21:41:47

TESLA
Учасник
Зареєстрований: 2023-11-11
Повідомлень: 17

Re: Збір інформації для своїх мелодій,активний зуммер.

Щоб доповнити тему, знайшов конвертер любих міді в код.

Тепер можливо зробити любі звуки для своїх проектів smile

Ось ссилка
https://www.extramaster.net/tools/midiToArduino/.content

Неактивний

#20 2023-11-30 21:52:49

TESLA
Учасник
Зареєстрований: 2023-11-11
Повідомлень: 17

Re: Збір інформації для своїх мелодій,активний зуммер.

Ось великий збірник звуків для різних проектів cool

https://wav-library.net/sounds-noises

Неактивний

#21 2023-12-01 18:25:54

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 137

Re: Збір інформації для своїх мелодій,активний зуммер.

Існують різні методи. Можна відтворювати PCM-кодований сигнал за допомогою ШІМ або зовнішнього DAC. Але при розрядності 8 біт і частоті дискретизації 8 кГц 1 секунда звуку займатиме 8 кб. На Atmega328p без зовнішньої EEPROM влізе не більше 4 секунд, а там ще код і бутлоадер. Якщо знизити розрядність до 4 біт, то влізе вдвічі більше, але якість буде гіршою.

Одноголосну мелодію можна відтворити "цифровим" методом, генеруючи прямокутний сигнал. tone()/delay() - це найпростіший спосіб.

#define PIN_BUZZER  3

void setup() {
  pinMode(PIN_BUZZER, OUTPUT);
}

struct note {
  uint16_t frequency;
  uint16_t duration;
};

static const PROGMEM note notes[] = {
  { 293, 240 },
  { 329, 240 },
  { 349, 240 },
  { 392, 240 },
  { 329, 480 },
  { 261, 240 },
  { 293, 720 }
};

void loop() {
  for (auto *p = notes; p < notes + sizeof(notes)/sizeof(*notes); ++p) {
    note note;
    memcpy_P(&note, p, sizeof(note));
    if (note.frequency) {
      tone(PIN_BUZZER, note.frequency);
    } else {
      noTone(PIN_BUZZER);
    }
    delay(note.duration);
  }
  noTone(PIN_BUZZER);

  for (;;) {}
}

Порахувати частоту ноти можна за формулою f=F*2^(n/12), де F - частота базової ноти, n - кількість напівтонів від базової ноти. Додатні значення - вверх, від'ємні - вниз. Зазвичай за базову ноту беруть "ля" першої октави, і її частоту - 440 Гц, але це не обовʼязково.

Але в метода з tone()/delay() є недоліки. По-перше, delay() виконується процесором, і в цей час він не може робити нічого іншого.
По-друге, tone() обчислює дільник таймера по частоті в рантаймі, що не дуже ефективно. Можна розрахувати дільники заздалегідь при компіляції, і в рантаймі завантажувати їх безпосередньо в регістр таймера. Тим більше для низьких нот похибка в половину герца вже становить десятки центів і відчутна вухом.

Можна поєднати відтворення окремих нот з ШІМ і отримати щось схоже на поліфонію. Для апаратного ШІМ в ардуіно скоріш за все доведеться використовувати TIM1 або TIM2, тому що TIM0 ардуіно використовує для своїх потреб.
Вибір оптимального метода залежить від конкретних вимог і можливостей заліза.

UPD: перемикати пін в OUTPUT не потрібно, tone() це робить сама: Tone.cpp:255

Остання редакція dimich (2023-12-02 12:21:13)

Неактивний

#22 2023-12-17 18:43:42

PolArt
Учасник
Зареєстрований: 2021-11-28
Повідомлень: 35

Re: Збір інформації для своїх мелодій,активний зуммер.

Як на активному зуммері можна отримати різні тони (ноти)?

Неактивний

#23 2023-12-19 01:06:05

dimich
Учасник
Зареєстрований: 2023-12-01
Повідомлень: 137

Re: Збір інформації для своїх мелодій,активний зуммер.

PolArt пише:

Як на активному зуммері можна отримати різні тони (ноти)?

Хе, слушне зауваження. Мені спочатку здалося, що під активним мається на увазі - з вбудованим буферним каскадом.
Якщо ж під активним мається на увазі - з автогенерацією (а судячи по маркуванню на фото, так і є), то звісно що ніяк. Хіба що змінюючи напругу живлення можна отримати якусь непередбачувану невеличку девіацію частоти  hmm

Неактивний

#24 2024-01-03 15:44:08

Гiсть
Гість

Re: Збір інформації для своїх мелодій,активний зуммер.

TESLA пише:

Щоб доповнити тему, знайшов конвертер любих міді в код.

Тепер можливо зробити любі звуки для своїх проектів smile

Ось ссилка
https://www.extramaster.net/tools/midiToArduino/.content

// Credit:
// Midi to Arduino Converter
//     - Andy Tran (extramaster), 2015
// https://www.extramaster.net/tools/midiToArduino/
//
// Process:
// Midi -> Midi tracks -> Note mappings -> Frequency
//
// CC0

// Set this to be the pin that your buzzer resides in. (Note that you can only have one buzzer actively using the PWM signal at a time).
int tonePin = 11;
void setup() {

}

void midi() {

    tone(tonePin, 698, 315.340825);
    delay(350.378694444);
    delay(208.333277778);
    tone(tonePin, 698, 238.6363);
    delay(265.151444444);
    delay(165.719652778);
    tone(tonePin, 622, 63.9204375);
    delay(71.0227083333);
    delay(89.9620972222);
    tone(tonePin, 698, 55.3977125);
    delay(61.5530138889);
    delay(123.106027778);
    tone(tonePin, 783, 59.659075);
    delay(66.2878611111);
    delay(241.477208333);
    tone(tonePin, 523, 80.9658875);
    delay(89.9620972222);
    delay(241.477208333);
    tone(tonePin, 622, 68.1818);
    delay(75.7575555556);
    delay(236.742361111);
    tone(tonePin, 698, 340.909);
    delay(378.787777778);
    delay(184.659041667);
    tone(tonePin, 698, 204.5454);
    delay(227.272666667);
    delay(175.189347222);
    tone(tonePin, 622, 68.1818);
    delay(75.7575555556);
    delay(99.4317916667);
    tone(tonePin, 698, 63.9204375);
    delay(71.0227083333);
    delay(104.166638889);
    tone(tonePin, 783, 68.1818);
    delay(75.7575555556);
    delay(232.007513889);
    tone(tonePin, 523, 72.4431625);
    delay(80.4924027778);
    delay(246.212055556);
    tone(tonePin, 622, 76.704525);
    delay(85.22725);
    delay(250.946902778);
    tone(tonePin, 932, 59.659075);
    delay(66.2878611111);
    delay(127.840875);
    tone(tonePin, 783, 85.22725);
    delay(94.6969444444);
    delay(189.393888889);
    tone(tonePin, 698, 68.1818);
    delay(75.7575555556);
    delay(236.742361111);
    tone(tonePin, 622, 59.659075);
    delay(66.2878611111);
    delay(246.212055556);
    tone(tonePin, 932, 80.9658875);
    delay(89.9620972222);
    delay(118.371180556);
    tone(tonePin, 783, 72.4431625);
    delay(80.4924027778);
    delay(189.393888889);
    tone(tonePin, 698, 68.1818);
    delay(75.7575555556);
    delay(213.068125);
    tone(tonePin, 622, 59.659075);
    delay(66.2878611111);
    delay(246.212055556);
    tone(tonePin, 698, 532.6703125);
    delay(591.855902778);

}

void loop() {
    // Play midi
    midi();
}

#25 2024-01-03 18:24:00

Васятко
Гість

Re: Збір інформації для своїх мелодій,активний зуммер.

Гiсть пише:
    delay(350.378694444);
 

Да ... уж

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму