Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Nouveau tutoriel pour débuter sur Arduino


Sujet :

Arduino

  1. #1
    Membre actif
    Nouveau tutoriel pour débuter sur Arduino
    Bonsoir

    J'ai rédigé un tutoriel pour débuter dans Arduino : https://nboulaire.developpez.com/tutoriels/Arduino/cours-debuter-programmation-arduino/

    Merci pour vos commentaires et bonne lecture !
    Pour créer une belle table des matières sur LibreOffice - N'oubliez pas de consulter les FAQ en cas de question !
    Envie de se lancer dans l'aventure Arduino : allez faire un tour sur ce cours.

  2. #2
    Membre expérimenté
    Merci pour cette contribution

    Je suis partisan d’apprendre très tôt à respecter une cohérence de type et de ne pas dépendre de promotions automatiques cachées par le langage et d’éviter les valeurs magiques parsemées dans le code. Quand vous proposez de faire
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     {
      boolean etatBouton = digitalRead(2);
      if (etatBouton == 1)
    ca me choque donc un peu
    un booléen est vrai ou faux, la fonction digitalRead ne retourne pas vrai ou faux mais un concept d’état de la tension sur cette pin avec HIGH ou LOW représenté par un entier de type int.

    Je proposerais
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    const byte pinBouton = 2;
    int etatBouton = digitalRead(pinBouton);
    if (etatBouton == HIGH)

  3. #3
    Membre actif
    Bonjour Jay M,

    Merci de ta remarque, très pertinente : je modifierai le type de etatBouton ainsi que le test du if.
    Pour créer une belle table des matières sur LibreOffice - N'oubliez pas de consulter les FAQ en cas de question !
    Envie de se lancer dans l'aventure Arduino : allez faire un tour sur ce cours.

  4. #4
    Membre expérimenté
    Merci

    et j'ai vu que vous traitez de cela dans la partie "Amélioration de la lisibilité du code d’un programme" (et la notion de const est aussi importante car elle permet au compilateur de faire des optimisations.)


    j'ai repéré quelques autres améliorations:

    * Quand vous parlez de
    la ligne 31, on convertit en fait une valeur d’une échelle (qui va de 0 à 1023) en une valeur dans une autre échelle (qui va de 0 V à 5 V). Au lieu de faire un produit en croix, on peut utiliser une instruction Arduino qui fait la même chose :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    map(valeur, limite_inf_1,  limite_sup_1, limite_inf_2, limite_sup_2)

    où valeur est la valeur à convertir, limite_inf_1 et limite_sup_1 sont les limites de la 1re échelle dans laquelle est mesurée la valeur (dans notre cas 0 et 1023), limite_inf_2 et limite_sup_2 sont les limites de la nouvelle échelle (dans notre cas 0 et 5 V) → la ligne 31 pourrait donc s’écrire de manière équivalente :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    float tension = map(valeurTemp, 0, 1023, 0, 5);
    --> map() travaille uniquement en entier donc vous auriez dans tension uniquement un entier de 0 à 5 (et 5 uniquement si vous avez obtenu 1023 pile) même si vous stockez le résultat dans un nombre décimal.

    * dans "Les précautions pour éviter de détruire la carte Arduino voire plus", vous dites
    la résistance d’un fil est quasi nulle (mettons 0,1 W pour le calcul)
    ou encore
    La valeur minimale est de 125 W, mais il vaut mieux prévoir un peu plus et opter pour une résistance de 220 W.

    --> il ne s'agit pas de Watts mais d'Ohm bien sûr (peut-être le symbole ("Ω") ne s'affiche-t-il pas bien ?)


    * je vous suggère aussi de prendre 115200 (voir plus) comme débit par défaut pour le port Série. il n'y a plus aucune raison d'aller à 9600 bauds comme au temps des premier arduino. en fait aller lentement risque de générer certains bugs de timing dans les programme car un appel à print devient bloquant dès que vous avez plus de 64 octets à émettre en attente.



    bravo et merci encore pour ce partage !

  5. #5
    Membre actif
    Citation Envoyé par Jay M Voir le message
    * Quand vous parlez de

    --> map() travaille uniquement en entier donc vous auriez dans tension uniquement un entier de 0 à 5 (et 5 uniquement si vous avez obtenu 1023 pile) même si vous stockez le résultat dans un nombre décimal.
    Ah oui, c'est juste : j'ajouterai une petite précision.

    Citation Envoyé par Jay M Voir le message

    * dans "Les précautions pour éviter de détruire la carte Arduino voire plus", vous dites ou encore --> il ne s'agit pas de Watts mais d'Ohm bien sûr (peut-être le symbole ("Ω") ne s'affiche-t-il pas bien ?)
    J'ai corrigé une partie des symboles qui restaient mais apparemment pas tous : j'ai effectivement un souci lors de l'exportation (que je passe par la police symbol ou par l'insertion d'un caractère spécial) qui n'affiche pas les lettres grecques.

    Citation Envoyé par Jay M Voir le message

    * je vous suggère aussi de prendre 115200 (voir plus) comme débit par défaut pour le port Série. il n'y a plus aucune raison d'aller à 9600 bauds comme au temps des premier arduino. en fait aller lentement risque de générer certains bugs de timing dans les programme car un appel à print devient bloquant dès que vous avez plus de 64 octets à émettre en attente.
    En pratique, j'opte désormais pour 115200 mais comme j'ai repris certaines anciennes versions de mes programmes, j'avoue ne pas avoir fait la mise à jour le débit.

    Citation Envoyé par Jay M Voir le message

    bravo et merci encore pour ce partage !
    Merci
    Pour créer une belle table des matières sur LibreOffice - N'oubliez pas de consulter les FAQ en cas de question !
    Envie de se lancer dans l'aventure Arduino : allez faire un tour sur ce cours.

  6. #6

###raw>template_hook.ano_emploi###