Evan Zhang / Mbed 2 deprecated StepperMotorSong4180

Dependencies:   mbed mbed-rtos SDFileSystem11

Committer:
cawald18
Date:
Mon Apr 26 21:31:02 2021 +0000
Revision:
5:bc7213111da0
Parent:
4:f14ca9203f62
Child:
6:2450dc369670
Now with Flips!;

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 5:bc7213111da0 27 DigitalOut led1(LED2);
cawald18 5:bc7213111da0 28 DigitalOut f1(p21);
cawald18 5:bc7213111da0 29 DigitalOut f2(p22);
cawald18 5:bc7213111da0 30 DigitalOut f3(p23);
cawald18 5:bc7213111da0 31 DigitalOut m1e(p5);
cawald18 5:bc7213111da0 32 DigitalOut m2e(p6);
cawald18 5:bc7213111da0 33 DigitalOut m3e(p7);
cawald18 5:bc7213111da0 34 Ticker t1;
cawald18 5:bc7213111da0 35 Ticker t2;
cawald18 5:bc7213111da0 36 Ticker t3;
cawald18 5:bc7213111da0 37 float motor1stop;
cawald18 5:bc7213111da0 38 float motor2stop;
cawald18 5:bc7213111da0 39 float motor3stop;
cawald18 4:f14ca9203f62 40
cawald18 5:bc7213111da0 41 Timer motor1timer;
cawald18 5:bc7213111da0 42 void flip1()
cawald18 5:bc7213111da0 43 {
cawald18 5:bc7213111da0 44 f1 = !f1;
cawald18 5:bc7213111da0 45 }
cawald18 5:bc7213111da0 46 void flip2()
cawald18 5:bc7213111da0 47 {
cawald18 5:bc7213111da0 48 f2 = !f2;
cawald18 5:bc7213111da0 49 }
cawald18 5:bc7213111da0 50 void flip3(){
cawald18 5:bc7213111da0 51 f3 = !f3;
cawald18 5:bc7213111da0 52 }
cawald18 5:bc7213111da0 53 /*
cawald18 5:bc7213111da0 54 Takes the midi number in from the array and then converts it to a frequency in hz;
cawald18 5:bc7213111da0 55 */
cawald18 5:bc7213111da0 56 float midi2freq(float midi){
cawald18 5:bc7213111da0 57 return 440.0*powf(2.0, (midi-69)/12);
cawald18 5:bc7213111da0 58 }
cawald18 5:bc7213111da0 59
cawald18 0:6cc2c1f459f1 60 int main() {
cawald18 2:39d41fd0f52b 61 bool holdNotes = 0; //Stop reading notes file
cawald18 2:39d41fd0f52b 62 bool holdStart = 0; //Stop reading start times
cawald18 2:39d41fd0f52b 63 bool holdFinish = 0; //Stop reading in finish times
cawald18 1:ddbed1542633 64 pc.baud(115200);
cawald18 1:ddbed1542633 65 const char * d;
cawald18 1:ddbed1542633 66 std::string str = "123.4567";
cawald18 1:ddbed1542633 67 d = str.c_str();
cawald18 1:ddbed1542633 68 // convert string to float
cawald18 1:ddbed1542633 69 float num_float = std::atof(d);
cawald18 1:ddbed1542633 70
cawald18 1:ddbed1542633 71 // convert string to double
cawald18 1:ddbed1542633 72 pc.printf("%f\n", num_float-1.0);
cawald18 1:ddbed1542633 73 int temp = 0;
cawald18 1:ddbed1542633 74
cawald18 1:ddbed1542633 75 pc.printf("Hello World!");
cawald18 1:ddbed1542633 76 string output = "";
cawald18 1:ddbed1542633 77
cawald18 1:ddbed1542633 78 FILE *fpn = fopen("/sd/notesmatrix.txt", "r");
cawald18 1:ddbed1542633 79 FILE *fpstart = fopen("/sd/notesstart.txt", "r");
cawald18 1:ddbed1542633 80 FILE *fpfinish = fopen("/sd/notesfinish.txt","r");
cawald18 1:ddbed1542633 81 unsigned char c;
cawald18 1:ddbed1542633 82 pc.printf("I'm here\n");
cawald18 2:39d41fd0f52b 83 Note myNote = Note(0, 0, 0);
cawald18 1:ddbed1542633 84 while (!feof(fpn)){ // while not end of file
cawald18 2:39d41fd0f52b 85 while(!holdNotes) {
cawald18 1:ddbed1542633 86 c = fgetc(fpn); // get a character/byte from the file
cawald18 1:ddbed1542633 87 if(c == ','){
cawald18 1:ddbed1542633 88 stringstream degree(output);
cawald18 1:ddbed1542633 89 degree >> temp;
cawald18 2:39d41fd0f52b 90 pc.printf("%d\n", temp);
cawald18 1:ddbed1542633 91 output = "";
cawald18 2:39d41fd0f52b 92 holdNotes = 1;
cawald18 1:ddbed1542633 93 } else {
cawald18 1:ddbed1542633 94 output += c;
cawald18 1:ddbed1542633 95 }
cawald18 2:39d41fd0f52b 96 }
cawald18 2:39d41fd0f52b 97 myNote.midiNote = temp;
cawald18 1:ddbed1542633 98 output = "";
cawald18 2:39d41fd0f52b 99 while(!holdStart) {
cawald18 2:39d41fd0f52b 100 c = fgetc(fpstart);
cawald18 2:39d41fd0f52b 101 if(c == ','){
cawald18 2:39d41fd0f52b 102 d = output.c_str();
cawald18 2:39d41fd0f52b 103 num_float = std::atof(d);
cawald18 2:39d41fd0f52b 104 pc.printf("%f\n", num_float);
cawald18 2:39d41fd0f52b 105 output = "";
cawald18 2:39d41fd0f52b 106 myNote.start = num_float;
cawald18 2:39d41fd0f52b 107 holdStart = 1;
cawald18 2:39d41fd0f52b 108 } else {
cawald18 2:39d41fd0f52b 109 output+= c;
cawald18 2:39d41fd0f52b 110 }
cawald18 1:ddbed1542633 111
cawald18 2:39d41fd0f52b 112 }
cawald18 1:ddbed1542633 113 output = "";
cawald18 2:39d41fd0f52b 114 while(!holdFinish){
cawald18 1:ddbed1542633 115 c = fgetc(fpfinish);
cawald18 1:ddbed1542633 116 if(c == ','){
cawald18 1:ddbed1542633 117 d = output.c_str();
cawald18 1:ddbed1542633 118 num_float = std::atof(d);
cawald18 1:ddbed1542633 119 pc.printf("%f\n", num_float);
cawald18 1:ddbed1542633 120 output = "";
cawald18 2:39d41fd0f52b 121 myNote.stop = num_float;
cawald18 2:39d41fd0f52b 122 holdFinish = 1;
cawald18 1:ddbed1542633 123 } else {
cawald18 1:ddbed1542633 124 output+= c;
cawald18 1:ddbed1542633 125 }
cawald18 1:ddbed1542633 126
cawald18 2:39d41fd0f52b 127 } //ONCE WE REACH THIS POINT ALL PARTS OF THE NOTE OBJECT SHOULD BE SET
cawald18 0:6cc2c1f459f1 128 pc.printf("Hello World!\n");
cawald18 1:ddbed1542633 129 pc.printf("%d", myNote.midiNote);
cawald18 0:6cc2c1f459f1 130 // spin in a main loop. flipper will interrupt it to call flip
cawald18 0:6cc2c1f459f1 131 while(1) {
cawald18 0:6cc2c1f459f1 132 led1 = !led1;
cawald18 0:6cc2c1f459f1 133 wait(0.2);
cawald18 3:869a56651e96 134
cawald18 0:6cc2c1f459f1 135 }
cawald18 2:39d41fd0f52b 136
cawald18 2:39d41fd0f52b 137 }
cawald18 2:39d41fd0f52b 138
cawald18 2:39d41fd0f52b 139
cawald18 2:39d41fd0f52b 140
cawald18 0:6cc2c1f459f1 141 }