Bonjour à tous,
Je suis actuellement en Terminale SI et j'ai un projet à réaliser pour le baccalauréat. Ainsi, j'aimerais avoir quelques conseils pour mener au mieux les dernières modifications que je peux encore faire. Je vous présente en quelques lignes mon projet : nous devons réaliser un distributeur d'affaires scolaires et je traite de la partie communication homme/machine. Pour ce faire, j’ai choisi de prendre un afficheur lcd (pour les éventuelles informations), un module RFID (pour payer le produit choisi-> http://www.gotronic.fr/art-module-rf...c522-25651.htm ) et des boutons poussoirs (pour le choix du produit).
Au départ, je voulais créditer la carte RFID mais finalement, j’ai réalisé un programme qui déduirait à chaque fois à une variable le montant du produit choisi. Le problème c’est que ce n’est pas spécifique à une carte RFID. Je m’explique : je passe la carte , et on a une variable ARGENT=10, puis je choisi le produit crayon, ainsi mon crédit va diminuer de 1€ (admettons). Le crédit de la carte 1 sera donc de 9€. En revanche, si je passe la carte 2, et que je choisi le crayon, le crédit sera de 8€ car le programme va garder la valeur précédente... Il faudrait donc affecter une variable spécifique à une carte mais comment faire ? Ou alors, écrire sur la carte…
Ensuite, si je passe une carte inconnue au distributeur, cela va s’afficher. Mais, nous pouvons quand même commander. Il faudrait donc que je change mon programme pour que ça ne le fasse pas…
Finalement, j’avais commandé ceci : http://www.gotronic.fr/art-clavier-v...2080-21533.htm . Cependant, mon professeur a dit que, finalement, ce serait trop compliqué à insérer dans mon programme… Quelques idées ???
Merci d’avance pour votre aide ! Bien évidemment, je ne vous demande pas de faire mon projet mais simplement de m’orienter dans la programmation arduino (RFID) car je suis plutôt débutant dans ce domaine.
Voici mon programme :
Code:#include <SPI.h> #include <RFID.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> const int buttonPin1 = 2; int buttonState1 = 0; LiquidCrystal_I2C lcd(0x27,16,2); //Déclaration de l'afficheur LCD RFID RFID(10,9); int UID[5]={}; int MASTERKEY[5]={22,79,141,171,127}; // UID de la carte 1 acceptée sous forme de tableau (Array). int CLE[5]={106,125,65,219,141}; // UID de la carte 2 acceptée sous forme de tableau (Array). int CODE[5]={192,171,198,128,45}; // UID du badge accepté sous forme de tableau (Array). int ARGENT=10; bool statut = 3; void setup() //Fonction d'initialisation de la carte { Serial.begin(9600); SPI.begin(); //Initialisation du lecteur et de la carte RFID.init(); } void loop() //Fonction principale, elle se répète (s'éxecute) à l'infini { buttonState1 = digitalRead(buttonPin1); if (buttonState1 == LOW && ARGENT>1) { Serial.print(buttonState1); lcd.init(); lcd.backlight(); lcd.setCursor ( 4 , 0 ); lcd.print("PRODUIT:"); lcd.setCursor ( 4 , 1 ); lcd.print("CRAYON"); ARGENT-=1; delay(1000); lcd.init(); lcd.backlight(); lcd.setCursor ( 2 , 0 ); lcd.print("IL VOUS RESTE"); lcd.setCursor ( 6 , 1 ); lcd.print(ARGENT); } if (buttonState1 == LOW && ARGENT==0) { Serial.print(buttonState1); lcd.init(); lcd.backlight(); lcd.setCursor ( 3 , 0 ); lcd.print("CREDIT"); lcd.setCursor ( 3 , 0 ); lcd.print("INSUFFISANT"); Serial.print(ARGENT); } if (RFID.isCard()) { /* Lecture du tag */ if (RFID.readCardSerial()) { /*Serial.print("L'UID est: ");*/ for(int i=0;i<=4;i++) { UID[i]=RFID.serNum[i]; Serial.print(UID[i],DEC); //Ecriture en décimale Serial.print("."); } /*Serial.println("");*/ } /* fin de Lecture du tag */ if (UID[0] == MASTERKEY[0] // Si l'UID 0 est égale à 22 && UID[1] == MASTERKEY[1] // Et si l'UID 1 est égale à 79 && UID[2] == MASTERKEY[2] // Et si l'UID 2 est égale à 141 && UID[3] == MASTERKEY[3] // Et si l'UID 3 est égale à 171 && UID[4] == MASTERKEY[4]) // Et si l'UID 4 est égale à 127 { ouverture(); } else if (UID[0] == CLE[0] // Si l'UID 0 est égale à 106 && UID[1] == CLE[1] // Et si l'UID 1 est égale à 125 && UID[2] == CLE[2] // Et si l'UID 2 est égale à 65 && UID[3] == CLE[3] // Et si l'UID 3 est égale à 219 && UID[4] == CLE[4]) // Et si l'UID 4 est égale à 141 { accepte(); } else if (UID[0] == CODE[0] // Si l'UID 0 est égale à 192 && UID[1] == CODE[1] // Et si l'UID 1 est égale à 171 && UID[2] == CODE[2] // Et si l'UID 2 est égale à 198 && UID[3] == CODE[3] // Et si l'UID 3 est égale à 128 && UID[4] == CODE[4]) // Et si l'UID 4 est égale à 45 { accord(); } else { refuse(); } RFID.halt(); } delay(50); } void ouverture() { Serial.println("Coucou"); lcd.init(); //Instructions pour l'afficheur lcd.backlight(); lcd.setCursor ( 4 , 0 ); lcd.print("BONJOUR"); lcd.setCursor ( 5 , 1 ); lcd.print("UTILISATEUR1"); delay(1000); //Attente lcd.init(); lcd.backlight(); lcd.setCursor ( 3 , 0 ); lcd.print("VOUS AVEZ"); lcd.setCursor ( 6 , 1 ); lcd.print("10e"); delay(1000); lcd.init(); lcd.backlight(); lcd.setCursor ( 3 , 0 ); lcd.print("CHOISISSEZ"); lcd.setCursor ( 3, 1 ); lcd.print("UN PRODUIT"); { commande(); } } void commande() { } void accepte() { Serial.println("Salut"); lcd.init(); lcd.backlight(); lcd.setCursor ( 4 , 0 ); lcd.print("BONJOUR"); lcd.setCursor ( 4 , 1 ); lcd.print("UTILISATEUR2"); delay(1000); lcd.init(); lcd.backlight(); lcd.setCursor ( 3 , 0 ); lcd.print("VOUS AVEZ"); lcd.setCursor ( 7 , 1 ); lcd.print("10e"); delay(1000); lcd.init(); lcd.backlight(); lcd.setCursor ( 3, 0 ); lcd.print("CHOISISSEZ"); lcd.setCursor ( 3 , 1 ); lcd.print("UN PRODUIT"); } void accord() { Serial.println("Hi"); lcd.init(); lcd.backlight(); lcd.setCursor ( 4 , 0 ); lcd.print("BONJOUR"); lcd.setCursor ( 5 , 1 ); lcd.print("UTILISATEUR3"); delay(1000); lcd.init(); lcd.backlight(); lcd.setCursor ( 3 , 0 ); lcd.print("VOUS AVEZ"); lcd.setCursor ( 7 , 1 ); lcd.print("10e"); delay(1000); lcd.init(); lcd.backlight(); lcd.setCursor ( 1 , 0 ); lcd.print("CHOISISSEZ"); lcd.setCursor ( 2 , 1 ); lcd.print("UN PRODUIT"); } void refuse() { Serial.println("Au revoir"); lcd.init(); lcd.backlight(); lcd.setCursor ( 5 , 0 ); lcd.print("CARTE"); lcd.setCursor ( 4 , 1 ); lcd.print("INCONNUE"); }
-----