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
|