Arduino, ultrasonics and Pd: HELP needed for degree project!
Dear Pd'ers… I'm fairly new to Pd and have been using it during my 'Audio Production' degree at SAE college in London. I'm here to ask for help on my final degree project, which aims to control objects within Pd by way of proximity sensors connected to Arduino.
I have had moderate success, first using a Sharp GPD12 IR sensor connected to an analog port on an Arduino Diecimila, then a Devantech SRF02 connected via I2C to Arduino. I have managed to get Pure Data reading the sensor values using the Pure Data example included in SimpleMessageSystem (http://www.arduino.cc/playground/uploads/Code/SimpleMessageSystem.zip)... and only altering the number of the comport the Arduino appears on.
On the Arduino end, I have added the SimpleMessageSystem library, and am using the following sketch to run one or both of the sensors depending on whether or not I omit the SRF02 or GPD12 parts of the code.
// top //
#include <Wire.h>
#include <Servo.h>
#include <SimpleMessageSystem.h>
int sensorPin = 0;
int sensorValue = 0;
Servo servo1;
#define sensorAddress 0x70
#define readInches 0x50
#define readCentimeters 0x51
#define readMicroseconds 0x52
#define resultRegister 0x02
void setup()
{
Wire.begin();
Serial.begin(9600);
}
void sendCommand (int address, int command) {
Wire.beginTransmission(address);
Wire.send(0x00);
Wire.send(command);
Wire.endTransmission();
}
void setRegister(int address, int thisRegister) {
Wire.beginTransmission(address);
Wire.send(thisRegister);
Wire.endTransmission();
}
int readData(int address, int numBytes) {
int result = 0;
Wire.requestFrom(address, numBytes);
while (Wire.available() < 2 );{
}
result = Wire.receive() * 256;
result = result + Wire.receive();
return result;
}
void loop()
{
// SRF02 READING //
sendCommand(sensorAddress, readInches);
delay(70);
setRegister(sensorAddress, resultRegister);
int sensorReading = readData(sensorAddress, 2);
Serial.println(sensorReading);
delay (200);
// GPD12 READING //
sensorValue = analogRead(sensorPin);
int range = (6787 / sensorValue);
Serial.println(range);
delay(200);
}
// bottom //
Pure data is picking up the sensor's output as a decimal number, through the serial port, correctly, and showing this as a number in the SPECIAL CHARACTER section of the Pd patch, which I can then use to control various Pd parameters, like a slider for example.
If printing both sensor readings to the serial, the Pd patch will pick up the two sensor values alternately, but there seems no way of differentiating the two sensors within Pd, as they both come through the serial. I have tried prepending the serial print at the Arduino stage with a tag such as "IR" or "UL" for each sensor, but this simply ends up in nothing coming through in Pd.
Using one sensor gives the ability to control parameters with a fairly narrow detection range, but for the final version I would like to incorporate 4 or 5 sensors in order that I can cover nearly a full 360 degree range.
After a bit of research I have gone and bought 4 x Maxsonar EZ0's. They've got a wider range than the Devantech sensors, and can operate via I2C, serial or PWM. A number of people online seem to mention the improved stability when operating via PWM, so I thought this could be kinda useful.
I am going to London Hackspace tomorrow to get help with wiring up the sensors to my Arduino Diecimila, but for now, my main problem seems to be how to achieve greater communication between Pure Data and the sensors. It's all very good and well being able to take the decimal readout from an analog input to give one set of values in Pd, but I would like to know how to either to read (and trigger) each sensor discretely via PWM, or to somehow differentiate between each sensor's analog output, so that I can have the different sensors controlling different objects within Pd.
As well as SimpleMessageSystem, I looked at using the Pduino object. But to be honest, it is either not working properly (I have noticed reported issues with bugginess), or I am being stupid, as it has totally boggled my brain. In theory though, it seems like it should be able to do what I want, ie. send and receive commands between Arduino and Pd.
****************************************
So…. my questions for anyone out there with a knowledge of using Arduino + multiple sensors (preferably Maxsonar EZ's) with Pd are:
What is most appropriate for my project?
- Simple Message System or Pduino?
- analog or PWM?
And how do I get proper communication between the two platforms so I can discern discrete values from each sensor?
I'd really like to get a discussion going with this as (a) it would really help me in my degree (which ends in about 4 weeks!!!) and (b) I really want to share what I am doing, especially as the discussions on Arduino/Pd communication on the various forums seem a little patchy (at least for noobs like me). I also hope to continue my research in the future, sharing any findings I make with the community…
****************************************
PS. In the sharing spirit, please check out the Radio Tuner patch I've just posted over on the patch section of this forum - it's my first successful attempt at Pd... I hope you enjoy
Bluetooth port problem using pd + arduino
Hello,
I've been using a Mac Mini running pd-extended and two arduino boards attached to it to control some electric motors of an installation. I use Pduino and the StandardFirmata uploaded into arduino and I had no problems until I decided to do a file transfer from my MacBook into this Mac Mini using Bluetooth. I opened the Setup Bluetooth Device, I chose to open a connection to my computer and did the file transfer.
Unfortunatelly, when I opened the patch I've been working for several months, one of the two arduino boards was not working. The comand
[open 2<
|
[arduino]
started to cause an error message saying the port I was using was no longer of my arduino but the tty.Bluetooth port related to my MacBook. I turned off the Bluetooth Devices of both computer but the tty port related to that bluetooth transfer is still in "the place of" my arduino usb tty port.
Then I tryed all the possibilities: [open 0<, [open 1< and [open 4< to try to find the right tty port. The [open 3< is already in use by the other arduino board which fortunatelly is still working. When i tryed [open 5< I received the message that I could only use more than four ports on .
Do anyone no how to manage these tty ports? Can I erase the tty port related to the bluetooth transfer? Will that cause my arduino tty port to come back to the list in which pure data can access?
I'm a bit scared because the installation will be exposed in two weeks!
Thank you very much for your attention.
Skrako.
Interface between pd and arduino
Hi I'm new to both Arduino and pd and currently facing some problems controlling Arduino using pd.
Arduino: Arduino-0018
pd: pd-Extended
I've downloaded the latest Pduino-0.5beta8 and have copied the Firmata folder to Arduino for updating purpose as stated in most of the sites.
I've tried running the arduino-help.pd inside the Pduino folder to test the connection and it says cannot arduino 1.
Hope someone can help me, thanks..
Firmata on arduino pro mini
Hi all,
I have some trouble running firmata on the pro mini. Although the same patch runs fine on both my Duemilanove's.
Apparently firmata isn't entirely the same on these mini's. Although Since arduino 0017 I can connect and send data, it's not without errors. First of all
[arduino]_WARNING_currently_unsupported: 176
[arduino]_WARNING_currently_unsupported: 160
[arduino]_WARNING_currently_unsupported: 176
UNKNOWN_INPUT_COMMAND: 0 10263
UNKNOWN_INPUT_COMMAND: 8 12339
UNKNOWN_INPUT_COMMAND: 11 9710
Is what I see when I try to run the pd patch. lot's of those, thousands...
Another weird thing is that even though pin 13 is unconnected on the arduino, It's the only pin that seems to work. I really don't get it. Is there some sort of different mapping? normally only pin 9-10-11 are supposed to work.
yet another thing id that PD becomes very unresponsive (waiting for serial data??) is this normal behavior if the firmata is buggy or something?
any ideas anyone?
Pd GUI Rewrite progress
@toxonic said:
wow, this looks pretty cool! i'm on win xp and in my extended version the audio inlets of objects differ from the control inlets - will this be implemented too? although it's not really important it was a nice feature.
Yes, audio/message inlet coloring will continue to be included in Pd-extended, this new GUI is for vanilla, then I'll port the Pd-extended changes to it.
@flo said:
the "editmode_look.tcl plugin" thing to fade out the wires in interact mode does not work.
It should be fixed now, do you see anything like this in the Pd window? Before it wasn't loading any plugins on Windows, now it should be:
____________________________________________________________
Load all plugins in /Applications/Pd-devel.app/Contents/Resources/startup:
/Applications/Pd-devel.app/Contents/Resources/startup/addmypatchstomedia.tcl
/Applications/Pd-devel.app/Contents/Resources/startup/drag_to_scroll.tcl
/Applications/Pd-devel.app/Contents/Resources/startup/file_associations.tcl
/Applications/Pd-devel.app/Contents/Resources/startup/insertintopopup.tcl
/Applications/Pd-devel.app/Contents/Resources/startup/object_db.tcl
/Applications/Pd-devel.app/Contents/Resources/startup/set_custom_stored_histories.tcl
____________________________________________________________
Yay...
Hi, I am just starting with arduino, and still not very experienced in PD.
I have found tons of great info around here, thanks for that.
For me, everything works up to a point:
* I successfully upload the Firmata
* the output example in Processing works, I am able to turn pin 13 on and off
* in PD I open the correct port ("[comport] opened serial line device 3 (/dev/ttyUSB0)")
however, I have not been able to get any communication with the arduino in PD using Hans-Christoph Steiner's [arduino] - either turn pin 13 on/off or get firmware information. The numerical commands sent to [comport] seem correct, e.g. 249 for version information, etc.
So, the only place it seems possible to be going wrong is either [comport] or after that, along the line. As I said, it works with the same port from Processing, and at the same rate - 115200
"get_baud_ratebits: 115200.000000
set_baudrate baudbits: 4098 /***(what does this second line mean?)
[comport] opened serial line device 3 (/dev/ttyUSB0)"
I am running Ubuntu Intrepid, latest versions of Pd-extended, Arduino IDE, Firmata. The board is old though, "Arduino NG or older w/ ATmega8" but I guess this doesn't matter if the above mentioned things work.
I still have to test it for input, but I have to pick up some sensors from the shop.
If [arduino] does not work out I may try Messenger, but it really seemed quite good for what I am trying to do (drums with input from piezo elements).
edit:
This *may* have been due to a bad Arduino board, because I am now unable to transfer any sketches to it. Surprisingly though the Processing example still works (Firmata is left on the board from the time transfers worked)
Yay...
I took this from my blog which is an eyesore and hard to concentrate on.
Let's learn how to combine arduino and puredata into one almighty power, the mighty AARRGHDATA(i think the proper name is the classier pduino, i guess you say it peedweeno, or padooiino)
Firstly. If you haven't already, check that your arduino is working. if you know this. keep scrolling until you see a kitten.
Plug it in and fire up the arduino software. You can get that from here
now lets do a quick test(is shouldve flashed when you plugged it in anyway) but get an LED, and put it so that the longer leg(theres a fancy name for this) is in the slot for digital pin 13 and the shorter leg(also has a fancy name) is in GND(you could say things "gund" or "gnnnd" but im fairly sure it just means GROUND.
now go file>sketchbook>examples>digital>blink and it will open that sketch. click the "upload" button and watch as it updates you on upload status and tells you when its complete.
is it blinking? nice. i could go on more about this, but i want to talk about PD, thats where it gets fun.
KITTENS
you can start looking again if you like pd.
once again, go to file>sketchbook>examples>library-firmata>standard firmata
dont see it? its a standard library now, so you should probably check you have the latest version(anything above 12 will be fine)
around this time you want to open pd and try create an object called "arduino". nothing? then you need to be going here to visit the wonderful mr hans, and download pduino.(i'm not sure if the arduino library is standard in pd extended now)
did you upload that standard firmata sketch to your board? i didnt tell you to. but thats ok, i like the way you think. do that if you haven't.
once thats uploaded properly, you can quit the arduino software, we do not need its services anymore.
now go inside that pduino folder you downloaded and open the patch arduino-test.pd
you should see something like thisss.
i dont know why all those errors happen. but click the "devices" message box in there to check what port your arduino is on.
hans is pretty awesome for making this patch, its really easy to understand i think.
change your port to whatever pd tells you your arduino is on.
HUZZAH! CONNECTIVITY!
now, lets say we still have that LED plugged in. want to test it?
hit that "pulse all outputs" toggle, and it should blink on and off. look around that subpatch, its pretty simple too. (you will want to know all these messages to send when writing your own patch for stuff)
Input is easy too. turn on that little toggle under [arduino 1] to let through outlet info.
you'll also want to enable your analogIns in the yellow radio up there.
say you had a potentiometer you wanted to connect up, it's really easy. and a breadboard will make all your connections easier to make.
but you'd just connect it up like this.
then you'd just enable the input you are using in that patch(input 2 in this case) and watch the input stream in through the a3 number box at the bottom.
this is how it works for me anyway.
that should just show you how the basics of it work, and you can move from there.
Arduino and pure data
Hello. I'm trying to use Arduino with Puredata using the Firmata Library. I downloaded Firmata and installed the library as instructed in the readme, and then loaded 'AnalogFirmata' from the library examples. When I try to compile this example (or any of the others) I receive a string of error statements. Code and errors listed below. Any suggestions?
Code:
/* This firmware supports as many analog ports as possible, all analog inputs,
* four PWM outputs, and two with servo support.
*
* This example code is in the public domain.
*/
#include <Firmata.h>
#include <Servo.h>
/*==============================================================================
* GLOBAL VARIABLES
*============================================================================*/
/* servos */
Servo servo9, servo10; // one instance per pin
/* analog inputs */
int analogInputsToReport = 0; // bitwise array to store pin reporting
int analogPin = 0; // counter for reading analog pins
/* timer variables */
extern volatile unsigned long timer0_overflow_count; // timer0 from wiring.c
unsigned long nextExecuteTime; // for comparison with timer0_overflow_count
/*==============================================================================
* FUNCTIONS
*============================================================================*/
void analogWriteCallback(byte pin, int value)
{
switch(pin) {
case 9: servo9.write(value); break;
case 10: servo10.write(value); break;
case 3:
case 5:
case 6:
case 11: // PWM pins
analogWrite(pin, value);
break;
}
}
// -----------------------------------------------------------------------------
// sets bits in a bit array (int) to toggle the reporting of the analogIns
void reportAnalogCallback(byte pin, int value)
{
if(value == 0) {
analogInputsToReport = analogInputsToReport &~ (1 << pin);
}
else { // everything but 0 enables reporting of that pin
analogInputsToReport = analogInputsToReport | (1 << pin);
}
// TODO: save status to EEPROM here, if changed
}
/*==============================================================================
* SETUP()
*============================================================================*/
void setup()
{
Firmata.setFirmwareVersion(0, 2);
Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);
Firmata.attach(REPORT_ANALOG, reportAnalogCallback);
servo9.attach(9);
servo10.attach(10);
Firmata.begin();
}
/*==============================================================================
* LOOP()
*============================================================================*/
void loop()
{
while(Firmata.available())
Firmata.processInput();
if(timer0_overflow_count > nextExecuteTime) {
nextExecuteTime = timer0_overflow_count + 19; // run this every 20ms
for(analogPin=0;analogPin<TOTAL_ANALOG_PINS;analogPin++) {
if( analogInputsToReport & (1 << analogPin) )
Firmata.sendAnalog(analogPin, analogRead(analogPin));
}
}
}
Error Statements:
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:61: error: typedef 'callbackFunction' is initialized (use __typeof__ instead)
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:61: error: 'byte' was not declared in this scope
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:61: error: expected primary-expression before 'int'
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:64: error: typedef 'sysexCallbackFunction' is initialized (use __typeof__ instead)
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:64: error: 'byte' was not declared in this scope
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:64: error: 'byte' was not declared in this scope
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:64: error: 'byte' was not declared in this scope
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:64: error: 'argv' was not declared in this scope
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:81: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:81: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:86: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:87: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:88: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:90: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:91: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:91: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:91: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:95: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:95: error: 'callbackFunction' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:96: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:97: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:98: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:98: error: 'sysexCallbackFunction' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:98: error: 'void FirmataClass::attach(int, int)' cannot be overloaded
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:95: error: with 'void FirmataClass::attach(int, int)'
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:99: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:104: error: 'byte' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:105: error: ISO C++ forbids declaration of 'byte' with no type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:105: error: expected ';' before '*' token
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:107: error: 'byte' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:108: error: 'byte' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:109: error: 'byte' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:110: error: 'byte' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:112: error: 'boolean' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:115: error: 'callbackFunction' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:116: error: 'callbackFunction' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:117: error: 'callbackFunction' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:118: error: 'callbackFunction' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:119: error: 'callbackFunction' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:122: error: 'sysexCallbackFunction' does not name a type
In function 'void setup()':
Interfacing PD with the Arduino ... how?
i got a problem in uploading the file to the board. ( I have press play, same error found. When I press upload to I/O, below error found)
anyone can help?
thx
////////////////////////////
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:61: error: typedef 'callbackFunction' is initialized (use __typeof__ instead)
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:61: error: 'byte' was not declared in this scope
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:61: error: expected primary-expression before 'int'
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:64: error: typedef 'sysexCallbackFunction' is initialized (use __typeof__ instead)
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:64: error: 'byte' was not declared in this scope
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:64: error: 'byte' was not declared in this scope
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:64: error: 'byte' was not declared in this scope
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:64: error: 'argv' was not declared in this scope
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:81: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:81: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:86: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:87: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:88: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:90: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:91: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:91: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:91: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:95: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:95: error: 'callbackFunction' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:96: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:97: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:98: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:98: error: 'sysexCallbackFunction' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:98: error: 'void FirmataClass::attach(int, int)' cannot be overloaded
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:95: error: with 'void FirmataClass::attach(int, int)'
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:99: error: 'byte' has not been declared
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:104: error: 'byte' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:105: error: ISO C++ forbids declaration of 'byte' with no type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:105: error: expected ';' before '*' token
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:107: error: 'byte' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:108: error: 'byte' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:109: error: 'byte' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:110: error: 'byte' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:112: error: 'boolean' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:115: error: 'callbackFunction' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:116: error: 'callbackFunction' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:117: error: 'callbackFunction' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:118: error: 'callbackFunction' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:119: error: 'callbackFunction' does not name a type
/Applications/arduino-0012/hardware/libraries/Firmata/Firmata.h:122: error: 'sysexCallbackFunction' does not name a type
In function 'void setup()':
Interfacing PD with the Arduino ... how?
I've got an Arduino Diecimila which works perfectly with PD. It really is super simple to set up!
1. Download Pduino AND Firmata:
http://at.or.at/hans/pd/objects.html
2. Download Arduino Software for your operating system:
http://arduino.cc/en/Main/Software
3. Attach your Arduino board via USB cable, launch Arduino Software and open "Standard_Firmata" from Firmata/examples. Upload this to your board.
4. Launch PD and open "arduino-test.pd"
5. Select the right COM port (click on each one until PD message window reports something positive). Then enable the PIN you've got your sensor attached to. Value in a relevant box will start updating. If you haven't got a sensor but just want to make sure it's working, click "Pulse all outputs". An LED on the board will start flashing repeatedly.
That's all you need to get going.
Let us know how it goes.
Good luck!