3872 Project GT
Dependencies: MPR121 mbed Servo
main.cpp@0:fb39f3e8d0d1, 2020-10-25 (annotated)
- Committer:
- chenchen2020
- Date:
- Sun Oct 25 20:53:46 2020 +0000
- Revision:
- 0:fb39f3e8d0d1
V1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
chenchen2020 | 0:fb39f3e8d0d1 | 1 | #include "mbed.h" |
chenchen2020 | 0:fb39f3e8d0d1 | 2 | #include "Servo.h" |
chenchen2020 | 0:fb39f3e8d0d1 | 3 | #include <mpr121.h> |
chenchen2020 | 0:fb39f3e8d0d1 | 4 | #include "SongPlayer.h" |
chenchen2020 | 0:fb39f3e8d0d1 | 5 | |
chenchen2020 | 0:fb39f3e8d0d1 | 6 | #define max_note 40 |
chenchen2020 | 0:fb39f3e8d0d1 | 7 | #define max_timer_seconds 20 |
chenchen2020 | 0:fb39f3e8d0d1 | 8 | #define A2 110.0 |
chenchen2020 | 0:fb39f3e8d0d1 | 9 | #define B2 123.0 |
chenchen2020 | 0:fb39f3e8d0d1 | 10 | #define C3 131.0 |
chenchen2020 | 0:fb39f3e8d0d1 | 11 | #define D3 185.0 |
chenchen2020 | 0:fb39f3e8d0d1 | 12 | #define E3 165.0 |
chenchen2020 | 0:fb39f3e8d0d1 | 13 | #define F3 174.614 |
chenchen2020 | 0:fb39f3e8d0d1 | 14 | #define G3 195.998 |
chenchen2020 | 0:fb39f3e8d0d1 | 15 | #define G_# 207.652 |
chenchen2020 | 0:fb39f3e8d0d1 | 16 | |
chenchen2020 | 0:fb39f3e8d0d1 | 17 | uint8_t mode = 0; |
chenchen2020 | 0:fb39f3e8d0d1 | 18 | DigitalIn record_mode(p14); |
chenchen2020 | 0:fb39f3e8d0d1 | 19 | DigitalIn play_back_mode(p16); |
chenchen2020 | 0:fb39f3e8d0d1 | 20 | DigitalIn play_live_mode(p15); |
chenchen2020 | 0:fb39f3e8d0d1 | 21 | DigitalIn STOP(p17); |
chenchen2020 | 0:fb39f3e8d0d1 | 22 | DigitalOut GreenLED(p18); |
chenchen2020 | 0:fb39f3e8d0d1 | 23 | DigitalOut IndicatorLED(p19); |
chenchen2020 | 0:fb39f3e8d0d1 | 24 | DigitalIn RESET(p20); |
chenchen2020 | 0:fb39f3e8d0d1 | 25 | I2C i2c(p9, p10); |
chenchen2020 | 0:fb39f3e8d0d1 | 26 | |
chenchen2020 | 0:fb39f3e8d0d1 | 27 | Mpr121 mpr121(&i2c, Mpr121::ADD_VSS); |
chenchen2020 | 0:fb39f3e8d0d1 | 28 | InterruptIn interrupt(p30); |
chenchen2020 | 0:fb39f3e8d0d1 | 29 | Servo skull_jaw(p26); |
chenchen2020 | 0:fb39f3e8d0d1 | 30 | Servo skull_base(p25); |
chenchen2020 | 0:fb39f3e8d0d1 | 31 | Servo spare_servo(p24); |
chenchen2020 | 0:fb39f3e8d0d1 | 32 | PwmOut RED_LED(p23); |
chenchen2020 | 0:fb39f3e8d0d1 | 33 | PwmOut Blue_LED(p22); |
chenchen2020 | 0:fb39f3e8d0d1 | 34 | SongPlayer mySpeaker(p21); |
chenchen2020 | 0:fb39f3e8d0d1 | 35 | |
chenchen2020 | 0:fb39f3e8d0d1 | 36 | bool expired; //Timer expiration |
chenchen2020 | 0:fb39f3e8d0d1 | 37 | |
chenchen2020 | 0:fb39f3e8d0d1 | 38 | //Instantiate Skull Object |
chenchen2020 | 0:fb39f3e8d0d1 | 39 | |
chenchen2020 | 0:fb39f3e8d0d1 | 40 | class skull{ |
chenchen2020 | 0:fb39f3e8d0d1 | 41 | public: |
chenchen2020 | 0:fb39f3e8d0d1 | 42 | char memory[40]; |
chenchen2020 | 0:fb39f3e8d0d1 | 43 | void openJaw(float angle); |
chenchen2020 | 0:fb39f3e8d0d1 | 44 | void turn_table(float angle); |
chenchen2020 | 0:fb39f3e8d0d1 | 45 | void play_tune(float tune); |
chenchen2020 | 0:fb39f3e8d0d1 | 46 | void record_memory(); |
chenchen2020 | 0:fb39f3e8d0d1 | 47 | void erase_memory(); |
chenchen2020 | 0:fb39f3e8d0d1 | 48 | void append_memory(); |
chenchen2020 | 0:fb39f3e8d0d1 | 49 | }; |
chenchen2020 | 0:fb39f3e8d0d1 | 50 | |
chenchen2020 | 0:fb39f3e8d0d1 | 51 | int main() { |
chenchen2020 | 0:fb39f3e8d0d1 | 52 | while(1) { |
chenchen2020 | 0:fb39f3e8d0d1 | 53 | if(record_mode == 1){ |
chenchen2020 | 0:fb39f3e8d0d1 | 54 | mode = 1; |
chenchen2020 | 0:fb39f3e8d0d1 | 55 | } |
chenchen2020 | 0:fb39f3e8d0d1 | 56 | if(play_back_mode == 1){ |
chenchen2020 | 0:fb39f3e8d0d1 | 57 | mode = 2; |
chenchen2020 | 0:fb39f3e8d0d1 | 58 | } |
chenchen2020 | 0:fb39f3e8d0d1 | 59 | if(play_live_mode == 1){ |
chenchen2020 | 0:fb39f3e8d0d1 | 60 | mode = 3; |
chenchen2020 | 0:fb39f3e8d0d1 | 61 | } |
chenchen2020 | 0:fb39f3e8d0d1 | 62 | if(STOP == 1){ |
chenchen2020 | 0:fb39f3e8d0d1 | 63 | mode = 4; |
chenchen2020 | 0:fb39f3e8d0d1 | 64 | } |
chenchen2020 | 0:fb39f3e8d0d1 | 65 | switch(mode){ |
chenchen2020 | 0:fb39f3e8d0d1 | 66 | case 1: |
chenchen2020 | 0:fb39f3e8d0d1 | 67 | //Record Mode |
chenchen2020 | 0:fb39f3e8d0d1 | 68 | break; |
chenchen2020 | 0:fb39f3e8d0d1 | 69 | case 2: |
chenchen2020 | 0:fb39f3e8d0d1 | 70 | //Play_back_mode |
chenchen2020 | 0:fb39f3e8d0d1 | 71 | break; |
chenchen2020 | 0:fb39f3e8d0d1 | 72 | case 3: |
chenchen2020 | 0:fb39f3e8d0d1 | 73 | //play_live_mode |
chenchen2020 | 0:fb39f3e8d0d1 | 74 | break; |
chenchen2020 | 0:fb39f3e8d0d1 | 75 | case 4: |
chenchen2020 | 0:fb39f3e8d0d1 | 76 | //Stop |
chenchen2020 | 0:fb39f3e8d0d1 | 77 | break; |
chenchen2020 | 0:fb39f3e8d0d1 | 78 | case 5: |
chenchen2020 | 0:fb39f3e8d0d1 | 79 | //Reset |
chenchen2020 | 0:fb39f3e8d0d1 | 80 | break; |
chenchen2020 | 0:fb39f3e8d0d1 | 81 | } |
chenchen2020 | 0:fb39f3e8d0d1 | 82 | } |
chenchen2020 | 0:fb39f3e8d0d1 | 83 | } |
chenchen2020 | 0:fb39f3e8d0d1 | 84 | |
chenchen2020 | 0:fb39f3e8d0d1 | 85 | void fallInterrupt() { |
chenchen2020 | 0:fb39f3e8d0d1 | 86 | //int key_code=0; |
chenchen2020 | 0:fb39f3e8d0d1 | 87 | //int i=0; |
chenchen2020 | 0:fb39f3e8d0d1 | 88 | if(mode == 1 && !expired){ |
chenchen2020 | 0:fb39f3e8d0d1 | 89 | //write the recorded stuff here |
chenchen2020 | 0:fb39f3e8d0d1 | 90 | } //recording mode |
chenchen2020 | 0:fb39f3e8d0d1 | 91 | |
chenchen2020 | 0:fb39f3e8d0d1 | 92 | if(mode == 2){ |
chenchen2020 | 0:fb39f3e8d0d1 | 93 | uint16_t value=mpr121.read(0x00); |
chenchen2020 | 0:fb39f3e8d0d1 | 94 | value +=mpr121.read(0x01)<<8; |
chenchen2020 | 0:fb39f3e8d0d1 | 95 | float note[] = {value + 110}; |
chenchen2020 | 0:fb39f3e8d0d1 | 96 | float duration[] = {0.24}; |
chenchen2020 | 0:fb39f3e8d0d1 | 97 | if(note[0]>110){ |
chenchen2020 | 0:fb39f3e8d0d1 | 98 | mySpeaker.PlaySong(note, duration);} |
chenchen2020 | 0:fb39f3e8d0d1 | 99 | } |
chenchen2020 | 0:fb39f3e8d0d1 | 100 | } |