Evan Zhang / Mbed 2 deprecated StepperMotorSong4180

Dependencies:   mbed mbed-rtos SDFileSystem11

main.cpp

Committer:
cawald18
Date:
2021-04-26
Revision:
5:bc7213111da0
Parent:
4:f14ca9203f62
Child:
6:2450dc369670

File content as of revision 5:bc7213111da0:

#include "mbed.h"
#include "rtos.h"
#include "notes.h"
#include "SDFileSystem.h"
#include <string>
#include <sstream>
#include <iostream>
#include <cstdlib>

Thread motor;
SDFileSystem sd(p5, p6, p7, p8, "sd");
Serial pc(USBTX, USBRX); // tx, rx
class Note {
public:
    int midiNote;
    float start;
    float stop;
    Note(int midi, float sta, float sto) {
        start = sta;
        stop = sto;
        midiNote = midi;
        }
    };
        


DigitalOut led1(LED2);
DigitalOut f1(p21);
DigitalOut f2(p22);
DigitalOut f3(p23);
DigitalOut m1e(p5);
DigitalOut m2e(p6);
DigitalOut m3e(p7);
Ticker t1;
Ticker t2;
Ticker t3;
float motor1stop;
float motor2stop;
float motor3stop;

Timer motor1timer;
 void flip1()
{
    f1 = !f1;
}
void flip2()
{
    f2 = !f2;
}
void flip3(){
    f3 = !f3;
}
/*
Takes the midi number in from the array and then converts it to a frequency in hz;
*/
float midi2freq(float midi){
    return 440.0*powf(2.0, (midi-69)/12);
}

int main() {
     bool holdNotes = 0; //Stop reading notes file
     bool holdStart = 0; //Stop reading start times
     bool holdFinish = 0; //Stop reading in finish times
     pc.baud(115200);
     const char * d;
     std::string str = "123.4567";
     d = str.c_str();
    // convert string to float
    float num_float = std::atof(d);

    // convert string to double
    pc.printf("%f\n", num_float-1.0);
    int temp = 0;

    pc.printf("Hello World!");
    string output = "";

    FILE *fpn = fopen("/sd/notesmatrix.txt", "r");
    FILE *fpstart = fopen("/sd/notesstart.txt", "r");
    FILE *fpfinish = fopen("/sd/notesfinish.txt","r");
    unsigned char c;
    pc.printf("I'm here\n");
    Note myNote = Note(0, 0, 0);
    while (!feof(fpn)){                        // while not end of file
        while(!holdNotes) {
           c = fgetc(fpn);                         // get a character/byte from the file
           if(c == ','){
               stringstream degree(output);
               degree >> temp;
               pc.printf("%d\n", temp);
               output = "";
               holdNotes = 1;
           } else {
          output += c;
          }
        }
    myNote.midiNote = temp;
    output = "";
        while(!holdStart) {
            c = fgetc(fpstart);
            if(c == ','){
                d = output.c_str();
                num_float = std::atof(d);
                pc.printf("%f\n", num_float);
                output = "";  
                myNote.start = num_float;
                holdStart = 1;
            } else {
                output+= c;
             }
           
        }
    output = "";
    while(!holdFinish){
        c = fgetc(fpfinish);
        if(c == ','){
            d = output.c_str();
            num_float = std::atof(d);
            pc.printf("%f\n", num_float);
            output = "";  
            myNote.stop = num_float;
            holdFinish = 1;
        } else {
           output+= c;
           }
           
    } //ONCE WE REACH THIS POINT ALL PARTS OF THE NOTE OBJECT SHOULD BE SET
    pc.printf("Hello World!\n");
    pc.printf("%d", myNote.midiNote);
    // spin in a main loop. flipper will interrupt it to call flip
    while(1) {
        led1 = !led1;
        wait(0.2);
      
    }
    
}    
      
      
   
}