MTradioButton en détail

Boutons type boutons de choix de programme, il s'active quand on appuie dessus. Il se désactive si on appuie sur un poussoir du même groupe.

Les groupes et les valeurs

Par défaut:
- il y a 8 groupes maximum et ils sont numérotés de 0 à 7.
- il peut y avoir maximum 16 boutons par groupe.
- chaque bouton peut avoir une valeur (identificateur) librement choisie entre 0 et 15.

On peut changer ces valeurs par défaut si:
- on veut plus de 8 groupes
ou bien
- on veut plus de 16 interrupteurs dans un des groupes.

Dans le fichier de la bibliothèque MTradioButton.h, les premières lignes indiquent:

#define RADIO_NB_BITS_GROUPE 3 // Nombre de bits pour la définition du groupe radio 0..6
                               // 0: 1 seul groupe de 128 boutons maxi
                               // 1: 2 groupes maxi de 64 boutons maxi chacun
                               // 2: 4 groupes maxi de 32 boutons maxi
                               // 3: 8 groupes maxi de 16 boutons maxi par défaut
                               // 4: 16 groupes maxi de 8 boutons maxi
                               // 5: 32 groupes maxi de 4 boutons maxi
                               // 6: 64 paires de boutons maxi

On peut changer le nombre 3 en rouge ci-dessus pour changer les valeurs par défaut. Attention cela n'indique que les maximums. Si on n'a besoin par exemple que de 2 boutons en tout (donc dans le même groupe) on peut remplacer le nombre 3 en rouge par n'importe quel nombre entre 0 et 6. Dans ce cas, on ne touche à rien. Notez qu'au maximum on peut avoir 128 boutons, mais que l'on ne peut avoir que 70 broches avec une Mega. Néanmoins si un bouton devait appartenir à plusieurs groupes, il faudrait le définir plusieurs fois avec le même numéro de broche, mais avec des numéros de groupes différents.

Pour les 4 premiers groupes, au lieu d'utiliser un nombre, on peut utiliser:

RADIO_GROUPE_0
RADIO_GROUPE_1
RADIO_GROUPE_2
RADIO_GROUPE_3

Et pour les 10 premiers boutons, on peut utiliser:

RADIO_BUTTON_0
RADIO_BUTTON_1
RADIO_BUTTON_2
RADIO_BUTTON_3
RADIO_BUTTON_4
RADIO_BUTTON_5
RADIO_BUTTON_6
RADIO_BUTTON_7
RADIO_BUTTON_8
RADIO_BUTTON_9

C'est équivalent mais cela commente automatiquement le nombre. au lieu d'écrire:

MTradioButton bouton(0, un, deux, 0, 1, 2);

Il vaut mieux écrire:

MTradioButton Bouton(pinMarche, allume, eteint, LOW si_non_appuye, RADIO_BUTTON_1, RADIO_GROUPE_2);

Par défaut quand on omet de spécifier le groupe, c'est le groupe 0 qui est sous entendu. Dans le cas ou l'on n'a qu'un seul groupe, on peut ainsi ne pas préciser le numéro du groupe.

Include à rajouter

#include "MTradioButton.h" // Voir http://arduino.dansetrad.fr/MTobjects

Je conseille fortement de laisser le commentaire, si une autre personne voulait essayer le programme, elle aurait directement un lien de téléchargement. C'est valable pour toutes les bibliothèques que vous utilisez.

Commentaire utile

si_non_appuye

Ce commentaire est un mot que l'on peut rajouter n'importe où et qui est ignoré par le compilateur.

Constructeurs

MTradioButton(pin, onSelectFunction, onUnselectFunction, repos, valeur, groupe);
MTradioButton(pin, onSelectFunction, onUnselectFunction, repos, valeur);  //  groupe = 0
MTradioButton(pin, onSelectFunction, onUnselectFunction, repos);  //  valeur = groupe = 0
MTradioButton(pin, onSelectFunction, onUnselectFunction);  //  repos = HIGH, valeur = groupe = 0
MTradioButton(pin, onSelectFunction); // onUnselectFunction = PAS_D_ACTION, repos = HIGH, valeur = groupe = 0
MTradioButton(pin); //  onSelectFunction =  onUnselectFunction = PAS_D_ACTION, repos = HIGH, valeur = groupe = 0

pin (uint8_t): broche sur lequel est branché le bouton
onSelectFunction: ce qui se passe quand on active le bouton
PAS_D_ACTION -> rien ne se passe
  fonction -> appel d'une fonction "void fonction(void) { ...}
onUnselectFunction: ce qui se passe quand le bouton se désactive
PAS_D_ACTION -> rien ne se passe
  fonction -> appel d'une fonction "void fonction(void) { ...}
repos (boolean): état de la broche si le bouton n'est pas appuyé
HIGH -> si il est câblé entre GND et pin (conseillé)
LOW -> si il est câblé entre VCC et pin, avec une résistance de pulldown entre pin et GND
valeur (byte): nombre arbitraire associé au bouton. Cela permet de le différencier dans un groupe 0..15
groupe (byte): numéro du groupe 0..7

Fonctions utiles

void select(void);
void unselect(void);
boolean getSelect(void);
virtual void onSelect(void);
virtual void onUnselect(void);

select: sélectionne le bouton
unselect: déselectionne le bouton
getSelect renvoie true si le bouton est appuyé
onSelect: fonction à surcharger appelée quand le bouton est activé
onUnselect: fonction à surcharger appelée quand le bouton est désactivé

Fonctions globales utiles (n'appartenant pas à l'objet)

void unselectMTradioButton(char groupe = 0);
void unselectMTradioButton();
byte getMTradioButtonValeur(char groupe = 0);
byte getMTradioButtonValeur();

unselectMTradioButton: Désélectionne tous les boutons radios d'un groupe getMTradioButtonValeur: Retourne la valeur du contrôle actif du groupe

Fonctions bonus

byte getValeur();
byte getGroupe();
void setOnSelectFunction(onSelectFunction);
void setOnSelectFunction();
void setOnUnselectFunction(onUnselectFunction);
void setOnUnselectFunction();

getValeur: retourne la valeur du bouton
getGroupe: retourne le n° du groupe du bouton
setOnSelectFunction: change la fonction appelée lors de l'appui
setOnSelectFunction: sans paramètres supprime la fonction appelée lors de l'appui
setOnUnselectFunction: change la fonction appelée lors du relâchement
setOnUnselectFunction: sans paramètres supprime la fonction appelée lors du relâchement

Exemples