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 :
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.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++; } }
Merci à vous de votre aide!
REDZORR.
-----