Bonjour,
MTobjects est une bibliothèque contenant quelques objets que l'on peut utiliser même avec du code bloquant. Par exemple pendant un delay(), les boutons sont quand même scannés et peuvent faire déplacer un servo ou démarrer un pas à pas.
C'est une bibliothèque qui ressemble à beaucoup d'autres, mais elle n'utilise pas le petit machin.run() dans loop qui impose un code non bloquant. L'ajout d'un bouton pour faire clignoter une led 5 fois par exemple peut se faire avec un programme existant quasiment quelconque (je n'ai pas testé sur tous les programmes).
MTobjects utilise le timer 0 pour scanner les boutons, faire des temporisations, gérer un PWM soft, faire avancer des servos (dont on peut choisir la vitesse) ou des moteurs pas à pas (vitesse maxi de l'ordre de 30000pas/s).
Voici par exemple un programme faisant faire un tour de roue avec un pas à pas quand on appuie sur un bouton:
#include "MTbutton.h" // V1.0.0 Voir http://arduino.dansetrad.fr/MTobjects
#include "MTstepStepper.h" // V1.0.0 Voir http://arduino.dansetrad.fr/MTobjects
const uint8_t PIN_BOUTON = A2;
MTstepStepper Stepper(pin_Step 2, pin_Dir 5, pin_EN 8);
void tourne(void) { Stepper.move(Stepper.getMicroStepsPerTurn()); }
MTbutton Bouton(PIN_BOUTON, tourne);
void setup(){}
void loop(){}
On remarquera que loop() est inutilisé car tout se fait par interruption, ce qui laisse la possibilité de faire un programme quelconque.
Cette bibliothèque présente aussi l'immense avantage que votre humble serviteur se promène souvent sur ce forum et peut apporter des réponses sur l'utilisation de MTobjects.