Forums > MaxMSP

arduino data

Jan 05 2013 | 2:54 pm

hello friends,

i am new to arduino and max.
i have a connection from arduino to max and i would like to read the digital pin (number 8 and 9)!
it works fine in max but i want this:
I have a Capacitive Sensor attached to arduino and want to show/read
the differences in my value (works in arduino serial monitor) but in max i only get two consistent values.

can anyone help me?

this is my max patch:

-- Pasted Max Patch, click to expand. --

cheers flo

Jan 05 2013 | 7:44 pm

without seeing your Arduino code this is a little vague, so I suggest removing the [atoi] object in your Max patch and checking to ensure that the code is outputting the correct format (8-bit ASCII). If you’re getting readings in the serial monitor window in Arduino then that’s good; look in your code for the "sending" function:

Serial.print(xxx, BYTE);


Serial.write(xxx);//newer Arduino boards and IDE

and make sure there’s no Serial.println.

but we’d really need to see the Arduino code


study materials here:

Jan 06 2013 | 4:28 am

Agreed with Brendan, we’d need your matching Arduino code to be able to debug the issue.

Jan 10 2013 | 4:21 pm

thanks for your fast reply!
brendan ive tried it without the Serial.println but its the same.
the value stays the same if i touch the Capacitive Sensor or not!

ardunio code is from paul badger:
here it is:

int i;
unsigned int x, y;
float accum, fout, fval = .07; // these are variables for a simple low-pass (smoothing) filter – fval of 1 = no filter – .001 = max filter
int ledPin = 5; // select the pin for the LED
float nonTouched, store = 0;

void setup() {

//DDRB=B101; // DDR is the pin direction register – governs inputs and outputs- 1’s are outputs
// Arduino pin 8 output, pin 9 input, pin 10 output for "guard pin"
// preceding line is equivalent to three lines below
pinMode(8, OUTPUT); // output pin
pinMode(9, INPUT); // input pin
pinMode(10, OUTPUT); // guard pin
digitalWrite(10, LOW); //could also be HIGH – don’t use this pin for changing output though
pinMode(5, OUTPUT);


void loop() {
y = 0; // clear out variables
x = 0;

for (i=0; i < 4 ; i++ ){ // do it four times to build up an average - not really neccessary but takes out some jitter

// LOW-to-HIGH transition
//PORTB = PORTB | 1; // Same as line below – shows programmer chops but doesn’t really buy any more speed
digitalWrite(8, HIGH);
// output pin is PortB0 (Arduino 8), sensor pin is PortB1 (Arduinio 9)

//while ((PINB & B10) != B10 ) { // while the sense pin is not high
while (digitalRead(9) != 1) { // same as above port manipulation above – only 20 times slower!

// HIGH-to-LOW transition
// PORTB = PORTB & 0xFE; // Same as line below – these shows programmer chops but doesn’t really buy any more speed
digitalWrite(8, LOW);
//while((PINB & B10) != 0 ){ // while pin is not low — same as below only 20 times faster
while(digitalRead(9) != 0 ) { // same as above port manipulation – only 20 times slower!


fout = (fval * (float)x) + ((1-fval) * accum); // Easy smoothing filter "fval" determines amount of new data in fout
accum = fout;
if (store<50) {
nonTouched = fout;
if (store>50){
store = 50;

Serial.print((long)x, DEC); // raw data – Low to High
Serial.print( " ");
Serial.print((long)y, DEC); // raw data – High to Low
Serial.print( " ");
Serial.print( (long)fout, DEC); // Smoothed Low to High
Serial.print( " ");
if (fout>nonTouched+3){

Jan 10 2013 | 7:10 pm

Are you still getting a variable reading in the Arduino monitor window? If so, please post a small screenshot of the readings. My Arduino chops aren’t great but it appears that this code is only generating an "on/off" transition. It’s also likely I’m wrong


May 01 2013 | 2:45 pm

sorry for not answering in a while! hadnt time for this project!

i have this readings from arduino

screen 1 – non touched

screen 2 – touched

it works fine but now i want to read this different values in max so i can start playing a video when i touch my object…thats my goal…

[attachment=222541,5523] [attachment=222541,5524]

  1. 2.JPG


May 01 2013 | 7:33 pm

here are two resources to help you on your way:

What I tend to do is use Serial.write(myValue) or Serial.print(myValue, BYTE), terminated with a Serial.println(). Delete any lines in your Arduino code that aren’t printing the actual sensor data. This will send a stream of 8-bit value(s) with no need to convert to/from ascii. It’s also quite simple to send the data in its full 10-bit resolution, but I’ve yet to find the need for it.

Then in Max use either [zl group] or [match] as Steven Miller does in his excellent didactic patch in the above thread. Also, search this forum using the keywords "arduino" "parsing multiple sensors" etc.

Keep us posted

May 03 2013 | 12:36 pm

thanks for your help guys…
i am a lot further now in the project…

now i get a good value from my arduino…if i touch my object the value gets 40 then i send a bang and want to record a movie with my webcam…
my goal is now to record a 60sec movie from my webcam and store it in a folder "xy" and play a random video from the same folder "xy" at the same time.

do you think thats possible…thanks….
thats my max project right now:

-- Pasted Max Patch, click to expand. --

May 13 2013 | 1:43 am

hello max friends…

the record time works fine…i set a bang delay to trigger the stop function of the record….

now i have another problem…i want to save the records in one folder and dont overwrite it!
i want to save it as

can you help me?!!
thanks for your help…really appreciate it.
greetz from austria

Viewing 9 posts - 1 through 9 (of 9 total)

Forums > MaxMSP