Examples - Wiring Lib - Compass
Wiringlib - Compass
This example shows the use of a digital compass in Processing using the WiringLib. No coding in Wiring required!
Download Images.zip
Copy this code to your Processing Sketch
// 31 October 2008 // Infrared // by Christoph Wartmann and Etienne Ribeiro import processing.core.*; import gnu.io.*; import Wiring.*; import processing.serial.*; // Const static int DigitalPin = 0; // DigitalPin: connect your compass to this pin static int minKompassVal = 1000; static int maxKompassVal = 40000; static String comPort = "COM4"; // Var SerialLib objSerialLib; int valKompass = 0; PImage imgKompass; PImage imgNadel; void setup(){ size(400,400); imgKompass = loadImage("kreiselkompass.jpg"); imgNadel = loadImage("kreiselkompassNadel.jpg"); objSerialLib = new Wiring.SerialLib(this, comPort); } public void draw(){ // background img: background (0); image(imgKompass, width/2-imgKompass.width/2, height/2-imgKompass.height/2); // Direction imageMode(CORNERS); translate(width/2, height/2); rotate(radians(valKompass * 360 / (maxKompassVal-minKompassVal))); image(imgNadel, -1 * imgNadel.width/2, -1 * imgNadel.height/2, imgNadel.width/2, imgNadel.height/2); // Get Impulse objSerialLib.getImpulse(DigitalPin, true, 'B', false); // Option 'B': mesure twice to avoid wrong results // Have a break delay(25); } void SerialData(Integer v1, Integer v2, Integer v3, Integer v4, Integer v5, Integer v6, Integer v7, Integer v8) { if ((char)v1.intValue() == 'I' && (char)v2.intValue() == 'I' && v3.intValue() == DigitalPin) { println (v4.intValue()); if (v4.intValue() == 0 && v5.intValue() == 0) return; valKompass = v4.intValue() * 256 + v5.intValue(); } }