Michele Furlanetto / Mbed 2 deprecated mbed_keyboard

Dependencies:   TextLCD mbed MMA8451Q TSI

Committer:
mfurlanetto
Date:
Mon Oct 26 13:20:14 2015 +0000
Branch:
mono
Revision:
16:b3cc7cf41a1b
Parent:
15:b358e700d2d7
Child:
17:01fe47dda43b
casin

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