Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: TextLCD mbed MMA8451Q TSI
main.cpp@17:01fe47dda43b, 2015-10-26 (annotated)
- 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?
| User | Revision | Line number | New 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 | } |
