[Programmation] [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?
Répondre à la discussion
Affichage des résultats 1 à 24 sur 24

[ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?



  1. #1
    REDZORR

    [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?


    ------

    Bonjour à tous!

    Je voudrais savoir comment mettre 2 SoftwareSerial dans un programme Arduino.
    C'est un projet de trappe à chat automatisé, quand je passe mon badge sur la RFID n°1 > entrée du chat // RFID n°2 > sortie du chat
    Tout d'abord, voilà mon code :
    Code:
    //CODE BY REDZORTX
    // chatpresent = true : il veut entré
    // chatpresent = false : il veut sortir
    // CARTE NO4 = Entrée
    // CARTE NO3 = Sortie
    
    #include <SoftwareSerial.h>
    
    SoftwareSerial RFIDE(9, 3); // RX et TX
    SoftwareSerial RFIDS(10, 4); // RX et TX
    
    int data1 = 0;
    int ok = -1;
    int yes = 13;
    int no = 12;
    // ---------
    boolean chatpresent ;
    // ---------
    int tag1[5] = {0,101,251,47,177}; //  tag orange
    int tag2[5] = {11,149,94,209,173};  // tag bleu
    int newtag[5] = {0,0,0,0,0};  //comparaison tag
    // 
    void setup()
    {
      RFIDE.begin(9600);    // Initialisation du tag d'entrée
      RFIDS.begin(9600);    // Initialisation du tag de sortie
      Serial.begin(9600);  
      pinMode(yes, OUTPUT); 
      pinMode(no, OUTPUT);
      chatpresent = false; // le chat veut sortir de la maison
    }
     
    
     
    void loop() {
      reade();
      reads();
    
    }
    
    
    
    
    void reade() {
      ok = -1; 
      if (RFIDE.available() > 0) {
        //     lecture des n° des tags
        delay(100);   
        for (int z = 0 ; z < 5 ; z++) { //  lis le reste du tag
          data1 = RFIDE.read();
          newtag[z] = data1;
        }
        RFIDE.flush(); //  arrête les lectures multiple 
         // correspondance des tags
        checkmytags();
      }
      if (ok > 0) {
        Serial.println("Le chat veut entré");
        digitalWrite(yes, HIGH);
        delay(6000);
        digitalWrite(yes, LOW);
        chatpresent = true; //  le chat est dehors, il veut entrée
        ok = -1;
      } else {
        //  Serial.println(Rien ne se passe); 
        digitalWrite(no, HIGH);
        delay(1000);
        digitalWrite(no, LOW);
        ok = -1;  
      }
    }
    
    
    void reads() {
      ok = -1; 
      if (RFIDS.available() > 0) {
        //     lecture des n° des tags
        delay(100);   
        for (int z = 0 ; z < 5 ; z++) { //  lis le reste du tag
          data1 = RFIDS.read();
          newtag[z] = data1;
        }
        RFIDS.flush(); //  arrête les lectures multiple 
         // correspondance des tags
        checkmytags();
      }
      if (ok > 0) 
      {
        Serial.println("Le chat veut sortir");
        digitalWrite(yes, HIGH);
        delay(6000);
        digitalWrite(yes, LOW);
        chatpresent = false; //  le chat est à l'interieur, il veut sortir
        ok = -1;
      } else {
        //  Serial.println(Rien ne se passe); 
        digitalWrite(no, HIGH);
        delay(1000);
        digitalWrite(no, LOW);
        ok = -1;  
      }
    }
    
    
    
    
    
    boolean comparetag(int aa[5], int bb[5])
    {
      boolean ff = false;
      int fg = 0;
      for (int cc = 0 ; cc < 5 ; cc++)
      {
        if (aa[cc] == bb[cc])
        {
          fg++;
        }
      }
      if (fg == 5)
      {
        ff = true;
      }
      return ff;
    }
    
    
    
    
    void checkmytags() // compare les differents tag après la lecture
    {
      ok = 0; // variable de décision
      // 1 =correspondance if , 0 = rien mais lecture
       // -1 =  tentative sans lecture
      if (comparetag(newtag, tag1) == true)
      {
        ok++;
      }
      if (comparetag(newtag, tag2) == true)
      {
        ok++;
      }
    }
    C'est un programme qui utilise 2 cartes RFID (une RFID nommée RFIDE, et une nommée RFIDS), sauf que quand je lance le programme, étant donné qu'il y a deux SoftwareSerial, ça ne détecte que le RFIDS, quand je passe pour la sortie, et pas le RFIDE (RFIDS = Sortie // RFIDE = Entrée), sauf que quand je "délie" les 2 programmes , le programme pour l'entrée fonctionne et la sortie de même.

    Merci à vous de votre aide!

    REDZORR.

    -----
    Dernière modification par Antoane ; 29/04/2016 à 09h06. Motif: suppression balises [center] et remplacemeent des balises [quote] par [code]

  2. #2
    antek

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Si, au moins pour le code, tu pouvais justifier à gauche.

  3. #3
    HAYAC

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Bonjour,

    1° évitez le code (et le texte) en mode centé, c'est illisible ...
    2° pour pouvoir répondre il serait bon de fournir cette bibliothèque afin de connaitre son fonctionnement ...
    3° Pour info "SoftwareSerial" est une bibliothèque avec des déclarations et des fonctions ...

    Cordialement,

    PS: sauf erreur de ma part, sans transformation (adaptation) vous ne pourrez pas l'utiliser de la sorte

  4. #4
    REDZORR

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Petit fail j'ai oublier d'enlever le center dans le code Sorry

  5. A voir en vidéo sur Futura
  6. #5
    Seb.26

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    << RTFM >>

    Réponse courte : tu peux pas.

    Réponse longue : tu ne fais que de la lecture à 9600bps, avec un peu de code maison dans une IT timer, tu devrais pouvoir lire tes données sans souci ...
    ... tu peux aussi aller jeter un œil par là : http://siwawi.bauing.uni-kl.de/avr_projects/#softuart

    PS: si tu n'as qu'un chat, pourquoi donc vouloir pouvoir lire les 2 RFID en même temps ?! ... tu n'auras qu'un des deux RFID qui parle à un instant t ...
    ( << astuche inside >> ... avant de me dire que ça marche pas ... )
    Dernière modification par Seb.26 ; 29/04/2016 à 10h15.
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  7. #6
    Yoruk

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Il te faut deux ports en tout ? Pourquoi ne pas utiliser le matériel et un seul autre software ? (plutôt que d'utiliser deux software...?)
    La robotique, c'est fantastique !

  8. #7
    REDZORR

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Il faut une RFID côté entré de la trappe et une côté sortie, donc j'ai besoin de 2 RFID ça c'est sur, et sur la Arduino, oui je suis obliger d'utilisers 2 ports , un pour chaque RFID^^

  9. #8
    lpt1com2

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Citation Envoyé par REDZORR Voir le message
    Il faut une RFID côté entré de la trappe et une côté sortie, donc j'ai besoin de 2 RFID ça c'est sur, et sur la Arduino, oui je suis obliger d'utilisers 2 ports , un pour chaque RFID^^
    Ben oui, mais comme dit Yoruk, pourquoi veux-tu faire 2 ports softs, alors qu’il en suffit d’un, l’autre pouvant être le port hardware de l’Atmega. Ou bien tu as besoin de 3 ports série ?
    Il vaut mieux être le deuxième mari d'une veuve, que le premier

  10. #9
    REDZORR

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Je suis vraiment vraiment novice :/ Je voudrais juste simplement faire fonctionner les 2 en même temps sur un seul programme

  11. #10
    Seb.26

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Citation Envoyé par REDZORR Voir le message
    Je suis vraiment vraiment novice :/ Je voudrais juste simplement faire fonctionner les 2 en même temps sur un seul programme
    Tu peux pas !

    Mais pourquoi donc vouloir lire les 2 RFID simultanément ... alors que ton chat ne peut pas être sur les 2 RFID en même temps ... ?

    Tu peux aussi utiliser une seconde board arduino ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  12. #11
    REDZORR

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Je voulais dire dans le même programme ^^ Pas obliger qu'elle fonctionne simultanément, et une seule arduino doit être utilisée pour le projet
    Dernière modification par REDZORR ; 30/04/2016 à 15h20.

  13. #12
    carcan

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Hello !

    le plus simple serait d'utiliser un arduino Mega qui possède 4 UART hardware.

    A+
    Laurent

  14. #13
    Seb.26

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Citation Envoyé par REDZORR Voir le message
    Je voulais dire dans le même programme ^^ Pas obliger qu'elle fonctionne simultanément, et une seule arduino doit être utilisée pour le projet
    Rien n'interdit d'utiliser 2 SoftwareSerial dans un même programme ... d’ailleurs tu le fais déjà ... c'est quoi ta question alors ???

    RTFM !!!

    https://www.arduino.cc/en/Reference/softwareSerial
    Dernière modification par Seb.26 ; 01/05/2016 à 11h14.
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  15. #14
    REDZORR

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    ça ne lit que l'une des deux cartes, or , quand j'utilise 2 programmes différents (1 pour l'entrée sur la carte 1 , et un autre pour la sortie, sur la carte 2) ça fonctionne.. mais réunis, ça en lit qu'une seul..

  16. #15
    Seb.26

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Citation Envoyé par REDZORR Voir le message
    ça ne lit que l'une des deux cartes, or , quand j'utilise 2 programmes différents (1 pour l'entrée sur la carte 1 , et un autre pour la sortie, sur la carte 2) ça fonctionne.. mais réunis, ça en lit qu'une seul..
    Tu veux donc bien utiliser 2 SoftwareSerial SIMULTANÉMENT ... et on te dit que c'est pas possible depuis 14 posts ...
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  17. #16
    REDZORR

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    et commence je pourrais réussir à faire fonctionner les 2 détecteurs RFID? :s

  18. #17
    Seb.26

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Citation Envoyé par REDZORR Voir le message
    et commence je pourrais réussir à faire fonctionner les 2 détecteurs RFID? :s
    Tu ne peux pas avoir 2 SoftwareSerial qui lisent en même temps, donc ...
    > soit tu trouves le moyen de détecter quand des données arrivent sur un des 2 et donc tu lis le bon au bon moment
    > soit tu trouves le moyen de lire les 2 via le même SoftwareSerial

    ... ou alors tu fais ton propre SoftwareSerial qui lui va pouvoir lire 2 port en même temps ...

    à toi de réfléchir un peu maintenant
    Dernière modification par Seb.26 ; 02/05/2016 à 11h31.
    << L'histoire nous apprend que l'on apprend rien de l'histoire. >>

  19. #18
    REDZORR

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    oh.. je doit rendre mon projet la semaine prochaine pour le bac.. Je pensait que c'était fini qu'il y avait que quelques réglages de routines..

  20. #19
    HAYAC

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Bonjour à tous,

    L'utilisation du terme simultanément (pour un arduino) me fait sourire.
    Cette notion est relative, quelle est le temps réel de transmission de donnée de tes modules RFID ?
    Dans l'utilisation que tu souhaite en faire 0.01 seconde de décalage entre les lectures sont trop grande ?
    Ton chat viens de Kripton ... pour être aussi rapide ?

    Cordialement,

  21. #20
    REDZORR

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    haha! je ne sait pas du tout
    mais non, je "m'en fou" du temps, je veut juste pouvoir lire les 2 cartes, même si ce n'est pas en même temps.

    Exemple :
    Je passe le badge sur la carte no1, sur la console série ça me dis "le chat veut entré" , ensuite , je passe sur la no2, la console me dit "le chat veut sortir" ..

  22. #21
    HAYAC

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Dans ce cas Seb.26 à raison Post #13.
    Ton système est possible et devrait fonctionner.
    Je vais essayer de trouver du temps dans la journée pour tester ton code et voir ou ça cloche ...
    Dans mes premier constats tu n'utilise pas la routine (fonction) portTwo.listen(); je n'ai pas encore regardé toute la bibliothèque mais ...
    De plus des tempo ne sont pas conseillé pour ce type de programme ...
    A suivre ...

  23. #22
    HAYAC

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Autre info,
    Préfère une lecture complète puis une analyse du résultat qu'un traitement pendant réception.

  24. #23
    REDZORR

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Merci, franchement tu me sauve la vie, à moi et mon groupe de projet.. Car mon prof n'est pas trop derrière nous, il as plus un groupe "chouchou" .. Du coup je viens chercher de l'aide ici..

    Merci à toi de ton aide qui m'est précieuse

  25. #24
    REDZORR

    Re : [ARDUINO] Mettre 2 "SoftwareSerial" dans un seul programme?

    Tu n'as pas réussi?

Discussions similaires

  1. VB mettre le micro en mode " ecoute" "veille" et "stop" sous visual basic
    Par mattlander dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 14/12/2015, 13h45
  2. AsusA73B infecté, ex:"SRPTM sa cessé de fonctionner" et autres méchantes "bêtes" dans la machine :/
    Par Nemezyx dans le forum Sécurité et malwares : désinfectez votre machine
    Réponses: 18
    Dernier message: 14/11/2014, 17h34
  3. Il est erroné d'utiliser les symboles "1" et "0" dans une table de vérité.
    Par biltis dans le forum Epistémologie et Logique (archives)
    Réponses: 27
    Dernier message: 22/08/2013, 08h21
  4. Mon 1er programme Arduino ''error: at this point in file"
    Par hary dans le forum Électronique
    Réponses: 6
    Dernier message: 08/03/2012, 12h53
  5. Mettre un prog "window" DANS Wine (Ubuntu)
    Par f6bes dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 25/05/2009, 19h12
Découvrez nos comparatifs produits sur l'informatique et les technologies.