Re: [Pdmtl] Communication sérielle

Thomas Ouellet Fredericks iamonthebeach at gmail.com
Thu Apr 27 08:21:16 EDT 2006


Tu peux utiliser l'externe de Marc, mais si j'ai bien compris il ne le
développe/supporte plus.

Ci-joint, un exemple d'une abstraction arduino pour pd et le code du
firmware. (Le bout du bout serait de communiquer en OSC avec l'arduino
grâce aux nouveaux externes de Martin Peach.)
Cette abstraction (arduino.pd) traite les données envoyées par
l'arduino et reçues par PD. Pour envoyer des données à l'arduino (à
PD) je suggère que tu "hack" l'abstraction en y ajoutant des select ou
des route pour traduire les messages PD. Tu peux trouver la traduction
des codes ascii dans le fichier ascii.txt (aussi utilisé par
l'abstraction).

Pour resumer, la traduction des données arduino en données pd
fonctionne (à l'interne, pour faciliter les choses, l'espace est
représenté par un | ).
Je n'ai pas eu le temps de faire la traduction des données pd en
arduino parce que je ne sais pas comment faire pour traiter les
caractères d'un symbole individuellement ( quelqu'un a un truc?).

Lorsque j'utilise comport dans linux, l'arduino prend automatiquement le port 8.

L'objectif de cette abstraction est de permettre un accès à toute les
fonctions de l'arduino (modifier la fonction d'une pin pour qu'elle
soit une entrée ou une sortie, recevoir les données des adc, controler
le pwm, etc...) à partir de PD.

Have fun.
Tom


On 4/27/06, Alexandre Quessy <alex at sourcelibre.com> wrote:
> Bon, alors, pour revenir au sujet premier de ce fil de discussion :
>
> Quels externes dois-je utiliser pour convertir des chaînes de
> caractères (listes, floats et symboles) en nombres ascii et vis-versa
> ? Il me semble que Marc en a fait un, ou était-ce une abstraction... ?
>
> Ainsi, je vais pouvoir utiliser des sélecteurs pour mes messages
> Arduino/PD. Sinon, il y a un exemple à quelque part ? Où donc ?
>
> aalex
>
>
>
>
>
>
> Le 05/04/06, Marc Lavallée<marc at hacklava.net> a écrit :
> > Cette gymnastique ne vaut la peine qu'avec des impératifs de vitesse. Et
> > tant qu'à faire, au lieu de réinventer un protocole, utilisez le protocole
> > MIDI. Personellement, je préfère les protocoles qui utilise du texte en
> > ASCII, parce que c'est simple, intuitif, lisible, et permet de communiquer
> > n'importe quoi. OSC fonctionne en texte, FUDI aussi. Mon deux sous...
> >
> > Le 5 Avril 2006 11:21, Thomas Ouellet Fredericks a écrit:
> > > Voci un genre de code plus intuitif selon moi pour l'utilisateur:
> > > tu gardes plus de la moitié des valeurs possibles (156 sur 256) pour
> > > des codes de contrôle (genre break, feed, setasinput, setasoutput,
> > > getadc, etc...) et en soustrayant aux autres (156 à 256) 100, tu peux
> > > avoir une résolution de dizaines. Tu peux donc faire qqch du genre
> > > pd à arduino: 32 -> GetAdc
> > > arduino à pd: 158 -> 158 -156 = 2
> > > arduino à pd: 255 -> 255 - 156 = 99
> > > arduino à pd: 0 -> Done
> > > lorsque pd reçoit le Done il calcule la valeur, soit 9902 (2*1+99*100)
> > >
> > > Les codes contrôle ne rentreront jamais en conflit avec les valeurs et
> > > les valeurs peuvent être lues à l'oeil.
> > >
> > > Une idée de même.
> > > Encore plus intuitif, c'est de garder les chiffres 0 à 99 pour les
> > > valeurs numériques et les autres (100-255) pour des codes de contrôle.
> > >
> > > Tom
> > >
> > > On 4/4/06, Mathieu Bouchard <matju at artengine.ca> wrote:
> > > > On Tue, 4 Apr 2006, Alexandre Quessy wrote:
> > > > > Donc, un bon protocole pour transmettre des nombres plus grands que
> > > > > 256 serait de le transmettre en ASCII. Super. Merci.
> > > >
> > > > Aussi, le BER permet cela. Le BER est un encodage auto-délimitant pour
> > > > des nombres de taille variable. C'est facile: tu écris ton nombre en
> > > > base 128 et tu rajoutes 128 à chaque chiffre qui n'est pas le dernier
> > > > (ou alternativement tu rajoutes 128 juste au dernier).
> > > >
> > > > exemple:
> > > >  1000000 = 7812 reste 64
> > > >     7812 =   61 reste  4
> > > >       61 =    0 reste 61
> > > >
> > > > alors tu écris 61+128=189 suivi de 4+128=132 suivi de 64.
> > > >
> > > > L'avantage de cette méthode c'est que ça prend 2 fois moins bytes que
> > > > ASCII.
> > > >
> > > >  _ _ __ ___ _____ ________ _____________ _____________________ ...
> > > >
> > > > | Mathieu Bouchard - tél:+1.514.383.3801 - http://artengine.ca/matju
> > > > | Freelance Digital Arts Engineer, Montréal QC Canada
> > >
> > > _______________________________________________
> > > Pdmtl mailing list
> > > Pdmtl at artengine.ca
> > > http://ns.artengine.ca/mailman/listinfo/pdmtl
> >
> > _______________________________________________
> > Pdmtl mailing list
> > Pdmtl at artengine.ca
> > http://ns.artengine.ca/mailman/listinfo/pdmtl
> >
>
>
> --
> Alexandre Quessy
> http://alexandre.quessy.net/
>
> _______________________________________________
> Pdmtl mailing list
> Pdmtl at artengine.ca
> http://ns.artengine.ca/mailman/listinfo/pdmtl
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: arduino_pd.zip
Type: application/zip
Size: 44710 bytes
Desc: not available
Url : http://ns.artengine.ca/pipermail/pdmtl/attachments/20060427/35512974/arduino_pd-0001.zip


More information about the Pdmtl mailing list