Michele Furlanetto / Mbed 2 deprecated mbed_keyboard

Dependencies:   TextLCD mbed MMA8451Q TSI

Committer:
mfurlanetto
Date:
Mon Oct 26 13:02:36 2015 +0000
Branch:
mono
Revision:
15:b358e700d2d7
Parent:
14:3dd81fa41484
Child:
16:b3cc7cf41a1b
aumentata la robustezza

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 11:97e964c9eeb2 3 #include "MyLCD.cpp"
mfurlanetto 8:60231840370f 4
mfurlanetto 11:97e964c9eeb2 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 11:97e964c9eeb2 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 13:3aaf68318795 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 15:b358e700d2d7 31 bool allowEdit=false;
mfurlanetto 15:b358e700d2d7 32 int mode=OCTAVE;
mfurlanetto 15:b358e700d2d7 33
mfurlanetto 4:f4bd9fe2200b 34 void volumeSettings(float* volume)
mfurlanetto 4:f4bd9fe2200b 35 {
mfurlanetto 4:f4bd9fe2200b 36 float tmp= slider.readPercentage();
mfurlanetto 4:f4bd9fe2200b 37 if (tmp>0) *volume = tmp;
mfurlanetto 15:b358e700d2d7 38 lcd.printf("VOLUME: ", (*volume)*10,"<ottave bpm>");
mfurlanetto 4:f4bd9fe2200b 39 }
mfurlanetto 4:f4bd9fe2200b 40
mfurlanetto 15:b358e700d2d7 41 void menuManager()
mfurlanetto 4:f4bd9fe2200b 42 {
mfurlanetto 4:f4bd9fe2200b 43 double y=acc.getAccY();
mfurlanetto 15:b358e700d2d7 44 if (allowEdit==false) {
mfurlanetto 15:b358e700d2d7 45 //lcd.printf("incl: ", y,"");
mfurlanetto 4:f4bd9fe2200b 46 if (y<-TILT_TOLERANCE_SET) {
mfurlanetto 15:b358e700d2d7 47 allowEdit=true;
mfurlanetto 15:b358e700d2d7 48 mode=mode+1;
mfurlanetto 4:f4bd9fe2200b 49 } else if (y>TILT_TOLERANCE_SET) {
mfurlanetto 15:b358e700d2d7 50 allowEdit=true;
mfurlanetto 15:b358e700d2d7 51 mode=mode-1;
mfurlanetto 4:f4bd9fe2200b 52 }
mfurlanetto 4:f4bd9fe2200b 53 } else {
mfurlanetto 4:f4bd9fe2200b 54 if (abs(y)<TILT_TOLERANCE_RESET) {
mfurlanetto 15:b358e700d2d7 55 allowEdit=false;
mfurlanetto 4:f4bd9fe2200b 56 }
mfurlanetto 4:f4bd9fe2200b 57 }
mfurlanetto 6:459ddd3079fa 58 return;
mfurlanetto 6:459ddd3079fa 59 }
mfurlanetto 6:459ddd3079fa 60
mfurlanetto 10:6e18b220e10c 61 void ledOff()
mfurlanetto 8:60231840370f 62 {
mfurlanetto 10:6e18b220e10c 63 led1=1;
mfurlanetto 10:6e18b220e10c 64 tLedOff.detach();
mfurlanetto 6:459ddd3079fa 65 }
mfurlanetto 6:459ddd3079fa 66
mfurlanetto 10:6e18b220e10c 67 void ledOn()
mfurlanetto 10:6e18b220e10c 68 {
mfurlanetto 10:6e18b220e10c 69 led1=0;
mfurlanetto 10:6e18b220e10c 70 tLedOff.attach(&ledOff, 0.1);
mfurlanetto 10:6e18b220e10c 71 }
mfurlanetto 11:97e964c9eeb2 72
mfurlanetto 9:f1fa0dad4096 73 void metronomeSettings(int* bpmReg)
mfurlanetto 8:60231840370f 74 {
mfurlanetto 9:f1fa0dad4096 75 float t_bpm = *bpmReg;
mfurlanetto 12:47ba147bcbb7 76 lcd.printf("BPM: ", bpm ,"<volume ottave>");
mfurlanetto 6:459ddd3079fa 77 float tmp = slider.readPercentage();
mfurlanetto 8:60231840370f 78 if(tmp>0) {
mfurlanetto 10:6e18b220e10c 79 tLedOn.detach();
mfurlanetto 8:60231840370f 80 while (tmp>0) {
mfurlanetto 9:f1fa0dad4096 81 t_bpm =int((MIN_METRONOME_BPM+tmp*(MAX_METRONOME_BPM-MIN_METRONOME_BPM))/INTERVAL_METRONOME_BPM);
mfurlanetto 6:459ddd3079fa 82 tmp = slider.readPercentage();
mfurlanetto 12:47ba147bcbb7 83 lcd.printf("BPM ",t_bpm*INTERVAL_METRONOME_BPM,"");
mfurlanetto 6:459ddd3079fa 84 }
mfurlanetto 9:f1fa0dad4096 85 *bpmReg=(int(t_bpm))*INTERVAL_METRONOME_BPM;
mfurlanetto 11:97e964c9eeb2 86 tLedOn.attach(&ledOn, 60.0/(*bpmReg));
mfurlanetto 6:459ddd3079fa 87 }
mfurlanetto 4:f4bd9fe2200b 88 }
mfurlanetto 4:f4bd9fe2200b 89
mfurlanetto 8:60231840370f 90
mfurlanetto 8:60231840370f 91 void octaveSettings()
mfurlanetto 8:60231840370f 92 {
mfurlanetto 12:47ba147bcbb7 93 lcd.printf("OTTAVA",multiplier+4," volume>");
mfurlanetto 8:60231840370f 94 float octave=4;
mfurlanetto 8:60231840370f 95 float tmp = slider.readPercentage();
mfurlanetto 8:60231840370f 96 if(tmp>0) {
mfurlanetto 8:60231840370f 97 while (tmp>0) {
mfurlanetto 8:60231840370f 98 octave = MIN_OCTAVE+tmp*(MAX_OCTAVE-MIN_OCTAVE);
mfurlanetto 8:60231840370f 99 multiplier=((int)octave)-4;
mfurlanetto 8:60231840370f 100 tmp = slider.readPercentage();
mfurlanetto 12:47ba147bcbb7 101 lcd.printf("OTTAVA",octave,"");
mfurlanetto 8:60231840370f 102 }
mfurlanetto 8:60231840370f 103 }
mfurlanetto 8:60231840370f 104 }
mfurlanetto 10:6e18b220e10c 105
mfurlanetto 10:6e18b220e10c 106
mfurlanetto 11:97e964c9eeb2 107 int ButtonMusical::buttonsPressed = 0;
mfurlanetto 4:f4bd9fe2200b 108 int main()
mfurlanetto 4:f4bd9fe2200b 109 {
mfurlanetto 0:f48fccfff709 110 led1=1;
mfurlanetto 15:b358e700d2d7 111 tLedOn.attach(&ledOn, 1.0);
mfurlanetto 6:459ddd3079fa 112 float* volume=speaker.getVolumeBuffer();
mfurlanetto 11:97e964c9eeb2 113
mfurlanetto 14:3dd81fa41484 114 ButtonDiesis di (PTA13);
mfurlanetto 14:3dd81fa41484 115 Note DO4(262, true, &multiplier, di.getDiesisPointer());
mfurlanetto 14:3dd81fa41484 116 Note RE4(294, true, &multiplier, di.getDiesisPointer());
mfurlanetto 14:3dd81fa41484 117 Note MI4(330, false, &multiplier, di.getDiesisPointer());
mfurlanetto 14:3dd81fa41484 118 Note FA4(349, true, &multiplier, di.getDiesisPointer());
mfurlanetto 14:3dd81fa41484 119 Note SOL4(392, true, &multiplier, di.getDiesisPointer());
mfurlanetto 14:3dd81fa41484 120 Note SI4(494, false, &multiplier, di.getDiesisPointer());
mfurlanetto 14:3dd81fa41484 121 Note LA4(440, true, &multiplier, di.getDiesisPointer());
mfurlanetto 14:3dd81fa41484 122
mfurlanetto 14:3dd81fa41484 123 ButtonMusical a (PTA1, DO4, &speaker);
mfurlanetto 14:3dd81fa41484 124 ButtonMusical b (PTA2, RE4, &speaker);
mfurlanetto 14:3dd81fa41484 125 ButtonMusical c (PTD4, MI4, &speaker);
mfurlanetto 14:3dd81fa41484 126 ButtonMusical d (PTA12, FA4, &speaker);
mfurlanetto 14:3dd81fa41484 127 ButtonMusical e (PTD5, SOL4, &speaker);
mfurlanetto 14:3dd81fa41484 128 ButtonMusical f (PTD0, LA4, &speaker);
mfurlanetto 14:3dd81fa41484 129 ButtonMusical g (PTD2, SI4, &speaker);
mfurlanetto 4:f4bd9fe2200b 130
mfurlanetto 4:f4bd9fe2200b 131 while (true) {
mfurlanetto 15:b358e700d2d7 132 menuManager();
mfurlanetto 11:97e964c9eeb2 133
mfurlanetto 4:f4bd9fe2200b 134 switch(mode) {
mfurlanetto 11:97e964c9eeb2 135 case OCTAVE:
mfurlanetto 8:60231840370f 136 octaveSettings();
mfurlanetto 4:f4bd9fe2200b 137 break;
mfurlanetto 4:f4bd9fe2200b 138 case VOLUME:
mfurlanetto 6:459ddd3079fa 139 volumeSettings(volume);
mfurlanetto 4:f4bd9fe2200b 140 break;
mfurlanetto 4:f4bd9fe2200b 141 case METRONOME:
mfurlanetto 9:f1fa0dad4096 142 metronomeSettings(&bpm);
mfurlanetto 4:f4bd9fe2200b 143 break;
mfurlanetto 4:f4bd9fe2200b 144 default:
mfurlanetto 11:97e964c9eeb2 145 mode=OCTAVE;
mfurlanetto 15:b358e700d2d7 146 break;
mfurlanetto 1:47973f27d645 147 }
mfurlanetto 0:f48fccfff709 148 }
mfurlanetto 0:f48fccfff709 149 }