Utilisation de l'IDE Mblock avec Arduino

Bonjour,
J'essaie d'utiliser mblock pour programmer un Arduino uno (rev 3).
J'ai chargé l'IDE mblock et j'ai déjà fait un clignoter des leds.
Ce premier logiciel (commande de sorties) fonctionne bien.
J'aimerais maintenant commander l'allumage d'une led à l'aide d'un bouton poussoir (je m'attaque maintenant aux entrées).
Je ne trouve pas sur l'IDE mblock de fonction de lecture d'une entrée de l'Arduino : faut-il charger une option ?

nota : je sais faire sans problème ce programme en C.

Merci de medébloquer
nonno

Je n’utilise pas (je pense d’ailleurs que c’est plus fait pour leurs cartes que pour un arduino générique) mais il y a sans doute moyen de lire l’état d’une broche non ?

Ce site le laisse entendre

Merci, ça marche ; j'avais bien en effet vu cette fonction "lire la broche numérique xx" (en français dans mblock), mais je pensais qu'il fallait toujours un opérateur de comparaison dans le "si" (==, < >) et je ne réussissais pas à l'introduire.

A part ça dans leur lecture de l'entrée, il n'y a pas de protection contre les rebonds.

Il est implicite ici c'est équivalent à !=0
Si tu veux que l'écriture soit moins ambiguë tu peux effectivement utiliser un test.

Comme digitalRead() sur Arduino. rajoutez un condensateur et vous aurez un bouton sans rebond.

Il faudrait regarder la doc pour savoir s'ils retournent un booléen (vrai = appui, faux = pas d'appui) ou un HIGH ou LOW (sans doute haut et bas en français)

on trouve des tutos sur le net, par exemple http://sti.ac-amiens.fr/IMG/pdf/arduino_uno_et_mblock_-_version_2016-09.pdf

Merci à tous les ,
Pour le filtrage des entrées, l'idée du condensateur est bonne ; je pourrai aussi introduire un retard de quelques millisecondes dans la poursuite du programme
Pour l'opérateur de comparaison : comme il s'agit d'une entrée numérique, elle est en effet considérée comme un booléen et donc le "if" ne nécessite pas d'opérateur (le code .ino associé est d'ailleurs " if(digitalRead(4){" , qui est parfaitement reconnu par l'IDE Arduino).
Bonne journée à tous

oui c'est une façon assez nulle de le faire, ça fonctionne par "accident" car digitalRead ne retourne pas un booléen mais un int

Vous bénéficiez de la promotion automatique du C++ qui dit que un entier qui vaut 0 est promu en booléen faux et toute autre valeur est vraie et "coup de bol" arduino a déclaré LOW à 0 et HIGH à 1.

Comme on met généralement l'entrée en INPUT_PULLUP elle devient LOW lors de l'appui et donc le if (digitalRead(4)) { fait ce qu'il faut.

Mais si vous utilisez un pulldown au lieu du pullup, ça ne va pas fonctionner. D'autre part si Arduino venait à changer (ils l'ont déjà fait avant de faire machine arrière) la définition de HIGH et LOW pour en faire un enum vous n'aurez plus la promotion automatique en bool et le code va planter.

Bref - la bonne façon d'écrire cela est if (digitalRead(4) == LOW) { f