Created
May 7, 2015 05:15
-
-
Save amokan/4165adb778819d668971 to your computer and use it in GitHub Desktop.
Mozmo Firmata/Processing Test
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* Firmata is a generic protocol for communicating with microcontrollers | |
* from software on a host computer. It is intended to work with | |
* any host computer software package. | |
* | |
* To download a host software package, please clink on the following link | |
* to open the download page in your default browser. | |
* | |
* http://firmata.org/wiki/Download | |
*/ | |
/* Supports as many analog inputs and analog PWM outputs as possible. | |
* | |
* This example code is in the public domain. | |
*/ | |
#include <Firmata.h> | |
byte analogPin = 0; | |
void analogWriteCallback(byte pin, int value) | |
{ | |
if (IS_PIN_PWM(pin)) { | |
pinMode(PIN_TO_DIGITAL(pin), OUTPUT); | |
analogWrite(PIN_TO_PWM(pin), value); | |
} | |
} | |
void setup() | |
{ | |
Firmata.setFirmwareVersion(0, 1); | |
Firmata.attach(ANALOG_MESSAGE, analogWriteCallback); | |
Firmata.begin(57600); | |
} | |
void loop() | |
{ | |
while (Firmata.available()) { | |
Firmata.processInput(); | |
} | |
// do one analogRead per loop, so if PC is sending a lot of | |
// analog write messages, we will only delay 1 analogRead | |
Firmata.sendAnalog(analogPin, analogRead(analogPin)); | |
analogPin = analogPin + 1; | |
if (analogPin >= TOTAL_ANALOG_PINS) analogPin = 0; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import cc.arduino.*; | |
import processing.serial.*; | |
Arduino arduino; | |
int val; | |
int[] values; | |
int r, g, b; | |
color lineClr; | |
void setup() { | |
size(640, 480); | |
values = new int[width]; | |
background(0); | |
smooth(); | |
strokeWeight(5.0); | |
strokeCap(ROUND); | |
strokeJoin(ROUND); | |
frameRate(60); | |
arduino = new Arduino(this, "/dev/tty.usbmodem1421", 57600); | |
} | |
int yValue(int val) { | |
return (int)((val / 1023.0f) * height) - 10; | |
} | |
void draw() { | |
background(0); | |
val = arduino.analogRead(3); | |
for (int i=0; i<width-1; i++) { | |
values[i] = values[i+1]; | |
} | |
values[width-1] = val; | |
r = (int)map((float)arduino.analogRead(0), 0, 1023, 0, 255); | |
g = (int)map((float)arduino.analogRead(1), 0, 1023, 0, 255); | |
b = (int)map((float)arduino.analogRead(2), 0, 1023, 0, 255); | |
lineClr = color(r, g, b); | |
stroke(lineClr); | |
for (int x=1; x<width; x++) { | |
line(width-x, height-1-yValue(values[x-1]), width-1-x, height-1-yValue(values[x])); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment