The mac-o-lantern thinks it has a little Pentium heart <3. So to light up your pumpkin you need to treat it just like a computer. When you’re not using it, it’s in sleep mode, fading in and out (breathing). To wake it up you need to push its right patch, and a white light will turn on (simulating when it’s on). Then it has a little mouse. When you move it over the switch, it will connect to the internet (dial-up connection tones). Then, you need to click the button on its left patch, and it will download the Halloween software. A beeping sound indicates when the download is done. When it finishes downloading… you can now turn off the lights and the pumpkin will light on, and it will be ready to light up the night!
This slideshow requires JavaScript.
The connections:

And here’s my baby code:
// DECLARE BREATHE
int ledBreathe = 6;
int buttonPin = 3; // the number of the pushbutton pin
int buttonState = 0; // variable for reading the pushbutton status
int brightness = 0; // how bright the LED is
int fadeAmount = 5; // how many points to fade the LED by
// DECLARE REED + SPEAKER SWITCH
int reedPin = 2; // the number of the reed switch pin
int reedState = 0; // variable for reading the reed status
int speaker = 8;
// DECLARE BUTTON CLICK
int buttonStateD = 0; // variable for reading the pushbutton status
int buttonPinD = 13; // the number of the pushbutton pin
int ledGreen1 = 4; // the number of the LED pin
int ledGreen2 = 5; // the number of the LED pin
int ledGreen3 = 12; // the number of the LED pin
int ledGreen4 = 7; // the number of the LED pin
// DECLARE LIGHT SENSOR
int analogPin = 0;
int ledFire1 = 10;
int ledFire2 = 9;
int ledFire3 = 11;
int val = 0;
// -------------------------------------------------------------
// -------------------------------------------------------------
void setup(){
Serial.begin(9600);
// BREATHE
pinMode(ledBreathe, OUTPUT);
pinMode(buttonPin, INPUT);
// REED SWITCH
pinMode(speaker, OUTPUT);
pinMode(reedPin, INPUT);
// BUTTON CLICK
pinMode(ledGreen1, OUTPUT);
pinMode(ledGreen2, OUTPUT);
pinMode(ledGreen3, OUTPUT);
pinMode(ledGreen4, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(buttonPinD, INPUT);
// LIGHT SENSOR
pinMode(ledFire1, OUTPUT);
pinMode(ledFire2, OUTPUT);
pinMode(ledFire3, OUTPUT);
}
// -------------------------------------------------------------
// -------------------------------------------------------------
void loop(){
// LIGHT SENSOR
val = analogRead(analogPin); // Read the value (amount of light) from photocell
Serial.println(val);
click();
breathe();
sound();
if(val
digitalWrite(ledGreen1, LOW);
digitalWrite(ledGreen2, LOW);
digitalWrite(ledGreen3, LOW);
digitalWrite(ledGreen4, LOW);
analogWrite(ledFire1, random(120)+135);
analogWrite(ledFire2, random(120)+135);
analogWrite(ledFire3, random(120)+135);
delay(random(100));
Serial.println("high");
}
else{
analogWrite(ledFire1, LOW);
analogWrite(ledFire2, LOW);
analogWrite(ledFire3, LOW);
Serial.println("low");
}
}
/* -------------------------------------------------------------
ALL THE MAC-O-LANTERN FUNCTIONS
------------------------------------------------------------- */
// BREATHE FUNCTION
void breathe(){
buttonState = digitalRead(buttonPin);
if (buttonState == LOW){
analogWrite(ledBreathe, brightness);
brightness = brightness + fadeAmount;
if (brightness == 0 || brightness == 255) {
fadeAmount = -fadeAmount ;
}
delay(30);
}
if (buttonState == HIGH) {
digitalWrite(ledBreathe, HIGH);
delay(5000);
}
}
// -------------------------------------------------------------
// CLICK FUNCTION
void click(){
buttonStateD = digitalRead(buttonPinD);
if (buttonStateD == HIGH) {
digitalWrite(ledGreen1, HIGH);
delay(1000);
digitalWrite(ledGreen2, HIGH);
delay(2000);
digitalWrite(ledGreen3, HIGH);
delay(3000);
digitalWrite(ledGreen4, HIGH);
delay(1000);
digitalWrite(ledGreen1, LOW);
digitalWrite(ledGreen2, LOW);
digitalWrite(ledGreen3, LOW);
digitalWrite(ledGreen4, LOW);
delay(500);
digitalWrite(ledGreen1, HIGH);
digitalWrite(ledGreen2, HIGH);
digitalWrite(ledGreen3, HIGH);
digitalWrite(ledGreen4, HIGH);
delay(500);
digitalWrite(ledGreen1, LOW);
digitalWrite(ledGreen2, LOW);
digitalWrite(ledGreen3, LOW);
digitalWrite(ledGreen4, LOW);
delay(500);
digitalWrite(ledGreen1, HIGH);
digitalWrite(ledGreen2, HIGH);
digitalWrite(ledGreen3, HIGH);
digitalWrite(ledGreen4, HIGH);
delay(500);
digitalWrite(ledGreen1, LOW);
digitalWrite(ledGreen2, LOW);
digitalWrite(ledGreen3, LOW);
digitalWrite(ledGreen4, LOW);
delay(500);
digitalWrite(ledGreen1, HIGH);
digitalWrite(ledGreen2, HIGH);
digitalWrite(ledGreen3, HIGH);
digitalWrite(ledGreen4, HIGH);
tone(speaker, 2000);
delay(100);
noTone(speaker);
delay(100);
tone(speaker, 3000);
delay(100);
noTone(speaker);
delay(100);
}
else{
noTone(speaker);
}
}
// -------------------------------------------------------------
// REED PLUS SPEAKER FUNCTION
void sound(){
reedState = digitalRead(reedPin);
if (reedState == HIGH) {
tone(speaker, 200);
delay(2000);
tone(speaker, 500);
delay(2000);
tone(speaker, 800);
delay(2000);
tone(speaker, 1100);
delay(4000);
tone(speaker, 1600);
delay(500);
}
else{
noTone(speaker);
}
}
// -------------------------------------------------------------
Reply