3872 Play-live--test code - tempting to make this the main one

Dependencies:   mbed fastlib

Committer:
chenchen2020
Date:
Wed Nov 11 04:50:30 2020 +0000
Revision:
2:9296823ea33d
Parent:
1:c704bea518d8
Final;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
4180_1 0:e09703934ff4 1 #include <mbed.h>
4180_1 0:e09703934ff4 2 #include <string>
4180_1 0:e09703934ff4 3 #include <list>
4180_1 0:e09703934ff4 4
4180_1 0:e09703934ff4 5 #include <mpr121.h>
chenchen2020 1:c704bea518d8 6 #include "SongPlayer.h"
chenchen2020 2:9296823ea33d 7 #include "fastlib/clock.h"
4180_1 0:e09703934ff4 8
chenchen2020 2:9296823ea33d 9 SongPlayer mySpeaker(p21);
chenchen2020 2:9296823ea33d 10
chenchen2020 2:9296823ea33d 11 //fl_select_pll0_clock_source(1);
chenchen2020 2:9296823ea33d 12 //fl_pll0_control(1,1); //enable PLL clock
chenchen2020 2:9296823ea33d 13 //fl_pll0_config(1, 512); //Configure output clock freq.
chenchen2020 2:9296823ea33d 14
chenchen2020 2:9296823ea33d 15 Timer t;
chenchen2020 2:9296823ea33d 16 Timer t_rest;
chenchen2020 2:9296823ea33d 17 Timer t_base;
chenchen2020 2:9296823ea33d 18 Timer reset_timer;
chenchen2020 2:9296823ea33d 19 Timer song_timer;
chenchen2020 2:9296823ea33d 20 bool timer_begin = 0;
chenchen2020 2:9296823ea33d 21 bool played = 0;
chenchen2020 2:9296823ea33d 22 uint16_t value = 0;
chenchen2020 2:9296823ea33d 23 float temp_value;
chenchen2020 2:9296823ea33d 24 PwmOut jawServo(p26);
chenchen2020 2:9296823ea33d 25 PwmOut baseServo(p25);
chenchen2020 1:c704bea518d8 26 DigitalIn record_mode(p14);
chenchen2020 1:c704bea518d8 27 DigitalIn play_back_mode(p16);
chenchen2020 1:c704bea518d8 28 DigitalIn play_live_mode(p15);
chenchen2020 2:9296823ea33d 29 DigitalIn stop_mode(p17);
chenchen2020 2:9296823ea33d 30 DigitalIn reset_mode(p20);
chenchen2020 2:9296823ea33d 31 DigitalOut greenLED(p23);
chenchen2020 2:9296823ea33d 32 DigitalOut redLED(p18);
chenchen2020 2:9296823ea33d 33 DigitalOut blueLED(p22);
chenchen2020 2:9296823ea33d 34
chenchen2020 1:c704bea518d8 35
chenchen2020 2:9296823ea33d 36 enum Statetype {IDLE = 0, REC = 1, PLAY_BACK = 2, PLAY_LIVE = 3, STOP = 4, RESET = 5};
chenchen2020 2:9296823ea33d 37
chenchen2020 2:9296823ea33d 38 Statetype mode;
chenchen2020 2:9296823ea33d 39
chenchen2020 2:9296823ea33d 40 float mem_note[160];
chenchen2020 2:9296823ea33d 41 float mem_duration[160];
chenchen2020 2:9296823ea33d 42 int mem_ind;
chenchen2020 2:9296823ea33d 43 float dt;
chenchen2020 2:9296823ea33d 44 float dur[1]= {0.5f};
chenchen2020 1:c704bea518d8 45
chenchen2020 2:9296823ea33d 46 class Watchdog
chenchen2020 2:9296823ea33d 47 {
chenchen2020 2:9296823ea33d 48 public:
chenchen2020 2:9296823ea33d 49 // Load timeout value in watchdog timer and enable
chenchen2020 2:9296823ea33d 50 void kick(float s)
chenchen2020 2:9296823ea33d 51 {
chenchen2020 2:9296823ea33d 52 LPC_WDT->WDCLKSEL = 0x1; // Set CLK src to PCLK
chenchen2020 2:9296823ea33d 53 uint32_t clk = SystemCoreClock / 16; // WD has a fixed /4 prescaler, PCLK default is /4
chenchen2020 2:9296823ea33d 54 LPC_WDT->WDTC = s * (float)clk;
chenchen2020 2:9296823ea33d 55 LPC_WDT->WDMOD = 0x3; // Enabled and Reset
chenchen2020 2:9296823ea33d 56 kick();
chenchen2020 2:9296823ea33d 57 }
chenchen2020 2:9296823ea33d 58 // "kick" or "feed" the dog - reset the watchdog timer
chenchen2020 2:9296823ea33d 59 // by writing this required bit pattern
chenchen2020 2:9296823ea33d 60 void kick()
chenchen2020 2:9296823ea33d 61 {
chenchen2020 2:9296823ea33d 62 LPC_WDT->WDFEED = 0xAA;
chenchen2020 2:9296823ea33d 63 LPC_WDT->WDFEED = 0x55;
chenchen2020 2:9296823ea33d 64 }
chenchen2020 2:9296823ea33d 65 };
chenchen2020 1:c704bea518d8 66
chenchen2020 2:9296823ea33d 67 Watchdog wdt;
4180_1 0:e09703934ff4 68
4180_1 0:e09703934ff4 69 // Create the interrupt receiver object on pin 26
chenchen2020 2:9296823ea33d 70 InterruptIn interrupt(p30);
4180_1 0:e09703934ff4 71
4180_1 0:e09703934ff4 72 // Setup the Serial to the PC for debugging
4180_1 0:e09703934ff4 73 Serial pc(USBTX, USBRX);
4180_1 0:e09703934ff4 74
4180_1 0:e09703934ff4 75 // Setup the i2c bus on pins 28 and 27
4180_1 0:e09703934ff4 76 I2C i2c(p9, p10);
4180_1 0:e09703934ff4 77
4180_1 0:e09703934ff4 78 // Setup the Mpr121:
4180_1 0:e09703934ff4 79 // constructor(i2c object, i2c address of the mpr121)
4180_1 0:e09703934ff4 80 Mpr121 mpr121(&i2c, Mpr121::ADD_VSS);
4180_1 0:e09703934ff4 81
chenchen2020 2:9296823ea33d 82 float note = 0;
chenchen2020 2:9296823ea33d 83
chenchen2020 2:9296823ea33d 84 float parse_key(uint16_t input)
chenchen2020 2:9296823ea33d 85 {
chenchen2020 2:9296823ea33d 86 switch(input) {
chenchen2020 2:9296823ea33d 87 case 0x0:
chenchen2020 2:9296823ea33d 88 return 0.0;
chenchen2020 2:9296823ea33d 89 case 0x1:
chenchen2020 2:9296823ea33d 90 return 440.0;
chenchen2020 2:9296823ea33d 91 case 0x2:
chenchen2020 2:9296823ea33d 92 return 446.16;
chenchen2020 2:9296823ea33d 93 case 0x4:
chenchen2020 2:9296823ea33d 94 return 493.88;
chenchen2020 2:9296823ea33d 95 case 0x8:
chenchen2020 2:9296823ea33d 96 return 523.25;
chenchen2020 2:9296823ea33d 97 case 0x10:
chenchen2020 2:9296823ea33d 98 return 554.37;
chenchen2020 2:9296823ea33d 99 case 0x20:
chenchen2020 2:9296823ea33d 100 return 587.33;
chenchen2020 2:9296823ea33d 101 case 0x40:
chenchen2020 2:9296823ea33d 102 return 622.25;
chenchen2020 2:9296823ea33d 103 case 0x80:
chenchen2020 2:9296823ea33d 104 return 659.25;
chenchen2020 2:9296823ea33d 105 case 0x100:
chenchen2020 2:9296823ea33d 106 return 698.46;
chenchen2020 2:9296823ea33d 107 case 0x200:
chenchen2020 2:9296823ea33d 108 return 739.99;
chenchen2020 2:9296823ea33d 109 case 0x400:
chenchen2020 2:9296823ea33d 110 return 783.99;
chenchen2020 2:9296823ea33d 111 case 0x800:
chenchen2020 2:9296823ea33d 112 return 830.61;
chenchen2020 2:9296823ea33d 113 default:
chenchen2020 2:9296823ea33d 114 return 0.0;
chenchen2020 2:9296823ea33d 115 }
chenchen2020 2:9296823ea33d 116 }
chenchen2020 2:9296823ea33d 117
chenchen2020 2:9296823ea33d 118 void dance(uint16_t note_input)
chenchen2020 2:9296823ea33d 119 {
chenchen2020 2:9296823ea33d 120
chenchen2020 2:9296823ea33d 121 if(note_input == 0x1) {
chenchen2020 2:9296823ea33d 122 redLED = 1;
chenchen2020 2:9296823ea33d 123 greenLED = 0;
chenchen2020 2:9296823ea33d 124 blueLED = 0;
chenchen2020 2:9296823ea33d 125 jawServo.write(0.11f);
chenchen2020 2:9296823ea33d 126 baseServo.write(0.11f);
chenchen2020 2:9296823ea33d 127 } else if(note_input == 0x1) {
chenchen2020 2:9296823ea33d 128 redLED = 1;
chenchen2020 2:9296823ea33d 129 greenLED = 1;
chenchen2020 2:9296823ea33d 130 blueLED = 0;
chenchen2020 2:9296823ea33d 131 jawServo.write(0.18f);
chenchen2020 2:9296823ea33d 132 baseServo.write(0.18f);
chenchen2020 2:9296823ea33d 133 } else if(note_input == 0x2) {
chenchen2020 2:9296823ea33d 134 redLED = 1;
chenchen2020 2:9296823ea33d 135 greenLED = 1;
chenchen2020 2:9296823ea33d 136 blueLED = 1;
chenchen2020 2:9296823ea33d 137 jawServo.write(0.23f);
chenchen2020 2:9296823ea33d 138 baseServo.write(0.23f);
chenchen2020 2:9296823ea33d 139 } else if(note_input == 0x4) {
chenchen2020 2:9296823ea33d 140 redLED = 0;
chenchen2020 2:9296823ea33d 141 greenLED = 1;
chenchen2020 2:9296823ea33d 142 blueLED = 1;
chenchen2020 2:9296823ea33d 143 jawServo.write(0.28f);
chenchen2020 2:9296823ea33d 144 baseServo.write(0.28f);
chenchen2020 2:9296823ea33d 145 } else if(note_input == 0x8) {
chenchen2020 2:9296823ea33d 146 redLED = 0;
chenchen2020 2:9296823ea33d 147 greenLED = 0;
chenchen2020 2:9296823ea33d 148 blueLED = 1;
chenchen2020 2:9296823ea33d 149 jawServo.write(0.34f);
chenchen2020 2:9296823ea33d 150 baseServo.write(0.34f);
chenchen2020 2:9296823ea33d 151 } else if(note_input == 0x10) {
chenchen2020 2:9296823ea33d 152 redLED = 0;
chenchen2020 2:9296823ea33d 153 greenLED = 1;
chenchen2020 2:9296823ea33d 154 blueLED = 1;
chenchen2020 2:9296823ea33d 155 jawServo.write(0.39f);
chenchen2020 2:9296823ea33d 156 baseServo.write(0.39f);
chenchen2020 2:9296823ea33d 157 } else if(note_input == 0x20) {
chenchen2020 2:9296823ea33d 158 redLED = 1;
chenchen2020 2:9296823ea33d 159 greenLED = 0;
chenchen2020 2:9296823ea33d 160 blueLED = 1;
chenchen2020 2:9296823ea33d 161 jawServo.write(0.48f);
chenchen2020 2:9296823ea33d 162 baseServo.write(0.48f);
chenchen2020 2:9296823ea33d 163 } else if(note_input == 0x40) {
chenchen2020 2:9296823ea33d 164 redLED = 1;
chenchen2020 2:9296823ea33d 165 greenLED = 1;
chenchen2020 2:9296823ea33d 166 blueLED = 0;
chenchen2020 2:9296823ea33d 167 jawServo.write(0.55f);
chenchen2020 2:9296823ea33d 168 baseServo.write(0.55f);
chenchen2020 2:9296823ea33d 169 } else if(note_input == 0x80) {
chenchen2020 2:9296823ea33d 170 redLED = 0;
chenchen2020 2:9296823ea33d 171 greenLED = 1;
chenchen2020 2:9296823ea33d 172 blueLED = 1;
chenchen2020 2:9296823ea33d 173 jawServo.write(0.63f);
chenchen2020 2:9296823ea33d 174 baseServo.write(0.63f);
chenchen2020 2:9296823ea33d 175 } else if(note_input == 0x100) {
chenchen2020 2:9296823ea33d 176 redLED = 1;
chenchen2020 2:9296823ea33d 177 greenLED = 1;
chenchen2020 2:9296823ea33d 178 blueLED = 0;
chenchen2020 2:9296823ea33d 179 jawServo.write(0.73f);
chenchen2020 2:9296823ea33d 180 baseServo.write(0.73f);
chenchen2020 2:9296823ea33d 181 } else if(note_input == 0x200) {
chenchen2020 2:9296823ea33d 182 redLED = 1;
chenchen2020 2:9296823ea33d 183 greenLED = 0;
chenchen2020 2:9296823ea33d 184 blueLED = 1;
chenchen2020 2:9296823ea33d 185 jawServo.write(0.83f);
chenchen2020 2:9296823ea33d 186 baseServo.write(0.83f);
chenchen2020 2:9296823ea33d 187 } else if(note_input == 0x400) {
chenchen2020 2:9296823ea33d 188 redLED = 1;
chenchen2020 2:9296823ea33d 189 greenLED = 0;
chenchen2020 2:9296823ea33d 190 blueLED = 1;
chenchen2020 2:9296823ea33d 191 jawServo.write(0.88f);
chenchen2020 2:9296823ea33d 192 baseServo.write(0.88f);
chenchen2020 2:9296823ea33d 193 } else if(note_input == 0x800) {
chenchen2020 2:9296823ea33d 194 redLED = 1;
chenchen2020 2:9296823ea33d 195 greenLED = 1;
chenchen2020 2:9296823ea33d 196 blueLED = 1;
chenchen2020 2:9296823ea33d 197 jawServo.write(0.93f);
chenchen2020 2:9296823ea33d 198 baseServo.write(0.93f);
chenchen2020 2:9296823ea33d 199 } else {
chenchen2020 2:9296823ea33d 200 redLED = 1;
chenchen2020 2:9296823ea33d 201 greenLED = 1;
chenchen2020 2:9296823ea33d 202 blueLED = 1;
chenchen2020 2:9296823ea33d 203 jawServo.write(0.98f);
chenchen2020 2:9296823ea33d 204 baseServo.write(0.98f);
chenchen2020 2:9296823ea33d 205 }
chenchen2020 2:9296823ea33d 206 //wait(0.45);
chenchen2020 2:9296823ea33d 207 }
chenchen2020 2:9296823ea33d 208
chenchen2020 2:9296823ea33d 209 void fallInterrupt()
chenchen2020 2:9296823ea33d 210 {
chenchen2020 1:c704bea518d8 211 //int key_code=0;
chenchen2020 1:c704bea518d8 212 //int i=0;
chenchen2020 2:9296823ea33d 213 //wdt.kick();
chenchen2020 2:9296823ea33d 214 interrupt.fall(NULL);
chenchen2020 2:9296823ea33d 215 t_rest.stop();
chenchen2020 2:9296823ea33d 216 t.start();
chenchen2020 1:c704bea518d8 217 uint16_t value=mpr121.read(0x00);
4180_1 0:e09703934ff4 218 value +=mpr121.read(0x01)<<8;
chenchen2020 2:9296823ea33d 219 float temp_value = parse_key(value);
chenchen2020 2:9296823ea33d 220 if(record_mode == 0 && mem_ind < 160){
chenchen2020 1:c704bea518d8 221 //Write duration and silence in object
chenchen2020 1:c704bea518d8 222 mem_note[mem_ind] = 0;
chenchen2020 1:c704bea518d8 223 mem_duration[mem_ind] = t_rest.read();
chenchen2020 1:c704bea518d8 224 pc.printf("New Data in memory: Note: %f Duration: %f\n", mem_note[mem_ind], mem_duration[mem_ind]);
chenchen2020 1:c704bea518d8 225 mem_ind++;
chenchen2020 1:c704bea518d8 226 }
chenchen2020 1:c704bea518d8 227 pc.printf("The time of silence seconds %f \n", t_rest.read());
chenchen2020 1:c704bea518d8 228 t_rest.reset();
chenchen2020 2:9296823ea33d 229 wait(0.1);
chenchen2020 2:9296823ea33d 230 float note = parse_key(value);
chenchen2020 2:9296823ea33d 231 if(play_live_mode == 0 || record_mode == 0){
chenchen2020 1:c704bea518d8 232 mySpeaker.Play_Note(note);
chenchen2020 2:9296823ea33d 233 dance(note);
chenchen2020 1:c704bea518d8 234 }
chenchen2020 2:9296823ea33d 235 //wdt.kick();
chenchen2020 1:c704bea518d8 236 //sustaining note
chenchen2020 1:c704bea518d8 237 while(value > 0){
chenchen2020 2:9296823ea33d 238 if(play_live_mode == 0 || record_mode == 0){
chenchen2020 1:c704bea518d8 239 mySpeaker.Play_Note(note);
4180_1 0:e09703934ff4 240 }
chenchen2020 2:9296823ea33d 241 wait(0.05);
chenchen2020 1:c704bea518d8 242 pc.printf("MPR value: %x \r\n", value);
chenchen2020 2:9296823ea33d 243 note = parse_key(value);
chenchen2020 2:9296823ea33d 244 if(play_live_mode == 0 || record_mode == 0){
chenchen2020 1:c704bea518d8 245 mySpeaker.Play_Note(note);
chenchen2020 1:c704bea518d8 246 }
chenchen2020 1:c704bea518d8 247 value=mpr121.read(0x00);
chenchen2020 1:c704bea518d8 248 value +=mpr121.read(0x01)<<8;
chenchen2020 2:9296823ea33d 249 //wdt.kick();
chenchen2020 1:c704bea518d8 250 }
chenchen2020 1:c704bea518d8 251 mySpeaker.Play_Note(0);
chenchen2020 1:c704bea518d8 252 t.stop();
chenchen2020 2:9296823ea33d 253 if(record_mode == 0 && mem_ind < 160){
chenchen2020 1:c704bea518d8 254 mem_note[mem_ind] = temp_value;
chenchen2020 1:c704bea518d8 255 mem_duration[mem_ind] = t.read();
chenchen2020 1:c704bea518d8 256 pc.printf("New Data in memory: Note: %f Duration: %f\n", mem_note[mem_ind], mem_duration[mem_ind]);
chenchen2020 1:c704bea518d8 257 mem_ind++;
chenchen2020 1:c704bea518d8 258 }
chenchen2020 1:c704bea518d8 259 t_rest.start();
chenchen2020 1:c704bea518d8 260 float duration[] = {t.read()};
chenchen2020 1:c704bea518d8 261 pc.printf("The of note seconds %f \n", t.read());
chenchen2020 1:c704bea518d8 262 t.reset();
chenchen2020 2:9296823ea33d 263 //wait(0.05);
chenchen2020 2:9296823ea33d 264 interrupt.fall(&fallInterrupt);
chenchen2020 2:9296823ea33d 265 interrupt.mode(PullUp);
chenchen2020 2:9296823ea33d 266 //wdt.kick();
4180_1 0:e09703934ff4 267 }
chenchen2020 2:9296823ea33d 268
chenchen2020 2:9296823ea33d 269 int main()
chenchen2020 2:9296823ea33d 270 {
chenchen2020 2:9296823ea33d 271 wait(1); //initialization
chenchen2020 2:9296823ea33d 272 //pc.printf("SystemCoreClock = %d Hz\r\n", SystemCoreClock);
chenchen2020 2:9296823ea33d 273 //wdt.kick(100);
chenchen2020 2:9296823ea33d 274
chenchen2020 2:9296823ea33d 275 //reset_mode.fall(&reset);
chenchen2020 2:9296823ea33d 276 //reset_mode.rise(&reset_over);
chenchen2020 2:9296823ea33d 277 //reset_mode.mode(PullUp);
chenchen2020 2:9296823ea33d 278
chenchen2020 2:9296823ea33d 279 jawServo.period_ms(20);
chenchen2020 2:9296823ea33d 280 baseServo.period_ms(20);
4180_1 0:e09703934ff4 281 interrupt.fall(&fallInterrupt);
4180_1 0:e09703934ff4 282 interrupt.mode(PullUp);
4180_1 0:e09703934ff4 283
4180_1 0:e09703934ff4 284 while (1) {
chenchen2020 2:9296823ea33d 285 if(record_mode == 0 && reset_mode == 1) {
chenchen2020 2:9296823ea33d 286 redLED = 1;
chenchen2020 2:9296823ea33d 287 blueLED = 0;
chenchen2020 2:9296823ea33d 288 greenLED = 0;
chenchen2020 2:9296823ea33d 289 played = 0;
chenchen2020 2:9296823ea33d 290 //wdt.kick();
chenchen2020 2:9296823ea33d 291 } else if(play_back_mode == 0 && reset_mode == 1) {
chenchen2020 2:9296823ea33d 292 note = 0;
chenchen2020 2:9296823ea33d 293 redLED = 0;
chenchen2020 2:9296823ea33d 294 blueLED = 1;
chenchen2020 2:9296823ea33d 295 greenLED = 0;
chenchen2020 2:9296823ea33d 296 interrupt.fall(NULL); //disable interrupt
chenchen2020 2:9296823ea33d 297 //t.stop();
chenchen2020 2:9296823ea33d 298 //t.reset();
chenchen2020 2:9296823ea33d 299 //t_rest.stop();
chenchen2020 2:9296823ea33d 300 //t_rest.reset();
chenchen2020 2:9296823ea33d 301 for(int k = 0; k < mem_ind; k++) {
chenchen2020 2:9296823ea33d 302 mySpeaker.Play_Note(mem_note[k]);
chenchen2020 2:9296823ea33d 303 dance(mem_note[k]);
chenchen2020 2:9296823ea33d 304 if(reset_mode == 0){
chenchen2020 2:9296823ea33d 305 break;
chenchen2020 2:9296823ea33d 306 }
chenchen2020 2:9296823ea33d 307 wait(mem_duration[k]);
chenchen2020 2:9296823ea33d 308 }
chenchen2020 2:9296823ea33d 309 interrupt.fall(&fallInterrupt);
chenchen2020 2:9296823ea33d 310 interrupt.mode(PullUp);
chenchen2020 2:9296823ea33d 311 //wdt.kick();
chenchen2020 2:9296823ea33d 312 } else if(play_live_mode == 0 && reset_mode == 1) {
chenchen2020 2:9296823ea33d 313 note = 0;
chenchen2020 2:9296823ea33d 314 redLED = 0;
chenchen2020 2:9296823ea33d 315 blueLED = 0;
chenchen2020 2:9296823ea33d 316 greenLED = 1;
chenchen2020 2:9296823ea33d 317 played = 0;
chenchen2020 2:9296823ea33d 318 //wdt.kick();
chenchen2020 2:9296823ea33d 319 } else if(stop_mode == 0 && reset_mode == 1) {
chenchen2020 2:9296823ea33d 320 note = 0;
chenchen2020 2:9296823ea33d 321 redLED = 0;
chenchen2020 2:9296823ea33d 322 blueLED = 0;
chenchen2020 2:9296823ea33d 323 greenLED = 0;
chenchen2020 2:9296823ea33d 324 //wdt.kick();
chenchen2020 2:9296823ea33d 325 } else if(reset_mode == 0) {
chenchen2020 2:9296823ea33d 326 //wdt.kick();
chenchen2020 2:9296823ea33d 327 note = 0;
chenchen2020 2:9296823ea33d 328 redLED = 0;
chenchen2020 2:9296823ea33d 329 blueLED = 0;
chenchen2020 2:9296823ea33d 330 greenLED = 0;
chenchen2020 2:9296823ea33d 331 interrupt.fall(NULL);
chenchen2020 2:9296823ea33d 332 mySpeaker.Play_Note(0);
chenchen2020 2:9296823ea33d 333 if(!timer_begin) {
chenchen2020 2:9296823ea33d 334 timer_begin = 1;
chenchen2020 2:9296823ea33d 335 reset_timer.start();
chenchen2020 2:9296823ea33d 336 }
chenchen2020 2:9296823ea33d 337 while(reset_mode == 0) {
chenchen2020 2:9296823ea33d 338
chenchen2020 2:9296823ea33d 339 //t_base.stop();
chenchen2020 2:9296823ea33d 340 //dt += t_base.read();
chenchen2020 2:9296823ea33d 341 //t_base.reset();
chenchen2020 2:9296823ea33d 342
chenchen2020 2:9296823ea33d 343 //rotation orientation back to original position
chenchen2020 2:9296823ea33d 344 //baseServo.pulsewidth_ms(1.9);
chenchen2020 2:9296823ea33d 345 //wait(dt);
chenchen2020 2:9296823ea33d 346 //dt = 0;
chenchen2020 2:9296823ea33d 347 if(reset_timer.read() > 3) {
chenchen2020 2:9296823ea33d 348 for(int n = 0; n < 160; n++) {
chenchen2020 2:9296823ea33d 349 mem_note[n] = 0;
chenchen2020 2:9296823ea33d 350 mem_duration[n] = 0;
chenchen2020 2:9296823ea33d 351 }
chenchen2020 2:9296823ea33d 352 }
chenchen2020 2:9296823ea33d 353 //wdt.kick();
chenchen2020 2:9296823ea33d 354 }
chenchen2020 2:9296823ea33d 355 reset_timer.stop();
chenchen2020 2:9296823ea33d 356 reset_timer.reset();
chenchen2020 2:9296823ea33d 357 timer_begin = 1;
chenchen2020 2:9296823ea33d 358 mem_ind = 0;
chenchen2020 2:9296823ea33d 359 interrupt.fall(&fallInterrupt);
chenchen2020 2:9296823ea33d 360 interrupt.mode(PullUp);
chenchen2020 1:c704bea518d8 361 }
chenchen2020 2:9296823ea33d 362 //wdt.kick();
4180_1 0:e09703934ff4 363 }
4180_1 0:e09703934ff4 364 }
4180_1 0:e09703934ff4 365
4180_1 0:e09703934ff4 366
4180_1 0:e09703934ff4 367
chenchen2020 2:9296823ea33d 368