#include <SPI.h>
#include <Ethernet.h>
#include <SdFat.h>
#include <SdFatUtil.h>
#include <WaveRP.h>
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x01 };
IPAddress ip(192,168,1,100);
EthernetClient client;
char serverName[] = "justtwobros.com";
int delayOn = 5000;
int delayOff = 900000;
int delaySong = 60000;
boolean readingData = false;
String tempString = "";
String tempoString = "";
#define number_of_74hc595s 1
#define numOfRegisterPins number_of_74hc595s * 8
boolean registers[numOfRegisterPins];
int latchPin = A2;
int clockPin = A5;
int dataPin = A3;
SdFat sd;
SdFile myFile;
WaveRP wave;
#define error(msg) sd.errorHalt_P(PSTR(msg))
int freeRam(void) {
extern int __bss_end;
extern int *__brkval;
int free_memory;
if((int)__brkval == 0) {
free_memory = ((int)&free_memory) - ((int)&__bss_end);
}
else {
free_memory = ((int)&free_memory) - ((int)__brkval);
}
return free_memory;
}
void setup() {
Serial.begin(9600);
if (!sd.begin(9, SPI_HALF_SPEED)) sd.initErrorHalt();
Ethernet.begin(mac, ip);
Serial.println(Ethernet.localIP());
connectToServer();
}
void loop() {
if (client.connected()) {
if (client.available()) {
char inChar = client.read();
if (!readingData) {
if (inChar == '{') {
readingData = true;
}
} else {
if (inChar == '}') {
playfile("2.WAV");
tempString = "";
} else if (inChar == '(') {
tempoString = tempString;
tempString = "";
} else if (inChar == ')') {
Serial.println(tempString);
delay(tempoString);
tempString = "";
} else if (inChar == ']') {
client.stop();
readingData = false;
tempString = "";
} else if (inChar == '[') { } else {
tempString += inChar;
}
}
}
}
}
void connectToServer() {
if (client.connect(serverName, 80)) {
client.print("GET http://justtwobros.com/christmas/scripts/get_sequence.php");
client.println(" HTTP/1.1");
client.println("Host: justtwobros.com");
client.println();
}
}
void setRegisterPin(int index, int value){ registers[index] = value; }
void writeRegisters(){
digitalWrite(latchPin, LOW);
for(int i = numOfRegisterPins - 1; i >= 0; i--){
digitalWrite(clockPin, LOW);
int val = registers[i];
digitalWrite(dataPin, val);
digitalWrite(clockPin, HIGH);
}
digitalWrite(latchPin, HIGH);
}
void playfile(char *name) {
if (wave.isPlaying()) {// already playing something, so stop it!
wave.stop(); // stop it
}
myFile.close(); // SdFat will not open a file that is already open
if (!myFile.open(name, O_READ)) {
PgmPrint("Couldn't open file ");
Serial.println(name);
return;
}
if (!wave.play(&myFile)) {
PgmPrint("Not a valid WAV ");
Serial.println(name);
return;
}
}
This should be all of it...