Music Box 2
This commit is contained in:
parent
98bf101060
commit
dd07bb851c
106
Music_box_2.ino
Normal file
106
Music_box_2.ino
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
#include <SPI.h>
|
||||||
|
#include <SD.h>
|
||||||
|
#define SizeRegisterModules 300
|
||||||
|
|
||||||
|
int IDarg = 0;
|
||||||
|
String ParsedCommand[SizeRegisterModules];
|
||||||
|
File myFile;
|
||||||
|
|
||||||
|
char getCharCommand(){
|
||||||
|
if (Serial.available() > 0) {
|
||||||
|
char cmdraw = Serial.read();
|
||||||
|
if (cmdraw > 0) return cmdraw;
|
||||||
|
}
|
||||||
|
return '?';
|
||||||
|
}
|
||||||
|
|
||||||
|
char getCharCommand2(){
|
||||||
|
if (myFile.available() > 0) {
|
||||||
|
char cmdraw = myFile.read();
|
||||||
|
if (cmdraw > 0) return cmdraw;
|
||||||
|
}
|
||||||
|
return '?';
|
||||||
|
}
|
||||||
|
|
||||||
|
void play(String *args) {
|
||||||
|
for(int i = 0;i<=1000;i++) {
|
||||||
|
if(args[i*3] == "tone") {
|
||||||
|
//tone(2,args[i*3+2],args[i*3+3]);
|
||||||
|
Serial.print("tone(2,");
|
||||||
|
Serial.print(args[i*3+2]);
|
||||||
|
Serial.print(",");
|
||||||
|
Serial.print(args[i*3+3]);
|
||||||
|
Serial.println(");");
|
||||||
|
} else if(args[i*3] == "delay") {
|
||||||
|
Serial.print("delay(");
|
||||||
|
Serial.print(args[i*3+3]);
|
||||||
|
Serial.println(");");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void mainL(String *args){
|
||||||
|
if(args[0] == "play")
|
||||||
|
{
|
||||||
|
Serial.println("initialization done.");
|
||||||
|
myFile = SD.open(args[1]);
|
||||||
|
if (myFile) {
|
||||||
|
Serial.print(args[1]);
|
||||||
|
Serial.println(":");
|
||||||
|
|
||||||
|
// read from the file until there's nothing else in it:
|
||||||
|
while (myFile.available()) {
|
||||||
|
char CharCommand = getCharCommand();
|
||||||
|
if (CharCommand != '}' && CharCommand != '?'){
|
||||||
|
Serial.print(CharCommand);
|
||||||
|
if (CharCommand == ' ' && CharCommand == '(' && CharCommand == ',' && CharCommand == ')'){
|
||||||
|
if(CharCommand == ')') { IDarg++; }
|
||||||
|
IDarg++;
|
||||||
|
}else{
|
||||||
|
ParsedCommand[IDarg] += CharCommand;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Serial.println(" ");
|
||||||
|
play(ParsedCommand);
|
||||||
|
IDarg = 0;
|
||||||
|
for (int i = 0;i<=3000;i++) {ParsedCommand[i]="";}
|
||||||
|
Serial.print(">");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// close the file:
|
||||||
|
myFile.close();
|
||||||
|
} else {
|
||||||
|
// if the file didn't open, print an error:
|
||||||
|
Serial.print("error opening ");
|
||||||
|
Serial.println(args[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
// Open serial communications and wait for port to open:
|
||||||
|
Serial.begin(9600);
|
||||||
|
while (!Serial) {
|
||||||
|
; // wait for serial port to connect. Needed for native USB port only
|
||||||
|
}
|
||||||
|
SD.begin(4);
|
||||||
|
Serial.print("\n \n \n \n>");
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
char CharCommand = getCharCommand();
|
||||||
|
if (CharCommand != ';' && CharCommand != '?'){
|
||||||
|
Serial.print(CharCommand);
|
||||||
|
if (CharCommand == ' '){
|
||||||
|
IDarg++;
|
||||||
|
}else{
|
||||||
|
ParsedCommand[IDarg] += CharCommand;
|
||||||
|
}
|
||||||
|
}else if(CharCommand == ';'){
|
||||||
|
Serial.println(" ");
|
||||||
|
mainL(ParsedCommand);
|
||||||
|
IDarg = 0;
|
||||||
|
for (int i = 0;i<=3000;i++) {ParsedCommand[i]="";}
|
||||||
|
Serial.print(">");
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user