Ok
Sketch:
#include "Midi.h"
#include "Card.h"
//#include "eht.h"
#include "SD.h"
#include "SPI.h"
#include "Ethernet.h"
Midi midi;
Card card;
//Eth eth;
void setup(){
Serial.begin(9600);
Serial1.begin(31250);
Serial2.begin(9600);
Serial.println("Setup has begun");
midi.init();
card.init();
//eth.init();
midi.blinky();
}
void loop(){
midi.rxComm();
}
Card.h:
#ifndef Card_h
#define Card_h
#include "Arduino.h"
#include <SD.h>
class Card{
public:
void init();
void midiCommand(int stuff);
private:
int CS_pin;
File myFile;
SdFile root;
SdVolume volume;
boolean cardReady;
//midi command variables
int n;
char d;
char c;
char LineFromFile[255];
int stuff;
int junk;
};
#endif
Card source:
#include "Arduino.h"
#include "Card.h"
void Card::init(){
CS_pin = 4;
pinMode(CS_pin, OUTPUT);
if(!SD.begin(CS_pin)){
Serial.println("Card Failed");
return;
}
Serial.println("Card Ready");
cardReady = true;
}
void Card::midiCommand(int stuff){
Serial.println("midi command called");
n = 0;
myFile = SD.open("midiComm.csv");
Serial.println("File should be open");
while (myFile.available()){
c = myFile.read();
if (c != '\n'){
LineFromFile[n] = c;
n++;
int xyz;
for (xyz = 0; xyz < n; xyz++){
if (LineFromFile[xyz] != ','){
junk += LineFromFile[xyz];
Serial.print(LineFromFile[xyz]);
if(junk == stuff){
Serial.println("GOOOD!!!! ");
}
}else{
Serial.print(" ");
}
}
}else{
Serial.println(" ");
}
n = 0;
}
}
Midi.h:
#ifndef Midi_h
#define Midi_h
#include "Arduino.h"
class Midi{
public:
void init();
void blinky();
void rxComm();
private:
#define STAT1 7
#define STAT2 6
};
#endif
Midi source:
#include "Arduino.h"
#include "Midi.h"
#include "Card.h"
void Midi::init(){
pinMode(STAT1,OUTPUT);
pinMode(STAT2,OUTPUT);
}
void Midi::blinky(){
for(int i = 0; i < 10; i++){
digitalWrite(STAT1,HIGH);
digitalWrite(STAT2,LOW);
delay(30);
digitalWrite(STAT1,LOW);
digitalWrite(STAT2,HIGH);
delay(30);
}
digitalWrite(STAT1,HIGH);
digitalWrite(STAT2,HIGH);
}
void Midi::rxComm(){
Card card;
if (Serial1.available()){
Serial.print("MIDI: ");
digitalWrite(STAT2,LOW);
int inByte = Serial1.read();
Serial.println(inByte);
Serial1.flush();
delay(10);
digitalWrite(STAT2,HIGH);
if(inByte > 191){
if (inByte <208){
card.midiCommand(inByte);
}
}
}
}