IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Communication Arduino Proccesing


Sujet :

Arduino

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 1
    Par défaut Communication Arduino Proccesing
    Bonjour ,

    J'aimerais avoir votre aide :

    Pour un projet j'aimerais communiquer entre mon Arduino et un programme Processing :
    -Je ne sait pas programmer en Processing mais j'ai jusqu'a maintenant réussis a obtenir ce que je souhaiter
    -Mon programme Arduino est fini et graçe au port COM 5 j'arrive a envoyer une chaine de caractère plus précisément 4
    -Mon interface physique est composer de 5 bouton poussoir : 4 bouton simule l'état (haut ou bas) de capteurs et le dernier valide l'envoi des information sur le port séries via une condition
    -Le programme Processing est charger d’interpréter c'est donnée reçu par le port Série et de réagir en conséquence , si il reçoit A1Toucher alors sur une fenêtre il doit positionner une autre image (celle d'un impacte) dans sa case correspondante

    Voici ce qu'envoi mon Arduino sur le port séries (ça diffère celons les bouton enclencher précédemment vous inquiété pas):
    Nom : port com.png
Affichages : 229
Taille : 15,9 Ko
    Voici la fenètre en question :
    Nom : fenetre.png
Affichages : 208
Taille : 5,2 Ko

    Mon gros problème c'est que je sait pas quoi mettre dans mon code Processing pour pouvoir récupérée ce que m'envoi l'Arduino
    Un autre problème c'est que quand je lance mon programme le port COM5 est monopoliser par Processing et du coup Arduino ce soumet et n’envoie rien mdrr

    Voici mes codes

    ARDUINO :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    int valeurBoutonTransfert ;
    int valeurEclairement= 0;
    int valeurportBoutonTransfert;
     
    int portCapteurA1 = 2 ;
    int valeurCapteurA1 ;
    int portCapteurA2 = 4 ;
    int valeurCapteurA2 ;
    int portCapteurA3 = 7 ;
    int valeurCapteurA3 ;
    int portCapteurA4 = 8 ;
    int valeurCapteurA4 ;
     
    int portBoutonTransfert = 12;
     
    int valeurEtatA1 ;
    int valeurEtatA2 ;
    int valeurEtatA3 ;
    int valeurEtatA4 ;
     
    void setup() {
    pinMode (portCapteurA1,INPUT);
    pinMode (portCapteurA2,INPUT);
    pinMode (portCapteurA3,INPUT);
    pinMode (portCapteurA4,INPUT);
    pinMode (portBoutonTransfert,INPUT);
     
    Serial.begin(9600);
     
    }
     
    void loop() {
     
      valeurCapteurA1 = digitalRead(portCapteurA1);
      if(valeurCapteurA1>valeurEclairement & valeurBoutonTransfert == 0) 
      {valeurEtatA1=1;}
     
     
      valeurCapteurA2 = digitalRead(portCapteurA2);
      if(valeurCapteurA2>valeurEclairement & valeurBoutonTransfert == 0) 
      {valeurEtatA2=1;}
     
      valeurCapteurA3 = digitalRead(portCapteurA3);
      if(valeurCapteurA3>valeurEclairement & valeurBoutonTransfert == 0) 
     {valeurEtatA3=1;}
     
      valeurCapteurA4 = digitalRead(portCapteurA4);
      if(valeurCapteurA4>valeurEclairement & valeurBoutonTransfert == 0) 
      {valeurEtatA4 = 1 ;}
     
      valeurportBoutonTransfert = digitalRead(portBoutonTransfert);
     
      if(valeurportBoutonTransfert==1)
      {
        valeurBoutonTransfert=1;
        }
     
     
     
    if (valeurEtatA1 == 1 & valeurBoutonTransfert == 1) {
      Serial.println("A1Toucher");
    }
    if (valeurEtatA1 == 0 & valeurBoutonTransfert == 1) {
    Serial.println("A1Intoucher");
    }
     
          if (valeurEtatA2 == 1 & valeurBoutonTransfert == 1) {
      Serial.println("A2Toucher");
          }
          if (valeurEtatA2 == 0 & valeurBoutonTransfert == 1){ 
          Serial.println("A2Intoucher");}
     
     
    if (valeurEtatA3 == 1 & valeurBoutonTransfert == 1) {
      Serial.println("A3Toucher");
         }
    if (valeurEtatA3 == 0 & valeurBoutonTransfert == 1){
         Serial.println("A3Intoucher");}
     
     
    if (valeurEtatA4 == 1 & valeurBoutonTransfert == 1) {
      Serial.println("A4Toucher");
          }
    if (valeurEtatA4 == 0 & valeurBoutonTransfert == 1) {
          Serial.println("A4Intoucher");}
     
    }
    Processing

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    import processing.serial.*;
    Serial myPort;  // The serial port
     
    PImage cible ;
    PImage impact ;
     
    int valeurA1 ;
    int valeurA2;
    int valeurA3;
    int valeurA4 ;
     
    void setup()
    {
     
      println(Serial.list());
      // I know that the first port in the serial list on my mac
      // is always my  Keyspan adaptor, so I open Serial.list()[0].
      // Open whatever port is the one you're using.
      myPort = new Serial(this, Serial.list()[0], 9600);
     
    size(200, 250);
    cible = loadImage("Image_prototype.png");
    impact = loadImage("impact.png");
    }
    void draw() {
     
    while (myPort.available() >= 3) {
        if (myPort.read() == 0xff) {
     
    valeurA1 = (myPort.read() << 8) | (myPort.read());
    valeurA2 = (myPort.read() << 8) | (myPort.read());
    valeurA3 = (myPort.read() << 8) | (myPort.read());
    valeurA4 = (myPort.read() << 8) | (myPort.read());
        }
    }
    {
    image(cible, 0, 0, 200, 250);
    if(valeurA1==1){
    image(impact, 50, 7, 40, 50);
    }
    if(valeurA2==1){
    image(impact, 50, 70, 40, 50);
    }
    if(valeurA3==1){
    image(impact, 50, 135, 40, 50);
    }
    if(valeurA4==1){
    image(impact, 50, 192, 40, 50);
    }
    }
    }

    Je vous remercie pour votre aide : Si possible j'aimerais que vous me mâcher le boulot plutôt que de me donner des pistes ,malheureusement je suis très Arduino et le Processing m’intéresse pas vraiment pour l'instant surtout pour le peu que je veux faire avec ce programme . Mais je ne suis pas contre des éxplication détailler des différentes ligne de code (en sujet avec le port de communication)

    Je vous remercie pour votre aide

    Trycuz

  2. #2
    Membre expérimenté Avatar de cedd70
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Mars 2012
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2012
    Messages : 154
    Par défaut
    Salut,

    Un autre problème c'est que quand je lance mon programme le port COM5 est monopoliser par Processing et du coup Arduino ce soumet et n’envoie rien mdrr
    Normal, une seul ouverture par port COM dans tous les cas, il existe des logiciel sur PC pour sniffer se qui passe sur ton port COM.


    Pourquoi tu t’embête à passer du texte ?
    Prend 5 bits par exemple dans un unsigned char.
    Ou chaque bit sera égale à l'etat haut ou bas du bouton.

    Ensuite une simple lecture du coté de processing de t'on unsigned char. tu lui applique une comparaison avec un masque pour retrouver t'es etats.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    while (myPort.available() > 0) {
        if (myPort.read() == 0xff) {
     
    unsigned char data_read = myPort.read();
     
     
     
    image(cible, 0, 0, 200, 250);
     
    if(data_read & 0x01){
    image(impact, 50, 7, 40, 50);
    }
     
     
    if(data_read & 0x02){
    image(impact, 50, 70, 40, 50);
    }
     
     
    if(data_read & 0x04){
    image(impact, 50, 135, 40, 50);
    }
     
     
    if(data_read & 0x08){
    image(impact, 50, 192, 40, 50);
    }
    A toi de refaire la partie arduino

Discussions similaires

  1. [WD17] communication arduino et windev
    Par fredcatlou dans le forum WinDev
    Réponses: 29
    Dernier message: 25/07/2016, 10h32
  2. [Python 3.X] Communication Serie Python - Arduino : Quelques questions avec Tkinter
    Par litepixel dans le forum Tkinter
    Réponses: 1
    Dernier message: 04/08/2015, 10h42
  3. Communication arduino avec VB.net
    Par chrifi dans le forum Arduino
    Réponses: 1
    Dernier message: 24/05/2013, 13h49
  4. Communication avec Arduino
    Par Stéphanie.Gautier dans le forum EDI et Outils pour Java
    Réponses: 1
    Dernier message: 23/05/2013, 22h07
  5. Bug communication serie avec arduino (busy)
    Par Invité dans le forum MATLAB
    Réponses: 2
    Dernier message: 09/07/2012, 09h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo