Michele Furlanetto / Mbed 2 deprecated mbed_keyboard

Dependencies:   TextLCD mbed MMA8451Q TSI

Committer:
mfurlanetto
Date:
Mon Oct 26 14:38:00 2015 +0000
Branch:
mono
Revision:
17:01fe47dda43b
Parent:
16:b3cc7cf41a1b
risolto bug di visualizzazione.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mfurlanetto 8:60231840370f 1 #include "ButtonMusical.cpp"
mfurlanetto 8:60231840370f 2 #include "ButtonDiesis.cpp"
mfurlanetto 16:b3cc7cf41a1b 3 //#include "MyLCD.cpp"
mfurlanetto 8:60231840370f 4
mfurlanetto 16:b3cc7cf41a1b 5 #include "TextLCD.h"
mfurlanetto 4:f4bd9fe2200b 6 #include "MMA8451Q.h"
mfurlanetto 4:f4bd9fe2200b 7 #include "TSISensor.h"
mfurlanetto 8:60231840370f 8
mfurlanetto 11:97e964c9eeb2 9 #define OCTAVE 0
mfurlanetto 4:f4bd9fe2200b 10 #define VOLUME 1
mfurlanetto 4:f4bd9fe2200b 11 #define METRONOME 2
mfurlanetto 4:f4bd9fe2200b 12 #define TILT_TOLERANCE_SET 0.75
mfurlanetto 4:f4bd9fe2200b 13 #define TILT_TOLERANCE_RESET 0.05
mfurlanetto 9:f1fa0dad4096 14 #define MIN_METRONOME_BPM 30
mfurlanetto 9:f1fa0dad4096 15 #define MAX_METRONOME_BPM 185
mfurlanetto 9:f1fa0dad4096 16 #define INTERVAL_METRONOME_BPM 5
mfurlanetto 9:f1fa0dad4096 17 #define MIN_OCTAVE 2
mfurlanetto 9:f1fa0dad4096 18 #define MAX_OCTAVE 6
mfurlanetto 4:f4bd9fe2200b 19 #define MMA8451_I2C_ADDRESS (0x1d<<1)
mfurlanetto 4:f4bd9fe2200b 20
mfurlanetto 16:b3cc7cf41a1b 21 TextLCD lcd(PTE5, PTE3, PTE2, PTB11, PTB10, PTB9, TextLCD::LCD16x2); //TextLCD (PinName rs, PinName e, PinName d4, PinName d5, PinName d6, PinName d7, LCDType type=LCD16x2, PinName bl=NC, PinName e2=NC, LCDCtrl ctrl=HD44780)
mfurlanetto 16:b3cc7cf41a1b 22 //MyLCD lcd(10, PTE5, PTE3, PTE2, PTB11, PTB10, PTB9);
mfurlanetto 10:6e18b220e10c 23 Speaker speaker (PTA4);
mfurlanetto 11:97e964c9eeb2 24 DigitalOut led1(LED1);
mfurlanetto 4:f4bd9fe2200b 25 MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
mfurlanetto 4:f4bd9fe2200b 26 TSISensor slider;
mfurlanetto 10:6e18b220e10c 27 Ticker tLedOn, tLedOff;
mfurlanetto 6:459ddd3079fa 28 int freq;
mfurlanetto 4:f4bd9fe2200b 29 int multiplier =0;
mfurlanetto 9:f1fa0dad4096 30 int bpm = 60;
mfurlanetto 17:01fe47dda43b 31 bool allowEdit=false;
mfurlanetto 17:01fe47dda43b 32 int mode=OCTAVE;
mfurlanetto 17:01fe47dda43b 33
mfurlanetto 4:f4bd9fe2200b 34
mfurlanetto 15:b358e700d2d7 35 void menuManager()
mfurlanetto 4:f4bd9fe2200b 36 {
mfurlanetto 4:f4bd9fe2200b 37 double y=acc.getAccY();
mfurlanetto 15:b358e700d2d7 38 if (allowEdit==false) {
mfurlanetto 4:f4bd9fe2200b 39 if (y<-TILT_TOLERANCE_SET) {
mfurlanetto 15:b358e700d2d7 40 allowEdit=true;
mfurlanetto 15:b358e700d2d7 41 mode=mode+1;
mfurlanetto 4:f4bd9fe2200b 42 } else if (y>TILT_TOLERANCE_SET) {
mfurlanetto 15:b358e700d2d7 43 allowEdit=true;
mfurlanetto 15:b358e700d2d7 44 mode=mode-1;
mfurlanetto 4:f4bd9fe2200b 45 }
mfurlanetto 4:f4bd9fe2200b 46 } else {
mfurlanetto 4:f4bd9fe2200b 47 if (abs(y)<TILT_TOLERANCE_RESET) {
mfurlanetto 15:b358e700d2d7 48 allowEdit=false;
mfurlanetto 4:f4bd9fe2200b 49 }
mfurlanetto 4:f4bd9fe2200b 50 }
mfurlanetto 6:459ddd3079fa 51 return;
mfurlanetto 6:459ddd3079fa 52 }
mfurlanetto 6:459ddd3079fa 53
mfurlanetto 10:6e18b220e10c 54 void ledOff()
mfurlanetto 8:60231840370f 55 {
mfurlanetto 10:6e18b220e10c 56 led1=1;
mfurlanetto 10:6e18b220e10c 57 tLedOff.detach();
mfurlanetto 6:459ddd3079fa 58 }
mfurlanetto 6:459ddd3079fa 59
mfurlanetto 10:6e18b220e10c 60 void ledOn()
mfurlanetto 10:6e18b220e10c 61 {
mfurlanetto 10:6e18b220e10c 62 led1=0;
mfurlanetto 10:6e18b220e10c 63 tLedOff.attach(&ledOff, 0.1);
mfurlanetto 10:6e18b220e10c 64 }
mfurlanetto 11:97e964c9eeb2 65
mfurlanetto 9:f1fa0dad4096 66 void metronomeSettings(int* bpmReg)
mfurlanetto 8:60231840370f 67 {
mfurlanetto 9:f1fa0dad4096 68 float t_bpm = *bpmReg;
mfurlanetto 17:01fe47dda43b 69 lcd.printf("BPM: %d\n<volume ottave>", bpm );
mfurlanetto 17:01fe47dda43b 70 wait(0.1);
mfurlanetto 6:459ddd3079fa 71 float tmp = slider.readPercentage();
mfurlanetto 8:60231840370f 72 if(tmp>0) {
mfurlanetto 10:6e18b220e10c 73 tLedOn.detach();
mfurlanetto 8:60231840370f 74 while (tmp>0) {
mfurlanetto 9:f1fa0dad4096 75 t_bpm =int((MIN_METRONOME_BPM+tmp*(MAX_METRONOME_BPM-MIN_METRONOME_BPM))/INTERVAL_METRONOME_BPM);
mfurlanetto 6:459ddd3079fa 76 tmp = slider.readPercentage();
mfurlanetto 17:01fe47dda43b 77 lcd.cls();
mfurlanetto 17:01fe47dda43b 78 lcd.printf("BPM: %.0f\n<volume ottave>",t_bpm*INTERVAL_METRONOME_BPM);
mfurlanetto 17:01fe47dda43b 79 wait(0.1);
mfurlanetto 6:459ddd3079fa 80 }
mfurlanetto 9:f1fa0dad4096 81 *bpmReg=(int(t_bpm))*INTERVAL_METRONOME_BPM;
mfurlanetto 11:97e964c9eeb2 82 tLedOn.attach(&ledOn, 60.0/(*bpmReg));
mfurlanetto 6:459ddd3079fa 83 }
mfurlanetto 4:f4bd9fe2200b 84 }
mfurlanetto 4:f4bd9fe2200b 85
mfurlanetto 8:60231840370f 86
mfurlanetto 17:01fe47dda43b 87 void volumeSettings(float* volume)
mfurlanetto 17:01fe47dda43b 88 {
mfurlanetto 17:01fe47dda43b 89 lcd.printf("VOLUME: %.0f\n%s", (*volume)*10,"<ottave bpm>");
mfurlanetto 17:01fe47dda43b 90 wait(0.1);
mfurlanetto 17:01fe47dda43b 91 float tmp= slider.readPercentage();
mfurlanetto 17:01fe47dda43b 92 if (tmp>0) {
mfurlanetto 17:01fe47dda43b 93 *volume = tmp;
mfurlanetto 17:01fe47dda43b 94 lcd.cls();
mfurlanetto 17:01fe47dda43b 95 lcd.printf("VOLUME: %.0f\n%s", (*volume)*10,"<ottave bpm>");
mfurlanetto 17:01fe47dda43b 96 wait(0.1);
mfurlanetto 17:01fe47dda43b 97 }
mfurlanetto 17:01fe47dda43b 98 }
mfurlanetto 17:01fe47dda43b 99
mfurlanetto 8:60231840370f 100 void octaveSettings()
mfurlanetto 8:60231840370f 101 {
mfurlanetto 17:01fe47dda43b 102
mfurlanetto 17:01fe47dda43b 103 lcd.printf("OTTAVA %d \n volume>",multiplier+4);
mfurlanetto 17:01fe47dda43b 104 wait(0.1);
mfurlanetto 8:60231840370f 105 float octave=4;
mfurlanetto 8:60231840370f 106 float tmp = slider.readPercentage();
mfurlanetto 8:60231840370f 107 if(tmp>0) {
mfurlanetto 8:60231840370f 108 while (tmp>0) {
mfurlanetto 8:60231840370f 109 octave = MIN_OCTAVE+tmp*(MAX_OCTAVE-MIN_OCTAVE);
mfurlanetto 8:60231840370f 110 multiplier=((int)octave)-4;
mfurlanetto 8:60231840370f 111 tmp = slider.readPercentage();
mfurlanetto 17:01fe47dda43b 112 lcd.cls();
mfurlanetto 17:01fe47dda43b 113 lcd.printf("OTTAVA %.0f \n volume>",octave);
mfurlanetto 17:01fe47dda43b 114 wait(0.1);
mfurlanetto 8:60231840370f 115 }
mfurlanetto 8:60231840370f 116 }
mfurlanetto 8:60231840370f 117 }
mfurlanetto 10:6e18b220e10c 118
mfurlanetto 10:6e18b220e10c 119
mfurlanetto 11:97e964c9eeb2 120 int ButtonMusical::buttonsPressed = 0;
mfurlanetto 4:f4bd9fe2200b 121 int main()
mfurlanetto 4:f4bd9fe2200b 122 {
mfurlanetto 0:f48fccfff709 123 led1=1;
mfurlanetto 15:b358e700d2d7 124 tLedOn.attach(&ledOn, 1.0);
mfurlanetto 6:459ddd3079fa 125 float* volume=speaker.getVolumeBuffer();
mfurlanetto 11:97e964c9eeb2 126
mfurlanetto 14:3dd81fa41484 127 ButtonDiesis di (PTA13);
mfurlanetto 14:3dd81fa41484 128 Note DO4(262, true, &multiplier, di.getDiesisPointer());
mfurlanetto 14:3dd81fa41484 129 Note RE4(294, true, &multiplier, di.getDiesisPointer());
mfurlanetto 14:3dd81fa41484 130 Note MI4(330, false, &multiplier, di.getDiesisPointer());
mfurlanetto 14:3dd81fa41484 131 Note FA4(349, true, &multiplier, di.getDiesisPointer());
mfurlanetto 14:3dd81fa41484 132 Note SOL4(392, true, &multiplier, di.getDiesisPointer());
mfurlanetto 14:3dd81fa41484 133 Note SI4(494, false, &multiplier, di.getDiesisPointer());
mfurlanetto 14:3dd81fa41484 134 Note LA4(440, true, &multiplier, di.getDiesisPointer());
mfurlanetto 14:3dd81fa41484 135
mfurlanetto 14:3dd81fa41484 136 ButtonMusical a (PTA1, DO4, &speaker);
mfurlanetto 14:3dd81fa41484 137 ButtonMusical b (PTA2, RE4, &speaker);
mfurlanetto 14:3dd81fa41484 138 ButtonMusical c (PTD4, MI4, &speaker);
mfurlanetto 14:3dd81fa41484 139 ButtonMusical d (PTA12, FA4, &speaker);
mfurlanetto 14:3dd81fa41484 140 ButtonMusical e (PTD5, SOL4, &speaker);
mfurlanetto 14:3dd81fa41484 141 ButtonMusical f (PTD0, LA4, &speaker);
mfurlanetto 14:3dd81fa41484 142 ButtonMusical g (PTD2, SI4, &speaker);
mfurlanetto 4:f4bd9fe2200b 143
mfurlanetto 4:f4bd9fe2200b 144 while (true) {
mfurlanetto 17:01fe47dda43b 145 lcd.cls();
mfurlanetto 15:b358e700d2d7 146 menuManager();
mfurlanetto 4:f4bd9fe2200b 147 switch(mode) {
mfurlanetto 11:97e964c9eeb2 148 case OCTAVE:
mfurlanetto 8:60231840370f 149 octaveSettings();
mfurlanetto 4:f4bd9fe2200b 150 break;
mfurlanetto 4:f4bd9fe2200b 151 case VOLUME:
mfurlanetto 6:459ddd3079fa 152 volumeSettings(volume);
mfurlanetto 4:f4bd9fe2200b 153 break;
mfurlanetto 4:f4bd9fe2200b 154 case METRONOME:
mfurlanetto 9:f1fa0dad4096 155 metronomeSettings(&bpm);
mfurlanetto 4:f4bd9fe2200b 156 break;
mfurlanetto 4:f4bd9fe2200b 157 default:
mfurlanetto 11:97e964c9eeb2 158 mode=OCTAVE;
mfurlanetto 15:b358e700d2d7 159 break;
mfurlanetto 1:47973f27d645 160 }
mfurlanetto 0:f48fccfff709 161 }
mfurlanetto 0:f48fccfff709 162 }