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 :

Utiliser Processing avec Arduino, communication série.


Sujet :

Arduino

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    loisirs
    Inscrit en
    Février 2020
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : loisirs

    Informations forums :
    Inscription : Février 2020
    Messages : 118
    Points : 25
    Points
    25
    Par défaut Utiliser Processing avec Arduino, communication série.
    Bonjour

    Suite du projet: Détecter l'allumage d'un led que je viens de passer en résolu.

    Pour cette partie, je vais utiliser la démarche suivante:
    - Collecte d'informations sur la communication série Arduino et Processing.
    - Etude des exemples fournis avec l'Ide Arduino.

    Je vous ferai part des résultats de ces études, afin que vous corrigiez si possible mes erreurs.

    J'en profite pour traduire les commentaires intégrés à ces exemples, qui sont en Anglais; si ça peut servir à quelqu'un!

    Je commencerai par l'exemple "Graph" de la partie communication.
    Visualiser dans Processing, sous forme graphique les valeurs lues sur l'entrée analogique A0.

    Euh! c'est pas gagné d'avance.

    A suivre!

  2. #2
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    bon courage !

    (après C++ faut apprendre Java )

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    loisirs
    Inscrit en
    Février 2020
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : loisirs

    Informations forums :
    Inscription : Février 2020
    Messages : 118
    Points : 25
    Points
    25
    Par défaut Utiliser Arduino avec Processing etc..
    Bonsoir

    Voici le résultat de mes premières élucubrations avec Processing.

    Le circuit c'est Jay M.; lecture sur le port A0.

    Les programmes que j'ai étudiés et adaptés L'exemple Graph dans l'Ide Arduino + quelques autres.

    La documentation, essentiellement les références du langage de Processing + quelques boites de tranquillisants.

    La vidéo du résultat dans la fenêtre Processing, si j'arrive à l'insérer.

    J'arrive pô.

    c'est une .mov; que j'ai créé en utilisant save.frame() et l'outil movie maker de Processing. On fait comment?

    Ben oui on peut pas tout savoir!

  4. #4
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    Salut

    c'est une .mov; que j'ai créé en utilisant save.frame() et l'outil movie maker de Processing. On fait comment?
    est-ce qu'il se joue correctement sur votre ordinateur?
    si oui c'est que le format .mov n'est alors pas reconnu par le forum.
    Il faut soit l'encoder différement en MP4 peut être (il existe plein de convertisseurs) ou alors vous vous créez un compte youTube et vous postez la vidéo là bas (google doit savoir gérer des .mov) et vous mettez le lien dans le forum.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    loisirs
    Inscrit en
    Février 2020
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : loisirs

    Informations forums :
    Inscription : Février 2020
    Messages : 118
    Points : 25
    Points
    25
    Par défaut Utiliser Processing avec Arduino
    Bonjour

    Oui la vidéo est lue correctement sur mon ordinateur.

    D'ailleurs, je la trouve vraiment très belle!

    Je regarde les formats acceptés.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    loisirs
    Inscrit en
    Février 2020
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : loisirs

    Informations forums :
    Inscription : Février 2020
    Messages : 118
    Points : 25
    Points
    25
    Par défaut Utiliser Arduino avec Processing etc..
    Bonjour

    Pour l'insérer, il faut la poster sur youtoube.

    [
    .

    J'ai passer la vidéo en "non répertoriée".

    C'est beau hein! Je ne m'en lasse pas je sens l'oscar arriver.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    loisirs
    Inscrit en
    Février 2020
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : loisirs

    Informations forums :
    Inscription : Février 2020
    Messages : 118
    Points : 25
    Points
    25
    Par défaut Utiliser Arduino avec Processing etc..
    Encore moi

    Le programme

    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
    // Programme tiré de l'exemple grahp de l'Ide Arduino
    import processing.serial.*; // Importe la bibliothèque communication série + classes associées, le ".*".
    Serial myPort; // Contient N° port utilisé ici 1.
    String valeurInString;
     
    void setup () {
      size(400, 300); // Taille de la fenêtre d'affichage en pixels / Format size(width, height).
      printArray(Serial.list()); // Imprime dans la console la liste des ports séries disponibles. En option, s’il n’y en a qu’un seul.
      myPort = new Serial(this, Serial.list()[0], 115200); // Le port série utilisé et la vitesse de transmission; attention la liste commence à 0 ; idem qu'Arduino.
      myPort.bufferUntil ('\n'); // Ne rien faire sur le port série, tant qu'une donnée nouvelle ligne n'est pas dans le tampon (pas sûr de tout ça).
      textFont(createFont("Grenoble SF", 24)); // Création d’une police de caractères.
      background(0); // Définir le noir pour la fenêtre de visualisation.
    }
    void draw() { // Appelle fonction dessin. On constate que l’axe des x représente le temps, l’axe des y la valeur de la donnée.
      background(0); // Rafraîchissement de l’écran pour éviter de d’écrire les valeurs l’une sur l’autre. 
      text("Valeur lue =   " + valeurInString, 50, 100); // Affichage aux coordonnées définies x = 100, y = 50 tout ça en pixels.
    saveFrame(); // Sauvegarde d’une série d’image ; elles se trouvent au même endroit que le sketch.
    }
    void serialEvent (Serial myPort) { // Appel de la method pour lire le port série.
      String inString = myPort.readStringUntil ('\n'); // Acquisition de la donnée en code ASCII.
      if (inString != null) { // Vérifie si une donnée est présente sur myPort.
        inString = trim (inString); // Elimine les blancs ?
        valeurInString = inString; // Sauve la valeur lue sur le port série, dans la variable valeurInString.
      }
    }
    Les commentaires indiquent le rôle des lignes, où tout au moins ce que j'ai compris.

    J'ai trouvé une erreur dans l'exemple "Graph".

    La suite: Gestion du temps et les tableaux.

  8. #8
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 064
    Points
    19 064
    Par défaut
    Salut Jean Claude du Var.

    La vidéo n'est pas disponible. Cette Vidéo est privée.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    loisirs
    Inscrit en
    Février 2020
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : loisirs

    Informations forums :
    Inscription : Février 2020
    Messages : 118
    Points : 25
    Points
    25
    Par défaut Utiliser Processing avec Arduino
    Bonjour

    Oups

    Je me suis certainement trompé d'option; je vérifie

  10. #10
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    Un bon debut!

    A lire le code processing on voit ce que ça doit faire (en attendant que vous avez rendu publique la vidéo YouTube).

  11. #11
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    Salut à toutes et tous,

    un petit partage qui pourrait être utile éventuellement.

    j'ai un peu nettoyé un bout de code que j'avais et qui trainait dans un vieux dossier et qui me sert de base pour la connexion d'un code processing à un Arduino.

    L'idée est qu'au lancement de l'application une fenêtre de configuration s'ouvre
    Nom : welcome.png
Affichages : 746
Taille : 90,6 Ko

    il y a une zone de configuration du port série:
    Nom : config.png
Affichages : 737
Taille : 120,4 Ko

    En dessous vous aurez éventuellement des paramètres spécifiques à votre application que l'utilisateur peut modifier, par exemple ici un nombre de lignes et de colonnes.
    Nom : param.png
Affichages : 740
Taille : 104,3 Ko

    Si votre arduino n'apparaît pas dans la liste, on peut appuyer sur le bouton refresh
    Nom : refreshButton.png
Affichages : 735
Taille : 98,4 Ko

    et la liste se met à jour
    Nom : refreshed.png
Affichages : 724
Taille : 112,6 Ko

    l'utilisateur choisit son port série et la vitesse en bauds. et puis l'utilisateur valide
    Nom : OKButton.png
Affichages : 731
Taille : 107,2 Ko

    ce qui l'emmène sur l'écran de votre application.
    Nom : action.png
Affichages : 736
Taille : 102,6 Ko
    (ici j'affiche juste une grille avec le bon nombre de lignes et de colonnes. le code montre comment avoir une fenêtre à taille variable et minimum)

    Pour votre programme au lieu de dessiner dans la fonction draw(), vous dessinez dans drawActionScreen() qui est la fonction appelée une fois l'écran initial de configuration passé.

    Notez qu'il y a déjà une instance de CP5 qui est créée pour vous déjà (variable cp5) si vous avez besoin d'autres contrôles dans votre application donc pas la peine de la recréer.

    Notez aussi qu'il y a un bout de code dans le setup() qui s'exécute quand l'application se termine pour fermer le port série.

    Pour le reste vous codez normalement


    Voilà en espérant que ça puisse aider

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    loisirs
    Inscrit en
    Février 2020
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : loisirs

    Informations forums :
    Inscription : Février 2020
    Messages : 118
    Points : 25
    Points
    25
    Par défaut Utiliser Arduino avec Processing etc..
    Bonsoir

    J'ai modifié les paramètre de la vidéo; elle doit être accessible.

    Merci Jay M. pour le partage, mais ça me passe largement au dessus.
    En plus maintenant: avec ma p'tite vidéo j'avais l'air d'un c... ma mère avec ma p'tite vidéo j'avais l'air.....

    Bon allez! on continue.

  13. #13
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    La video est superbe parce que ça fonctionne et c’est ce qui compte.

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    loisirs
    Inscrit en
    Février 2020
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : loisirs

    Informations forums :
    Inscription : Février 2020
    Messages : 118
    Points : 25
    Points
    25
    Par défaut Utiliser Arduino avec Processing etc..
    Bonjour

    Jay M

    Je vous avais dis que c'était un chef d'œuvre!

    Le plus important pour moi = le programme fonctionne; mais je sais pourquoi.
    Je viens de le modifier avec lecture en digital ça fonctionne bien aussi.

    Dans votre partage précédent, je n'ai pas vu le code; ; cela me serait peut être utile pour la phase 2; pour la façon de dessiner à l'écran surtout; si c'est de mon niveau de compréhension bien sur.

    Pourriez vous m'indiquer une bonne lecture pour comprendre les tableaux.
    Merci

  15. #15
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    Salut Jean-Claude,

    Je vous avais dis que c'était un chef d'œuvre!
    Je suis d'accord. Quand on découvre quelque chose de nouveau et qu'on arrive à quelque chose de fonctionnel, c'est un moment magique! bravo.

    Dans votre partage précédent, je n'ai pas vu le code;
    Effectivement ce serait mieux avec le code !! j'ai oublié
    je le mets en attachment (fichier zip car il y plusieurs fichiers dedans)

    Le code n'est pas très compliqué à utiliser, en gros vous ne vous souciez plus de câbler en dur le port série sur lequel votre arduino est connecté, au démarrage de l'application l'utilisateur pourra choisir.

    Ensuite ça donne la main à votre code, il faut juste mettre le code que vous aviez dans draw() dans la fonction drawActionScreen() à la place. (bien sûr si vous initialisez des choses dans le setup() il faut les rajouter, le bon endroit serait dans la fonction prepareActionScreen(). Le port série qui est ouvert s'appelle arduinoPort donc si vous voulez écouter ce qui arrive sur le port série c'est ce nom de variable qu'il faut prendre.

    Et quand vous quittez l'application mon code se charge de fermer le port série de façon à le libérer.

    PS: si vous ne voulez pas de paramètres ou d'autres formes de paramètres, vous virez bien sûr la création des éléments graphiques pour les 2 valeurs
    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
      nbLinesNumberbox = new Slider(cp5, "nbLines")    // associate variable nbLines to this widget
        .setLabel("Number of Lines")
        .setColorLabel(0)
        .setPosition(10, 210)
        .setSize(200, 25)
        .setRange(10, 50)
        .setFont(defaultTextFont)
        ;
     
      nbColumnsNumberbox= new Slider(cp5, "nbColumns")    // associate variable nbColumns to this widget
        .setLabel("Number of Columns")
        .setColorLabel(0)
        .setPosition(10, 245)
        .setSize(200, 25)
        .setRange(10, 50)
        .setFont(defaultTextFont)
        ;
    et enlevez la déclaration des 2 variables nbLines, nbColumns. et toute référence à nbColumnsNumberbox ou nbLinesNumberbox
    Fichiers attachés Fichiers attachés

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    loisirs
    Inscrit en
    Février 2020
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : loisirs

    Informations forums :
    Inscription : Février 2020
    Messages : 118
    Points : 25
    Points
    25
    Par défaut Utiliser Processing avec Arduino
    Merci Jay M.

    Je jetterai un œil; histoire d'apprendre.

    Pour comprendre et utiliser ces "*+-z" de tableaux; une doc à me conseiller? sinon je verrais les "references langage".

    Pour l'instant je me casse les dents sur une boucle if else pour afficher un message différent selon que la led est allumée 1 ou éteinte 0.

    je cherche je cherche je cherche etc.

  17. #17
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    En Java on ne travaille qu’avec des objets.

    il y’a plusieurs façon de représenter des collections de "machins", le tableau est la structure de base mais on peut faire des listes par exemple (Une liste est comme un tableau mais à dimension variable donc on peut y ajouter ou enlever des éléments alors qu’un tableau a une dimension fixe comme en C++)

    Pour faire simple et se consacrer aux tableaux: un tableau (array) est une structure de données contenant un groupe d'éléments tous du même type, avec des adresses consécutives en mémoire. Le tableau a le nombre fixé d'éléments et vous ne pouvez pas changer sa taille. On accède aux éléments d'un tableau par un indice commençant à 0 avec la notation crochets comme en C++

    On peut déclarer le tableau en deux fois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Déclaration du tableau sans spécifier le nombre d'éléments.
    int[] tableau1;
    // allocation de la mémoire pour 100 éléments (sans valeur précise)
    tableau1 = new int[100];
    Ou en une seule fois pour sa taille, avec ou sans les valeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int[] tableau2 = new int[10]; // 10 cases réservées
    int[] tableau3 = {10, 20, 30, 40}; // tableau de 4 cases initialisées avec des valeurs connues
    Ensuite c’est comme en C++ on appelle tableau1[3] pour accéder à la 4ème case (l’index commence à zéro)

    Pour vous si vous voulez stocker du texte, le type des éléments du tableau sera String

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String[] etatLampe = {"lampe éteinte", "lampe allumée"};
    Et vous pouvez appeler par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    text(etatLampe[0], 10, 10);
    (Tapé sur mon mobile donc pas testé)

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    loisirs
    Inscrit en
    Février 2020
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : loisirs

    Informations forums :
    Inscription : Février 2020
    Messages : 118
    Points : 25
    Points
    25
    Par défaut Utiliser Processing avec Arduino
    Bonjour

    Merci Jay M de ces éclaircissements.

    Si j'ai bien compris, en rajoutant ce que j'ai pu lire par ailleurs, si je veux un tableau (array ) à deux dimensions x lignes y colonnes j'ai la ligne de code suivante:
    le premier terme étant le type de données que je veux stocker.
    Puis je dimensionne le nombre d'éléments.

    Donc la grosse différence entre array et une liste, c'est que l'allocation de l'espace mémoire pour la liste est dynamique.
    Donc comme je connais le nombre maximum de données que je dois stocker, je peux prendre un tableau; mais... comme je ne suis pas sûr d'avoir à toujours stocker ce maximum de données, pour faire plus pro, j'ai intérêt à prendre une liste.

    Il faut bien entendu que l'on puisse faire des listes à deux dimensions.

    Je vais chercher la réponse.

    Pour l'instant je cherche pourquoi mes conditions if else sont ignorées.

    A suivre

  19. #19
    Expert confirmé

    Homme Profil pro
    mad scientist :)
    Inscrit en
    Septembre 2019
    Messages
    2 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : mad scientist :)

    Informations forums :
    Inscription : Septembre 2019
    Messages : 2 711
    Points : 5 390
    Points
    5 390
    Par défaut
    Oui tout à fait, vous pourriez faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     int[][] tableau2D = new int[10][20]; // 10 lignes, 20 colonnes
    si vous voulez utiliser un ArrayList, voici un exemple de déclaration, remplissage et parcours de la liste pour affichage dans la console de Processing (sous le code)
    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
    import java.util.ArrayList;
    import java.util.Iterator;
     
    ArrayList<String> liste = new ArrayList<String>(10); // taille par défaut pour 10 éléments
     
    void setup()
    {
      // on remplit la liste
      liste.add("Hello");
      liste.add("Jean-Claude");
      liste.add("Comment");
      liste.add("allez");
      liste.add("vous?");
     
      // on parcourt la liste avec un itérateur
      Iterator<String> iterateur= liste.iterator();
      while (iterateur.hasNext()) { 
        println(iterateur.next());
      }
    }
     
    void draw() {}
    vous devriez voir dans la console

    Hello
    Jean-Claude
    Comment
    allez
    vous?


    une liste est plus couteuse en resources système qu'un tableau de taille fixe... Si vous connaissez la taille max habituelle, autant l'allouer. Mais bon c'est sur ordinateur, on n'a pas forcément les contraintes d'un petit Arduino.

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    loisirs
    Inscrit en
    Février 2020
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : loisirs

    Informations forums :
    Inscription : Février 2020
    Messages : 118
    Points : 25
    Points
    25
    Par défaut Utiliser Arduino avec Processing etc..
    Bonsoir

    Pour ceux qui ont des insomnies, je vous livre une énigme sous forme de mon programme.

    Après une grosse prise de tête avec if else, qui n'était qu'en fait qu'un problème de compatibilité de variables, problème enfin résolu.

    Voici le programme;: le blême est que je n'arrive pas à éviter que les affichages se superposent; je m'en suis tiré par une pirouette (cacahuète); je n'en suis pas satisfait pour autant.

    Chercher l'erreur!
    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
    // Programme tiré de l'exemple grahp de l'Ide Arduino
    import processing.serial.*; // Import la bibliothèque communication série + classes associées.
    Serial myPort; // Contient N° port utilisé ici 1.
    int valeurInString; // Variable globale, car je ne savais pas où la placer en variable locale.
    String afficheEtat ;
     
    void setup () {
      size(400, 300); // Taille de la fenêtre d'affichage en pixels / Format size(width, height).
      printArray(Serial.list());
      myPort = new Serial(this, Serial.list()[0], 115200);
      myPort.bufferUntil ('\n'); // Ne rien faire sur le port série, tant qu'une donnée nouvelle ligne n'est pas dans le tampon( pas sûr tout ça).
      textFont(createFont("Grenoble SF", 24));
      background(0); // Définir le noir pour la fenêtre de visualisation.
    }
    void draw() { // Appelle fonction dessin. On constate que l’axe des x représente le temps, l’axe des y la valeur de la donnée.
      background(0); // Rafraîchissement de la fenêtre pour éviter d'écrire les valeurs l'un sur l'autre.
      if (valeurInString == 1) { // Test si la donnée lue sur le port série et stockée dans valeurInString est égale à 1.
        afficheEtat = "ON" ; // True Remplace la valeur stockée dans valeurInString.
        text("Etat led =  " + afficheEtat, 50, 100); // Affiche la valeur de valeurInString.
      }
      afficheEtat = "     OFF" ;
      text("Etat led =   " + afficheEtat, 50, 100);
    }
    void serialEvent (Serial myPort) {
      String inString = myPort.readStringUntil ('\n'); // Acquisition de la donnée en code ASCII.
      if (inString != null) { // Vérifie si une donnée est présente sur myPort.
        inString = trim (inString); // Elimine les blancs ?
        print (inString) ; // Affiche bien 0 et 1 dans la console.
        valeurInString = (int (inString)) ;
      }
    }

Discussions similaires

  1. [Embarqué] Communication avec le port série vers Arduino
    Par YannGTT dans le forum Plateformes
    Réponses: 0
    Dernier message: 05/04/2020, 04h45
  2. communication série via rs232 avec vb.net
    Par lemabs dans le forum Windows Forms
    Réponses: 1
    Dernier message: 16/11/2009, 16h35
  3. Problème de communication avec un port série
    Par hélène2 dans le forum C#
    Réponses: 8
    Dernier message: 22/04/2009, 09h26
  4. Code VBA pour communication avec un port série dans EXCEL
    Par Fbroom dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/05/2008, 10h14
  5. Problèmes avec la communication série
    Par rzayani dans le forum Windows
    Réponses: 3
    Dernier message: 18/06/2007, 11h57

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