[PD] Arduino, Pd and ultrasonics: HELP needed for degree project!

Jose Luis Santorcuato santorcuato76 at gmail.com
Tue Sep 28 01:00:33 CEST 2010


I would use pduino, it is easier and not much reason to make the Arduino
programming if it were a standalone project is justified, but if you use pd
not, going to be watching it go from the front: analog ground voltage,  for
the other sensor I send the datasheet to the mountains with pduino, follow
the diagram and will be fine.

Best regards

José.

2010/9/27 Ricardo Lameiro <ricardolameiro at gmail.com>

> I am just thinking out of my head,
>
> maybe you could send via serial someting like
>
> "IR "
> and then the ir value, on the PD side you make a route  [route IR FX XPTO]
> It should rout the data
>
> now i am not sure if it will work just with spaces separating them, or
> maybe with CR, but if you have the hardware at hand, should be easy to test.
>
> 2010/9/27 Chris Jack <itsmrjack at gmail.com>
>
>> Dear Pd'ers… I'm fairly new to Pd and have been using it during my 'Audio
>> Production' degree.  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.
>>
>> [image: SMS pic.jpg]
>>
>>
>> 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 (note the '80' value in the Pd patch pic that my screen shot
>> caught) 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  at http://puredata.hurleur.com/sujet-4682-radio-tuner ...it's
>> my first successful attempt at Pd... I hope you enjoy :)
>>
>> Many thanks
>> --
>> Mr Jack
>>
>> Discus Jockey
>> Audio Tweeker
>> Musical Protagonist
>>
>> itsmrjack at gmail.com
>> http://soundcloud.com/mrjack
>> http://www.myspace.com/itsmrjack
>>
>> http://earshaveeyes.blogspot.com
>> http://campari0safari.wordpress.com
>>
>> _______________________________________________
>> Pd-list at iem.at mailing list
>> UNSUBSCRIBE and account-management ->
>> http://lists.puredata.info/listinfo/pd-list
>>
>>
>
>
> --
> Fagote / Contrafagote
> Bassoon / Contra-bassoon
> http://myspace.com/ricardolameiro
>
> _______________________________________________
> Pd-list at iem.at mailing list
> UNSUBSCRIBE and account-management ->
> http://lists.puredata.info/listinfo/pd-list
>
>


-- 
http://arselectronicachile.blogspot.com
http://comunicacionnativa.blogspot.com/<http://marketingnativo.blogspot.com/>
http://www.myspace.com/santorcuato
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20100927/1305d8b7/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: LV-MaxSonar-EZ0-Datasheet.pdf
Type: application/pdf
Size: 312660 bytes
Desc: not available
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20100927/1305d8b7/attachment-0001.pdf>


More information about the Pd-list mailing list