diff --git a/build/shared/examples/10.StarterKit/p02_SpaceshipInterface/p02_SpaceshipInterface.ino b/build/shared/examples/10.StarterKit/p02_SpaceshipInterface/p02_SpaceshipInterface.ino new file mode 100644 index 000000000..84893529a --- /dev/null +++ b/build/shared/examples/10.StarterKit/p02_SpaceshipInterface/p02_SpaceshipInterface.ino @@ -0,0 +1,68 @@ +/* + Arduino Starter Kit example + Project 2 - Spaceship Interface + + This sketch is written to accompany Project 2 in the + Arduino Starter Kit + + Parts required: + 1 green LED + 2 red LEDs + pushbutton + 10 kilohm resistor + 3 220 ohm resistors + + Created 13 September 2012 + by Scott Fitzgerald + + http://arduino.cc/starterKit + + This example code is part of the public domain +*/ + +// Create a global variable to hold the +// state of the switch. This variable is persistent +// throughout the program. Whenever you refer to +// switchState, you’re talking about the number it holds +int switchstate = 0; + +void setup(){ + // declare the LED pins as outputs + pinMode(3,OUTPUT); + pinMode(4,OUTPUT); + pinMode(5,OUTPUT); + + // declare the switch pin as an input + pinMode(2,INPUT); +} + +void loop(){ + + // read the value of the switch + // digitalRead() checks to see if there is voltage + // on the pin or not + switchstate = digitalRead(2); + + // if the button is not pressed + // blink the red LEDs + if (switchstate == LOW) { + digitalWrite(3, HIGH); // turn the green LED on pin 3 on + digitalWrite(4, LOW); // turn the red LED on pin 4 off + digitalWrite(5, LOW); // turn the red LED on pin 5 off + } + // this else is part of the above if() statement. + // if the switch is not LOW (the button is pressed) + // the code below will run + else { + digitalWrite(3, LOW); // turn the green LED on pin 3 off + digitalWrite(4, LOW); // turn the red LED on pin 4 off + digitalWrite(5, HIGH); // turn the red LED on pin 5 on + // wait for a quarter second before changing the light + delay(250); + digitalWrite(4, HIGH); // turn the red LED on pin 4 on + digitalWrite(5, LOW); // turn the red LED on pin 5 off + // wait for a quarter second before changing the light + delay(250); + } +} + diff --git a/build/shared/examples/10.StarterKit/p03_LoveOMeter/p03_LoveOMeter.ino b/build/shared/examples/10.StarterKit/p03_LoveOMeter/p03_LoveOMeter.ino new file mode 100644 index 000000000..300febbea --- /dev/null +++ b/build/shared/examples/10.StarterKit/p03_LoveOMeter/p03_LoveOMeter.ino @@ -0,0 +1,84 @@ +/* + Arduino Starter Kit example + Project 3 - Love-O-Meter + + This sketch is written to accompany Project 3 in the + Arduino Starter Kit + + Parts required: + 1 TMP36 temperature sensor + 3 red LEDs + 3 220 ohm resistors + + Created 13 September 2012 + by Scott Fitzgerald + + http://arduino.cc/starterKit + + This example code is part of the public domain + */ + +// named constant for the pin the sensor is connected to +const int sensorPin = A0; +// room temperature in Celcius +const float baselineTemp = 20.0; + +void setup(){ + // open a serial connection to display values + Serial.begin(9600); + // set the LED pins as outputs + // the for() loop saves some extra coding + for(int pinNumber = 2; pinNumber<5; pinNumber++){ + pinMode(pinNumber,OUTPUT); + digitalWrite(pinNumber, LOW); + } +} + +void loop(){ + // read the value on AnalogIn pin 0 + // and store it in a variable + int sensorVal = analogRead(sensorPin); + + // send the 10-bit sensor value out the serial port + Serial.print("sensor Value: "); + Serial.print(sensorVal); + + // convert the ADC reading to voltage + float voltage = (sensorVal/1024.0) * 5.0; + + // Send the voltage level out the Serial port + Serial.print(", Volts: "); + Serial.print(voltage); + + // convert the voltage to temperature in degrees C + // the sensor changes 10 mV per degree + // the datasheet says there's a 500 mV offset + // ((volatge - 500mV) times 100) + Serial.print(", degrees C: "); + float temperature = (voltage - .5) * 100; + Serial.println(temperature); + + // if the current temperature is lower than the baseline + // turn off all LEDs + if(temperature < baselineTemp){ + digitalWrite(2, LOW); + digitalWrite(3, LOW); + digitalWrite(4, LOW); + } // if the temperature rises 2-4 degrees, turn an LED on + else if(temperature >= baselineTemp+2 && temperature < baselineTemp+4){ + digitalWrite(2, HIGH); + digitalWrite(3, LOW); + digitalWrite(4, LOW); + } // if the temperature rises 4-6 degrees, turn a second LED on + else if(temperature >= baselineTemp+4 && temperature < baselineTemp+6){ + digitalWrite(2, HIGH); + digitalWrite(3, HIGH); + digitalWrite(4, LOW); + } // if the temperature rises more than 6 degrees, turn all LEDs on + else if(temperature >= baselineTemp+6){ + digitalWrite(2, HIGH); + digitalWrite(3, HIGH); + digitalWrite(4, HIGH); + } + delay(1); +} diff --git a/build/shared/examples/10.StarterKit/p04_ColorMixingLamp/p04_ColorMixingLamp.ino b/build/shared/examples/10.StarterKit/p04_ColorMixingLamp/p04_ColorMixingLamp.ino new file mode 100644 index 000000000..5b5501c5a --- /dev/null +++ b/build/shared/examples/10.StarterKit/p04_ColorMixingLamp/p04_ColorMixingLamp.ino @@ -0,0 +1,97 @@ +/* + Arduino Starter Kit example + Project 4 - Color Mixing Lamp + + This sketch is written to accompany Project 3 in the + Arduino Starter Kit + + Parts required: + 1 RGB LED + three 10 kilohm resistors + 3 220 ohm resistors + 3 photoresistors + red green aand blue colored gels + + Created 13 September 2012 + by Scott Fitzgerald + Thanks to Federico Vanzati for improvements + + http://arduino.cc/starterKit + + This example code is part of the public domain + */ + +const int greenLEDPin = 9; // LED connected to digital pin 9 +const int redLEDPin = 10; // LED connected to digital pin 10 +const int blueLEDPin = 11; // LED connected to digital pin 11 + +const int redSensorPin = A0; // pin with the photoresistor with the red gel +const int greenSensorPin = A1; // pin with the photoresistor with the green gel +const int blueSensorPin = A2; // pin with the photoresistor with the blue gel + +int redValue = 0; // value to write to the red LED +int greenValue = 0; // value to write to the green LED +int blueValue = 0; // value to write to the blue LED + +int redSensorValue = 0; // variable to hold the value from the red sensor +int greenSensorValue = 0; // variable to hold the value from the green sensor +int blueSensorValue = 0; // variable to hold the value from the blue sensor + +void setup() { + // initialize serial communications at 9600 bps: + Serial.begin(9600); + + // set the digital pins as outputs + pinMode(greenLedPin,OUTPUT); + pinMode(redLedPin,OUTPUT); + pinMode(blueLedPin,OUTPUT); +} + +void loop() { + // Read the sensors first: + + // read the value from the red-filtered photoresistor: + redsensorValue = analogRead(redsensorPin); + // give the ADC a moment to settle + delay(5); + // read the value from the green-filtered photoresistor: + greensensorValue = analogRead(greensensorPin); + // give the ADC a moment to settle + delay(5); + // read the value from the blue-filtered photoresistor: + bluesensorValue = analogRead(bluesensorPin); + + // print out the values to the serial monitor + Serial.print("raw sensor Values \t red: "); + Serial.print(redsensorValue); + Serial.print("\t green: "); + Serial.print(greensensorValue); + Serial.print("\t Blue: "); + Serial.println(bluesensorValue); + + /* + In order to use the values from the sensor for the LED, + you need to do some math. The ADC provides a 10-bit number, + but analogWrite() uses 8 bits. You'll want to divide your + sensor readings by 4 to keep them in range of the output. + */ + redValue = redsensorValue/4; + greenValue = greensensorValue/4; + blueValue = bluesensorValue/4; + + // print out the mapped values + Serial.print("Mapped sensor Values \t red: "); + Serial.print(redValue); + Serial.print("\t green: "); + Serial.print(greenValue); + Serial.print("\t Blue: "); + Serial.println(blueValue); + + /* + Now that you have a usable value, it's time to PWM the LED. + */ + analogWrite(redLedPin, redValue); + analogWrite(greenLedPin, greenValue); + analogWrite(blueLedPin, blueValue); +} + diff --git a/build/shared/examples/10.StarterKit/p05_ServoMoodIndicator/p05_ServoMoodIndicator.ino b/build/shared/examples/10.StarterKit/p05_ServoMoodIndicator/p05_ServoMoodIndicator.ino new file mode 100644 index 000000000..78dd6e8e4 --- /dev/null +++ b/build/shared/examples/10.StarterKit/p05_ServoMoodIndicator/p05_ServoMoodIndicator.ino @@ -0,0 +1,55 @@ +/* + Arduino Starter Kit example + Project 5 - Servo Mood Indicator + + This sketch is written to accompany Project 5 in the + Arduino Starter Kit + + Parts required: + servo motor + 10 kilohm potentiometer + 2 100 uF electrolytic capacitors + + Created 13 September 2012 + by Scott Fitzgerald + + http://arduino.cc/starterKit + + This example code is part of the public domain + */ + +// include the servo library +#include + +Servo myServo; // create a servo object + +int const potPin = A0; // analog pin used to connect the potentiometer +int potVal; // variable to read the value from the analog pin +int angle; // variable to hold the angle for the servo motor + +void setup() { + myServo.attach(9); // attaches the servo on pin 9 to the servo object + Serial.begin(9600); // open a serial connection to your computer +} + +void loop() { + potVal = analogRead(potPin); // read the value of the potentiometer + // print out the value to the serial monitor + Serial.print("potVal: "); + Serial.print(potVal); + + // scale the numbers from the pot + angle = map(potVal, 0, 1023, 0, 179); + + // print out the angle for the servo motor + Serial.print(", angle: "); + Serial.println(angle); + + // set the servo position + myServo.write(angle); + + // wait for the servo to get there + delay(15); +} + + diff --git a/build/shared/examples/10.StarterKit/p06_LightTheremin/p06_LightTheremin.ino b/build/shared/examples/10.StarterKit/p06_LightTheremin/p06_LightTheremin.ino new file mode 100644 index 000000000..4c9b7aa2b --- /dev/null +++ b/build/shared/examples/10.StarterKit/p06_LightTheremin/p06_LightTheremin.ino @@ -0,0 +1,64 @@ +/* + Arduino Starter Kit example + Project 6 - Light Theremin + + This sketch is written to accompany Project 6 in the + Arduino Starter Kit + + Parts required: + photoresistor + 10 kilohm resistor + piezo + + Created 13 September 2012 + by Scott Fitzgerald + + http://arduino.cc/starterKit + + This example code is part of the public domain +*/ + +// variable to hold sensor value +int sensorValue; +// variable to calibrate low value +int sensorLow = 1023; +// variable to calibrate high value +int sensorHigh = 0; +// LED pin +const int ledPin = 13; + +void setup() { + // Make the LED pin an output and turn it on + pinMode(ledPin, OUTPUT); + digitalWrite(ledPin, HIGH); + + // calibrate for the first five seconds after program runs + while (millis() < 5000) { + // record the maximum sensor value + sensorValue = analogRead(A0); + if (sensorValue > sensorHigh) { + sensorHigh = sensorValue; + } + // record the minimum sensor value + if (sensorValue < sensorLow) { + sensorLow = sensorValue; + } + } + // turn the LED off, signaling the end of the calibration period + digitalWrite(ledPin, LOW); +} + +void loop() { + //read the input from A0 and store it in a variable + sensorValue = analogRead(A0); + + // map the sensor values to a wide range of pitches + int pitch = map(sensorValue, sensorLow, sensorHigh, 50, 4000); + + // play the tone for 20 ms on pin 8 + tone(8, pitch, 20); + + // wait for a moment + delay(10); +} + diff --git a/build/shared/examples/10.StarterKit/p07_Keyboard/p07_Keyboard.ino b/build/shared/examples/10.StarterKit/p07_Keyboard/p07_Keyboard.ino new file mode 100644 index 000000000..202393891 --- /dev/null +++ b/build/shared/examples/10.StarterKit/p07_Keyboard/p07_Keyboard.ino @@ -0,0 +1,61 @@ +/* + Arduino Starter Kit example + Project 7 - Keyboard + + This sketch is written to accompany Project 7 in the + Arduino Starter Kit + + Parts required: + two 10 kilohm resistors + 1 Megohm resistor + 220 ohm resistor + 4 pushbuttons + piezo + + Created 13 September 2012 + by Scott Fitzgerald + + http://arduino.cc/starterKit + + This example code is part of the public domain +*/ + +// create an array of notes +// the numbers below correspond to +// the frequencies of middle C, D, E, and F +int notes[] = {262, 294, 330, 349}; + +void setup() { + //start serial communication + Serial.begin(9600); +} + +void loop() { + // create a local variable to hold the input on pin A0 + int keyVal = analogRead(A0); + // send the value from A0 to the Serial Monitor + Serial.println(keyVal); + + // play the note corresponding to each value on A0 + if(keyVal == 1023){ + // play the first frequency in the array on pin 8 + tone(8, notes[0]); + } + else if(keyVal >= 990 && keyVal <= 1010){ + // play the second frequency in the array on pin 8 + tone(8, notes[1]); + } + else if(keyVal >= 505 && keyVal <= 515){ + // play the third frequency in the array on pin 8 + tone(8, notes[2]); + } + else if(keyVal >= 5 && keyVal <= 10){ + // play the fourth frequency in the array on pin 8 + tone(8, notes[3]); + } + else{ + // if the value is out of range, play no tone + noTone(8); + } +} + diff --git a/build/shared/examples/10.StarterKit/p08_DigitalHourglass/p08_DigitalHourglass.ino b/build/shared/examples/10.StarterKit/p08_DigitalHourglass/p08_DigitalHourglass.ino new file mode 100644 index 000000000..0eff2e7ca --- /dev/null +++ b/build/shared/examples/10.StarterKit/p08_DigitalHourglass/p08_DigitalHourglass.ino @@ -0,0 +1,80 @@ +/* + Arduino Starter Kit example + Project 8 - Digital Hourglass + + This sketch is written to accompany Project 8 in the + Arduino Starter Kit + + Parts required: + 10 kilohm resistor + six 220 ohm resistors + six LEDs + tilt switch + + Created 13 September 2012 + by Scott Fitzgerald + + http://arduino.cc/starterKit + + This example code is part of the public domain + */ + +// named constant for the switch pin +const int switchPin = 8; + +unsigned long previousTime = 0; // store the last time an LED was updated +int switchState = 0; // the current switch state +int prevSwitchState = 0; // the previous switch state +int led = 2; // a variable to refer to the LEDs + +// 600000 = 10 minutes in milliseconds +long interval = 600000; // interval at which to light the next LED + +void setup() { + // set the LED pins as outputs + for(int x = 2;x<8;x++){ + pinMode(x, OUTPUT); + } + // set the tilt switch pin as input + pinMode(switchPin, INPUT); +} + +void loop(){ + // store the time since the Arduino started running in a variable + unsigned long currentTime = millis(); + + // compare the current time to the previous time an LED turned on + // if it is greater than your interval, run the if statement + if(currentTime - previousTime > interval) { + // save the current time as the last time you changed an LED + previousTime = currentTime; + // Turn the LED on + digitalWrite(led, HIGH); + // increment the led variable + // in 10 minutes the next LED will light up + led++; + + if(led == 7){ + // the hour is up + } + } + + // read the switch value + switchState = digitalRead(switchPin); + + // if the switch has changed + if(switchState != prevSwitchState){ + // turn all the LEDs low + for(int x = 2;x<8;x++){ + digitalWrite(x, LOW); + } + + // reset the LED variable to the first one + led = 2; + + //reset the timer + previousTime = currentTime; + } + // set the previous switch state to the current state + prevSwitchState = switchState; +} diff --git a/build/shared/examples/10.StarterKit/p09_MotorizedPinwheel/p09_MotorizedPinwheel.ino b/build/shared/examples/10.StarterKit/p09_MotorizedPinwheel/p09_MotorizedPinwheel.ino new file mode 100644 index 000000000..4232189d8 --- /dev/null +++ b/build/shared/examples/10.StarterKit/p09_MotorizedPinwheel/p09_MotorizedPinwheel.ino @@ -0,0 +1,50 @@ +/* + Arduino Starter Kit example + Project 9 - Motorized Pinwheel + + This sketch is written to accompany Project 9 in the + Arduino Starter Kit + + Parts required: + 10 kilohm resistor + pushbutton + motor + 9V battery + IRF520 MOSFET + 1N4007 diode + + Created 13 September 2012 + by Scott Fitzgerald + + http://arduino.cc/starterKit + + This example code is part of the public domain + */ + +// named constants for the switch and motor pins +const int switchPin = 2; // the number of the switch pin +const int motorPin = 9; // the number of the motor pin + +int switchState = 0; // variable for reading the switch's status + +void setup() { + // initialize the motor pin as an output: + pinMode(motorPin, OUTPUT); + // initialize the switch pin as an input: + pinMode(switchPin, INPUT); +} + +void loop(){ + // read the state of the switch value: + switchState = digitalRead(switchPin); + + // check if the switch is pressed. + if (switchState == HIGH) { + // turn motor on: + digitalWrite(motorPin, HIGH); + } + else { + // turn motor off: + digitalWrite(motorPin, LOW); + } +} diff --git a/build/shared/examples/10.StarterKit/p10_Zoetrope/p10_Zoetrope.ino b/build/shared/examples/10.StarterKit/p10_Zoetrope/p10_Zoetrope.ino new file mode 100644 index 000000000..44e8c5af9 --- /dev/null +++ b/build/shared/examples/10.StarterKit/p10_Zoetrope/p10_Zoetrope.ino @@ -0,0 +1,110 @@ +/* + Arduino Starter Kit example + Project 10 - Zoetrope + + This sketch is written to accompany Project 10 in the + Arduino Starter Kit + + Parts required: + two 10 kilohm resistors + 2 momentary pushbuttons + one 10 kilohm potentiometer + motor + 9V battery + H-Bridge + + Created 13 September 2012 + by Scott Fitzgerald + Thanks to Federico Vanzati for improvements + + http://arduino.cc/starterKit + + This example code is part of the public domain + */ + +const int controlPin1 = 2; // connected to pin 7 on the H-bridge +const int controlPin2 = 3; // connected to pin 2 on the H-bridge +const int enablePin = 9; // connected to pin 1 on the H-bridge +const int directionSwitchPin = 4; // connected to the switch for direction +const int onOffSwitchStateSwitchPin = 5; // connected to the switch for turning the motor on and off +const int potPin = A0; // connected to the potentiometer's output + +// create some variables to hold values from your inputs +int onOffSwitchState = 0; // current state of the On/Off switch +int previousOnOffSwitchState = 0; // previous position of the on/off switch +int directionSwitchState = 0; // current state of the direction switch +int previousDirectionSwitchState = 0; // previous state of the direction switch + +int motorEnabled = 0; // Turns the motor on/off +int motorSpeed = 0; // speed of the motor +int motorDirection = 1; // current direction of the motor + +void setup(){ + // intialize the inputs and outputs + pinMode(directionSwitchPin, INPUT); + pinMode(onOffSwitchStateSwitchPin, INPUT); + pinMode(controlPin1, OUTPUT); + pinMode(controlPin2, OUTPUT); + pinMode(enablePin, OUTPUT); + + // pull the enable pin LOW to start + digitalWrite(enablePin, LOW); +} + +void loop(){ + // read the value of the on/off switch + onOffSwitchState = digitalRead(onOffSwitchStateSwitchPin); + delay(1); + + // read the value of the direction switch + directionSwitchState = digitalRead(directionSwitchPin); + + // read the value of the pot and divide by 4 to get + // a value that can be used for PWM + motorSpeed = analogRead(potPin)/4; + + // if the on/off button changed state since the last loop() + if(onOffSwitchState != previousOnOffSwitchState){ + // change the value of motorEnabled if pressed + if(onOffSwitchState == HIGH){ + motorEnabled = !motorEnabled; + } + } + + // if the direction button changed state since the last loop() + if (directionSwitchState != previousDirectionSwitchState) { + // change the value of motorDirection if pressed + if (directionSwitchState == HIGH) { + motorDirection = !motorDirection; + } + } + + // change the direction the motor spins by talking + // to the control pins on the H-Bridge + if (motorDirection == 1) { + digitalWrite(controlPin1, HIGH); + digitalWrite(controlPin2, LOW); + } + else { + digitalWrite(controlPin1, LOW); + digitalWrite(controlPin2, HIGH); + } + + // if the motor is supposed to be on + if (motorEnabled == 1) { + // PWM the enable pin to vary the speed + analogWrite(enablePin, motorSpeed); + } + else { // if the motor is not supposed to be on + //turn the motor off + analogWrite(enablePin, 0); + } + // save the current On/Offswitch state as the previous + previousDirectionSwitchState = directionSwitchState; + // save the current switch state as the previous + previousOnOffSwitchState = onOffSwitchState; +} + + + + diff --git a/build/shared/examples/10.StarterKit/p11_CrystalBall/p11_CrystalBall.ino b/build/shared/examples/10.StarterKit/p11_CrystalBall/p11_CrystalBall.ino new file mode 100644 index 000000000..820438b1d --- /dev/null +++ b/build/shared/examples/10.StarterKit/p11_CrystalBall/p11_CrystalBall.ino @@ -0,0 +1,118 @@ +/* + Arduino Starter Kit example + Project 11 - Crystal Ball + + This sketch is written to accompany Project 11 in the + Arduino Starter Kit + + Parts required: + 220 ohm resistor + 10 kilohm resistor + 10 kilohm potentiometer + 16x2 LCD screen + tilt switch + + + Created 13 September 2012 + by Scott Fitzgerald + + http://arduino.cc/starterKit + + This example code is part of the public domain + */ + +// include the library code: +#include + +// initialize the library with the numbers of the interface pins +LiquidCrystal lcd(12, 11, 5, 4, 3, 2); + +// set up a constant for the tilt switchPin +const int switchPin = 6; + +// variable to hold the value of the switchPin +int switchState = 0; + +// variable to hold previous value of the switchpin +int prevSwitchState = 0; + +// a variable to choose which reply from the crystal ball +int reply; + +void setup() { + // set up the number of columns and rows on the LCD + lcd.begin(16, 2); + + // set up the switch pin as an input + pinMode(switchPin,INPUT); + + // Print a message to the LCD. + lcd.print("Ask the"); + // set the cursor to column 0, line 1 + // line 1 is the second row, since counting begins with 0 + lcd.setCursor(0, 1); + // print to the second line + lcd.print("Crystal Ball!"); +} + +void loop() { + // check the status of the switch + switchState = digitalRead(switchPin); + + // compare the switchState to its previous state + if (switchState != prevSwitchState) { + // if the state has changed from HIGH to LOW + // you know that the ball has been tilted from + // one direction to the other + if (switchState == LOW) { + // randomly chose a reply + reply = random(8); + // clean up the screen before printing a new reply + lcd.clear(); + // set the cursor to column 0, line 0 + lcd.setCursor(0, 0); + // print some text + lcd.print("the ball says:"); + // move the cursor to the second line + lcd.setCursor(0, 1); + + // choose a saying to print baed on the value in reply + switch(reply){ + case 0: + lcd.print("Yes"); + break; + + case 1: + lcd.print("Most likely"); + break; + + case 2: + lcd.print("Certainly"); + break; + + case 3: + lcd.print("Outlook good"); + break; + + case 4: + lcd.print("Unsure"); + break; + + case 5: + lcd.print("Ask again"); + break; + + case 6: + lcd.print("Doubtful"); + break; + + case 7: + lcd.print("No"); + break; + } + } + } + // save the current switch state as the last state + prevSwitchState = switchState; +} + diff --git a/build/shared/examples/10.StarterKit/p12_KnockLock/p12_KnockLock.ino b/build/shared/examples/10.StarterKit/p12_KnockLock/p12_KnockLock.ino new file mode 100644 index 000000000..f3132bfb6 --- /dev/null +++ b/build/shared/examples/10.StarterKit/p12_KnockLock/p12_KnockLock.ino @@ -0,0 +1,172 @@ +/* + Arduino Starter Kit example + Project 12 - Knock Lock + + This sketch is written to accompany Project 12 in the + Arduino Starter Kit + + Parts required: + 1 Megohm resistor + 10 kilohm resistor + three 220 ohm resistors + piezo + servo motor + push button + one red LED + one yellow LED + one green LED + 100 uF capacitor + + Created 18 September 2012 + by Scott Fitzgerald + Thanks to Federico Vanzati for improvements + + http://arduino.cc/starterKit + + This example code is part of the public domain + */ + +// import the library +#include +// create an instance of the servo library +Servo myServo; + +const int piezo = A0; // pin the piezo is attached to +const int switchPin = 2; // pin the switch is attached to +const int yellowLed = 3; // pin the yellow LED is attached to +const int greenLed = 4; // pin the green LED is attached to +const int redLed = 5; // pin the red LED is attached to + +// variable for the piezo value +int knockVal; +// variable for the switch value +int switchVal; + +// variables for the high and low limits of the knock value +const int quietKnock = 10; +const int loudKnock = 100; + +// variable to indicate if locked or not +boolean locked = false; +// how many valid knocks you've received +int numberOfKnocks = 0; + +void setup(){ + // attach the servo to pin 9 + myServo.attach(9); + + // make the LED pins outputs + pinMode(yellowLed, OUTPUT); + pinMode(redLed, OUTPUT); + pinMode(greenLed, OUTPUT); + + // set the switch pin as an input + pinMode(switchPin, INPUT); + + // start serial communication for debugging + Serial.begin(9600); + + // turn the green LED on + digitalWrite(greenLed, HIGH); + + // move the servo to the unlocked position + myServo.write(0); + + // print status to the serial monitor + Serial.println("the box is unlocked!"); +} + +void loop(){ + + // if the box is unlocked + if(locked == false){ + + // read the value of the switch pin + switchVal = digitalRead(switchPin); + + // if the button is pressed, lock the box + if(switchVal == HIGH){ + // set the locked variable to "true" + locked = true; + + // change the status LEDs + digitalWrite(greenLed,LOW); + digitalWrite(redLed,HIGH); + + // move the servo to the locked position + myServo.write(90); + + // print out status + Serial.println("the box is locked!"); + + // wait for the servo to move into position + delay (1000); + } + } + + // if the box is locked + if(locked == true){ + + // check the value of the piezo + knockVal = analogRead(piezo); + + // if there are not enough valid knocks + if(numberOfKnocks < 3 && knockVal > 0){ + + // check to see if the knock is in range + if(checkForKnock(knockVal) == true){ + + // increment the number of valid knocks + numberOfKnocks++; + } + + // print status of knocks + Serial.print(3 - numberOfKnocks); + Serial.println(" more knocks to go"); + } + + // if there are three knocks + if(numberOfKnocks >= 3){ + // unlock the box + locked = false; + + // move the servo to the unlocked position + myServo.write(0); + + // wait for it to move + delay(20); + + // change status LEDs + digitalWrite(greenLed,HIGH); + digitalWrite(redLed,LOW); + Serial.println("the box is unlocked!"); + } + } +} + +// this function checks to see if a +// detected knock is within max and min range +boolean checkForKnock(int value){ + // if the value of the knock is greater than + // the minimum, and larger than the maximum + if(value > quietKnock && value < loudKnock){ + // turn the status LED on + digitalWrite(yellowLed, HIGH); + delay(50); + digitalWrite(yellowLed, LOW); + // print out the status + Serial.print("Valid knock of value "); + Serial.println(value); + // return true + return true; + } + // if the knock is not within range + else { + // print status + Serial.print("Bad knock value "); + Serial.println(value); + // return false + return false; + } +} + diff --git a/build/shared/examples/10.StarterKit/p13_TouchSensorLamp/p13_TouchSensorLamp.ino b/build/shared/examples/10.StarterKit/p13_TouchSensorLamp/p13_TouchSensorLamp.ino new file mode 100644 index 000000000..bda2424cb --- /dev/null +++ b/build/shared/examples/10.StarterKit/p13_TouchSensorLamp/p13_TouchSensorLamp.ino @@ -0,0 +1,71 @@ +/* + Arduino Starter Kit example + Project 13 - Touch Sensor Lamp + + This sketch is written to accompany Project 13 in the + Arduino Starter Kit + + Parts required: + 1 Megohm resistor + metal foil or copper mesh + 220 ohm resistor + LED + + Software required : + CapacitiveSensor library by Paul Badger + http://arduino.cc/playground/Main/CapacitiveSensor + + Created 18 September 2012 + by Scott Fitzgerald + + http://arduino.cc/starterKit + + This example code is part of the public domain + */ + +// import the library (must be located in the +// Arduino/libraries directory) +#include + +// create an instance of the library +// pin 4 sends electrical energy +// pin 2 senses senses a change +CapacitiveSensor capSensor = CapacitiveSensor(4,2); + +// threshold for turning the lamp on +int threshold = 1000; + +// pin the LED is connected to +const int ledPin = 12; + + +void setup() { + // open a serial connection + Serial.begin(9600); + // set the LED pin as an output + pinMode(ledPin, OUTPUT); +} + +void loop() { + // store the value reported by the sensor in a variable + long sensorValue = capSensor.capacitiveSensor(30); + + // print out the sensor value + Serial.println(sensorValue); + + // if the value is greater than the threshold + if(sensorValue > threshold) { + // turn the LED on + digitalWrite(ledPin, HIGH); + } + // if it's lower than the threshold + else { + // turn the LED off + digitalWrite(ledPin, LOW); + } + + delay(10); +} + + + diff --git a/build/shared/examples/10.StarterKit/p14_TweakTheArduinoLogo/p14_TweakTheArduinoLogo.ino b/build/shared/examples/10.StarterKit/p14_TweakTheArduinoLogo/p14_TweakTheArduinoLogo.ino new file mode 100644 index 000000000..6c70a59f0 --- /dev/null +++ b/build/shared/examples/10.StarterKit/p14_TweakTheArduinoLogo/p14_TweakTheArduinoLogo.ino @@ -0,0 +1,104 @@ +/* + Arduino Starter Kit example + Project 14 - Tweak the Arduino Logo + + This sketch is written to accompany Project 14 in the + Arduino Starter Kit + + Parts required: + 10 kilohm potentiometer + + Software required : + Processing http://processing.org + Active internet connection + + Created 18 September 2012 + by Scott Fitzgerald + + http://arduino.cc/starterKit + + This example code is part of the public domain + */ + + +void setup() { + // initialize serial communication + Serial.begin(9600); +} + +void loop() { + // read the value of A0, divide by 4 and + // send it as a byte over the serial connection + Serial.write(analogRead(A0)/4); + delay(1); +} + +/* Processing code for this example + // Tweak the Arduno Logo + // by Scott Fitzgerald + // This example code is in the public domain + + // import the serial library + import processing.serial.*; + + // create an instance of the serial library + Serial myPort; + + // create an instance of PImage + PImage logo; + + // a variable to hold the background color + int bgcolor = 0; + + void setup() { + // set the color mode to Hue/Saturation/Brightness + colorMode(HSB, 255); + + // load the Arduino logo into the PImage instance + logo = loadImage("http://arduino.cc/en/pub/skins/arduinoWide/img/logo.png"); + + // make the window the same size as the image + size(logo.width, logo.height); + + // print a list of available serial ports to the + // Processing staus window + println("Available serial ports:"); + println(Serial.list()); + + // Tell the serial object the information it needs to communicate + // with the Arduno. Change Serial.list()[0] to the correct + // port corresponding to your Arduino board. The last + // parameter (e.g. 9600) is the speed of the communication. It + // has to correspond to the value passed to Serial.begin() in your + // Arduino sketch. + myPort = new Serial(this, Serial.list()[0], 9600); + + // If you know the name of the port used by the Arduino board, you + // can specify it directly like this. + // port = new Serial(this, "COM1", 9600); + + } + + void draw() { + + // if there is information in the serial port + if ( myPort.available() > 0) { + // read the value and store it in a variable + bgcolor = myPort.read(); + + // print the value to the status window + println(bgcolor); + } + + // Draw the background. the variable bgcolor + // contains the Hue, determined by the value + // from the serial port + background(bgcolor, 255, 255); + + // draw the Arduino logo + image(logo, 0, 0); + } + + */ + + diff --git a/build/shared/examples/10.StarterKit/p15_HackingButtons/p15_HackingButtons.ino b/build/shared/examples/10.StarterKit/p15_HackingButtons/p15_HackingButtons.ino new file mode 100644 index 000000000..4a131e316 --- /dev/null +++ b/build/shared/examples/10.StarterKit/p15_HackingButtons/p15_HackingButtons.ino @@ -0,0 +1,37 @@ +/* + Arduino Starter Kit example + Project 15 - Hacking Buttons + + This sketch is written to accompany Project 15 in the + Arduino Starter Kit + + Parts required: + batery powered component + 220 ohm resistor + 4N35 optocoupler + + Created 18 September 2012 + by Scott Fitzgerald + + http://arduino.cc/starterKit + + This example code is part of the public domain + */ + +const int optoPin = 2; // the pin the optocoupler is connected to + +void setup(){ + // make the pin with the optocoupler an output + pinMode(optoPin, OUTPUT); +} + +void loop(){ + digitalWrite(optoPin, HIGH); // pull pin 2 HIGH, activating the optocoupler + + delay(15); // give the optocoupler a moment to activate + + digitalWrite(optoPin, LOW); // pull pin 2 low until you're ready to activate again + delay(21000); // wait for 21 seconds +} + +