arduino data

Jan 5, 2013 at 2:54pm

arduino data

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

#65934
Jan 5, 2013 at 7:44pm

Hi
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);

or

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

Brendan

ps
study materials here:

http://arduino.cc/en/Serial/Print

http://arduino.cc/en/Serial/Write

http://arduino.cc/en/Reference/ASCIIchart

#237455
Jan 6, 2013 at 4:28am

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

#237456
Jan 10, 2013 at 4:21pm

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() {
Serial.begin(9600);

//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);

analogWrite(ledPin,255);
delay(10);
analogWrite(ledPin,0);
}

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!
x++;
}
delay(1);

// 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!
y++;
}

delay(1);
}

fout = (fval * (float)x) + ((1-fval) * accum); // Easy smoothing filter “fval” determines amount of new data in fout
accum = fout;
store++;
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){
analogWrite(ledPin,255);
}
else{
analogWrite(ledPin,0);
}
}

#237457
Jan 10, 2013 at 7:10pm

Hi
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

B

#237458
May 1, 2013 at 2:45pm

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]

Attachments:
  1. 2.JPG
#237459
May 1, 2013 at 7:33pm

Hi
here are two resources to help you on your way:

http://cycling74.com/forums/topic.php?id=46919

http://arduino.cc/en/Serial/Print

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
Brendan

#237460
May 3, 2013 at 12:36pm

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. –
#237461
May 13, 2013 at 1:43am

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
xx1
xx2
xx3
xx4
xx5

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

#246371

You must be logged in to reply to this topic.