Introduction: Read Analog Data Directly in Processing
This instructable presents a fast an easy way to use data received from an analog sensor in Processing. You will learn to utilize the Arduino and prototype electronic boards to read meaningful data from the environment. The sensors can be affected by the light, the orientation, or a user’s physical input. For this matter we will use photocell, accelerometer, and potentiometer.
Step 1: Preparation Steps
1. Upload the “standardFirmata” example from the Arduino IDE in your Arduino board. If you are using Arduino UNO, there is a standard firmata for UNO.
2. Install Arduino library for processing in your libraries folder in the processing sketchbook
For a detailed instructable for this process go to the Arduino playground example
2. Install Arduino library for processing in your libraries folder in the processing sketchbook
For a detailed instructable for this process go to the Arduino playground example
Step 2: Build the Circuits
Choose one of the circuits from the images below depending on your preferred sensor:
1. Accelerometer
2. Potentiometer
3. Photocell
1. Accelerometer
2. Potentiometer
3. Photocell
Step 3: Test the Code and Calibrate Sensor Range
1.Use the following code in processing:
import processing.serial.*;
import cc.arduino.*;
Arduino arduino; //creates arduino object
color back = color(64, 218, 255); //variables for the 2 colors
int sensor= 0;
int read;
float value;
void setup() {
size(800, 600);
arduino = new Arduino(this, Arduino.list()[0], 57600); //sets up arduino
arduino.pinMode(sensor, Arduino.INPUT);//setup pins to be input (A0 =0?)
background(back);
}
void draw() {
read=arduino.analogRead(sensor);
background(back);
println (read);
value=map(read, 0, 680, 0, width); //use to callibrate
ellipse(value, 300,30, 30);
}
2. Use the “println” command to output your sensor’s minimum and maximum values. They will be different depending on the context. Plug the min and max values in your map() function.
import processing.serial.*;
import cc.arduino.*;
Arduino arduino; //creates arduino object
color back = color(64, 218, 255); //variables for the 2 colors
int sensor= 0;
int read;
float value;
void setup() {
size(800, 600);
arduino = new Arduino(this, Arduino.list()[0], 57600); //sets up arduino
arduino.pinMode(sensor, Arduino.INPUT);//setup pins to be input (A0 =0?)
background(back);
}
void draw() {
read=arduino.analogRead(sensor);
background(back);
println (read);
value=map(read, 0, 680, 0, width); //use to callibrate
ellipse(value, 300,30, 30);
}
2. Use the “println” command to output your sensor’s minimum and maximum values. They will be different depending on the context. Plug the min and max values in your map() function.
Step 4: Add Other Variables to Your Code
-Add other variables to manipulate the X and Y axis of the accelerometer. This program tracks down the X and Y values from the accelerometer and displays them altering the position of a graphic in the screen. It needs to be calibrated for both X and Y parameters.
import processing.serial.*;
import cc.arduino.*;
Arduino arduino; //creates arduino object
color back = color(64, 218, 255); //variables for the 2 colors
int xpin= 0;
int ypin= 1;
float value=0;
void setup() {
size(800, 600);
arduino = new Arduino(this, Arduino.list()[0], 57600); //sets up arduino
arduino.pinMode(xpin, Arduino.INPUT);//setup pins to be input (A0 =0?)
arduino.pinMode(ypin, Arduino.INPUT);
background(back);
}
void draw() {
noStroke();
ellipse(arduino.analogRead(xpin)-130, arduino.analogRead(ypin)-130,30, 30);//needs to be calibrated for X and Y separately
}
import processing.serial.*;
import cc.arduino.*;
Arduino arduino; //creates arduino object
color back = color(64, 218, 255); //variables for the 2 colors
int xpin= 0;
int ypin= 1;
float value=0;
void setup() {
size(800, 600);
arduino = new Arduino(this, Arduino.list()[0], 57600); //sets up arduino
arduino.pinMode(xpin, Arduino.INPUT);//setup pins to be input (A0 =0?)
arduino.pinMode(ypin, Arduino.INPUT);
background(back);
}
void draw() {
noStroke();
ellipse(arduino.analogRead(xpin)-130, arduino.analogRead(ypin)-130,30, 30);//needs to be calibrated for X and Y separately
}