RadioCircle

Définition Utilisation Exemple Côté technique
 

4 séries de 10 boutons RadioCircle Voir RadioCircle: Exemple-952-RadioCircle.ino

 


 

Exemple: 4 séries de 10 boutons RadioCircle

PecheuxGraph.zip\PecheuxGraph\examples\Documentation\Exemple-952-RadioCircle\Exemple-952-RadioCircle.ino (dans votre fichier téléchargé):

// Ceci montre un exemple d'utilisation de boutons radio
// - avec quatre séries
// - avec des boutons dynamiques trops de boutons pour écrire ssn une boucle!

#include <PecheuxGraph.h>

word valeur; // Ce qui est écrit avec les boutons
void onTimeAffiche(void) // Cette fonction met à jour l'affichage
{
  valeur = 0; // Lecture des boutons radio et calcul de la valeur à afficher
  for (byte chiffre = 0; chiffre < 4; chiffre++) // 4 chiffres à lire, on commence par les milliers
    valeur = (valeur * 10 + (getRadioValeur(chiffre))); // A chaque fois on décale d'un chiffre
  fillRect(0, 0, 83, 25, BLACK); // Efface ce qui est nécessaire
  setTextCursor(0, 0); // Ecrire toujours au même endroit
  text(String(valeur)); // Ecrit la valeur
}

void setup()
{
  RadioCircle *radio; // Pointeur sur un bouton, nécessaire pour préselectionner les zéros
  Clock *horloge = new Clock(1000); // Pour un rafraîchissement toutes les secondes
  horloge->onTimeFunction = &onTimeAffiche; // Pour appeler la fonction d'affichage toutes les secondes

  // Initialisations
  setGraphMode(PAYSAGE); // Initialisation générale de l'afficheur
  setTextCursor(0, 100);
  text("Cliquez sur\nles boutons"); // Dire un minimum ce qu'il faut faire

  // Création de boutons dynamiques, doit être fait ici après setGraphMode() car on utilise LARGEUR
  for (word colonne = 0; colonne < 150; colonne += 40) for (word ligne = 0; ligne < 200; ligne += 20) // Pour avoir une matrice de boutons
    { // Création d'un bouton
      // valeur sera 0, 1, 2, ... soit le dernier paramètre ligne/20
      radio = new RadioCircle(LARGEUR - 160 + colonne, ligne, LARGEUR - 140 + colonne, ligne + 20, /*parametres =*/ligne / 20, /*groupe =*/colonne / 40); // Zones de 20x20
      if (ligne == 0) radio->select(); // Préselection des 0
      // Nom du bouton
      setTextCursor(LARGEUR - 140 + colonne, ligne + 2);
      text(String(ligne / 20)); // Affichage des chiffres 0, 1, 2, 3, ...
    }

  // Pour avoir un bouton cyan/rouge, pour montrer comment on fait, pour la démo
  RadioCircle::buttonColor = CYAN; // Sera vrai pour tous les boutons radio, cela diminue le nombre de données


  drawControles(); // Il faut tout dessiner car les contrôles sont définis après setGraphMode()
  setTextSize(4); // Pour bien voir le résultat
}

void loop()
{
  scanEvent(); // Gestion des boutons et des horloges, le plus souvent seul dans le loop
}

Affichage à la fin du setup:

 

Voir aussi:
- unselectRadio() Déselectionne tous les boutons radios d'un groupe
- getRadioValeur() Donne la valeur du contrôle actif du groupe
- getRadioPointeur() retourne l'adresse du contrôle actif
- scanEvent(); Moteur de la gestion des évènements
- PushCircle; Bouton poussoir rond
- CheckCircle; Bouton bistable (va vient) rond
- 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