Michele Furlanetto / Mbed 2 deprecated mbed_keyboard

Dependencies:   TextLCD mbed MMA8451Q TSI

Committer:
mfurlanetto
Date:
Mon Oct 19 10:11:19 2015 +0000
Branch:
mono
Revision:
12:47ba147bcbb7
Parent:
11:97e964c9eeb2
Child:
13:3aaf68318795
aggiunte indicazioni di navigazione

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