Bonjour, voici mon programme simple et qui fonctionne !
pourtant le compilateur m'affiche un warning ...
j'ai lu sur le forum que l'utilisation de String menait droit au probleme de mémoire,
auriez vous une solution à m'apporter pour m'affranchir de ce problème
voici mon code
#include <SPI.h>
#include <RFID.h>
RFID RFID(10,9);
int UID[5];
String myKey;
char *myStrings[] = {"158.89.145.185.2.", "0.238.120.163.5.", "155.153.9.43.3." };
char *proprio[] = {"Papa", "Maman", "Maxence" };
bool inconnu;
void setup()
{
Serial.begin(9600);
SPI.begin();
RFID.init();
}
void loop()
{
if (RFID.isCard()) {
if (RFID.readCardSerial()) {
for(int i=0;i<=4;i++)
{
UID[i]=RFID.serNum[i]; // je lis une valeur numérique 0 à 255
myKey=myKey + String (UID[i],DEC) + "."; // je la copie dans la variable myKey au format texte
}
Serial.println("");
}
RFID.halt();
}
delay(100); // en sortie de boucle j'ai un format xx.xx.xx.xx.xx.
if (myKey!="") {
Serial.println(myKey);
inconnu = true;
for (int i = 0; i < 6; i++) {
if (myKey == myStrings[i]) { // je compare via un tableau si la valeur obtenue correspond aux valeurs enregistrées
Serial.print("carte connue :");
Serial.println(proprio[i]);
inconnu = false;
}
}
if (inconnu == true ){
Serial.println("Carte non autorisée.");
}
}
myKey="";
delay(1000);
}
voici maintenant ce que me dit le compilateur ! lol il se dechaine sur mon programme
C:\Users\D\Desktop\rfidoktest\rfidoktest.ino:8:85: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
char *myStrings[] = {"158.89.145.185.239.", "0.238.120.163.53.", "155.153.9.43.32." };
^
C:\Users\D\Desktop\rfidoktest\rfidoktest.ino:8:85: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
C:\Users\D\Desktop\rfidoktest\rfidoktest.ino:8:85: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
C:\Users\D\Desktop\rfidoktest\rfidoktest.ino:9:47: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
char *proprio[] = {"Papa", "Maman", "Maxence" };
^
C:\Users\D\Desktop\rfidoktest\rfidoktest.ino:9:47: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
C:\Users\D\Desktop\rfidoktest\rfidoktest.ino:9:47: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
C:\Users\D\Desktop\rfidoktest\rfidoktest.ino: In function 'loop':
C:\Users\D\Desktop\rfidoktest\rfidoktest.ino:42:28: warning: iteration 3 invokes undefined behavior [-Waggressive-loop-optimizations]
if (myKey == myStrings*) {*
- ^*
C:\Users\D\Desktop\rfidoktest\rfidoktest.ino:41:19: note: containing loop
for (int i = 0; i < 6; i++) { - ^*
C:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino\main.cpp: In function 'main':
C:\Users\D\Desktop\rfidoktest\rfidoktest.ino:42:28: warning: iteration 3 invokes undefined behavior [-Waggressive-loop-optimizations]
_ if (myKey == myStrings*) {_
_ ^_
C:\Users\D\Desktop\rfidoktest\rfidoktest.ino:41:19: note: containing loop
for (int i = 0; i < 6; i++) {
_ ^_
Le croquis utilise 5112 octets (15%) de l'espace de stockage de programmes. Le maximum est de 32256 octets.
Les variables globales utilisent 342 octets (16%) de mémoire dynamique, ce qui laisse 1706 octets pour les variables locales. Le maximum est de 2048 octets.
_:o*_
Mais le plus beau dans l'histoire....c'est que ça fonctionne !!! 8) ;D