Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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);
}
}
}