OK I combined the two and it compiles, however no idea if it works it is just a simple loop1 and then loop 2 setup . I had to go to a Mega because there was not enough memory for a Uno. What error messages were you getting.
Warning, SPI uses pin 13 as does your sound code, this is an issue that needs resolving, move the pin used by the sound file.
This is just the code bit not the Routines.ino file
/* Basic code comes from:
http://hlt.media.mit.edu/?p=1963
good Sounds to find:
http://www.handycomedy.de/
http://soundjax.com/
Copy the files in Libraries to Libraries directory!!
Door Bell Sounds
Autor: Michael Johannes Franz
Date: 05/01/2014
http://electronic-cosmos.de/
share Alike http://creativecommons.org/licenses/by-sa/3.0/
*/
#include <PCM.h>
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x19 }; // Be sure this address is unique in your network
//Your secret DevID from PushingBox.com. You can use multiple DevID on multiple Pin if you want
char DEVID1[] = "Your_DevID_Here"; //Scenario : "The mailbox is open"
//Numeric Pin where you connect your switch
uint8_t pinDevid1 = 3; // Example : the mailbox switch is connect to the Pin 3
// Debug mode
boolean DEBUG = true;
//////////////
// End //
//////////////
// Initialize the Ethernet client library
// with the IP address and port of the server
// that you want to connect to (port 80 is default for HTTP):
EthernetClient client;
char serverName[] = "api.pushingbox.com";
boolean pinDevid1State = false; // Save the last state of the Pin for DEVID1
boolean lastConnected = false; // State of the connection last time through the main loop
// constants:
// Audio or better speaker on pin 11
#define LedPin 13 // LED to show the action of a interrupt
#define wakePin 2 // active LOW, ground this pin momentary to wake up
// Defining the sound
const unsigned char sample[] PROGMEM = {
126, 126, 126, 127, 127, 128, 128, 128, 128, 127, 127, 128, 128, 129, 128, 128, 128, 128, 128, 128, 140, 151, 153, 151, 151, 155, 156, 148, 150, 149, 143, 145, 139, 128, 116, 107, 102, 94, 92, 100, 95, 95 // sample removed to make the post fit
};
int heartbeatledState; // ledState used to set the LED
long heartbeatpreviousMillis;
long heartbeatinterval;
unsigned long heartbeatcurrentMillis;
void setup()
{
pinMode(LedPin, OUTPUT); // LED for indicating a wake up
pinMode(wakePin, INPUT_PULLUP); // Select Pull Up Resistor
heartbeatinterval = 100;
setup2();
}
void loop()
{
loop2();
if((digitalRead(wakePin)) == 0) {
startPlayback(sample, sizeof(sample)); // Play the sample
indicate(); // Stay here as long as the sound is!
// change times in indicate Function
}
else {
delay(100);
stopPlayback(); // Stops the Function
flash(30,1970); // flash without delay each 2 seconds
}
}
////
//
// General code from http://www.pushingbox.com for Arduino + Ethernet Shield (official) v1.2
//
////
/////////////////
// MODIFY HERE //
/////////////////
void setup2() {
Serial.begin(9600);
pinMode(pinDevid1, INPUT);
// start the Ethernet connection:
if (Ethernet.begin(mac) == 0) {
Serial.println("Failed to configure Ethernet using DHCP");
// no point in carrying on, so do nothing forevermore:
while(true);
}
else{
Serial.println("Ethernet ready");
// print the Ethernet board/shield's IP address:
Serial.print("My IP address: ");
Serial.println(Ethernet.localIP());
}
// give the Ethernet shield a second to initialize:
delay(1000);
}
void loop2()
{
////
// Listening for the pinDevid1 state
////
if (digitalRead(pinDevid1) == HIGH && pinDevid1State == false) // switch on pinDevid1 is ON
{
if(DEBUG){Serial.println("pinDevid1 is HIGH");}
pinDevid1State = true;
//Sending request to PushingBox when the pin is HIGHT
sendToPushingBox(DEVID1);
}
if (digitalRead(pinDevid1) == LOW && pinDevid1State == true) // switch on pinDevid1 is OFF
{
if(DEBUG){Serial.println("pinDevid1 is LOW");}
pinDevid1State = false;
//Sending request to PushingBox when the pin is LOW
//sendToPushingBox(DEVID1); //Here you can run an other scenario by creating a DEVID2 variable
}
//DEBUG part
// this write the respons from PushingBox Server.
// You should see a "200 OK"
if (client.available()) {
char c = client.read();
if(DEBUG){Serial.print(c);}
}
// if there's no net connection, but there was one last time
// through the loop, then stop the client:
if (!client.connected() && lastConnected) {
if(DEBUG){Serial.println();}
if(DEBUG){Serial.println("disconnecting.");}
client.stop();
}
lastConnected = client.connected();
}
//Function for sending the request to PushingBox
void sendToPushingBox(char devid[]){
client.stop();
if(DEBUG){Serial.println("connecting...");}
if (client.connect(serverName, 80)) {
if(DEBUG){Serial.println("connected");}
if(DEBUG){Serial.println("sendind request");}
client.print("GET /pushingbox?devid=");
client.print(devid);
client.println(" HTTP/1.1");
client.print("Host: ");
client.println(serverName);
client.println("User-Agent: Arduino");
client.println();
}
else {
if(DEBUG){Serial.println("connection failed");}
}
}