Michele Furlanetto / Mbed 2 deprecated mbed_keyboard

Dependencies:   TextLCD mbed MMA8451Q TSI

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?

UserRevisionLine numberNew 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 }