Pico Eğitim Kartı için buzzer nota çalma işlevselliği implementasyonu.
Ayrıntılar...
#include "pico_training_board.h"
#include <stdlib.h>
|
| void | init_buzzer_pwm (void) |
| | Buzzer için özel olarak PWM'i başlatır.
|
| |
| void | set_pwm_frequency (uint slice_num, float frequency) |
| | Belirtilen dilim için PWM frekansını ayarlar.
|
| |
| double | get_frequency (const char *note, int octave) |
| | Adı ve oktavı verilen bir müzikal notanın frekansını hesaplar.
|
| |
| void | play_note (float frequency, int duration_ms) |
| | Belirtilen frekans ve sürede buzzer'da bir nota çalar.
|
| |
| void | play_notes (const char *notes[][2], int num_notes, int duration) |
| | Bir dizi müzikal notanın çalınmasını sağlar.
|
| |
Pico Eğitim Kartı için buzzer nota çalma işlevselliği implementasyonu.
- Yazar
- Hakan KILIÇASLAN
- Tarih
- 2024-12-4 Bu dosya, Pico Eğitim Kartı için buzzer ile ilgili fonksiyonların implementasyonunu, nota frekans hesaplamalarını ve ses üretimi için PWM kontrolünü içerir.
- Ayrıca Bakınız
- Buzzer
◆ get_frequency()
| double get_frequency |
( |
const char * |
note, |
|
|
int |
octave |
|
) |
| |
Adı ve oktavı verilen bir müzikal notanın frekansını hesaplar.
Bu fonksiyon, önceden tanımlanmış nota frekansları listesinden temel frekansını bularak ve belirtilen oktava göre ayarlayarak, belirtilen müzikal notanın frekansını belirler.
- Parametreler
-
| note | Müzikal notayı temsil eden dize (örn. "A", "C#", "G") |
| octave | Oktav numarasını temsil eden tamsayı |
- Döndürdüğü değer
- Belirtilen oktavdaki notanın frekansı
- Not
- Referans oktav 4'tür ve diğer oktavlar için frekanslar şu formül kullanılarak hesaplanır: f = f_temel * 2^(oktav_farkı)
◆ init_buzzer_pwm()
| void init_buzzer_pwm |
( |
void |
| ) |
|
Buzzer için özel olarak PWM'i başlatır.
Bu fonksiyon, buzzer'ın sessiz bir durumda başlamasını sağlamak için başlangıç frekansı ve sıfır görev döngüsü ile buzzer için PWM pinini ayarlar.
- Not
- Bu fonksiyon, herhangi bir ses üretme girişiminden önce sistem başlatılırken bir kez çağrılmalıdır.
◆ play_note()
| void play_note |
( |
float |
frequency, |
|
|
int |
duration_ms |
|
) |
| |
Belirtilen frekans ve sürede buzzer'da bir nota çalar.
Bu fonksiyon, PWM kullanarak bir nota çalar ve nota çalma işlemi tamamlandıktan sonra uygun temizleme işlemlerini gerçekleştirir. Parametre doğrulaması içerir ve notalar arası temiz geçişleri sağlar.
- Parametreler
-
| frequency | Çalınacak notanın Hertz cinsinden frekansı |
| duration_ms | Notanın çalınması gereken süre (milisaniye cinsinden) |
- Not
- Fonksiyon, notaların birbirine karışmasını önlemek ve temiz ses üretimini sağlamak için her notadan sonra küçük bir gecikme içerir
◆ play_notes()
| void play_notes |
( |
const char * |
notes[][2], |
|
|
int |
num_notes, |
|
|
int |
duration |
|
) |
| |
Bir dizi müzikal notanın çalınmasını sağlar.
Bu fonksiyon, bir dizi notanın üzerinden yineleyerek her bir nota için frekansı hesaplar ve belirtilen sürede çalar.
- Parametreler
-
| notes | Her elemanı {nota, oktav} olan iki boyutlu dize dizisi. Örn. {"C","4"}, {"D#","4"} |
| num_notes | Dizideki nota sayısı |
| duration | Her bir notanın çalma süresi (ms) |
- Not
- Nota adı karşılaştırması önekle yapılır; diyez notasyonu kullanın ("Db" yerine "C#").
static const char *MELODY[][2] = {{"C","4"},{"E","4"},{"G","4"}};
play_notes(MELODY, (
int)(
sizeof(MELODY)/
sizeof(MELODY[0])), 200);
void play_notes(const char *notes[][2], int num_notes, int duration)
Bir dizi müzikal notanın çalınmasını sağlar.
Definition buzzer.c:190
◆ set_pwm_frequency()
| void set_pwm_frequency |
( |
uint |
slice_num, |
|
|
float |
frequency |
|
) |
| |
Belirtilen dilim için PWM frekansını ayarlar.
Bu fonksiyon, pico_training_board.h'den önceden tanımlanmış sabitleri kullanarak istenen frekans için PWM dilimini yapılandırır. İstenen frekansa ulaşmak için uygun bölücü değerlerini hesaplar.
- Parametreler
-
| slice_num | Yapılandırılacak PWM dilim numarası |
| frequency | İstenen frekans (Hz cinsinden) |
- Not
- Fonksiyon, istenen frekansa en yakın eşleşmeyi elde etmek için bölücü değerlerini otomatik olarak ayarlar
◆ note_frequencies
İlk değer:= {
{"C4", 261.63},
{"C#4/Db4", 277.18},
{"D4", 293.66},
{"D#4/Eb4", 311.13},
{"E4", 329.63},
{"F4", 349.23},
{"F#4/Gb4", 369.99},
{"G4", 392.00},
{"G#4/Ab4", 415.30},
{"A4", 440.00},
{"A#4/Bb4", 466.16},
{"B4", 493.88}}
- oktavdaki müzikal notalar ve karşılık gelen frekanslarının dizisi
Bu tablo, frekans hesaplamaları için referans oktav olarak kullanılan dördüncü oktavdaki müzikal notalar için standart frekansları içerir.