Evan Zhang / Mbed 2 deprecated StepperMotorSong4180

Dependencies:   mbed mbed-rtos SDFileSystem11

Committer:
cawald18
Date:
Mon Apr 26 21:20:36 2021 +0000
Revision:
2:39d41fd0f52b
Parent:
1:ddbed1542633
Child:
3:869a56651e96
Full parsing ability;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cawald18 0:6cc2c1f459f1 1 #include "mbed.h"
cawald18 0:6cc2c1f459f1 2 #include "rtos.h"
cawald18 0:6cc2c1f459f1 3 #include "notes.h"
cawald18 1:ddbed1542633 4 #include "SDFileSystem.h"
cawald18 1:ddbed1542633 5 #include <string>
cawald18 1:ddbed1542633 6 #include <sstream>
cawald18 1:ddbed1542633 7 #include <iostream>
cawald18 1:ddbed1542633 8 #include <cstdlib>
cawald18 1:ddbed1542633 9
cawald18 0:6cc2c1f459f1 10 Thread motor;
cawald18 1:ddbed1542633 11 SDFileSystem sd(p5, p6, p7, p8, "sd");
cawald18 0:6cc2c1f459f1 12 Serial pc(USBTX, USBRX); // tx, rx
cawald18 1:ddbed1542633 13 class Note {
cawald18 1:ddbed1542633 14 public:
cawald18 1:ddbed1542633 15 int midiNote;
cawald18 1:ddbed1542633 16 float start;
cawald18 1:ddbed1542633 17 float stop;
cawald18 1:ddbed1542633 18 Note(int midi, float sta, float sto) {
cawald18 1:ddbed1542633 19 start = sta;
cawald18 1:ddbed1542633 20 stop = sto;
cawald18 1:ddbed1542633 21 midiNote = midi;
cawald18 1:ddbed1542633 22 }
cawald18 1:ddbed1542633 23 };
cawald18 1:ddbed1542633 24
cawald18 0:6cc2c1f459f1 25
cawald18 0:6cc2c1f459f1 26
cawald18 0:6cc2c1f459f1 27 class Flipper {
cawald18 0:6cc2c1f459f1 28 public:
cawald18 0:6cc2c1f459f1 29 Flipper(PinName pin) : _pin(pin) {
cawald18 0:6cc2c1f459f1 30 _pin = 0;
cawald18 0:6cc2c1f459f1 31 }
cawald18 0:6cc2c1f459f1 32 void flip() {
cawald18 0:6cc2c1f459f1 33 _pin = !_pin;
cawald18 0:6cc2c1f459f1 34 }
cawald18 0:6cc2c1f459f1 35 private:
cawald18 0:6cc2c1f459f1 36 DigitalOut _pin;
cawald18 0:6cc2c1f459f1 37 };
cawald18 0:6cc2c1f459f1 38
cawald18 0:6cc2c1f459f1 39 DigitalOut led1(LED1);
cawald18 0:6cc2c1f459f1 40 Flipper f(p21);
cawald18 0:6cc2c1f459f1 41 Flipper f1(p22);
cawald18 0:6cc2c1f459f1 42 Ticker t;
cawald18 0:6cc2c1f459f1 43 Ticker t1;
cawald18 0:6cc2c1f459f1 44
cawald18 0:6cc2c1f459f1 45 int main() {
cawald18 2:39d41fd0f52b 46 bool holdNotes = 0; //Stop reading notes file
cawald18 2:39d41fd0f52b 47 bool holdStart = 0; //Stop reading start times
cawald18 2:39d41fd0f52b 48 bool holdFinish = 0; //Stop reading in finish times
cawald18 1:ddbed1542633 49 pc.baud(115200);
cawald18 1:ddbed1542633 50 const char * d;
cawald18 1:ddbed1542633 51 std::string str = "123.4567";
cawald18 1:ddbed1542633 52 d = str.c_str();
cawald18 1:ddbed1542633 53 // convert string to float
cawald18 1:ddbed1542633 54 float num_float = std::atof(d);
cawald18 1:ddbed1542633 55
cawald18 1:ddbed1542633 56 // convert string to double
cawald18 1:ddbed1542633 57 pc.printf("%f\n", num_float-1.0);
cawald18 1:ddbed1542633 58 int temp = 0;
cawald18 1:ddbed1542633 59
cawald18 1:ddbed1542633 60 pc.printf("Hello World!");
cawald18 1:ddbed1542633 61 string output = "";
cawald18 1:ddbed1542633 62
cawald18 1:ddbed1542633 63 FILE *fpn = fopen("/sd/notesmatrix.txt", "r");
cawald18 1:ddbed1542633 64 FILE *fpstart = fopen("/sd/notesstart.txt", "r");
cawald18 1:ddbed1542633 65 FILE *fpfinish = fopen("/sd/notesfinish.txt","r");
cawald18 1:ddbed1542633 66 unsigned char c;
cawald18 1:ddbed1542633 67 pc.printf("I'm here\n");
cawald18 2:39d41fd0f52b 68 Note myNote = Note(0, 0, 0);
cawald18 1:ddbed1542633 69 while (!feof(fpn)){ // while not end of file
cawald18 2:39d41fd0f52b 70 while(!holdNotes) {
cawald18 1:ddbed1542633 71 c = fgetc(fpn); // get a character/byte from the file
cawald18 1:ddbed1542633 72 if(c == ','){
cawald18 1:ddbed1542633 73 stringstream degree(output);
cawald18 1:ddbed1542633 74 degree >> temp;
cawald18 2:39d41fd0f52b 75 pc.printf("%d\n", temp);
cawald18 1:ddbed1542633 76 output = "";
cawald18 2:39d41fd0f52b 77 holdNotes = 1;
cawald18 1:ddbed1542633 78 } else {
cawald18 1:ddbed1542633 79 output += c;
cawald18 1:ddbed1542633 80 }
cawald18 2:39d41fd0f52b 81 }
cawald18 2:39d41fd0f52b 82 myNote.midiNote = temp;
cawald18 1:ddbed1542633 83 output = "";
cawald18 2:39d41fd0f52b 84 while(!holdStart) {
cawald18 2:39d41fd0f52b 85 c = fgetc(fpstart);
cawald18 2:39d41fd0f52b 86 if(c == ','){
cawald18 2:39d41fd0f52b 87 d = output.c_str();
cawald18 2:39d41fd0f52b 88 num_float = std::atof(d);
cawald18 2:39d41fd0f52b 89 pc.printf("%f\n", num_float);
cawald18 2:39d41fd0f52b 90 output = "";
cawald18 2:39d41fd0f52b 91 myNote.start = num_float;
cawald18 2:39d41fd0f52b 92 holdStart = 1;
cawald18 2:39d41fd0f52b 93 } else {
cawald18 2:39d41fd0f52b 94 output+= c;
cawald18 2:39d41fd0f52b 95 }
cawald18 1:ddbed1542633 96
cawald18 2:39d41fd0f52b 97 }
cawald18 1:ddbed1542633 98 output = "";
cawald18 2:39d41fd0f52b 99 while(!holdFinish){
cawald18 1:ddbed1542633 100 c = fgetc(fpfinish);
cawald18 1:ddbed1542633 101 if(c == ','){
cawald18 1:ddbed1542633 102 d = output.c_str();
cawald18 1:ddbed1542633 103 num_float = std::atof(d);
cawald18 1:ddbed1542633 104 pc.printf("%f\n", num_float);
cawald18 1:ddbed1542633 105 output = "";
cawald18 2:39d41fd0f52b 106 myNote.stop = num_float;
cawald18 2:39d41fd0f52b 107 holdFinish = 1;
cawald18 1:ddbed1542633 108 } else {
cawald18 1:ddbed1542633 109 output+= c;
cawald18 1:ddbed1542633 110 }
cawald18 1:ddbed1542633 111
cawald18 2:39d41fd0f52b 112 } //ONCE WE REACH THIS POINT ALL PARTS OF THE NOTE OBJECT SHOULD BE SET
cawald18 2:39d41fd0f52b 113 float note1 = 1.0/(NOTE_A4*2);
cawald18 0:6cc2c1f459f1 114 float note2 = 1.0/(NOTE_CS5*2);
cawald18 0:6cc2c1f459f1 115 float note2m = 1.0/(NOTE_C5*2);
cawald18 0:6cc2c1f459f1 116 float note3 = 1.0/(NOTE_E5*2);
cawald18 0:6cc2c1f459f1 117 t.attach(&f, &Flipper::flip, note1); // the address of the object, member function, and interval
cawald18 0:6cc2c1f459f1 118 t1.attach(&f1, &Flipper::flip, note2);
cawald18 0:6cc2c1f459f1 119 pc.printf("Hello World!\n");
cawald18 1:ddbed1542633 120 pc.printf("%f\n",note1);
cawald18 1:ddbed1542633 121 pc.printf("%d", myNote.midiNote);
cawald18 0:6cc2c1f459f1 122 // spin in a main loop. flipper will interrupt it to call flip
cawald18 0:6cc2c1f459f1 123 while(1) {
cawald18 0:6cc2c1f459f1 124 for(int i = 0; i < 10; i++) {
cawald18 0:6cc2c1f459f1 125 t1.attach(&f1, &Flipper::flip, note2);
cawald18 0:6cc2c1f459f1 126 led1 = !led1;
cawald18 0:6cc2c1f459f1 127 wait(0.2);
cawald18 0:6cc2c1f459f1 128 t1.attach(&f1, &Flipper::flip, note3);
cawald18 0:6cc2c1f459f1 129 wait(0.2);
cawald18 0:6cc2c1f459f1 130 }
cawald18 0:6cc2c1f459f1 131 for(int i = 0; i < 10; i++) {
cawald18 0:6cc2c1f459f1 132 t1.attach(&f1, &Flipper::flip, note2m);
cawald18 0:6cc2c1f459f1 133 led1 = !led1;
cawald18 0:6cc2c1f459f1 134 wait(0.2);
cawald18 0:6cc2c1f459f1 135 t1.attach(&f1, &Flipper::flip, note3);
cawald18 0:6cc2c1f459f1 136 wait(0.2);
cawald18 0:6cc2c1f459f1 137 }
cawald18 0:6cc2c1f459f1 138
cawald18 0:6cc2c1f459f1 139 }
cawald18 2:39d41fd0f52b 140
cawald18 2:39d41fd0f52b 141 }
cawald18 2:39d41fd0f52b 142
cawald18 2:39d41fd0f52b 143
cawald18 2:39d41fd0f52b 144
cawald18 0:6cc2c1f459f1 145 }