Bluetooth HC-05: un tuto qui marche

kammo:
On reçoit des char à la queue leuleu, ça ne fait pas un INT

Je te l'ai dit déjà plusieurs fois, tu veux que je te le dise en chti, Biloute ?

Un char, c'est un int déguisé : lis ça. Je te le copies ci-dessous :

char

A data type that takes up 1 byte of memory that stores a character value. Character literals are written in single quotes, like this: 'A' (for multiple characters - strings - use double quotes: "ABC").

Characters are stored as numbers however. You can see the specific encoding in the ASCII chart. This means that it is possible to do arithmetic on characters, in which the ASCII value of the character is used (e.g. 'A' + 1 has the value 66, since the ASCII value of the capital letter A is 65). See Serial.println reference for more on how characters are translated to numbers.

The char datatype is a signed type, meaning that it encodes numbers from -128 to 127. For an unsigned, one-byte (8 bit) data type, use the byte data type.

Example Code
  char myChar = 'A';
  char myChar = 65;      // both are equivalent

Ce qu'il faut retenir :

Characters are stored as numbers however.

char myChar = 'A';
char myChar = 65; // both are equivalent

'A' et 65 c'est kif kif. Donc, maintenant que tu as appris la carte ASCII par cœur, comme je te l'ai demandé (y a interro bientôt, fais gaffe), '0' c'est pareil que 48.
Quand ton instruction
    int servopos = bluetooth.read(); // stocke la valeur reçue dans servoposreçoit '0', elle stocke 48 dans servopos. Si tu veux lui faire stocker 0, il suffit d'ôter 48 - ou bien d'ôter '0' c'est pareil).

Si tu reçois plusieurs nombres (par exemple '1', puis '2' puis '3' pour recevoir 123), tu reconstruis le 123 en multipliant par 10 la valeur précédente. Exemple :

  • Reçu '1', le int N stocke 49, mais tu lui ôtes 48 donc il stocke 1
  • Serial te dit qu'il reçoit quelque chose : tu le lis. Si c'est un chiffre : tu multiplies le int par 10 et tu ajoutes la nouvelle valeur
  • N = N*10 + char_recu - 48 : ça donne 12
  • Serial te dit qu'il reçoit quelque chose : tu le lis. Si c'est un chiffre : tu multiplies le int par 10 et tu ajoutes la nouvelle valeur
  • N = N*10 + char_recu - 48 : ça donne 123
    C'est clair ?