IFD:PhysicalComp2011/code: Difference between revisions

From Medien Wiki
mNo edit summary
(Examples from 28.11.2011 added)
Line 662: Line 662:
</source>
</source>


<br /><br />
== 28.11.2011 Arduino & Processing sketches ==
=== III Potentiometer (Arduino) ===
[[File:III_poti_schematic.png|200px|thumb]]
[[File:III_potentiometer_arduino.png|200px|thumb]]
<source lang="java">
/* TURNING THE KNOB (ARDUINO)
*
* Here we connect a potentiometer (variable resistor) to
* the analog pin 3 of our Arduino to control the state
* of an LED connected to pin 13 and also to send the
* value via the serial connection to a processing sketch.
*
* The value we get from an analog pin is ranging from
* 0 to 1023 (10 Bit). In order to send it as one Byte
* (8 Bit) we have to scale the incomming value using
* the map() function.
*
* NOTE: You can use the same code for many different
* types of variable resistors (e.g. photo resistor,
* bend sensor, etc.)
*
* Frederic Gmeiner, 2011
*/
// specify the pin numbers we are going to use:
int ledPin = 13;
int potiPin = 3;
// create a variable to hold the value from the poti:
int potiValue;
void setup(){
  // set the pin mode of the led pin to  act as an output:
  pinMode(ledPin,OUTPUT);
  // establish a serial connection:
  Serial.begin(9600);
}
void loop(){
  // read the current value of the poti pin
  // and store it in the variable potiValue:
  potiValue = analogRead(potiPin);
 
  // if the value is over a certain threshold
  // (here it's 511 or the middle of the range),
  // turn the LED on, otherwise turn it off:
  if(potiValue > 511){
    digitalWrite(ledPin,HIGH);
  }else{
    digitalWrite(ledPin,LOW);
  }
 
  // in oder to send the poti value as one byte (0-255)
  // we have to scale it from the original range (0 - 1023):
  int scaledVal = map(potiValue,0,1023,0,255);
  // send the scaled value via the serial port as a byte:
  Serial.print(scaledVal,BYTE);
  // wait a little bit to not overload the serial buffer:
  delay(50);
}
</source>
<br /><br />
=== III Potentiometer (Processing) ===
<source lang="java">
/* TURNING THE KNOB (PROCESSING)
*
* Example of how to read incomming data
* from the serial connection.
*
* Frederic Gmeiner, 2011
*/
// first we have to import the serial library:
import processing.serial.*;
// variable for our Serial object:
Serial myPort;
// variable to hold the incomming value
int incomingVal;
void setup(){
  size(255,255);
  // this line is very helpful to find out the name of the serial
  // port of your Arduino. It lists all available ports of your
  // computer. (Make sure that your arduino is connected to a USB
  // port before running this sketch)
  println(Serial.list());
 
  // make a new Serial object with the name of our current Arduino
  // port. NOTE: The name of the port is different for each Arduino
  // so we have to change it accordingly. On a windows system it is
  // called different like "COM3" or similar.
  myPort = new Serial(this,"/dev/tty.usbserial-A70061cx",9600);
}
void draw(){
  background(0);
 
  // only read from the serial port if there is new data
  // available and store this in the variable incommingVal: 
  while(myPort.available() > 0){
    incomingVal = myPort.read();
  }
  // set the fill color to the incomming value:
  fill(incomingVal);
  // draw a rectangle depending with the height of the
  // incomming value:
  rect(0,height-incomingVal,width,height);
}
</source>
<br /><br />
<br /><br />