Interactive Device Design
/
idd_graph_sensor
Transmit X axis accelerometer data to PC for graphing
Diff: main.cpp
- Revision:
- 0:c9bb3c9d5ce8
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Sep 17 07:59:48 2014 +0000 @@ -0,0 +1,89 @@ +#include "mbed.h" +#include "MMA8451Q.h" + +// define I2C Pins and address for KL25Z. Taken from default sample code. +PinName const SDA = PTE25; +PinName const SCL = PTE24; +#define MMA8451_I2C_ADDRESS (0x1d<<1) + +//serial connection to PC via USB +Serial pc(USBTX, USBRX); + +int main(void) +{ + //configure on-board I2C accelerometer on KL25Z + MMA8451Q acc(SDA, SCL, MMA8451_I2C_ADDRESS); + + float x; + + while (true) { + x = acc.getAccX(); //get acceleration + pc.printf("%1.2f\n", x); //print ascii-encoded float to serial port + wait(0.05f); // wait 50ms (20Hz update rate) + } +} + +/* +// Graphing sketch for Processing + + +// This program takes ASCII-encoded strings containing floating point numbers +// from the serial port at 9600 baud and graphs them. It expects values in the +// range -1.0 to 1.0, followed by a newline, or newline and carriage return + +// Created 20 Apr 2005 +// Updated 18 Jan 2008 by Tom Igoe +// Adapted 16 Sep 2014 by Bjoern Hartmann for mbed +// This example code is in the public domain. + +import processing.serial.*; + +Serial myPort; // The serial port +int xPos = 1; // horizontal position of the graph + +float minVal=-1.0; +float maxVal=1.0; + +void setup () { + // set the window size: + size(400, 300); + + // List all the available serial ports + println(Serial.list()); + // Open whatever port is the one you're using. + myPort = new Serial(this, "/dev/tty.usbmodem1412", 9600); + // don't generate a serialEvent() unless you get a newline character: + myPort.bufferUntil('\n'); + // set inital background: + background(0); +} +void draw () { + // everything happens in the serialEvent() +} + +void serialEvent (Serial myPort) { + // get the ASCII string: + String inString = myPort.readStringUntil('\n'); + + if (inString != null) { + // trim off any whitespace: + inString = trim(inString); + // convert to an int and map to the screen height: + float inFloat = float(inString); + float screenY = map(inFloat, minVal, maxVal, 0, height); + + // draw the line from bottom of screen to desired height + stroke(127, 34, 255); + line(xPos, height, xPos, height - screenY); + + // at the edge of the screen, go back to the beginning: + if (xPos >= width) { + xPos = 0; + background(0); + } else { + // increment the horizontal position: + xPos++; + } + } +} +*/