Demande d'aide pour un projet

Portrait de Samas

Bonjour je débute dans l'arduino et j'ai un problème avec mon code et je n'arrive pas à le résoudre. Pourriez vous m'aider à le resoudre et a me dire ce qui ne va pas. voici mon code : 

[code]
#include <SPI.h>
#include <RFID.h>

int UID [5]={"E2 B9 B5 1B"};

RFID rfid(10,9);

#include <Stepper.h>

const int stepsPerRevolution = 1200;

Stepper myStepper(stepsPerRevolution, 8, 2, 3, 4);

void setup()
{
  Serial.begin(9600);
  SPI.begin();
  rfid.init();

 
  myStepper.setSpeed(20);
 
  Serial.begin(9600);
 
}

void loop()
{
    if (rfid.isCard()) {
     
          Serial.println("IS CARD");
         
          if (rfid.readCardSerial()) {
           
                        Serial.println(" ");
                        Serial.println("El numero de serie de la tarjeta es  : ");
Serial.print(rfid.serNum[0],DEC);
                        Serial.print(" , ");

                       
           
          }
         
else  {
 
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(500);

 
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(500);
}
    }
   

   rfid.halt();
     
     }
       
[/code]

Merci à toutes les personnes qui pourraient m'aider. 

Portrait de Samas

.

Portrait de Samas

J'ai oublié de dire que le code ser a fair tourné un moteur pas a pas avec un lecteur rfid rc522

Portrait de Anonyme

Peux tu être plus explicite sr le fonctionnement que tu veux obtenir, et quel est l'utilité de cette ligne :

int UID [5]={"E2 B9 B5 1B"};

??

Détail au maximum ce qui devrait ce passer dans tel ou tel cas !

Portrait de Samas

Avec se programme je voudrais pouvoir fair bouger un motuer pas a pas et le fair revenir a sa position initiale en passant une seul foi une car rfid 

int UID [5]={"E2 B9 B5 1B"}; j'ai mi sa pour identifier ma carte

Portrait de Anonyme

le bon code est ci dessous  mais attention à plusieurs choses :

  1. Change le nombre de Bauds de 9600 à 115200 dans la console série !
  2. Tu ne peux pas déclarer des valeurs en Hexa dans UID[5] ceux sont des valeurs décimales qu'il faut !
  3. Ce n'est pas à toi de décider de ces valeurs elles sont écrites sur la carte RFID !
  4. Donc la première fois lance le code et recopie les valeurs lues dans ce tableau UID[5] pour moi ces valeurs sont :{155, 187, 195, 60, 223}; à toi de mettre les tiennes !!!

Si tu ne comprends pas quelque chose fait le moi savoir ici !

#include <SPI.h>
#include <RFID.h>
int UID [5] = {155, 187, 195, 60, 223};
// ICI il faut écrire les valeurs en décimales !!!!!!
int UILU[5] ;
// ici on va stocker les valeurs lues de la carte proche du lecteur RFID

RFID rfid(10, 9);
#include <Stepper.h>
const int stepsPerRevolution = 1200;
Stepper myStepper(stepsPerRevolution, 8, 2, 3, 4);

void setup()
{
  Serial.begin(115200);
// Il y a souvent des problèmes avec 9600 BAUDS donc on mets 115200
  Serial.println();
  SPI.begin();
  rfid.init();
  myStepper.setSpeed(20);
  Serial.begin(115200);
}

void loop()
{
  if (rfid.isCard()) {
    Serial.println("Présence CARTE");
    if (rfid.readCardSerial()) {
      Serial.println(" ");
      Serial.print("Le numero de serie de la carte est  : ");
      for (int x = 0; x < 5; x++) {
// on lit une par une les 5 valeurs du numéro de série
        UILU[x] = rfid.serNum[x];
        Serial.print(UILU[x], DEC);
        Serial.print(" ");
      }
      Serial.println();
    }
    bool BonCode = true;
    for (int x = 0; x < 5; x++) {
      if ( UILU[x] != UID[x]) {
// on compare une à une les valeurs de la carte lue avec la carte autorisée
        BonCode = false;
// si une valeur est différente on déclare que le code est faux !
      }
    }
    Serial.println();
    if (BonCode) {
// Si le code est bon ...
      Serial.println("Cette carte est autorisee : marche moteur");

      Serial.println("Sens horaire");
      myStepper.step(stepsPerRevolution);
      delay(500);
      Serial.println("Sens Anti-horaire");
      myStepper.step(-stepsPerRevolution);
      delay(500);
      Serial.println("Arrêt Moteur");
    }
    else
// si le code est faux :
      Serial.println("Cette carte n'est pas autorisée");
  }

  rfid.halt();
}

Portrait de Samas

Merci beaucoup pour l'aide 

Portrait de Anonyme

De rien c'est avec plaisir.

J'ai testé mon code il fonctionne (par contre je n'ai pas testé la partie stepper !!)

Portrait de Samas

j'ai encore un question l'UID de la carte se trouve où  dans tout ces chiffre ?

19:02:10.474 -> Warning: this example overwrites the UID of your UID changeable card, use with care!
19:02:12.393 -> Card UID: E2 B9 B5 1B
19:02:12.439 -> Card did not respond to 0x40 after HALT command. Are you sure it is a UID changeable one?
19:02:12.517 -> Error name: Timeout in communication.
19:02:12.564 -> Activating the UID backdoor failed.
19:02:12.611 -> New UID and contents:
19:02:12.611 -> Card UID: E2 B9 B5 1B
19:02:12.658 -> Card SAK: 08
19:02:12.658 -> PICC type: MIFARE 1KB
19:02:12.658 -> Sector Block   0  1  2  3   4  5  6  7   8  9 10 11  12 13 14 15  AccessBits
19:02:12.751 ->   15     63   00 00 00 00  00 00 FF 07  80 69 FF FF  FF FF FF FF  [ 0 0 1 ]
19:02:12.845 ->          62   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:12.939 ->          61   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:12.985 ->          60   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:13.079 ->   14     59   00 00 00 00  00 00 FF 07  80 69 FF FF  FF FF FF FF  [ 0 0 1 ]
19:02:13.173 ->          58   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:13.266 ->          57   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:13.313 ->          56   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:13.407 ->   13     55   00 00 00 00  00 00 FF 07  80 69 FF FF  FF FF FF FF  [ 0 0 1 ]
19:02:13.500 ->          54   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:13.594 ->          53   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:13.641 ->          52   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:13.719 ->   12     51   00 00 00 00  00 00 FF 07  80 69 FF FF  FF FF FF FF  [ 0 0 1 ]
19:02:13.812 ->          50   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:13.906 ->          49   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:13.953 ->          48   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:14.046 ->   11     47   00 00 00 00  00 00 FF 07  80 69 FF FF  FF FF FF FF  [ 0 0 1 ]
19:02:14.140 ->          46   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:14.233 ->          45   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:14.280 ->          44   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:14.374 ->   10     43   00 00 00 00  00 00 FF 07  80 69 FF FF  FF FF FF FF  [ 0 0 1 ]
19:02:14.467 ->          42   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:14.561 ->          41   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:14.623 ->          40   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:14.701 ->    9     39   00 00 00 00  00 00 FF 07  80 69 FF FF  FF FF FF FF  [ 0 0 1 ]
19:02:14.795 ->          38   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:14.889 ->          37   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:14.935 ->          36   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:15.029 ->    8     35   00 00 00 00  00 00 FF 07  80 69 FF FF  FF FF FF FF  [ 0 0 1 ]
19:02:15.123 ->          34   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:15.169 ->          33   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:15.263 ->          32   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:15.357 ->    7     31   00 00 00 00  00 00 FF 07  80 69 FF FF  FF FF FF FF  [ 0 0 1 ]
19:02:15.450 ->          30   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:15.497 ->          29   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:15.591 ->          28   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:15.684 ->    6     27   00 00 00 00  00 00 FF 07  80 69 FF FF  FF FF FF FF  [ 0 0 1 ]
19:02:15.778 ->          26   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:15.825 ->          25   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:15.918 ->          24   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:16.012 ->    5     23   00 00 00 00  00 00 FF 07  80 69 FF FF  FF FF FF FF  [ 0 0 1 ]
19:02:16.105 ->          22   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:16.152 ->          21   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:16.246 ->          20   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:16.339 ->    4     19   00 00 00 00  00 00 FF 07  80 69 FF FF  FF FF FF FF  [ 0 0 1 ]
19:02:16.433 ->          18   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:16.464 ->          17   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:16.558 ->          16   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:16.651 ->    3     15   00 00 00 00  00 00 FF 07  80 69 FF FF  FF FF FF FF  [ 0 0 1 ]
19:02:16.745 ->          14   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:16.839 ->          13   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:16.885 ->          12   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:16.979 ->    2     11   00 00 00 00  00 00 FF 07  80 69 FF FF  FF FF FF FF  [ 0 0 1 ]
19:02:17.073 ->          10   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:17.119 ->           9   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:17.213 ->           8   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:17.307 ->    1      7   00 00 00 00  00 00 FF 07  80 69 FF FF  FF FF FF FF  [ 0 0 1 ]
19:02:17.400 ->           6   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:17.447 ->           5   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:17.541 ->           4   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:17.634 ->    0      3   00 00 00 00  00 00 FF 07  80 69 FF FF  FF FF FF FF  [ 0 0 1 ]
19:02:17.728 ->           2   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:17.775 ->           1   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  [ 0 0 0 ]
19:02:17.868 ->           0   E2 B9 B5 1B  F5 08 04 00  62 63 64 65  66 67 68 69  [ 0 0 0 ]
19:02:17.962 ->

Portrait de Anonyme

Télécharge mon code et présente ta carte, le numéro de série de celle-ci sera affiché !

Chez moi cela donne :

19:16:43.125 ->
19:16:43.500 -> Présence CARTE
19:16:43.500 ->  
19:16:43.500 -> Le numero de serie de la carte est  : 155 187 195 60 223
19:16:43.500 ->
19:16:43.500 -> Cette carte est autorisee : marche moteur
19:16:43.500 -> Sens horaire
19:16:46.968 -> Sens Anti-horaire
19:16:50.483 -> Arrêt Moteur

D'après ton post il est là :

Card UID: E2 B9 B5 1B  mais en hexa !!!

Portrait de Samas

où est-ce que je peux le télécharger ton code ?

où alors comment le transformer en decimal ?

Portrait de Anonyme

Juste au dessus dans la partie grisée !

Ou encore ci dessous mais lit bien toutes les instructions !!!! que j'ai mises dans mon post !!!!!!

#include <SPI.h>
#include <RFID.h>
int UID [5] = {155, 187, 195, 60, 223};
// ICI il faut écrire les valeurs en décimales !!!!!!
int UILU[5] ;
// ici on va stocker les valeurs lues de la carte proche du lecteur RFID

RFID rfid(10, 9);
#include <Stepper.h>
const int stepsPerRevolution = 1200;
Stepper myStepper(stepsPerRevolution, 8, 2, 3, 4);

void setup()
{
  Serial.begin(115200);
// Il y a souvent des problèmes avec 9600 BAUDS donc on mets 115200
  Serial.println();
  SPI.begin();
  rfid.init();
  myStepper.setSpeed(20);
  Serial.begin(115200);
}

void loop()
{
  if (rfid.isCard()) {
    Serial.println("Présence CARTE");
    if (rfid.readCardSerial()) {
      Serial.println(" ");
      Serial.print("Le numero de serie de la carte est  : ");
      for (int x = 0; x < 5; x++) {
// on lit une par une les 5 valeurs du numéro de série
        UILU[x] = rfid.serNum[x];
        Serial.print(UILU[x], DEC);
        Serial.print(" ");
      }
      Serial.println();
    }
    bool BonCode = true;
    for (int x = 0; x < 5; x++) {
      if ( UILU[x] != UID[x]) {
// on compare une à une les valeurs de la carte lue avec la carte autorisée
        BonCode = false;
// si une valeur est différente on déclare que le code est faux !
      }
    }
    Serial.println();
    if (BonCode) {
// Si le code est bon ...
      Serial.println("Cette carte est autorisee : marche moteur");

      Serial.println("Sens horaire");
      myStepper.step(stepsPerRevolution);
      delay(500);
      Serial.println("Sens Anti-horaire");
      myStepper.step(-stepsPerRevolution);
      delay(500);
      Serial.println("Arrêt Moteur");
    }
    else
// si le code est faux :
      Serial.println("Cette carte n'est pas autorisée");
  }

  rfid.halt();
}

Portrait de Walter

Bonjour, a priori le n° de carte est E2 B9 B5 1B
puisque ton programme t'affiche: 19:02:12.611 -> Card UID: E2 B9 B5 1B

Ton programme semblant être fait à priori pour lire et écrire dans la carte non ?

d'ou tu sors la ligne: int UID [5]={"E2 B9 B5 1B"};
cela devrait plutôt être un truc du genre int UID[5]={0xE2, 0xB9, 0xB5,  0x1B};

voir même, pour un entier non signé sur 8 bits(0 à 255): byte UID[5]={0xE2, 0xB9, 0xB5,  0x1B};

Pour pouvoir t'aider correctement sur ce qui ne va pas dans un programme, il vaut mieux fournir la sortie de la console série et ce que tu pense que devrait faire le programme.

Portrait de Anonyme

Walter pourquoi tu répètes ce qui a déjà été dit ?

Par contre le numéro de série complet chez Samas est : E2 B9 B5 1B F5

Portrait de Jetfuzz

Par contre le numéro de série complet chez Samas est : E2 B9 B5 1B F5

et tu le pèche ou le F5 a la fin ?

un UID sur sur 40 bit ?????

allez un peu de lecture qui mais bien servi pour faire mon loggeur sous windows avec un RFID
https://lastminuteengineers.com/how-rfid-works-rc522-arduino-tutorial/

et

https://www.memorandum.ovh/tuto-arduino-utiliser-un-module-rfid/

et une photo pour prouver mes dires, puisque qu'il faux toujours se justifier

rfid.jpg

Cordialement.

Portrait de Anonyme

Jetfuzz tu es trop fort !

:o) m'ai c'est bien un F5 à la fin

Cordialement !

Portrait de Jetfuzz

Bon, on arête les connerie un UID est codé sur 32 bits. point barre.
renseigne toi avant de raconter n'importe quoi.
ici c'est bien

https://fr.wikipedia.org/wiki/Mifare

Portrait de Anonyme

Tu penses ce que tu veux c'est toi le chef !

Juste un petit truc sur certaines carte Mifare UID est sur 7 bytes !! Mais je n'ai rien dit !!

https://www.cardalis.fr/frequence-1356-mhz-mifare/1823-carte-mifare-clas...

Portrait de Jetfuzz

Juste un petit truc sur certaines carte Mifare UID est sur 7 bytes !! Mais je n'ai rien dit !!

ok pour ca !!

mais toi tu es en 5 bytes, c'est la carte mywolf !!!!

Tu penses ce que tu veux

la je ne pense pas , c'est un fait !!!!

une mifare classic, ce dont on parle dans ce topic, est codé sur 32 bits.

19:02:12.611 -> Card UID: E2 B9 B5 1B
19:02:12.658 -> Card SAK: 08
19:02:12.658 -> PICC type: MIFARE 1KB
1

Portrait de Anonyme

Lol je n'avais pas fait attention à ton montage, mort de rire tu n'as pas trouvé plus compliqué ?

rfid.jpg

Mon montage comporte un Arduino Uno et un Module RFID le code s'affiche sur la console. Je commence à comprendre pourquoi les chaudières sont si chères !

Portrait de Jetfuzz

ol je n'avais pas fait attention à ton montage, mort de rire tu n'as pas trouvé plus compliqué ?

Non je voulais rester a ton niveau.

Ce qui est marrant par contre, c'est dés qu'on t'explique que tu t'es planté, en réponse tu dénigres....

 

Portrait de Anonyme

Non mais disons que tu n'as qu'à tester mon code ! Sur ce... terminé pour moi

N.B : je t'invite à regarder la vidéo d'Alex, mais certainement que tu lui es supérieur !

Portrait de Anonyme

Silence Radio ? Cela ne te ressemble pas ... Toujours à l'affûts bien que non connecté !

Portrait de Walter

Parce qu'il repose une question la dessus avec son deuxième programme et qu'il n'y avait aucune explication à sa dernière question.

Portrait de Anonyme

Quel deuxième programme ?

Mais bon je vois que tu as besoin de reconnaissance alors ne voulant pas te faire d'ombre  je te laisse terminer

Portrait de Walter

Son message du 03/01/2020 n'est pas la sortie du premier programme qu'il a présenté dans le début du post!!!

Dans ce  post il repose encore une question sur son identifiant et essaye un programme d'exemple de RFID, visiblement ton programme ne répond pas entièrement à ses questions.

Mais bon je constate que tu projette toujours tes propres névroses sur les autres.
Dommage que cela soit systématiquement au détriment des participants du forum.

La bise Terwal,
Ok je vois, mais qu'en est il des membres qui font tout pour en exaspérer d'autres et qui sont souvent les mêmes , c'est leur droit à l'expression qui prime  ?? - wolfram69

Portrait de Anonyme

Je te laisse avec tes convictions www.walter.com

Au fait relis donc tous mes messages sans sauter de lignes et tu verras qu'il y a toutes les réponses à toutes les questions !! Notamment celui-ci : dim, 03/01/2020 - 19:17 tout en bas !
Portrait de Walter

Je demande que ça que tu me laisse à mes convictions et que tu garde les tiennes pour toi, mais comme tu ne peux t'empêcher de dénigrer...

Relis bien ce que j'ai écrit, un indice le sujet de mon propos n'est pas vous, mais de samas!

La bise à chacun de vous.