for Airio-Base. PWM port out sample/test program.
Airio-Baseで PWMポート出力し、圧電ブザーを鳴らすサンプルコードです。
準備
- ピエゾ式圧電ブザー - ブザーの端子をP0_8とGNDに接続
- 部品例 KPEG-169 http://eleshop.jp/shop/g/gB1R361/
SWスイッチ動作
SWを押すと、LED1が点灯しドレミ…の音階が流れます。
ISPスイッチ動作
ISPを押すと、LED2が点灯し「ピポッ」と効果音が流れます。
PWMポート
PWM出力できるポートはP0_8に加え、P0_9、P0_18、P0_19でも可能です。ただし、PWM出力設定は全ポートで1つの設定を共有しているため、同時にPWMポートを使用しても最後に設定した値がすべてのポートに反映されます。
- 参考リンク
- Suga koubou様 PwmOut - PWM出力 https://os.mbed.com/users/okini3939/notebook/PwmOut_jp/
main.cpp@0:d5af51ac8126, 2018-10-26 (annotated)
- Committer:
- mbed_crane_elec
- Date:
- Fri Oct 26 07:57:13 2018 +0000
- Revision:
- 0:d5af51ac8126
1st release.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbed_crane_elec | 0:d5af51ac8126 | 1 | #include "mbed.h" |
mbed_crane_elec | 0:d5af51ac8126 | 2 | //------------------------------------------------------------------------------- |
mbed_crane_elec | 0:d5af51ac8126 | 3 | //Port Settings |
mbed_crane_elec | 0:d5af51ac8126 | 4 | DigitalOut led1(LED1); |
mbed_crane_elec | 0:d5af51ac8126 | 5 | DigitalOut led2(P1_13,1); |
mbed_crane_elec | 0:d5af51ac8126 | 6 | |
mbed_crane_elec | 0:d5af51ac8126 | 7 | DigitalIn sw(P1_20); |
mbed_crane_elec | 0:d5af51ac8126 | 8 | DigitalIn isp(P0_1); |
mbed_crane_elec | 0:d5af51ac8126 | 9 | |
mbed_crane_elec | 0:d5af51ac8126 | 10 | //These ports can be PWM port |
mbed_crane_elec | 0:d5af51ac8126 | 11 | PwmOut bz(P0_8); |
mbed_crane_elec | 0:d5af51ac8126 | 12 | //PwmOut bz(P0_9); |
mbed_crane_elec | 0:d5af51ac8126 | 13 | //PwmOut bz(P0_18); |
mbed_crane_elec | 0:d5af51ac8126 | 14 | //PwmOut bz(P0_19); |
mbed_crane_elec | 0:d5af51ac8126 | 15 | |
mbed_crane_elec | 0:d5af51ac8126 | 16 | volatile float Hz[] = { |
mbed_crane_elec | 0:d5af51ac8126 | 17 | 220.000,//A3 |
mbed_crane_elec | 0:d5af51ac8126 | 18 | 246.942,//B3 |
mbed_crane_elec | 0:d5af51ac8126 | 19 | 261.626,//C4 |
mbed_crane_elec | 0:d5af51ac8126 | 20 | 293.665,//D4 |
mbed_crane_elec | 0:d5af51ac8126 | 21 | 329.628,//E4 |
mbed_crane_elec | 0:d5af51ac8126 | 22 | 349.228,//F4 |
mbed_crane_elec | 0:d5af51ac8126 | 23 | 391.995,//G4 |
mbed_crane_elec | 0:d5af51ac8126 | 24 | 440.000,//A4 |
mbed_crane_elec | 0:d5af51ac8126 | 25 | 493.883,//B4 |
mbed_crane_elec | 0:d5af51ac8126 | 26 | 523.251,//C5 |
mbed_crane_elec | 0:d5af51ac8126 | 27 | 587.330,//D5 |
mbed_crane_elec | 0:d5af51ac8126 | 28 | 659.255,//E5 |
mbed_crane_elec | 0:d5af51ac8126 | 29 | 698.456,//F5 |
mbed_crane_elec | 0:d5af51ac8126 | 30 | 783.991,//G5 |
mbed_crane_elec | 0:d5af51ac8126 | 31 | 880.000//A5 |
mbed_crane_elec | 0:d5af51ac8126 | 32 | }; |
mbed_crane_elec | 0:d5af51ac8126 | 33 | |
mbed_crane_elec | 0:d5af51ac8126 | 34 | //------------------------------------------------------------------------------- |
mbed_crane_elec | 0:d5af51ac8126 | 35 | //Program |
mbed_crane_elec | 0:d5af51ac8126 | 36 | int main() |
mbed_crane_elec | 0:d5af51ac8126 | 37 | { |
mbed_crane_elec | 0:d5af51ac8126 | 38 | |
mbed_crane_elec | 0:d5af51ac8126 | 39 | while(1) |
mbed_crane_elec | 0:d5af51ac8126 | 40 | { |
mbed_crane_elec | 0:d5af51ac8126 | 41 | // Button "SW" function |
mbed_crane_elec | 0:d5af51ac8126 | 42 | if(sw == 0) |
mbed_crane_elec | 0:d5af51ac8126 | 43 | { |
mbed_crane_elec | 0:d5af51ac8126 | 44 | led1 = 0;//LED1 turn ON |
mbed_crane_elec | 0:d5af51ac8126 | 45 | |
mbed_crane_elec | 0:d5af51ac8126 | 46 | //PWM output |
mbed_crane_elec | 0:d5af51ac8126 | 47 | for (int i = 0;i < 14;i++) |
mbed_crane_elec | 0:d5af51ac8126 | 48 | { |
mbed_crane_elec | 0:d5af51ac8126 | 49 | bz.period(1.0 / Hz[i]);// set to pulse period : (1.0 / xxx[Hz]) = T[sec] |
mbed_crane_elec | 0:d5af51ac8126 | 50 | bz.write(0.5);// set to pulse L/H duty : ex. (0.8) = 80% High |
mbed_crane_elec | 0:d5af51ac8126 | 51 | wait(0.3);// wait for 0.3 sec |
mbed_crane_elec | 0:d5af51ac8126 | 52 | bz.write(0.0);//PWM stop : pulse 0% (100% Low) |
mbed_crane_elec | 0:d5af51ac8126 | 53 | } |
mbed_crane_elec | 0:d5af51ac8126 | 54 | } |
mbed_crane_elec | 0:d5af51ac8126 | 55 | else |
mbed_crane_elec | 0:d5af51ac8126 | 56 | { |
mbed_crane_elec | 0:d5af51ac8126 | 57 | led1 = 1;//LED1 turn OFF |
mbed_crane_elec | 0:d5af51ac8126 | 58 | } |
mbed_crane_elec | 0:d5af51ac8126 | 59 | |
mbed_crane_elec | 0:d5af51ac8126 | 60 | // Button "ISP" function |
mbed_crane_elec | 0:d5af51ac8126 | 61 | if(isp == 0) |
mbed_crane_elec | 0:d5af51ac8126 | 62 | { |
mbed_crane_elec | 0:d5af51ac8126 | 63 | led2 = 0;//LED2 turn ON |
mbed_crane_elec | 0:d5af51ac8126 | 64 | //PWM output |
mbed_crane_elec | 0:d5af51ac8126 | 65 | bz.period(1.0 / 2000);// set to 2000[Hz] |
mbed_crane_elec | 0:d5af51ac8126 | 66 | bz.write(0.5);// set to pulse L/H duty : ex. (0.8) = 80% High |
mbed_crane_elec | 0:d5af51ac8126 | 67 | wait(0.15);// wait for 0.15 sec |
mbed_crane_elec | 0:d5af51ac8126 | 68 | bz.period(1.0 / 1000);// set to 1000[Hz] |
mbed_crane_elec | 0:d5af51ac8126 | 69 | bz.write(0.5);// set to pulse L/H duty : ex. (0.8) = 80% High |
mbed_crane_elec | 0:d5af51ac8126 | 70 | wait(0.15);// wait for 0.15 sec |
mbed_crane_elec | 0:d5af51ac8126 | 71 | |
mbed_crane_elec | 0:d5af51ac8126 | 72 | bz.write(0.0);//PWM stop : pulse 0% (100% Low) |
mbed_crane_elec | 0:d5af51ac8126 | 73 | } |
mbed_crane_elec | 0:d5af51ac8126 | 74 | else |
mbed_crane_elec | 0:d5af51ac8126 | 75 | { |
mbed_crane_elec | 0:d5af51ac8126 | 76 | led2 = 1;//LED2 turn OFF |
mbed_crane_elec | 0:d5af51ac8126 | 77 | } |
mbed_crane_elec | 0:d5af51ac8126 | 78 | } |
mbed_crane_elec | 0:d5af51ac8126 | 79 | } |