the mac-o-lantern is alive!

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);
 }
 }

// -------------------------------------------------------------