#102 Buzzer Brick
Overview
圧電ブザーを使ったBrickです。
Connecting
Schematic
Sample Code
PWMによる出力
Buzzer brickを接続し、ビープ音を鳴らしています。 音の波形は矩形波でPWM出力します。
出力するPWMの設定
デューティー比は0.5に設定 ベースクロックは1MHzで出力
設定は構造体でそれぞれ設定しており、各メンバで設定。
主な構造体
nrf_drv_pwm_t
PWM ドライバのインスタンスデータ構造体
変数名 | 概要 |
---|---|
NRF_PWM_Type * p_registers | PWMペリフェラルインスタンスレジスタの指し示す |
uint8_t drv_inst_idx | ドライバインスタンスインデックス |
enum nrf_pwm_mode_t
PWMモード
変数名 | 概要 |
---|---|
NRF_PWM_MODE_UP | アップカウンタ(エッジデューティーサイクル) |
NRF_PWM_MODE_UP_AND_DOWN | アップ、ダウンカウンタ (センターデューティーサイクル) |
enum nrf_pwm_dec_load_t
PWMデコーダーロードモード シーケンスデータのRAMから読み出され、コンペアレジスタに格納方法。
変数名 | 概要 |
---|---|
NRF_PWM_LOAD_COMMON | すべてのPWMチャンネル(0〜3)で使用される一番最初のハーフワード(16ビット) |
NRF_PWM_LOAD_GROUPED | チャンネル0と1で使用される一番最初のハーフワード(16ビット)。チャンネル2と3の2番目のワード。 |
NRF_PWM_LOAD_INDIVIDUAL | チャンネル0で使用される一番最初のハーフワード(16ビット)、チャンネル1では2番目、チャネル2の3番目、チャンネル3の4番目 |
NRF_PWM_LOAD_WAVE_FORM | チャンネル0で使用される一番最初のハーフワード(16ビット)、チャンネル1では2番目、4番目は、パルスジェネレータカウンタの最上位の値 |
enum nrf_pwm_clk_t
ベースクロック周波数。
変数名 |
---|
NRF_PWM_CLK_16MHz |
NRF_PWM_CLK_8MHz |
NRF_PWM_CLK_4MHz |
NRF_PWM_CLK_2MHz |
NRF_PWM_CLK_1MHz |
NRF_PWM_CLK_500kHz |
NRF_PWM_CLK_250kHz |
NRF_PWM_CLK_125kHz |
enum nrf_pwm_dec_step_t
PWMデコーダーネクストステップモード
アクティブシーケンスからの次の値がいつロードされるかを決定します
変数名 | 概要 |
---|---|
NRF_PWM_STEP_AUTO | Automatically after the current value is played and repeated the requested number of times.自動的に、現在の値がプレイされた後、要求された回数だけ繰り返されます |
NRF_PWM_STEP_TRIGGERED | When the NRF_PWM_TASK_NEXTSTEP task is triggered. NRF_PWM_TASK_NEXTSTEPタスクがトリガーしたとき |
主な関数
ret_code_t nrf_drv_pwm_init
ret_code_t nrf_drv_pwm_init (nrf_drv_pwm_t const *const p_instance, nrf_drv_pwm_config_t const * p_config, nrf_drv_pwm_handler_t handler )
PWMドライバを初期化する関数
変数名 | 概要 |
---|---|
p_instance | ドライバーのインスタンス |
p_config | 初期設定構造体を指し示す。もし、デフォルト設定ならNULLをいれます。 |
handler | ユーザーによって供給されたイベントハンドラー。もし使わないなら、代わりにNULLを入れ、イベントの通知はされず、PWM割り込みは使えません。 |
返り値
変数名 | 概要 |
---|---|
NRF_SUCCESS | 成功した場合。 |
NRF_ERROR_INVALID_STATE | すでに初期化されている場合。 |
nrf_drv_pwm_uninit
void nrf_drv_pwm_uninit ( nrf_drv_pwm_t const *const p_instance )
PWMドライバを初期化しない関数
プレイ中の場合は、すぐに停止します。
nrf_drv_pwm_simple_playback
void nrf_drv_pwm_simple_playback (nrf_drv_pwm_t const *const p_instance, nrf_pwm_sequence_t const * p_sequence,uint16_tplayback_count,uint32_t flags )
1回のシーケンス再生を行う関数
※指定されたシーケンスのデューティサイクル値を含む配列はRAMになければならず、スタックに配置することはできません。
変数名 | 概要 |
---|---|
p_instance | PWMドライバのインスタンスを指し示す |
p_sequence | プレイバックするシーケンスを指し示す |
playback_count | プレイバックする回数(0であってはなりません。). |
flags | Additional options. Pass any combination of playback flags, or 0 for default settings.オプションを追加します。いくつかのプレイバックフラッグの組み合わせ渡すか、デフォルトセッティングは0となります。 |
音の周波数
音の周波数は、ラの440をベースに2^(1/12)の公差数列であり周波数Hzは下記になります。
変数名 | 概要 |
---|---|
ド | 261.6255653 |
ド# | 277.182631 |
レ | 293.6647679 |
レ# | 311.1269837 |
ミ | 329.6275569 |
ファ | 369.9944227 |
ファ# | 391.995436 |
ソ | 415.3046976 |
ラ | 440 |
ラ# | 466.1637615 |
シ | 493.8833013 |
ド | 523.2511306 |
波長lengthは、(1000/周波数)*1000になります。 繰り返しは100回です。
User Include Directories
Solution Option -> Preprocessor -> User Include Directoriesに以下を追加する。(../nRF5_SDKの部分は適宜変えてください。)
Path |
---|
../nRF5_SDK/components/libraries/strerror |
../nRF5_SDK/components/libraries/log/src |
../nRF5_SDK/components/libraries/experimental_section_vars |
../nRF5_SDK/components/libraries/log |
../nRF5_SDK/components/libraries/delay |
../nRF5_SDK/components/libraries/timer |
../nRF5_SDK/components/libraries/button |
../nRF5_SDK/components/libraries/bsp |
../nRF5_SDK/modules/nrfx/hal |
../nRF5_SDK/components/boards |
../nRF5_SDK/components/drivers_nrf/nrf_soc_nosd |
../nRF5_SDK/components/libraries/util |
../nRF5_SDK/components/toolchain/cmsis/include |
../nRF5_SDK/modules/nrfx/mdk |
../nRF5_SDK/integration/nrfx |
../nRF5_SDK/modules/nrfx |
../nRF5_SDK/modules/nrfx/drivers/include |
../nRF5_SDK/integration/nrfx/legacy |
Preprocessor Definitions
Solution Option -> Preprocessor -> Preprocessor Definitionsに以下を追加する。
COPT |
---|
PWM0_ENABLED |
PWM_ENABLED |
BOARD_CUSTOM |
NRF52832_XXAA |
SDK File
Projectに以下のファイルを追加する。(../nRF5_SDKの部分は適宜変えてください。)
File | Path |
---|---|
app_error_weak.c | ../nRF5_SDK/components/libraries/util |
app_error.c | ../nRF5_SDK/components/libraries/util |
nrfx_pwm.c | ../nRF5_SDK/modules/nrfx/drivers/src |
ビープ音でドレミを演奏。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
|
参照 API
-
nrf_drv_pwm_config_t Struct Reference https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v11.0.0%2Fstructnrf__drv__pwm__config__t.html Software Development Kit > nRF5 SDK > nRF5 SDK v12.3.0 > Data Structures > Data Structures
-
PWM HAL Software Development Kit > nRF5 SDK > nRF5 SDK v12.3.0 > API Reference > Peripheral drivers > PWM HAL and driver
-
PWM Software Development Kit > nRF5 SDK > nRF5 SDK v12.3.0 > Hardware Drivers
構成Parts
- 圧電ブザー