Project Pumpkin: Difference between revisions
Jump to navigation
Jump to search
m Marked |
No edit summary |
||
Line 112: | Line 112: | ||
} | } | ||
</pre> | </pre> | ||
[[Category:Projects]] |
Latest revision as of 17:02, 16 December 2023
For the 2013 Halloween Tyler hosted an Arduino + Pumpkin workshop. The goal: Make Pumpkins more awesome using an Arduino.
So far we have pummeled three SPST switches into the top of a pumpkin.
Two of them are wired up to the Arduino on pins 3 & 4.
- Switch on Pin 3 activates a light display from three LEDs attached to pins 9, 10, and 11. - Switch on Pin 4 activates the halloween theme on a speaker connected to pins 6. - Unwired switch doesn't do anything, yet.
Short video: http://www.youtube.com/watch?v=Xpr7qTlyAkQ&feature=youtu.be
Tyler wrote the code for the light display. Frank wrote the code for the halloween theme. Josh mashed it together in all the wrong ways:
// give it a name: int led[] = {9, 10, 11}; int ledCount = 3; int button1Pin = 3; int button2Pin = 4; int delayTime = 200; int buttonState1 = 0; int buttonState2 = 0; // ######## pumpkin audio setup code ######## int speakerPin = 6; int length = 10; // the number of notes //C, F, F, C, F, F, C, F, C#, F char notes[] = "CffCffCfcf"; // a space represents a rest int beats[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }; int tempo = 130; void playTone(int tone, int duration) { for (long i = 0; i < duration * 1000L; i += tone * 2) { digitalWrite(speakerPin, HIGH); delayMicroseconds(tone); digitalWrite(speakerPin, LOW); delayMicroseconds(tone); } } // void playNote(char note, int duration) { char names[] = { 'c', 'd', 'e', 'f', 'g', 'a', 'b', 'C' }; //low pitched int tones[] = { 890, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; //high pitched // int tones[] = { 590, 1400, 1219, 1132, 975, 836, 714, 656 }; // play the tone corresponding to the note name for (int i = 0; i < 8; i++) { if (names[i] == note) { playTone(tones[i], duration); } } } // ######## end pumpkin audio setup code ######## void setup() { // initialize the digital pin as an output. for (int thisPin = 0; thisPin < ledCount; thisPin++) { pinMode(led[thisPin], OUTPUT); } pinMode(button1Pin, INPUT); pinMode(button2Pin, INPUT); pinMode(speakerPin, OUTPUT); Serial.begin(9600); } void loop() { // buttonState1 = digitalRead(button1Pin); // buttonState2 = digitalRead(button2Pin); Serial.print("B1"); Serial.print(buttonState1 && ";"); Serial.print("\t"); Serial.print("B2"); Serial.println(buttonState2 && ";"); if (buttonState1 == HIGH) { for (int thisPin = 0; thisPin < ledCount; thisPin++) { digitalWrite(led[thisPin], HIGH); delay(delayTime); digitalWrite(led[thisPin], LOW); } for (int thisPin = ledCount - 1; thisPin >= 0; thisPin--) { digitalWrite(led[thisPin], HIGH); delay(delayTime); digitalWrite(led[thisPin], LOW); } } else { for (int thisPin = 0; thisPin < ledCount; thisPin++) { digitalWrite(led[thisPin], LOW); } } if (buttonState2 == HIGH){ for (int i = 0; i < length; i++) { if (notes[i] == ' ') { delay(beats[i] * tempo); // rest } else { playNote(notes[i], beats[i] * tempo); } // pause between notes delay(tempo / 2); } } }