test publish

Dependencies:   mbed GroveEarbudSensor

Committer:
age2pierre
Date:
Fri Mar 25 09:34:21 2016 +0000
Revision:
4:23aba111f73a
Parent:
3:b4f04b8b8797
Child:
5:ee265ab0752d
Added Notes enum class and Speaker class

Who changed what in which revision?

UserRevisionLine numberNew contents of line
age2pierre 4:23aba111f73a 1 #include "Speaker.h"
age2pierre 4:23aba111f73a 2
age2pierre 4:23aba111f73a 3 Speaker::Speaker(PwmOut argPin)
age2pierre 4:23aba111f73a 4 {
age2pierre 4:23aba111f73a 5 this->pin = argPin;
age2pierre 4:23aba111f73a 6 this->pulseWidth = 0.5;
age2pierre 4:23aba111f73a 7 }
age2pierre 4:23aba111f73a 8
age2pierre 4:23aba111f73a 9 void Speaker::play(Notes note)
age2pierre 4:23aba111f73a 10 {
age2pierre 4:23aba111f73a 11 switch(note) {
age2pierre 4:23aba111f73a 12 case Notes::DO_4 :
age2pierre 4:23aba111f73a 13 pin->period_us(1911);
age2pierre 4:23aba111f73a 14 break;
age2pierre 4:23aba111f73a 15 case Notes::DO_d_4 :
age2pierre 4:23aba111f73a 16 pin->period_us(1804);
age2pierre 4:23aba111f73a 17 break;
age2pierre 4:23aba111f73a 18 case Notes::RE_4 :
age2pierre 4:23aba111f73a 19 pin->period_us(1703);
age2pierre 4:23aba111f73a 20 break;
age2pierre 4:23aba111f73a 21 case Notes::RE_d_4 :
age2pierre 4:23aba111f73a 22 pin->period_us(1607);
age2pierre 4:23aba111f73a 23 break;
age2pierre 4:23aba111f73a 24 case Notes::MI_4 :
age2pierre 4:23aba111f73a 25 pin->period_us(1517);
age2pierre 4:23aba111f73a 26 break;
age2pierre 4:23aba111f73a 27 case Notes::FA_4 :
age2pierre 4:23aba111f73a 28 pin->period_us(1432);
age2pierre 4:23aba111f73a 29 break;
age2pierre 4:23aba111f73a 30 case Notes::FA_d_4 :
age2pierre 4:23aba111f73a 31 pin->period_us(1351);
age2pierre 4:23aba111f73a 32 break;
age2pierre 4:23aba111f73a 33 case Notes::SOL_4 :
age2pierre 4:23aba111f73a 34 pin->period_us(1276);
age2pierre 4:23aba111f73a 35 break;
age2pierre 4:23aba111f73a 36 case Notes::SOL_d_4 :
age2pierre 4:23aba111f73a 37 pin->period_us(1204);
age2pierre 4:23aba111f73a 38 break;
age2pierre 4:23aba111f73a 39 case Notes::LA_4 :
age2pierre 4:23aba111f73a 40 pin->period_us(1136);
age2pierre 4:23aba111f73a 41 break;
age2pierre 4:23aba111f73a 42 case Notes::LA_d_4 :
age2pierre 4:23aba111f73a 43 pin->period_us(1073);
age2pierre 4:23aba111f73a 44 break;
age2pierre 4:23aba111f73a 45 case Notes::SI_4 :
age2pierre 4:23aba111f73a 46 pin->period_us(1012);
age2pierre 4:23aba111f73a 47 break;
age2pierre 4:23aba111f73a 48 case Notes::DO_5 :
age2pierre 4:23aba111f73a 49 pin->period_us(956);
age2pierre 4:23aba111f73a 50 break;
age2pierre 4:23aba111f73a 51 case Notes::DO_d_5 :
age2pierre 4:23aba111f73a 52 pin->period_us(902);
age2pierre 4:23aba111f73a 53 break;
age2pierre 4:23aba111f73a 54 case Notes::RE_5 :
age2pierre 4:23aba111f73a 55 pin->period_us(851);
age2pierre 4:23aba111f73a 56 break;
age2pierre 4:23aba111f73a 57 case Notes::RE_d_5 :
age2pierre 4:23aba111f73a 58 pin->period_us(804);
age2pierre 4:23aba111f73a 59 break;
age2pierre 4:23aba111f73a 60 case Notes::MI_5 :
age2pierre 4:23aba111f73a 61 pin->period_us(758);
age2pierre 4:23aba111f73a 62 break;
age2pierre 4:23aba111f73a 63 case Notes::FA_5 :
age2pierre 4:23aba111f73a 64 pin->period_us(716);
age2pierre 4:23aba111f73a 65 break;
age2pierre 4:23aba111f73a 66 case Notes::FA_d_5 :
age2pierre 4:23aba111f73a 67 pin->period_us(676);
age2pierre 4:23aba111f73a 68 break;
age2pierre 4:23aba111f73a 69 case Notes::SOL_5 :
age2pierre 4:23aba111f73a 70 pin->period_us(638);
age2pierre 4:23aba111f73a 71 break;
age2pierre 4:23aba111f73a 72 case Notes::SOL_d_5 :
age2pierre 4:23aba111f73a 73 pin->period_us(602);
age2pierre 4:23aba111f73a 74 break;
age2pierre 4:23aba111f73a 75 case Notes::LA_5 :
age2pierre 4:23aba111f73a 76 pin->period_us(568);
age2pierre 4:23aba111f73a 77 break;
age2pierre 4:23aba111f73a 78 case Notes::LA_d_5 :
age2pierre 4:23aba111f73a 79 pin->period_us(536);
age2pierre 4:23aba111f73a 80 break;
age2pierre 4:23aba111f73a 81 case Notes::SI_5 :
age2pierre 4:23aba111f73a 82 pin->period_us(506);
age2pierre 4:23aba111f73a 83 break;
age2pierre 4:23aba111f73a 84 case Notes::DO_6 :
age2pierre 4:23aba111f73a 85 pin->period_us(478);
age2pierre 4:23aba111f73a 86 break;
age2pierre 4:23aba111f73a 87 case Notes::DO_d_6 :
age2pierre 4:23aba111f73a 88 pin->period_us(451);
age2pierre 4:23aba111f73a 89 break;
age2pierre 4:23aba111f73a 90 case Notes::RE_6 :
age2pierre 4:23aba111f73a 91 pin->period_us(426);
age2pierre 4:23aba111f73a 92 break;
age2pierre 4:23aba111f73a 93 case Notes::RE_d_6 :
age2pierre 4:23aba111f73a 94 pin->period_us(402);
age2pierre 4:23aba111f73a 95 break;
age2pierre 4:23aba111f73a 96 case Notes::MI_6 :
age2pierre 4:23aba111f73a 97 pin->period_us(379);
age2pierre 4:23aba111f73a 98 break;
age2pierre 4:23aba111f73a 99 case Notes::FA_6 :
age2pierre 4:23aba111f73a 100 pin->period_us(358);
age2pierre 4:23aba111f73a 101 break;
age2pierre 4:23aba111f73a 102 case Notes::FA_d_6 :
age2pierre 4:23aba111f73a 103 pin->period_us(338);
age2pierre 4:23aba111f73a 104 break;
age2pierre 4:23aba111f73a 105 case Notes::SOL_6 :
age2pierre 4:23aba111f73a 106 pin->period_us(318);
age2pierre 4:23aba111f73a 107 break;
age2pierre 4:23aba111f73a 108 case Notes::SOL_d_6 :
age2pierre 4:23aba111f73a 109 pin->period_us(301);
age2pierre 4:23aba111f73a 110 break;
age2pierre 4:23aba111f73a 111 case Notes::LA_6 :
age2pierre 4:23aba111f73a 112 pin->period_us(284);
age2pierre 4:23aba111f73a 113 break;
age2pierre 4:23aba111f73a 114 case Notes::LA_d_6 :
age2pierre 4:23aba111f73a 115 pin->period_us(268);
age2pierre 4:23aba111f73a 116 break;
age2pierre 4:23aba111f73a 117 case Notes::SI_6 :
age2pierre 4:23aba111f73a 118 pin->period_us(253);
age2pierre 4:23aba111f73a 119 break;
age2pierre 4:23aba111f73a 120 case default :
age2pierre 4:23aba111f73a 121 this->mute();
age2pierre 4:23aba111f73a 122 break;
age2pierre 4:23aba111f73a 123 }
age2pierre 4:23aba111f73a 124 pin->write(this->pulse);
age2pierre 4:23aba111f73a 125 }
age2pierre 4:23aba111f73a 126
age2pierre 4:23aba111f73a 127 bool Speaker::setPulseWidth(float argPulseWidth)
age2pierre 4:23aba111f73a 128 {
age2pierre 4:23aba111f73a 129 if ((argPulseWidth >= 0.0) && (argPulseWidth <= 1.0)) {
age2pierre 4:23aba111f73a 130 this->pulseWidth = argPulseWidth;
age2pierre 4:23aba111f73a 131 return true;
age2pierre 4:23aba111f73a 132 }
age2pierre 4:23aba111f73a 133 else
age2pierre 4:23aba111f73a 134 return false;
age2pierre 4:23aba111f73a 135 }
age2pierre 4:23aba111f73a 136
age2pierre 4:23aba111f73a 137 void Speaker::mute()
age2pierre 4:23aba111f73a 138 {
age2pierre 4:23aba111f73a 139
age2pierre 4:23aba111f73a 140 }