for Airio-Base. PWM port out sample/test program.

Dependencies:   mbed

Airio-Baseで PWMポート出力し、圧電ブザーを鳴らすサンプルコードです。

準備

SWスイッチ動作

SWを押すと、LED1が点灯しドレミ…の音階が流れます。

ISPスイッチ動作

ISPを押すと、LED2が点灯し「ピポッ」と効果音が流れます。

PWMポート

PWM出力できるポートはP0_8に加え、P0_9、P0_18、P0_19でも可能です。ただし、PWM出力設定は全ポートで1つの設定を共有しているため、同時にPWMポートを使用しても最後に設定した値がすべてのポートに反映されます。

Committer:
mbed_crane_elec
Date:
Fri Oct 26 07:57:13 2018 +0000
Revision:
0:d5af51ac8126
1st release.

Who changed what in which revision?

UserRevisionLine numberNew 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 }