Bonjour.
Dans le programme qui suit je voudrais comparer le numéro entrant aux numéros de la liste.
je pense que le problème vient des "string et des char "mais je ne trouve pas pourquoi.
Merci.
char *fichier_tel[]={"0265383785", "0693008050", "0160201524"}; char recu[15]; String num_entrant; int i; int led=3; void setup(){ Serial.begin(9600); pinMode(led,OUTPUT); } void loop() { i = 0 ; while ( Serial.available()>0 ) { recu[i] = Serial.read(); num_entrant += recu[i]; i++; delay(100); } if (i>0) { Serial.println(num_entrant); for(int j=0;j<3;j++){ if(num_entrant==fichier_tel[j]){ digitalWrite(led,HIGH); } else{ digitalWrite(led,LOW); } } } }
Hors ligne
Bonjour,
Attention de poster dans la bonne catégorie, tu demandes un coup de main avec Arduino et non Processing.
Pour ton problème, tu essaies de comparer une c_string avec un objet String.
Pourquoi ne pas tout passer avec des objets String ?
De plus pour la comparaison des chaînes de caractères, il est nécessaire d'utiliser les méthodes propres aux objets, ici la méthode equals(). Avec l'opérateur == tu compares l'adresse des pointeurs de ces objets.
Attention tu vas avoir un problème pour vérifier, la led peut s'allumer et s'éteindre aussitôt.
String fichier_tel[] = {"0265383785", "0693008050", "0160201524"}; char recu[15]; String num_entrant; int i; int led = 3; void setup() { Serial.begin(9600); pinMode(led, OUTPUT); } void loop() { i = 0 ; while (Serial.available() > 0) { recu[i] = Serial.read(); num_entrant += recu[i]; i++; delay(100); } if (i > 0) { Serial.println(num_entrant); for (int j = 0; j < 3; j++) { if (num_entrant.equals(fichier_tel[j])) { digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); } } } }
Hors ligne
Merci pour ton aide,et pour les explications.
Hors ligne
Pages: 1