Comparaison entre un pointer et un chiffre [RESOLU]

Bonjour à tous et à toutes,

J’aurai besoin d’aide avec un de mes codes (Non, sans blague).
Je suis plutôt jeune (13 ans), donc je n’ai pas beaucoup d’expérience en électronique, mais ça fait maintenant un moment que je “code” sur Arduino, donc j’ai malgré tout une certaine compréhension à ce niveau là.

Bref, donc je venais de m’attaquer à Arduino Esplora, et pour commencer à comprendre comment il marchait, j’ai téléchargé un code pré-fait, qui affichait la température en Celcius.

J’ai bien compris comment il marchait, je l’ai modifié en incluant une ligne qui affiche la température en Fahrenheit, et cetera, jusqu’à que je veuille mettre une ligne if, qui mette les valeurs en rouge à partir d’une certaine température (içi, 15 degrés C).

Voilà mon code :

// include the necessary libraries
#include <Esplora.h>
#include <TFT.h>            // Arduino LCD library
#include <SPI.h>

char tempPrintoutC[3];
char tempPrintoutF[3]; // array to hold the temperature data

void setup() {

  // Put this line at the beginning of every sketch that uses the GLCD
  EsploraTFT.begin();

  // clear the screen with a black background
  EsploraTFT.background(0, 0, 0);

  // Pour set les couleurs. Dans l'ordre : Bleu, Vert, Rouge
  EsploraTFT.stroke(150, 180, 0);
  // set the text to size 2
  EsploraTFT.setTextSize(2);
  // start the text at the top left of the screen
  // this text is going to remain static
  // Pour écrire et placer le texte. Dans l'ordre : Texte, Position Horizontale (X), Position Verticale (Y).
  EsploraTFT.text("Degres en C :\n ", 0, 1);
  EsploraTFT.text("Degres en F :\n ", 0, 70);

  // set the text in the loop to size 5
  EsploraTFT.setTextSize(4);
}

void loop() {

  // read the temperature  in Celcius and store it in a String
  String temperatureC = String(Esplora.readTemperature(DEGREES_C));
  String temperatureF = String(Esplora.readTemperature(DEGREES_F));

  // convert the string to a char array
  temperatureC.toCharArray(tempPrintoutC, 3);
  temperatureF.toCharArray(tempPrintoutF, 3);

  if (tempPrintoutC > 15) {
    EsploraTFT.stroke(0, 0, 255);
  }
else {
 EsploraTFT.stroke(255, 255, 255);
}

  // print the temperature one line below the static text
  EsploraTFT.text(tempPrintoutC, 0, 25);
  EsploraTFT.text(tempPrintoutF, 0, 90);

  delay(1000);
  // erase the text for the next loop
  EsploraTFT.stroke(0, 0, 0);
  EsploraTFT.text(tempPrintoutC, 0, 25);
  EsploraTFT.text(tempPrintoutF, 0, 90);
}

Donc, je suis consciente que le problème se trouve au niveau de if (tempPrintoutC > 15), et l’erreur que m’indique le debugger est “ISO C++ forbids comparison between pointer and integer [-fpermissive]”.

Je sais aussi pourquoi il me met cette erreur, car, comme il l’indique, je ne peux pas comparer un pointer (?) à un nombre.

Ma question est comment puis-je faire pour réparer ceci ?

Je vous remercie d’avance,

Fenrir

PS : D’ailleurs, par pur hasard et si quelqu’un a le temps de m’expliquer, que sont exactement les valeurs char, int, string, et autres ? Dans quel cas utilise-t-on l’un ou l’autre ? Je suis un peu perdue avec tout ça, et même si je me débrouille sans savoir ça jusque-là, je me doute bien qu’il faudra bien que je comprenne un jour. De plus, même si je suis loin d’être une novice en anglais et que je le parle/lis/écris couramment, c’est toujours plus agréable d’avoir des explications en français. Encore une fois, merci d’avance, et désolée pour ce roman.

ici tu as tout l'explication des types de variables tu devrais pouvoir ensuite modifier ton if(...>15) avec une variable (existante dans ton code) du bon type

Bonjour rjnc38, et merci de ta réponse et de ton lien concernant les variables, j'irai le voir plus tard.

En revanche, que veux-tu dire par "modifier mon if avec une variable du bon type" ? Je ne comprends pas trop comment je peux "transformer" la variable concernant la température relevée en une variable que je puisse mettre dans mon if. Je ne comprends pas trop pourquoi il ne veux pas accepter le tempPrintoutC. Est-ce que toi, ou quelqu'un d'autre, pourrait me corriger mon code en mettant lui-même un code valable ?

Merci d'avance, et désolée si je ne comprends pas tout, mais je suppose qu'un forum est fait pour ça.

désolé j'avais mal lu je croyais que "temperatureC" était de type int alors il faut essayer atoi() : if (atoi(tempPrintoutC) > 15)

Re-bonjour rjnc38, et merci beaucoup, ça marche impec ! =)

Juste par curiosité, en quoi consiste atoi() ? (A nouveau, excusez-moi pour mon ignorance, mais comme ça je me coucherai moins bête).

Encore merci de ton aide, et bonne journée !

je ne suis pas très expérimenté en C mais dans le principe il faut comparer ce qui est comparable 15 est de type entier "int" il faut donc transformer ton tempPrintoutC qui est un tableau de caractères en int ce que fait atoi()

Bien, c’est noté, je le saurai par la suite. Je vais marquer le sujet comme résolu, merci encore de votre aide, et bonne soirée =)

Fenrir