Bonjour, je souhaiterai créer un String et y introduire une valeur hexadécimale comme le montre le code ci dessous, cela ne fonctionne pas sur Arduino.
Merci d'avance !Code:String value = 0xf62c35a;
-----
Bonjour, je souhaiterai créer un String et y introduire une valeur hexadécimale comme le montre le code ci dessous, cela ne fonctionne pas sur Arduino.
Merci d'avance !Code:String value = 0xf62c35a;
Bonjour,
vous pouvez essayer cela:
Code:String value = "0xf62c35a";
Bonjour,
Je ne suis pas sur que cela soit ce qu'il recherche mais qui sait ?
car c'est vraiment trivial, wait and see
JR
l'électronique c'est pas du vaudou!
Merci en utilisant les apostrophes je n'ai plus de message d'erreur à propos de ma syntaxe dans Arduino mais je ne sais pas si cela fonctionne vraiment, pour être plus clair j'ai définis une variable comme ceci :
// Au bout d'un moment dans mon programme cette variable (premiereValue) obtient un code Hexadécimal qui vaut : fd76be29Code:String premiereValue = " ";
Maintenant je voudrais faire un test avec un IF, si la variable premiereValue est égale à une autre variable deuxiemeValue alors allume la LED verte sinon allume la LED rouge...
C'est pour cela que je veux crée une variable en faisant :Code:if (premiereValue == deuxiemeValue) { digitalWrite( pinLedVerte, HIGH ); } else { digitalWrite( pinLedRouge, HIGH ); }
Code:String deuxiemeValue = "0xfd76be29";
Vous ne pouvez pas utiliser == avec 2 strings pour ce que vous voulez faire.
Il faut utiliser la fonction strcmp().
La fonction retournera 0 si les 2 chaînes sont égales.
A mon avis le mieux est de comparer des valeurs, puis de mettre au format string si on a besoin d'envoyer sur une comm.
J'ai procédé de la manière suivante :
Mais j'ai ce problème là : cannot convert 'String' to 'const char*' for argument '1' to 'int strcmp(const char*, const char*)'Code:int comparaison = strcmp(premiereValue,"deuxiemeValue"); if (comparaison ==0) { digitalWrite(pinLedVerte, HIGH); delay(1000); } else { digitalWrite(pinLedRouge,HIGH); delay(1000); }
J'ai trouvé la solution à mon problème de la manière suivante
Merci pour votre aide !Code:String deuxiemeValue ; // Je déclare la variable deuxiemeValue de cette manière deuxiemeValue = String("fd76be29"); //deuxiemeValue prend la valeur de fd76be29 sous format string if (premiereValue == deuxiemeValue) // condition { } else { }
Il faut que vous regardiez de plus près la fonction strcmp() elle ne s'utilise pas comme ça (votre post#7).
Et nous dire ce que vous comptez faire au juste.
Bonjour,
Si la comparaison sur fait sur les valeurs, oui, encore que ça me semble bien étrange (cf. strcmp qui est faite pour comparer des chaînes de caractères !). Si elle se fait sur les adresses, non.
Comme le langage arduino est un truc qui n'est ni du C, ni du C++, je ne sais pas répondre à cette question implicite.
Not only is it not right, it's not even wrong!
Normalement == est équivalent à String::compare() ... donc ça marche ...
Reste à voir comment tu formates chaque String, "0xfd76be29" pas égal à "fd76be29", et "fd76be29" pas égal à "FD76BE29" ...
Strcmp c'est du C ... donc pour les char* ... ce que ne sont pas les "String" ... donc erreur à la compil.
<< L'histoire nous apprend que l'on apprend rien de l'histoire. >>
Il suffit de lire ce qu'en dit le site arduino:
"est basé sur" et non pas "est du...".
En effet ce n'est ni du C ni du C++ conventionnel...
On en a suffisamment parlé ici.
On appelle ça un métalangage:
https://www.larousse.fr/dictionnaire...alangage/50828
Tout à fait : https://www.arduino.cc/en/Hacking/BuildProcess
Pour moi l'IDE concatène les .ino, ajoute les proto manquants si besoin et compile le tout avec AVR-GCC ... mais je peux me tromper (et pour éviter un gros-troll, je vais chercher un peu par curiosité )
<< L'histoire nous apprend que l'on apprend rien de l'histoire. >>
FauxOn appelle ça un métalangage:
Arduino ce n'est pas du Cobol , du Pascal , du Fortran , du Lisp , du Basic , du Batch , etc ... Que sais je encore ?
Arduino c'est un IDE qui intègre des librairies spécifiques Arduino , c'est du C et C++, compilateur GCC open source.
Et tout ces headers (.h du C) et sources soit disant appelés métalangage sont dans les répertoires, il suffit d'être un peu curieux.
Inutile de le faire passer pour un truc d'extra terrestre, c'est que du classique !
Si on intègre une simple librairie de base de données ou une librairie graphique 3D , ça devient un métalangage ?
Si vous pensez que oui ?
Ok ça devient juste de la philosophie.
Et dans ce cas le fait de mettre un module SD avec sa lib, Arduino sera devenu le métalangage SDuino LOL.
C'est votre point de vue.
voir page 5 ici:
http://cimbcc.org/wp-content/uploads...on-JPresne.pdf
Vous ne savez visiblement pas ce qu'est un métalangage, c'est pas grave.
Je ne vous interdit pas de l'utiliser, ni de penser ce que vous voulez, juste si vous pouviez nous épargner vos poussées de tension inutiles...
Merci.
Ce n'est en effet pas un métalangage mais un langage (ou un IDE suivant comment on veut voir les choses). La phrase disant que c'est le cas ne se trouve qu'en français, pas en anglais. Elle est d'ailleurs plus nuancée en disant "une sorte de "méta-langage"" et en mettant des guillemets.C'est votre point de vue.
voir page 5 ici:
http://cimbcc.org/wp-content/uploads...on-JPresne.pdf
Vous ne savez visiblement pas ce qu'est un métalangage, c'est pas grave.
Mais même ainsi, c'est faux : un méta-langage permet de manipuler, définir d'autres langages ce qui n'est pas le cas ici : https://fr.wikipedia.org/wiki/Métalangage
Les exemples donnés sont significatifs : expressions rationnels, forme de Backus-Naur... On est loin du C/C++ adapté à la programmation pour micro-controlleur.
"concatèner les .ino, ajouter les proto manquants si besoin et compiler le tout avec AVR-GCC " est juste ajouter une étape à la compilation, pas différente du pré-processing et c'est aussi ce que font beaucoup d'environnements : XCode, QtCreator, les VisualStudio...
On ne les appelle pas méta-langages non plus.
L'IDE est un programme regroupant un ensemble d'outils pour le développement de logiciels, on ne parle pas de la même chose...
Un langage a une syntaxe qui lui est propre, or ici c'est un mélange de 2 langages, du patois ou du verlan comme vous voulez, mais pas plus.
Pour le reste je vous laisse à vos certitudes de newbies
Je n'ai pas envie d'en discuter avec vous 2, et ce n'est pas le sujet de ce post à la base.
Arduino se veut un langage mais c'est tout l'opposé, pour preuve personne dans l'industrie n'adopte cette hérésie... c'est un outil de bricoleurs du dimanche.
Ce sera tout pour moi sur ce post.
<< L'histoire nous apprend que l'on apprend rien de l'histoire. >>
Pour en revenir a cette question de string, non ,non c'est pas la ficelle le cache sex dont il s'agit.
Il s'agit en fait d'une class.
Personnellement, je ne l'utilise pas, et ils disent d'ailleurs dans le code source "wstring.c" que le code est vraiment gros et lourd.
D'ailleurs la question initiale laisse penser qu'on pourrait surement faire mieux et autrement.
Je doute que le == compare 2 chaines...
Il doit comparer 2 pointeurs et la comparaison serait alors toujours fausse.
Sur cette page de référence en Français;
http://www.mon-club-elec.fr/pmwiki_r...in.StringObjet
Il existe une fonction compareTo() ,ce qui me fait penser que le == fonctionne normalement et ne compare pas.
Seuls les structures ont des particularités comme le = qui copie une structure sur une autre.
Et apparemment string n'est pas déclaré comme une structure...
Apparemment ça compare avec "=="
http://www.mon-club-elec.fr/pmwiki_r...jetComparaison
Désolé mais non.
Sinon on va faire dériver le sujet qui va partir en polémiques.
Il suffit déjà de voir les (sur)réactions sur ce pseudo sujet par les "spécialistes" locaux ...
Une autre fois quand le sujet réapparaîtra de manière plus explicite dans le sujet du topic (ça ne saurait tarder vu l'engouement de ces produits, l'équivalent de la mal bouffe pour l'électronique...).