Programation arduino condition if
FerméDalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 - 22 nov. 2022 à 21:01
- Fonction if arduino
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Excel remplir automatiquement une cellule en fonction d'une autre ✓ - Forum Excel
- Fonction remplacer word - Guide
5 réponses
22 nov. 2022 à 21:01
Bonjour,
La variables de type scalaire non explicitement initialisés sont effectivement initialisées à zéro si elles sont globales (vrai en C comme ici en C++).
Donc par exemple inaframe est nulle au début. Heureusement car elle indique que le traitement de réception d'une trame est en cours. Cette variable passe à 1 au moment où on détecte un début de trame, c'est plus loin dans le code. Elle ne revient à zéro qu'en cas de timeout ou quand la trame est terminée.
En tout cas, ce code n'est certainement pas un code à lire. Il ne respecte pas les canons standards. Par exemple:
- une fonction ne doit pas faire plus d'une page de texte.
- les variables globales sont à proscrire sauf impossibilité. On est ici dans ce cas car une interruption ne communique qu'en utilisant des globales. Mais il ne devrait y avoir que quelques variables et explicitement nommées.
21 nov. 2022 à 16:49
Bonjour,
Documentation Arduino: "any non-zero number evaluates to TRUE"
Donc si je dit pas de bêtise, si inaframe vaut zéro la condition est "False" et si inaframe >=1 la condition est "True".
PS: Pour améliorer la lisibilité de tes messages, pense à utiliser l'outil "Insérer un extrait de code" (dernier icone de la fenêtre de rédaction)
Cdlt.
22 nov. 2022 à 10:19
merci pour votre reponse , mais inaframe n'est pas inialisé au depart comment elle peut etre evalué à 0 ou autre ?? ou par defaut une valeur non inialisé prend elle 0??
Modifié le 22 nov. 2022 à 13:55
"This code is experimental, buggy, and is probably not suitable for any purpose."
[...]
"Anyone wanting to use this code is strongly encouraged to:
1. Reconsider."
→ Tout est dit ...
Toutefois les commentaires sous ce post semblent confirmer t'a supposition, une variable globale semble bien prendre la valeur "zéro" par défaut:
https://forum.arduino.cc/t/declare-variable-without-initialising/945139/4
22 nov. 2022 à 14:00
ca repond tres bien a ce que je cherche merci ,
justement pour le programme je veux m'inspirer pour faire mon propre projet en commençant par comprendre ce qu'il fait exactement
Modifié le 21 nov. 2022 à 17:36
Bonsoir,
Il eut été utile de nous indiquer l'adresse de ce programme pour que nous sachions à quoi correspondent ces variables.
Il s'agit sans doute du programme ci-après :
https://github.com/eiginn/arduino_tnc/blob/master/arduino_tnc_014_w_tx.ino
Il apparaît alors que :
si la variable inaframe, déclaré en ligne 137 est positive (comme suggéré par T3chN0g3n que je salue)
alors la variable bit_timer est décrémentée par l'opérateur -- (qui suit le nom de variable à la ligne 365).
C'est donc cette instruction qui est exécutée conditionnement.
Reste à s'assurer que cette variable inaframe, définie comme caractère non signé n'égale pas 0 au lancement du programme, ce qui est possible pour une variable non-initialisée, pour déclencher la décrémentation.
Je n'irai pas plus loin faute d'expertise suffisante en codage Arduino. Sous réserve de correction par un de nos spécialistes C++
22 nov. 2022 à 10:17
merci pour vos reponses , ce'st exactement ce programme la , mais mon besoin c'est juste la reception , et j'essai de comprendre le principe et le fonctionnement du programme , et vue que je ne suis pas spésialiste en C++ ou langage arduino donc.... toute aide est la bienvenue.
par exmple je ne comprend pas comment une variable non inialisé peut etre incrementé ou decrementé !!
Modifié le 22 nov. 2022 à 11:18
Comme indiqué, mes connaissances sont limitées.
Une variable a une valeur aléatoire quand on la déclare. L'initialisation permet de la fixer, à 0 par exemple. Rien ne vous empêche de tester cela dans un embryon de programme à part, avec et sans initialisation.
Je remarque qu'aucun des unsigned char, des lignes 131 à 154 n'est initialisée (simples déclarations), ce qui signifie qu'il y a peu de chances que ce soient des erreurs successives de programmation.
Incidemment, je vois que bit_timer est initialisé en ligne 655
Mon interprétation :
soit il s'agit de variables locales recevant leur valeur lors de la transmission, à partir d'un capteur ou d'un terminal connecté
soit il s'agit de valeurs stockées dans un registre du microcontrôleur
soit il s'agit de valeurs transitant dans le buffer (voir macros du volume XBEE, lignes 58 et suiv.).
Là encore, aucune vérification mais des suppositions. Personnellement, je testerais à part cette question de la déclaration sans initialisation, en créant une fonction qui utilise ces variables en les initialisant localement.
En attendant l'intervention d'un intervenant plus capé, si ça vous aide, je peux faire des tests de mon côté sur les hypothèses émises, sachant que je n'ai pas le périphérique utilisé.
N'hésitez pas à me dire si vous préférez attendre un autre intervenant pour éviter que je vous lance sur des hypothèses sans issues.
22 nov. 2022 à 11:34
en effet l'idée est de recvoir un signal A-FSK audio sur la pin A0 d'un arduino , ce dernier numerise le signal à travers son ADC avec utilisation du timer (// use 16-bit timer to check the ADC at 13200 Hz // this is 11x the 1200Hz MARK freq, and 6x the 2200Hz SPACE freq.) les valeurs ADC (0à 255) sont translaté entre +/- 127 (ligne 307) puis viens le traitement des données pour demoduler ,
je vais encore creuser un peu dans le programme pour ne pas vous deranger et je vous tiens au courant,merci pour votre aide .
22 nov. 2022 à 10:35
si quelqu'un a deja travaillé sur le programme en lien ??son aide serai precieuse merci
https://github.com/eiginn/arduino_tnc/blob/master/arduino_tnc_014_w_tx.ino
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question22 nov. 2022 à 13:32
bonjour,
Comment peux-tu être certaine que ces variables n'ont pas été préalablement initialisées?