Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Arduino] Port série : communiquer en C

    26 février 2013 à 19:15:47

    Bonjour !

    Je voudrais créer un programme en C (et non en C++, comme proposé dans le tuto à l'aide de Qt) avec la bibliothèque nommée "SDL" qui permettrait de gérer le couleur d'une LED RGB relié à l'arduino, elle même relié à l'ordinateur. 

    Mon souci, c'est que je n'ai aucune idée de comment m'y prendre. Je m'y connais en C, je me débrouille en Arduino/électronique, mais pour faire le lien ... Je galère. Donc merci de m'aider, et si un sujet traite déjà le thème aborder, faites moi signe ! 

    Merci ! =)

    -
    Edité par Aero-Lighteur 26 février 2013 à 19:17:00

    • Partager sur Facebook
    • Partager sur Twitter
    Tagada, je suis une fraise !
      28 février 2013 à 14:15:47

      La communication avec l'Arduino est uniquement possible par le port série comme tu l'a dit dans le titre du sujet.

      Pour moi la question c'est pourquoi le C et non le C++ ?
      Tu peux très bien le faire en C++ avec SFML ce que tu fais en C avec SDL.

      En C++ tu peux utiliser le .net Framework :
      http://msdn.microsoft.com/fr-fr/library/system.io.ports.serialport.aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-1
      Ou bien la lib Boost :
      http://www.boost.org/doc/libs/1_40_0/doc/html/boost_asio/overview/serial_ports.html

      Sinon en C en utilisant les vielle API Win32 voir :
      http://www.ensta-bretagne.fr/lebars/tutorials/Serial%20port%20C.pdf

      Désolé de ne pas pouvoir t'aiguiller plus que ça !

      • Partager sur Facebook
      • Partager sur Twitter
        28 février 2013 à 16:06:19

        Bah, tu fais une communication Série ? Tu envoies genre un un nombre et du côté de l'arduino, tu le lis. Selon le nombre, ça change la couleur. 

        Soit tu limites la couleur pour ta led RGB, c'est à dire :

        1-> Rouge, 2-> Orange, 3-> Jaune, 4->Vert Clair, ...

        Soit tu envoies ton nombres direct en RGB, Style 255153000 -> 255 de rouge, 153 de vert, 0 de bleu ce qui donne un orange.

        Pour la communication Série, j'ai un petit code en Python par exemple :

        import serial
        import time
        import system
        
        port = "/dev/ttyACM0" #La on met le nom du port
        ser = serial.Serial(port, 9600) 
        time.sleep(3) #On attends 3 secondes le temps que la connexion soit niquelle
        ser.write(sys.argv[1]) #On envoie le premier argument passé en commande à l'Arduino

        En C c'est pas plus difficile. La j'ai juste à entrer dans le terminal

        python script.py argument



        • Partager sur Facebook
        • Partager sur Twitter
          1 mars 2013 à 14:42:16

          Pourquoi C au lieu de C++ ?! parce que : forum ( ne vous moquez pas de moi, j'ai beaucoup de problème, je sais bien ^^

          Et je vais voir du coté de l'API win32, c'est exactement ce que je cherchais :D 

          et merci à amarOK pour la confirmation de l'utilisation d'une led RGB, par contre pour le python, ça ne me va pas, ce n'est pas du tout le genre de langage que j'apprécie ! 

          Merci à vous :) 

          -
          Edité par Aero-Lighteur 1 mars 2013 à 14:48:07

          • Partager sur Facebook
          • Partager sur Twitter
          Tagada, je suis une fraise !
            1 mars 2013 à 14:46:11

            255;255;255 c'est du blanc, mais oui c'est comme ton ordinateur, c'est des compositions de trois couleurs.

            Je te conseil vraiment Qt.

            • Partager sur Facebook
            • Partager sur Twitter
              1 mars 2013 à 14:56:52

              Merci de la réponse rapide !

              Le problème avec Qt, c'est que c'est tellement bien fait, que j'ai l'impression de ne plus rien avoir à faire x)  [ en même temps, c'est un peu l'interêt de la POO, mais ... j'apprécie pas autant que la SDL, même si je reconnais que c'est vraiment un super truc ! ], mais s'il s'avère que je peux faire un joli programme, au lieu d'un truc brouillon et hard en SDL, j'opterais pour Qt, je look l'API windows, et je vous redirais :) 

              ====EDIT====

              On peut combiner l'api windows et la SDL ?! 

              -
              Edité par Aero-Lighteur 1 mars 2013 à 15:01:08

              • Partager sur Facebook
              • Partager sur Twitter
              Tagada, je suis une fraise !
                1 mars 2013 à 15:12:27

                Non mais le code que j'ai filé c'est juste pour te dire comment faire. En C c'est exactement pareil, tu fais ta communication sur le port série de ton choix et tu lui envoies l'argument. Après que tu le fasses en JAVA en Brainfuck en C en Python on s'en fiche un peu, je parlais juste pour la communication. En C doit bien y avoir un truc pour la com Série. Et oui tu peux combiner l'API win et SDL.

                • Partager sur Facebook
                • Partager sur Twitter
                  1 mars 2013 à 15:47:05

                  Ouaip ! Donc je pars bien pour combiner l'API windows et la SDL en C, merci de votre aide, j'ai trouvé mon bonheur ;)  

                  Je marque le sujet "résolu" !

                  Merci encore ! 

                  ====EDIT====

                  j'utiliserais l'API windows ... ou pas, je cherche des tutos/infos depuis tout à l'heure, et rien à faire, rien n'explique clairement comment utiliser les fonctions ! Donc je vois ... 

                  -
                  Edité par Aero-Lighteur 1 mars 2013 à 16:41:42

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Tagada, je suis une fraise !
                    1 mars 2013 à 23:25:02

                    Une dernière question : quelqu'un sait s'il est possible de le faire avec la SFML, la communication par port série ?!
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Tagada, je suis une fraise !
                      11 mars 2013 à 21:02:46

                      Bonjour,

                      désolé si je pose ma question ici c'est juste que je ne trouve pas ou créer une nouvelle conversation.

                      en fait je dois écrire un programme arduino qui commande un bloc moteur a l'aide d'une carte pcf8574.

                      j'arrive pas trop à commencer. merci de m'aider.

                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 mars 2013 à 23:00:19

                        Lit donc le tuto arduino ;)
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Tagada, je suis une fraise !

                        [Arduino] Port série : communiquer en C

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown