/* ProtoSnap LilyPad Development Platform Example Code by: Pete Lewis SparkFun Electronics date: 8/24/11 license: Creative Commons Attribution-Share-alike v3.0 CC BY-SA 3.0 http://creativecommons.org/licenses/by-sa/3.0/ This is example code for the Protosnap LilyPad Development Platform It'll do a quick startup sequence, flashing all LEDs, then it'll go int the loop. In the loop it'll check for button or switch presses, and buzz or vibrate depending on if they're engaged. If neither switch is on, it'll check the light sensor and temperature sensor, and light up some LEDs if the proper values are met. Hold your finger over the light sensor to turn the white LEDs on. Try blowing on the temperature sensor to turn the red LED on. Finally, the status of each input is streamed over the serial line at 9600 bps. To see what the values are, open up the serial monitor (the top right icon) and make sure the baud is set to 9600. */ /* Pin Definitions */ // LEDs: white LEDs are connected to 5, 6, A2, A3, A4 int ledPins[] = {5, 6, A2, A4, A3, 9, 10, 11}; int switchPin = 2; int buttonPin = A5; int vibePin = 3; int buzzerP = 7; int buzzerN = 12; int lightSensorPin = A6; int tempSensorPin = A1; /* Global variables */ int light = 100; void setup() { //STARTUP LED SEQUENCE for(int i=0; i<5; i++) // This for loop will run 5 times { // blink the white LEDs (first 5 LEDs in ledPins array) pinMode(ledPins[i], OUTPUT); // set pin as output digitalWrite(ledPins[i], HIGH); // turn LED on delay(250); // wait for a quarter second digitalWrite(ledPins[i], LOW); // turn LED off } for(int i=5;i<8;i++) // This for loop will run 3 times { // blink the RGB LEDs (last 3 LEDs in ledPins array) pinMode(ledPins[i], OUTPUT); // set the pin as an output digitalWrite(ledPins[i], LOW); // turn RGB LED on delay(250); // wait a quarter second digitalWrite(ledPins[i], HIGH); // turn the RGB LED off // Note that a HIGH turns the RGB LED off, LOW is on // that's backwards from the white LEDs } //////////////////////////////////////////// //Switch pinMode(switchPin, INPUT); // set the switch as an input digitalWrite(switchPin, HIGH); // enable the pull-up resistor //Button pinMode(buttonPin, INPUT); // set the pin as an input digitalWrite(buttonPin, HIGH); // enable the pull-up resistor //VIBE pinMode(vibePin, OUTPUT); // set the pin as an output //Buzzer pinMode(buzzerP, OUTPUT); // set both buzzer pins as outputs pinMode(buzzerN, OUTPUT); Serial.begin(9600); // We'll output some information over serial } void loop() { //Buzzer if(digitalRead(buttonPin) == 0) { // if you press the button, make a short buzz digitalWrite(buzzerP, HIGH); digitalWrite(buzzerN, LOW); delay(1); digitalWrite(buzzerP, LOW); digitalWrite(buzzerN, HIGH); } else // If the button is not pressed go in here { if(digitalRead(switchPin) == 0) { // If the switch is on, vibrate digitalWrite(vibePin, HIGH); delay(100); digitalWrite(vibePin, LOW); } ///LIGHT TEST if(analogRead(lightSensorPin) < 20){ //if its dark, turn on all white leds... for(int i=0;i<5;i++) { digitalWrite(ledPins[i], HIGH); } } else{ // if it's light, turn them off... for(int i=0;i<5;i++) { digitalWrite(ledPins[i], LOW); } } ///TEMP TEST if(analogRead(tempSensorPin) > 160) { //if the tech puts a little hot air over the temp sensor it will raise to at least 170 digitalWrite(ledPins[5], LOW); //Turn on red LED - to indicate "hot" } else{ digitalWrite(ledPins[5], HIGH); // turn the red LED off } /* from here on down, we'll just print out the status of every input */ Serial.print("Switch="); Serial.print(digitalRead(switchPin)); Serial.print(" Temp="); Serial.print(analogRead(tempSensorPin)); Serial.print(" Button="); Serial.print(digitalRead(buttonPin)); Serial.print(" Light="); Serial.println(analogRead(lightSensorPin)); } }