Things used in this project

Hardware components:
Photon new
Particle Photon
Kemet c320c104k5r5ta image
Capacitor 100 nF
Panasonic eca2am101
Capacitor 100 µF
Mfr 25frf52 10k sml
Resistor 10k ohm
1N4001 Diode
Fairchild 1n5819
1N5819 – 1A Schottky Barrier Rectifier
Resistor 1 ohm - RSF100JB-1R0
Resistor 20K ohm 5% 0.25W(1/4W)
Capacitor 220pF 100V 5%
Panasonic eca 1hm221
Capacitor 220 µF
Inductor 220 uH
Resistor 30.1K ohm .40W 1%
Thyristor Triac .6A 600V TO92
Texas Instruments MC33063
Terminal Block 5 mm Vert 2POS
Terminal Block 5 mm Vert 3POS
Terminal Block 5 mm Vert 8POS
PTC Resettable Fuse 0.75A (hold)
Resistor 330 ohm 16-pin DIP Thick Film
Stardust Sprinkler circuit board
Software apps and online services:
IFTTT Amazon Alexa service


Sprinkler Stardust
PCB for WICED Stardust or Photon to control 12VAC Valves


Menorah Control codeArduino
This is the code flashed on the Particle . You can control either individual LEDs or use it to set the day in which all LED equal or less than the number specified with be lit
// -----------------------------------
// Controlling LEDs over the Internet
// -----------------------------------

// name the pins
int led1 = D0;
int led2 = D1;
int led3 = D2;
int led4 = D3;
int led5 = D4;
int led6 = D5;
int led7 = D6;
int led8 = D7;

// This routine runs only once upon reset
void setup()
   //Register one Particle function here
   Particle.function("led", ledControl);

   //Register two Particle function here
   Particle.function("menorah", SetDay);

   // Configure the pins to be outputs
   pinMode(led1, OUTPUT);
   pinMode(led2, OUTPUT);
   pinMode(led3, OUTPUT);
   pinMode(led4, OUTPUT);
   pinMode(led5, OUTPUT);
   pinMode(led6, OUTPUT);
   pinMode(led7, OUTPUT);
   pinMode(led8, OUTPUT);

   // Initialize   the LEDs to be OFF
   digitalWrite(led1, LOW);
   digitalWrite(led2, LOW);
   digitalWrite(led3, LOW);
   digitalWrite(led4, LOW);
   digitalWrite(led5, LOW);
   digitalWrite(led6, LOW);
   digitalWrite(led7, LOW);
   digitalWrite(led8, LOW);


// This routine loops forever 
void loop()
   // Nothing to do here

// This function gets called whenever there is a matching API request
// the command string format is l<led number>,<state>
// for example: l1,HIGH or l1,LOW
//              l2,HIGH or l2,LOW

int ledControl(String command)
   int state = 0;
   //find out the pin number and convert the ascii to integer
   int pinNumber = command.charAt(1) - '0';
   //Sanity check to see if the pin numbers are within limits
   if (pinNumber < 0 || pinNumber > 7) return -1;

   // find out the state of the led
   if(command.substring(3,7) == "HIGH") state = 1;
   else if(command.substring(3,6) == "LOW") state = 0;
   else return -1;

   // write to the appropriate pin
   digitalWrite(pinNumber, state);
   return 1;

int SetDay(String command)

   int i=0;
   //find out the day number and convert the ascii to integer
   int dayNumber = command.charAt(0) - '0';
   //Sanity check to see if the pin numbers are within limits
   if (dayNumber < 0 || dayNumber > 8) return -1;

   if (dayNumber==0) {

   	for (i=0; i<8; i++){
   	digitalWrite(i, 0);

   else {
     	for (i=0; i<8; i++){

   	digitalWrite(i, (i < dayNumber));

   return 1;


Arthur Sobel

General electronics


Did you replicate this project? Share it!

I made one

Love this project? Think it could be improved? Tell us what you think!

Give feedback


Be the first to comment!

Similar projects you might like

ProjectsCommunitiesContestsLiveFree StoreBlogAdd projectSign up / Login