118 lines
3.9 KiB
Arduino
118 lines
3.9 KiB
Arduino
|
|
// -----------------------------------
|
||
|
|
// Controlling LEDs over the Internet
|
||
|
|
// -----------------------------------
|
||
|
|
|
||
|
|
// First, let's create our "shorthand" for the pins
|
||
|
|
// Same as in the Blink an LED example:
|
||
|
|
// led1 is D0, led2 is D7
|
||
|
|
|
||
|
|
int Relay1 = D4;
|
||
|
|
int Relay2 = D5;
|
||
|
|
int StatusLED = D7;
|
||
|
|
// Last time, we only needed to declare pins in the setup function.
|
||
|
|
// This time, we are also going to register our Particle function
|
||
|
|
|
||
|
|
void setup()
|
||
|
|
{
|
||
|
|
|
||
|
|
// Here's the pin configuration, same as last time
|
||
|
|
pinMode(Relay1, OUTPUT);
|
||
|
|
pinMode(Relay2, OUTPUT);
|
||
|
|
pinMode(StatusLED, OUTPUT);
|
||
|
|
|
||
|
|
// We are also going to declare a Particle.function so that we can turn the LED on and off from the cloud.
|
||
|
|
Particle.function("Relay1",Relay1Toggle);
|
||
|
|
Particle.function("Relay2",Relay2Toggle);
|
||
|
|
Particle.function("StatusLED",StatusLEDToggle);
|
||
|
|
// This is saying that when we ask the cloud for the function "led", it will employ the function ledToggle() from this app.
|
||
|
|
|
||
|
|
// For good measure, let's also make sure both LEDs are off when we start:
|
||
|
|
digitalWrite(Relay1, LOW);
|
||
|
|
digitalWrite(Relay2, LOW);
|
||
|
|
digitalWrite(StatusLED, LOW);
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
// Last time, we wanted to continously blink the LED on and off
|
||
|
|
// Since we're waiting for input through the cloud this time,
|
||
|
|
// we don't actually need to put anything in the loop
|
||
|
|
|
||
|
|
void loop()
|
||
|
|
{
|
||
|
|
// Nothing to do here
|
||
|
|
}
|
||
|
|
|
||
|
|
// We're going to have a super cool function now that gets called when a matching API request is sent
|
||
|
|
// This is the ledToggle function we registered to the "led" Particle.function earlier.
|
||
|
|
|
||
|
|
|
||
|
|
int Relay1Toggle(String command) {
|
||
|
|
/* Particle.functions always take a string as an argument and return an integer.
|
||
|
|
Since we can pass a string, it means that we can give the program commands on how the function should be used.
|
||
|
|
In this case, telling the function "on" will turn the LED on and telling it "off" will turn the LED off.
|
||
|
|
Then, the function returns a value to us to let us know what happened.
|
||
|
|
In this case, it will return 1 for the LEDs turning on, 0 for the LEDs turning off,
|
||
|
|
and -1 if we received a totally bogus command that didn't do anything to the LEDs.
|
||
|
|
*/
|
||
|
|
|
||
|
|
if (command=="on") {
|
||
|
|
digitalWrite(Relay1,HIGH);
|
||
|
|
return 1;
|
||
|
|
}
|
||
|
|
else if (command=="off") {
|
||
|
|
digitalWrite(Relay1,LOW);
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
int Relay2Toggle(String command) {
|
||
|
|
/* Particle.functions always take a string as an argument and return an integer.
|
||
|
|
Since we can pass a string, it means that we can give the program commands on how the function should be used.
|
||
|
|
In this case, telling the function "on" will turn the LED on and telling it "off" will turn the LED off.
|
||
|
|
Then, the function returns a value to us to let us know what happened.
|
||
|
|
In this case, it will return 1 for the LEDs turning on, 0 for the LEDs turning off,
|
||
|
|
and -1 if we received a totally bogus command that didn't do anything to the LEDs.
|
||
|
|
*/
|
||
|
|
|
||
|
|
if (command=="on") {
|
||
|
|
digitalWrite(Relay2,HIGH);
|
||
|
|
return 1;
|
||
|
|
}
|
||
|
|
else if (command=="off") {
|
||
|
|
digitalWrite(Relay2,LOW);
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
int StatusLEDToggle(String command) {
|
||
|
|
/* Particle.functions always take a string as an argument and return an integer.
|
||
|
|
Since we can pass a string, it means that we can give the program commands on how the function should be used.
|
||
|
|
In this case, telling the function "on" will turn the LED on and telling it "off" will turn the LED off.
|
||
|
|
Then, the function returns a value to us to let us know what happened.
|
||
|
|
In this case, it will return 1 for the LEDs turning on, 0 for the LEDs turning off,
|
||
|
|
and -1 if we received a totally bogus command that didn't do anything to the LEDs.
|
||
|
|
*/
|
||
|
|
|
||
|
|
if (command=="on") {
|
||
|
|
digitalWrite(StatusLED,HIGH);
|
||
|
|
return 1;
|
||
|
|
}
|
||
|
|
else if (command=="off") {
|
||
|
|
digitalWrite(StatusLED,LOW);
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
else {
|
||
|
|
return -1;
|
||
|
|
}
|
||
|
|
}
|