Tout est dans le titre ou presque
Depuis 2 jours j'essaye d'utiliser un composant directement depuis processing avec le protocole I2C
J'ai chargé dans la mémoire flash de la carte Arduino I2CFirmata mais je n'arrive pas à lire les valeurs qui
m'intéressent sur les ports analogiques A4, A5
Le code classique permettant la lecture des informations n'a pas l'air de fonctionner...
import processing.serial.*; import cc.arduino.*; Arduino arduino; void setup() { println(Arduino.list()[0]); arduino = new Arduino(this, Arduino.list()[0], 57600); arduino.pinMode(4, Arduino.INPUT); arduino.pinMode(5, Arduino.INPUT); } void draw() { float val1=arduino.analogRead(4); float val2=arduino.analogRead(5); println("val1= "+val1+" val2= "+val2); }
Quelqu'un a-t-il un peu d'expérience avec ce protocole ?
Dernière modification par top (2014-07-15 20:34:39)
Hors ligne
Bonjour,
A priori, tu ne peux contrôler la communication I2C par Processing via Firmata. Je ne suis pas un utilisateur de Firmata.
Je pense qu'il est préférable d'utiliser la librairie wire d'Arduino et de transmettre ensuite les valeurs récoltées.
Il faut que tu regardes la feuille des caractéristiques de ton composant (datasheet) pour bien comprendre les opérations à réaliser pour lire des valeurs.
Regarde aussi les exemples donnés avec Arduino.
Nous pouvons t'aider si tu nous en dis plus sur le composant.
Bon courage.
Hors ligne
Merci de ta réponse
le contrôle avec Arduino ne pose pas de problème, je récupère bien ensuite les valeurs
avec Processing. Mais ayant trouvé un fichier I2CFirmata dans les exemples
Arduino j'aurais bien aimé comprendre comment l'utiliser avec Processing avec l'espoir
d'une souplesse proche de celle du StandardFirmata pour la lecture des entrées / sorties
analogiques ou numériques.
Pour le composant peut importe puisqu'il s'agit juste de récupérer les valeurs de la broche SDA
du composant (on peut par exemple se fixer sur le composant HMC6352: la fameuse boussole Arduino)
Je continue mes recherches si quelqu'un à des idées je suis preneur, merci d'avance
Dernière modification par top (2014-07-16 13:47:39)
Hors ligne
avec quel firmata a tu essayé standard ou IC2?
Hors ligne
J'ai essayé les deux avec la boussole (HMC6352),
quand j'utilise le standard je récupère une valeur qui reste toujours la même quelque soit la
position de la boussole
quand j'utilise I2CFirmata j'obtiens toujours zéro
Dernière modification par top (2014-07-17 08:44:40)
Hors ligne
c'est bizarre ,dans ton code essaye de supprimer les lignes " arduino.pinMode(4, Arduino.INPUT);
arduino.pinMode(5, Arduino.INPUT);" es ce que tu récupère la valeur de la boussole,dans le moniteur série arduino?
Hors ligne
mettre les informations concernant ton capteur dans Firmata standard la ou tu vas voir les lignes suivantes.
byte addr;//addresse
byte reg;
byte bytes;
et essaye si cela fonctionne ,car je ne peut pas tester ce capteur,dis moi si sa fonctionne.
Hors ligne
Bon j'ai fait quelques tests sans passer par standardFirmata en utilisant le code
donné par sparkfun mais cela ne marche pas mieux !
Cette boussole est pour l'instant un mystère. Le plus marrant est que j'ai choisi
la boussole au hasard juste pour quelques tests, pensant que c'était peut-être le composant
le plus simple à mettre en oeuvre d'après la doc de sparkfun
J'ai essayé différents montages
du plus simple : http://www.funnyrobotics.com/2011/03/ar … mpass.html
a un peu plus élaboré https://www.sparkfun.com/datasheets/Com … MC6352.pdf
mais sans succès
Les valeurs que je récupère dans le moniteur série sont toujours les mêmes soit 0 soit -25 soit -128 en fonction du montage...
je vais tester le standardFirmata avec l'adresse du composant et je te dis
Hors ligne
bonjour.
Essaye ce code dans arduino ;il va permettre de savoir si la boussole exite(si elle envoie bien des données).
Hors ligne
Un programme pour le compas CMP S03.compare avec le tien.
Hors ligne
Aie Aie
voila le résultat:
I2C slave scanner
reserved adress
. no slave detected
X slave detected
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 . . . . . . . .
1 . . . . . . . . . . . . . . . .
2 . . . . . . . . . . . . . . . .
3 . . . . . . . . . . . . . . . .
4 . . . . . . . . . . . . . . . .
5 . . . . . . . . . . . . . . . .
6 . . . . . . . . . . . . . . . .
7 . . . . . . . . . . . .
0 device found on the bus
Il ne trouve rien !
Hors ligne
Tu es sur que ton circuit n'as pas un Default ?c'est pas normal;si tu as un oscillo tu peut tester pour être sur .Il m'ait
déjà arrivé d'avoir des problèmes avec des composants neufs .
Hors ligne
Je viens de voir un truc ,tu es sur que ton circuit n'est pas en mode sommeil?.
Hors ligne
test ce code.il faut virer les lignes qui concerne liquide cristal.
Hors ligne