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@4:f4bd9fe2200b, 2015-08-15 (annotated)
- Committer:
- mfurlanetto
- Date:
- Sat Aug 15 15:13:34 2015 +0000
- Revision:
- 4:f4bd9fe2200b
- Parent:
- 3:a703eda2b125
- Child:
- 6:459ddd3079fa
aggiunto un menu per gestire, tramite accellerometro e slider, il volume e il metronomo
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| mfurlanetto | 0:f48fccfff709 | 1 | #include "mbed.h" |
| mfurlanetto | 0:f48fccfff709 | 2 | #include <Button.cpp> |
| mfurlanetto | 1:47973f27d645 | 3 | #include "TextLCD.h" |
| mfurlanetto | 4:f4bd9fe2200b | 4 | #include "MMA8451Q.h" |
| mfurlanetto | 4:f4bd9fe2200b | 5 | #include "TSISensor.h" |
| mfurlanetto | 0:f48fccfff709 | 6 | |
| mfurlanetto | 0:f48fccfff709 | 7 | #define DO4 262 |
| mfurlanetto | 0:f48fccfff709 | 8 | #define RE4 294 |
| mfurlanetto | 0:f48fccfff709 | 9 | #define MI4 330 |
| mfurlanetto | 0:f48fccfff709 | 10 | #define FA4 349 |
| mfurlanetto | 0:f48fccfff709 | 11 | #define SOL4 392 |
| mfurlanetto | 0:f48fccfff709 | 12 | #define LA4 440 |
| mfurlanetto | 0:f48fccfff709 | 13 | #define SI4 494 |
| mfurlanetto | 0:f48fccfff709 | 14 | |
| mfurlanetto | 4:f4bd9fe2200b | 15 | #define PLAY 0 |
| mfurlanetto | 4:f4bd9fe2200b | 16 | #define VOLUME 1 |
| mfurlanetto | 4:f4bd9fe2200b | 17 | #define METRONOME 2 |
| mfurlanetto | 4:f4bd9fe2200b | 18 | #define TILT_TOLERANCE_SET 0.75 |
| mfurlanetto | 4:f4bd9fe2200b | 19 | #define TILT_TOLERANCE_RESET 0.05 |
| mfurlanetto | 4:f4bd9fe2200b | 20 | #define MMA8451_I2C_ADDRESS (0x1d<<1) |
| mfurlanetto | 4:f4bd9fe2200b | 21 | |
| mfurlanetto | 2:86de87ec731a | 22 | 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 | 0:f48fccfff709 | 23 | Speaker speaker (PTA4); |
| mfurlanetto | 0:f48fccfff709 | 24 | DigitalOut led1(LED1); |
| mfurlanetto | 4:f4bd9fe2200b | 25 | MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS); |
| mfurlanetto | 4:f4bd9fe2200b | 26 | TSISensor slider; |
| mfurlanetto | 4:f4bd9fe2200b | 27 | |
| mfurlanetto | 1:47973f27d645 | 28 | int freq =0; |
| mfurlanetto | 4:f4bd9fe2200b | 29 | int multiplier =0; |
| mfurlanetto | 4:f4bd9fe2200b | 30 | |
| mfurlanetto | 4:f4bd9fe2200b | 31 | void volumeSettings(float* volume) |
| mfurlanetto | 4:f4bd9fe2200b | 32 | { |
| mfurlanetto | 4:f4bd9fe2200b | 33 | float tmp= slider.readPercentage(); |
| mfurlanetto | 4:f4bd9fe2200b | 34 | if (tmp>0) *volume = tmp; |
| mfurlanetto | 4:f4bd9fe2200b | 35 | lcd.printf("Volume: %.3f", *volume); |
| mfurlanetto | 4:f4bd9fe2200b | 36 | wait(0.2); |
| mfurlanetto | 4:f4bd9fe2200b | 37 | } |
| mfurlanetto | 4:f4bd9fe2200b | 38 | |
| mfurlanetto | 4:f4bd9fe2200b | 39 | void play(float volume) |
| mfurlanetto | 4:f4bd9fe2200b | 40 | { |
| mfurlanetto | 4:f4bd9fe2200b | 41 | if (freq>0) { |
| mfurlanetto | 4:f4bd9fe2200b | 42 | speaker.PlayNote(freq, 0.005, volume); |
| mfurlanetto | 4:f4bd9fe2200b | 43 | } |
| mfurlanetto | 4:f4bd9fe2200b | 44 | } |
| mfurlanetto | 3:a703eda2b125 | 45 | |
| mfurlanetto | 4:f4bd9fe2200b | 46 | int menuManager(int oldMode, bool* allowEdit) |
| mfurlanetto | 4:f4bd9fe2200b | 47 | { |
| mfurlanetto | 4:f4bd9fe2200b | 48 | double y=acc.getAccY(); |
| mfurlanetto | 0:f48fccfff709 | 49 | |
| mfurlanetto | 4:f4bd9fe2200b | 50 | if (*allowEdit==false) { |
| mfurlanetto | 4:f4bd9fe2200b | 51 | |
| mfurlanetto | 4:f4bd9fe2200b | 52 | if (y<-TILT_TOLERANCE_SET) { |
| mfurlanetto | 4:f4bd9fe2200b | 53 | *allowEdit=true; |
| mfurlanetto | 4:f4bd9fe2200b | 54 | return oldMode+1; |
| mfurlanetto | 4:f4bd9fe2200b | 55 | } else if (y>TILT_TOLERANCE_SET) { |
| mfurlanetto | 4:f4bd9fe2200b | 56 | *allowEdit=true; |
| mfurlanetto | 4:f4bd9fe2200b | 57 | return oldMode-1; |
| mfurlanetto | 4:f4bd9fe2200b | 58 | } |
| mfurlanetto | 4:f4bd9fe2200b | 59 | } else { |
| mfurlanetto | 4:f4bd9fe2200b | 60 | if (abs(y)<TILT_TOLERANCE_RESET) { |
| mfurlanetto | 4:f4bd9fe2200b | 61 | *allowEdit=false; |
| mfurlanetto | 4:f4bd9fe2200b | 62 | } |
| mfurlanetto | 4:f4bd9fe2200b | 63 | } |
| mfurlanetto | 4:f4bd9fe2200b | 64 | return oldMode; |
| mfurlanetto | 4:f4bd9fe2200b | 65 | } |
| mfurlanetto | 4:f4bd9fe2200b | 66 | |
| mfurlanetto | 4:f4bd9fe2200b | 67 | int main() |
| mfurlanetto | 4:f4bd9fe2200b | 68 | { |
| mfurlanetto | 0:f48fccfff709 | 69 | led1=1; |
| mfurlanetto | 3:a703eda2b125 | 70 | Button a (PTA1, LA4, &freq, &multiplier); |
| mfurlanetto | 3:a703eda2b125 | 71 | Button b (PTA2, DO4, &freq, &multiplier); |
| mfurlanetto | 3:a703eda2b125 | 72 | Button c (PTA12, FA4, &freq, &multiplier); |
| mfurlanetto | 4:f4bd9fe2200b | 73 | |
| mfurlanetto | 4:f4bd9fe2200b | 74 | |
| mfurlanetto | 4:f4bd9fe2200b | 75 | bool allowEdit=false; |
| mfurlanetto | 4:f4bd9fe2200b | 76 | int mode=PLAY; |
| mfurlanetto | 4:f4bd9fe2200b | 77 | float volume=0.2; |
| mfurlanetto | 4:f4bd9fe2200b | 78 | |
| mfurlanetto | 4:f4bd9fe2200b | 79 | while (true) { |
| mfurlanetto | 4:f4bd9fe2200b | 80 | lcd.cls(); |
| mfurlanetto | 4:f4bd9fe2200b | 81 | |
| mfurlanetto | 4:f4bd9fe2200b | 82 | mode = menuManager(mode, &allowEdit); |
| mfurlanetto | 4:f4bd9fe2200b | 83 | |
| mfurlanetto | 4:f4bd9fe2200b | 84 | switch(mode) { |
| mfurlanetto | 4:f4bd9fe2200b | 85 | case PLAY: |
| mfurlanetto | 4:f4bd9fe2200b | 86 | play(volume); |
| mfurlanetto | 4:f4bd9fe2200b | 87 | break; |
| mfurlanetto | 4:f4bd9fe2200b | 88 | case VOLUME: |
| mfurlanetto | 4:f4bd9fe2200b | 89 | volumeSettings(&volume); |
| mfurlanetto | 4:f4bd9fe2200b | 90 | break; |
| mfurlanetto | 4:f4bd9fe2200b | 91 | case METRONOME: |
| mfurlanetto | 4:f4bd9fe2200b | 92 | lcd.printf("metronomo"); |
| mfurlanetto | 4:f4bd9fe2200b | 93 | break; |
| mfurlanetto | 4:f4bd9fe2200b | 94 | case 3: |
| mfurlanetto | 4:f4bd9fe2200b | 95 | lcd.printf("altro ancora"); |
| mfurlanetto | 4:f4bd9fe2200b | 96 | break; |
| mfurlanetto | 4:f4bd9fe2200b | 97 | default: |
| mfurlanetto | 4:f4bd9fe2200b | 98 | mode=0; |
| mfurlanetto | 1:47973f27d645 | 99 | } |
| mfurlanetto | 0:f48fccfff709 | 100 | } |
| mfurlanetto | 0:f48fccfff709 | 101 | } |
