Skip to content

Instantly share code, notes, and snippets.

@amokan
Created May 7, 2015 05:15
Show Gist options
  • Save amokan/4165adb778819d668971 to your computer and use it in GitHub Desktop.
Save amokan/4165adb778819d668971 to your computer and use it in GitHub Desktop.
Mozmo Firmata/Processing Test
/*
* 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;
}
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