Pico Eğitim Kartı
 
Yüklüyor...
Arıyor...
Eşleşme Yok
buzzer.c Dosya Referansı

Pico Eğitim Kartı için buzzer nota çalma işlevselliği implementasyonu. Ayrıntılar...

#include "pico_training_board.h"
#include <stdlib.h>
buzzer.c için içerme bağımlılık grafiği:

Veri Yapıları

struct  NoteFrequency
 Müzikal nota bilgilerini saklayan yapı Ayrıntılar...
 

Fonksiyonlar

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.
 

Değişkenler

static const NoteFrequency note_frequencies []
 
  1. oktavdaki müzikal notalar ve karşılık gelen frekanslarının dizisi

 

Ayrıntılı tanımlama

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

Fonksiyon Dokümantasyonu

◆ 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
noteMüzikal notayı temsil eden dize (örn. "A", "C#", "G")
octaveOktav 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ı)
Bu fonksiyon için çağırılma şeması:

◆ 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.
Bu fonksiyon için çağırılma şeması:
Bu fonksiyon için çağırılma şeması:

◆ 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_msNotanı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
Bu fonksiyon için çağırılma şeması:
Bu fonksiyon için çağırılma şeması:

◆ 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
notesHer elemanı {nota, oktav} olan iki boyutlu dize dizisi. Örn. {"C","4"}, {"D#","4"}
num_notesDizideki nota sayısı
durationHer 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
Bu fonksiyon için çağırılma şeması:
Bu fonksiyon için çağırılma şeması:

◆ 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_numYapı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
Bu fonksiyon için çağırılma şeması:

Değişken Dokümantasyonu

◆ note_frequencies

const NoteFrequency note_frequencies[]
static
İ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}}

  1. 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.