INTERACTION LAB RECITATION 10
Special Recitation – Smoothing Sensor Values Workshop
Reference Page:
teckel12 / Arduino New Ping / wiki / Home — Bitbucket
// IMA NYU Shanghai // Interaction Lab // For sending multiple values from Arduino to Processing #include <NewPing.h> #define PING_PIN 12 // Arduino pin tied to both trigger and echo pins on the ultrasonic sensor. #define MAX_DISTANCE 200 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm. NewPing sonar(PING_PIN, PING_PIN, MAX_DISTANCE); // NewPing setup of pin and maximum distance. const int numReadings = 10; int readings[numReadings]; // the readings from the analog input int readIndex = 0; // the index of the current reading int total = 0; // the running total int average = 0; // the average void setup() { Serial.begin(9600); // initialize all the readings to 0: for (int thisReading = 0; thisReading < numReadings; thisReading++) { readings[thisReading] = 0; } } void loop() { // to send values to Processing assign the values you want to send //this is an example // int sensor1 = analogRead(A0); // int sensor2 = analogRead(A1); // int sensor3 = analogRead(A2); // // // send the values keeping this format // Serial.print(sensor1); // Serial.print(","); // put comma between sensor values // Serial.print(sensor2); // Serial.print(","); // put comma between sensor values // Serial.print(sensor3); // subtract the last reading: total = total - readings[readIndex]; // read from the sensor: readings[readIndex] = sonar.ping_cm(); // add the reading to the total: total = total + readings[readIndex]; // advance to the next position in the array: readIndex = readIndex + 1; // if we're at the end of the array... if (readIndex >= numReadings) { // ...wrap around to the beginning: readIndex = 0; } // calculate the average: average = total / numReadings; Serial.print(average); Serial.println(); // add linefeed after sending the last sensor value // too fast communication might cause some latency in Processing // this delay resolves the issue. delay(100); // end of example sending values }
Adding visual effects through Processing.