diff --git a/build/shared/dist/examples/Analog/ADXL3xx/ADXL3xx.pde b/build/shared/dist/examples/Sensors/ADXL3xx/ADXL3xx.pde similarity index 100% rename from build/shared/dist/examples/Analog/ADXL3xx/ADXL3xx.pde rename to build/shared/dist/examples/Sensors/ADXL3xx/ADXL3xx.pde diff --git a/build/shared/dist/examples/Sensors/Memsic2125/Memsic2125.pde b/build/shared/dist/examples/Sensors/Memsic2125/Memsic2125.pde new file mode 100644 index 000000000..aaec612f3 --- /dev/null +++ b/build/shared/dist/examples/Sensors/Memsic2125/Memsic2125.pde @@ -0,0 +1,42 @@ +// Memsic2125 + +#define X 2 +#define Y 3 + +int dx = 0; +int dy = 0; + +void setup() +{ + Serial.begin(9600); + pinMode(X, INPUT); + pinMode(Y, INPUT); +} + +void loop() +{ + int pulseX, pulseY; + int accX, accY; + + // wait for previous pulse to end + while (digitalRead(X) == HIGH) {} + // read pulse from x-axis + pulseX = pulseIn(X,HIGH); + + // wait for previous pulse to end + while (digitalRead(Y) == HIGH) {} + // read pulse from y-axis + pulseY = pulseIn(Y,HIGH); + + // convert the pulse width into acceleration + // accX and accY are in milli-g's: earth's gravity is 1000. + accX = ((pulseX / 10) - 500) * 8; + accY = ((pulseY / 10) - 500) * 8; + + Serial.print(accX); + Serial.print(" "); + Serial.print(accY); + Serial.println(); + + delay(100); +} diff --git a/build/shared/dist/examples/Sensors/Ping/Ping.pde b/build/shared/dist/examples/Sensors/Ping/Ping.pde new file mode 100644 index 000000000..9b2f38d70 --- /dev/null +++ b/build/shared/dist/examples/Sensors/Ping/Ping.pde @@ -0,0 +1,55 @@ +int pingPin = 7; +int ledPin = 13; + +void setup() +{ + pinMode(13, OUTPUT); +} + +void loop() +{ + long duration, inches, cm; + + // The PING))) is triggered by a HIGH pulse of 2 or more microseconds. + // We give a short LOW pulse beforehand to ensure a clean HIGH pulse. + pinMode(pingPin, OUTPUT); + digitalWrite(pingPin, LOW); + delayMicroseconds(2); + digitalWrite(pingPin, HIGH); + delayMicroseconds(5); + digitalWrite(pingPin, LOW); + + // The same pin is used to read the signal from the PING))): a HIGH + // pulse whose duration is the time (in microseconds) from the sending + // of the ping to the reception of its echo off of an object. + pinMode(pingPin, INPUT); + duration = pulseIn(pingPin, HIGH); + + // convert the time into a distance + inches = microsecondsToInches(duration); + cm = microsecondsToCentimeters(duration); + + // the closer an object is, the faster the led will blink + digitalWrite(ledPin, HIGH); + delay(cm); + digitalWrite(ledPin, LOW); + delay(cm); +} + +long microsecondsToInches(long microseconds) +{ + // According to Parallax's datasheet for the PING))), there are + // 73.746 microseconds per inch (i.e. sound travels at 1130 feet per + // second). This gives the distance travelled by the ping, outbound + // and return, so we divide by 2 to get the distance of the obstacle. + // See: http://www.parallax.com/dl/docs/prod/acc/28015-PING-v1.3.pdf + return microseconds / 74 / 2; +} + +long microsecondsToCentimeters(long microseconds) +{ + // The speed of sound is 340 m/s or 29 microseconds per centimeter. + // The ping travels out and back, so to find the distance of the + // object we take half of the distance travelled. + return microseconds / 29 / 2; +}