Michele Furlanetto / Mbed 2 deprecated mbed_keyboard

Dependencies:   TextLCD mbed MMA8451Q TSI

Committer:
mfurlanetto
Date:
Tue Aug 25 14:12:19 2015 +0000
Revision:
6:459ddd3079fa
Parent:
4:f4bd9fe2200b
Child:
7:98bccc314b54
Riscritto la classe Speaker;; Aggiunto un 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 6:459ddd3079fa 20 #define MIN_METRONOME_BPM 40
mfurlanetto 6:459ddd3079fa 21 #define MAX_METRONOME_BPM 208
mfurlanetto 4:f4bd9fe2200b 22 #define MMA8451_I2C_ADDRESS (0x1d<<1)
mfurlanetto 4:f4bd9fe2200b 23
mfurlanetto 2:86de87ec731a 24 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 6:459ddd3079fa 25
mfurlanetto 0:f48fccfff709 26 DigitalOut led1(LED1);
mfurlanetto 4:f4bd9fe2200b 27 MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
mfurlanetto 4:f4bd9fe2200b 28 TSISensor slider;
mfurlanetto 6:459ddd3079fa 29 Ticker t;
mfurlanetto 6:459ddd3079fa 30 int freq;
mfurlanetto 4:f4bd9fe2200b 31 int multiplier =0;
mfurlanetto 4:f4bd9fe2200b 32
mfurlanetto 4:f4bd9fe2200b 33 void volumeSettings(float* volume)
mfurlanetto 4:f4bd9fe2200b 34 {
mfurlanetto 4:f4bd9fe2200b 35 float tmp= slider.readPercentage();
mfurlanetto 4:f4bd9fe2200b 36 if (tmp>0) *volume = tmp;
mfurlanetto 4:f4bd9fe2200b 37 lcd.printf("Volume: %.3f", *volume);
mfurlanetto 4:f4bd9fe2200b 38 wait(0.2);
mfurlanetto 4:f4bd9fe2200b 39 }
mfurlanetto 4:f4bd9fe2200b 40
mfurlanetto 3:a703eda2b125 41
mfurlanetto 6:459ddd3079fa 42 void menuManager(int* mode, bool* allowEdit)
mfurlanetto 4:f4bd9fe2200b 43 {
mfurlanetto 4:f4bd9fe2200b 44 double y=acc.getAccY();
mfurlanetto 0:f48fccfff709 45
mfurlanetto 6:459ddd3079fa 46 lcd.printf("modo: %d", *mode);
mfurlanetto 6:459ddd3079fa 47 wait(0.05);
mfurlanetto 4:f4bd9fe2200b 48 if (*allowEdit==false) {
mfurlanetto 4:f4bd9fe2200b 49 if (y<-TILT_TOLERANCE_SET) {
mfurlanetto 4:f4bd9fe2200b 50 *allowEdit=true;
mfurlanetto 6:459ddd3079fa 51 *mode=*mode+1;
mfurlanetto 4:f4bd9fe2200b 52 } else if (y>TILT_TOLERANCE_SET) {
mfurlanetto 4:f4bd9fe2200b 53 *allowEdit=true;
mfurlanetto 6:459ddd3079fa 54 *mode=*mode-1;
mfurlanetto 4:f4bd9fe2200b 55 }
mfurlanetto 4:f4bd9fe2200b 56 } else {
mfurlanetto 4:f4bd9fe2200b 57 if (abs(y)<TILT_TOLERANCE_RESET) {
mfurlanetto 4:f4bd9fe2200b 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 6:459ddd3079fa 64 void flipLed(){
mfurlanetto 6:459ddd3079fa 65 led1=!led1;
mfurlanetto 6:459ddd3079fa 66 }
mfurlanetto 6:459ddd3079fa 67
mfurlanetto 6:459ddd3079fa 68 void metronomeSettings(){
mfurlanetto 6:459ddd3079fa 69 float bpm=6;
mfurlanetto 6:459ddd3079fa 70 lcd.cls();
mfurlanetto 6:459ddd3079fa 71 lcd.printf("bpm: %.0f",bpm*10);
mfurlanetto 6:459ddd3079fa 72 wait(0.1);
mfurlanetto 6:459ddd3079fa 73 float tmp = slider.readPercentage();
mfurlanetto 6:459ddd3079fa 74 if(tmp>0){
mfurlanetto 6:459ddd3079fa 75 t.detach();
mfurlanetto 6:459ddd3079fa 76 while (tmp>0){
mfurlanetto 6:459ddd3079fa 77 bpm = MIN_METRONOME_BPM/10+tmp*(MAX_METRONOME_BPM-MIN_METRONOME_BPM)/10;
mfurlanetto 6:459ddd3079fa 78 tmp = slider.readPercentage();
mfurlanetto 6:459ddd3079fa 79 lcd.cls();
mfurlanetto 6:459ddd3079fa 80 lcd.printf("bpm: %.0f",bpm*10);
mfurlanetto 6:459ddd3079fa 81 wait(0.1);
mfurlanetto 6:459ddd3079fa 82 }
mfurlanetto 6:459ddd3079fa 83 t.attach(&flipLed, 6/(bpm));
mfurlanetto 6:459ddd3079fa 84 }
mfurlanetto 4:f4bd9fe2200b 85 }
mfurlanetto 4:f4bd9fe2200b 86
mfurlanetto 4:f4bd9fe2200b 87 int main()
mfurlanetto 4:f4bd9fe2200b 88 {
mfurlanetto 0:f48fccfff709 89 led1=1;
mfurlanetto 6:459ddd3079fa 90
mfurlanetto 6:459ddd3079fa 91 Speaker speaker (PTA4);
mfurlanetto 6:459ddd3079fa 92
mfurlanetto 6:459ddd3079fa 93 float* volume=speaker.getVolumeBuffer();
mfurlanetto 6:459ddd3079fa 94 Button a (PTA1, LA4, &speaker, &multiplier);
mfurlanetto 6:459ddd3079fa 95 Button b (PTA2, DO4, &speaker, &multiplier);
mfurlanetto 6:459ddd3079fa 96 Button c (PTA12, FA4, &speaker, &multiplier);
mfurlanetto 4:f4bd9fe2200b 97
mfurlanetto 4:f4bd9fe2200b 98 bool allowEdit=false;
mfurlanetto 4:f4bd9fe2200b 99 int mode=PLAY;
mfurlanetto 6:459ddd3079fa 100
mfurlanetto 6:459ddd3079fa 101
mfurlanetto 6:459ddd3079fa 102 t.attach(&flipLed, 1.0);
mfurlanetto 6:459ddd3079fa 103
mfurlanetto 4:f4bd9fe2200b 104 while (true) {
mfurlanetto 4:f4bd9fe2200b 105 lcd.cls();
mfurlanetto 6:459ddd3079fa 106 menuManager(&mode, &allowEdit);
mfurlanetto 4:f4bd9fe2200b 107 switch(mode) {
mfurlanetto 4:f4bd9fe2200b 108 case PLAY:
mfurlanetto 4:f4bd9fe2200b 109 break;
mfurlanetto 4:f4bd9fe2200b 110 case VOLUME:
mfurlanetto 6:459ddd3079fa 111 volumeSettings(volume);
mfurlanetto 4:f4bd9fe2200b 112 break;
mfurlanetto 4:f4bd9fe2200b 113 case METRONOME:
mfurlanetto 6:459ddd3079fa 114 metronomeSettings();
mfurlanetto 4:f4bd9fe2200b 115 break;
mfurlanetto 4:f4bd9fe2200b 116 case 3:
mfurlanetto 4:f4bd9fe2200b 117 lcd.printf("altro ancora");
mfurlanetto 4:f4bd9fe2200b 118 break;
mfurlanetto 4:f4bd9fe2200b 119 default:
mfurlanetto 6:459ddd3079fa 120 mode=PLAY;
mfurlanetto 1:47973f27d645 121 }
mfurlanetto 6:459ddd3079fa 122
mfurlanetto 0:f48fccfff709 123 }
mfurlanetto 0:f48fccfff709 124 }