3872 Project GT

Dependencies:   MPR121 mbed Servo

Committer:
chenchen2020
Date:
Sun Oct 25 20:53:46 2020 +0000
Revision:
0:fb39f3e8d0d1
V1

Who changed what in which revision?

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