lab4 submission - FSR with Processing
The program I created in Processing colors a portion of a half circle based on the amount of force exerted on the FSR. The FSR voltage was read in via the Serial port, and the reading was mapped to a range between 0 degree and 180 degree. The larger the voltage reading of the FSR, the larger the portion of the half circle is colored. The program decreases the colored portion when the reading decreases.
The physical mechanism I created for concentrating the force applied on the FSR consists of a wine bottle cork, and a metal lid of a jar. When pressing on the metal lid, the force is concentrated into the small area of the cork.
Components
1 - Arduino
1 - 100 Ohm resistors
1 - FSR
usb cables and wire
Code:Processing
import processing.serial.*;
Serial port;
float previousAngle = 0;
float stablizer = 10;
void setup()
{
size(640, 400);
frameRate(30);
smooth();
noStroke();
background(#E0E0E0);
println(Serial.list());
//take the first serial port name
port = new Serial(this, Serial.list()[0], 9600);
port.bufferUntil('\n');
}
void draw()
{
}
void serialEvent(Serial port)
{
//read the string from the serial port
String serialInStr = port.readStringUntil('\n');
if (serialInStr != null)
{
//trim off any whitespace
serialInStr = trim(serialInStr);
//convert the serial input string into a float for arc angle in degree
float angle = float(serialInStr);
angle = map(angle, 0,1023, 0, 180);
float endAngle = PI + radians(angle);
//draw pie with increased and decreased angles
fill(#2F4F4F);
arc(width*0.5, height, width-10, width-10, PI, endAngle);
// println(" end angle "+ endAngle);
if (angle < previousAngle && previousAngle - angle > stablizer)
//erase the extra portion that was drawn for the last reading
//only redraw the graph if there is more than 10 degree difference between the two serial readings
{
fill(#E0E0E0);
arc(width*0.5, height, width-10, width-10, TWO_PI-endAngle, TWO_PI);
}
previousAngle = angle;
}
}
- Login to post comments
Drupal theme by Kiwi Themes.