/* ----- Call and response with multiple sensor to Processing ---- This program sends an ASCII "A" (byte of value 65) on startup and repeats that until it gets some data in. Then, in response to a byte in the serial port, it sends three ASCII-encoded, comma-separated sensor values, truncated by a linefeed and carriage return, whenever it gets a byte in. Thanks to Greg Shakar and Scott Fitzgerald for the improvements The circuit: * potentiometers attached to analog inputs 4 and 5 * pushbutton attached between digital Pin 5 and Ground Created 26 Sept. 2005 by Tom Igoe modified 24 Apr 2012 by Tom Igoe and Scott Fitzgerald This example code is in the public domain. http://www.arduino.cc/en/Tutorial/SerialCallResponseASCII -------------------------------------------------------------- */ int firstSensor = 0; // first analog sensor int secondSensor = 0; // second analog sensor int thirdSensor = 0; // digital sensor int inByte = 0; // incoming serial byte void setup() { // start serial port at 9600 bps and wait for port to open: Serial.begin(9600); pinMode(5, INPUT_PULLUP); // digital sensor is on digital pin 2 establishContact(); // send a byte to establish contact until receiver responds } void loop() { // if we get a valid byte, read analog ins: if (Serial.available() > 0) { // get incoming byte: inByte = Serial.read(); // read first analog input: firstSensor = analogRead(A5); // read second analog input: secondSensor = analogRead(A4); // read switch, map it to 0 or 255L thirdSensor = map(digitalRead(5), 0, 1, 0, 255); // send sensor values: Serial.print(firstSensor); Serial.print(","); Serial.print(secondSensor); Serial.print(","); Serial.println(thirdSensor); } } void establishContact() { while (Serial.available() <= 0) { Serial.println("0,0,0"); // send an initial string delay(300); } } |