Partage
  • Partager sur Facebook
  • Partager sur Twitter

arduino+ethernet+virtualwire

quelle sortie numérique

Sujet résolu
    12 janvier 2013 à 16:36:53

    Bjr à tous,

    voilà mon problème : j'utilise une uno+ethernet shield branché sur ma box. j'ai branché un émetteur RF sur la broche 3 pour communiquer avec une autre uno. Tout marche très bien... sauf qu'il me faudrait une sortie numérique sur le première uno branché sur la box... et là ça ne fonctionne plus. j'ai beau utiliser les digitalWrite(X, HIGH). ben ça fonctionne pas.

    Pour moi c'est lié à virtualwire car si je remplace le sketche par un "blink" (par ex.) les sorties réagissent très bien.

    SVP quelqu'un aurait une idée ?

    merci d'avance

    cactus68100

    • Partager sur Facebook
    • Partager sur Twitter
      12 janvier 2013 à 18:00:55

      Bonjour, 

      Explique nous le cablage que tu as fais sur l'Arduino en question.

      • Partager sur Facebook
      • Partager sur Twitter
        13 janvier 2013 à 10:35:08

        Bjr et merci pour ta réponse

        l'ethernet shiel est clipser sur la uno comme il se doit. la module émetteur est pour l'instant sur une breadbord brancher sur le +5V et le GND de l'ensemble uno +ethernetshiel. j'ai pris la sortie 3 pour envoyer les datas via l'émetteur.

        Si j'enlève le include virtualwire.h j'arrive à nouveau à utiliser mes autres sorties.

        (j'ai pas essayé avec l'uno tout seul car ça ne rime à rien puisqu'il faut transmettre les ordres via ethernet)

        le sketch de l'émetteur (uno+ethernetshield) : (donc, j'aimerais rajouter une fonction "if" qui mettrait une des sorties numérique à 0 ou 5v)

        #include <SPI.h>
        #include <Ethernet.h>
        #include <VirtualWire.h>

        byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
        byte ip[] = {192,168,0,25};
        byte gateway[] = {192,168,0,254};
        String lire=String();
        int led=13;



        EthernetServer serveur(1337);

        void setup()
            {
                  vw_setup(2000);
                  vw_set_tx_pin(3);
                  Ethernet.begin(mac,ip,gateway);
                  serveur.begin();
                  Serial.begin(9600);
                  Serial.println("on commence");
                  pinMode (led, OUTPUT);
                  digitalWrite(led, LOW);

            }
        void loop()
            {
              EthernetClient cli = serveur.available();
              if (cli && cli.connected()) {
                    if (cli.available() > 0) {
                      
                       char rep=cli.read();
                       lire+=rep;
                       if(lire.indexOf("1191") == 0) {
                             const char *msg = "1191";
                             digitalWrite(led, HIGH);
                             vw_send((uint8_t *)msg, strlen(msg));
                             digitalWrite(led, LOW);
                             vw_wait_tx();
                             delay(200);
                             lire="";
                        }
                       if(lire.indexOf("1190") == 0) {
                             const char *msg = "1190";
                             digitalWrite(led, HIGH);
                             vw_send((uint8_t *)msg, strlen(msg));
                             digitalWrite(led, LOW);
                             vw_wait_tx();
                             delay(200);
                             lire="";
                       }
                        if(lire.indexOf("1141") == 0) {
                             const char *msg = "1141";
                             digitalWrite(led, HIGH);
                             vw_send((uint8_t *)msg, strlen(msg));
                             digitalWrite(led, LOW);
                             vw_wait_tx();
                             delay(200);
                             lire="";
                       }
                       if(lire.indexOf("1140") == 0) {
                             const char *msg = "1140";
                             digitalWrite(led, HIGH);
                             vw_send((uint8_t *)msg, strlen(msg));
                             digitalWrite(led, LOW);
                             vw_wait_tx();
                             delay(200);
                             lire="";
                       }
                      if(lire.indexOf("1170") == 0) {
                             const char *msg = "1170";
                             digitalWrite(led, HIGH);
                             vw_send((uint8_t *)msg, strlen(msg));
                             digitalWrite(led, LOW);
                             vw_wait_tx();
                             delay(200);
                             lire="";
                       }
                       if(lire.indexOf("1171") == 0) {
                             const char *msg = "1171";
                             digitalWrite(led, HIGH);
                             vw_send((uint8_t *)msg, strlen(msg));
                             digitalWrite(led, LOW);
                             vw_wait_tx();
                             delay(200);
                             lire="";
                       }
                            
                      }
                                    }
                                }

        • Partager sur Facebook
        • Partager sur Twitter
          13 janvier 2013 à 11:50:23

          C'est très bizarre.. Quelle version de la librairie VirutalWire as-tu ?

          La dernière version est disponible ici : http://www.open.com.au/mikem/arduino/VirtualWire-1.9.zip

          Ps : Ajoute ton code à ton message avec le bouton "Code" pour que ce soit plus lisible la prochaine fois. ;)

          • Partager sur Facebook
          • Partager sur Twitter
            13 janvier 2013 à 17:29:53

            re

            version virtualWire : 1.10... je vais tester avec la 1.9 et te tiens courant (la 1.10 est p'tet une béta ?)

            excuses... j'avais pas vu le bouton "code". OK pour la prochaine fois.

            a+

            • Partager sur Facebook
            • Partager sur Twitter
              13 janvier 2013 à 18:09:06

              D'accord, tiens moi au courant. ;)
              • Partager sur Facebook
              • Partager sur Twitter
                15 janvier 2013 à 10:25:14

                Bjr SRWieZ,

                alors j'ai essayé avec le virtualwire 1.9 : c'est toujours la même chose : impossible d'utiliser une autre sortie numérique. la seule qui fonctionne est la broche 3 pour l'émetteur. (même sur la 13, la led ne veut pas s'éteindre quand je lui demande).

                je vais faire un autre essais qui consiste à ne pas utiliser virtualwire et tester toutes mes sorties avec une led.

                Je te tiens au courant.

                a+

                • Partager sur Facebook
                • Partager sur Twitter
                  15 janvier 2013 à 10:43:34

                  Quand tu dis que le broche 3 fonctionne, tu veux dire que le 2 eme Arduino reçoit bien les informations envoyé par l'Arduino avec le shield Ethernet ?

                  J'ai ce qu'il faut chez moi pour tester ton code seulement je ne pourrais essayer que ce week end.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 janvier 2013 à 15:45:10

                    ça y est... j'ai compris : le problème vient de la programmation :

                    dans les "if" où il s'agit d'utiliser les pin de l'uno+ethernet il restait les "vw_wait_tx()" qui bloquaient le tout.

                    Après les avoir enlevés, tout va bien (ouf... mon arduino n'est pas possédé !)

                    ce sujet est donc clos (je sais pas comment faire)

                    en tous les cas, merci pour ta participation.

                    a+

                    • Partager sur Facebook
                    • Partager sur Twitter

                    arduino+ethernet+virtualwire

                    × 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