getRadioValeur()

Retourne la valeur du bouton radio sélectionné

 

Exemples d'utilisation

groupe = getRadioValeur(); // groupe prend la valeur du bouton sélectionné
groupe = getRadioValeur(GROUPE_0); // Identique. Si on n'a qu'un seul groupe
if (getRadioValeur()== 0); // Si c'est le bouton "0" qui est sélectionné...

 

Référence

char getRadioValeur(char groupe = 0);

Paramètre passé

groupe: numéro du groupe

Valeur retournée

Valeur du bouton si il y en a un sélectionné, 0x80 sinon

 

Voir aussi

- getRadioPointeur() retourne l'adresse du contrôle actif
- RadioZone; Bouton radio (un seul bouton actif parmi plusieurs) sans dessin
- RadioCoche; Bouton radio (un seul bouton actif parmi plusieurs) case à cocher
- RadioCircle; Bouton radio (un seul bouton actif parmi plusieurs) rond

 

Notes

Un bouton radio est instancié:
RadioXXXX bouton(x1, y1, x2, y2, valeur, groupe);
Chaque bouton peut recevoir une "valeur". Si cela ne sert à rien, on donne 0 comme valeur. Si par contre c'est utile, on peut donner à chaque bouton une valeur numérique entière (voir les limites en dessous) différente pour chaque bouton. Quand on en a besoin, getRadioValeur() va nous donner la valeur de celui qui est sélectionné. Cela permet aisément de traiter l'information, par exemple par un case ou un if.

On peut avoir plusieurs groupes indépendants. Avec cette bibliothèque, les limitations sont:
- le nombre maximum de boutons dans tous les groupes est le même et c'est une puissance de 2
- le nombre maximum de séries est une puissance de 2
- le produit des deux est 128
Par défaut, on peut avoir 4 groupes de 32 boutons. Ces nombres peuvent se changer, voir GROUPE_0.

On peut attribuer à chaque bouton radio une valeur comprise entre 0 inclus et le nombre maximum de boutons dans le groupe exclu (par défaut ente 0 et 31, tout excès sera tronqué). En général on affecte les boutons par des nobmres croissants 0, 1, 2, 3... mais rien n'empêche de faire autrement. Si on a deux groupes, deux boutons peuvent avoir les mêmes valeurs, on ne peut pas les confondre car l'un peut être vu par exemple par getRadioValeur() et l'autre par getRadioValeur(GROUPE_1).

 

Exemple

Dans l'exemple qui suit, on utilise la valeur du bouton pour trouver la position du cercle à dessiner

PecheuxGraph_ILI9341_8bits.zip\PecheuxGraph_ILI9341_8bits\examples\Documentation\Exemple-953-getRadioValeur\Exemple-953-getRadioValeur.ino (dans votre fichier téléchargé):

// Mise en place de 3 boutons de type RadioZone (bouton radio, pas de dessin
// dans le bouton). Quand on appuie sur un bouton, un disque blanc montre son
// activité

// - Les boutons ont une définition statique
// - Utilise getRadioValeur pour faire le travail
// - Une seule action pour tous les boutons

#include <PecheuxGraph_ILI9341_8bits.h> // Appel de la bibliothèque 


// Déclaration statique des instances, doit se faire en dehors du setup
// Dans ce cas les boutons sont accessibles partout
RadioZone boutonHaut(200, 40, 240, 80, 1); // Bouton en haut
RadioZone boutonCentre(200, 100, 240, 140, 2); // Bouton au centre
RadioZone boutonBas(200, 160, 240, 200, 3); // Bouton en bas


// Déclaration de la fonction qui redessinent les boutons
// Cette fonction ne doivent pas avoir de paramètres et ne doit rien retourner
// Le nom peut être quelconque
void action(void)
{
  fillRect(80, 40, 120, 200, BLACK); // Efface tous les disques
  // Pour dessiner le disque, on le place à la même ordonnée que le bouton
  fillCircle(100, getRadioValeur() * 60, 20, WHITE);
}


void setup()
{
  setGraphMode(PAYSAGE); // Initialisation de la carte
  rect(200, 40, 240, 80, GREEN); // Carré du haut
  rect(200, 100, 240, 140, GREEN); // Carré au centre de l'écran
  rect(200, 160, 240, 200, GREEN); // Carré du bas
  text(F("Appuyez sur un carré"));

  boutonHaut.onSelectFunction = &action; // Fonction appelée si on active le bouton du haut de l'écran
  boutonCentre.onSelectFunction = &action; // Fonction appelée si on active le bouton au milieu de l'écran
  boutonBas.onSelectFunction = &action; // Fonction appelée si on active le bouton en bas de l'écran
}
 
void loop()
{
  scanEvent(); // Gestion des boutons et des horloges, le plus souvent seul dans le loop
}

Résultat:

 

Côté technique

Il ne peut y avoir au maximum un seul bouton radio actif par groupe. Cette focntion, en utilisant directement le pointeur sur l'élément actif, lui demande sa valeur.