MTradioButton: Exemple 1
Gestion par événements pour UNO, Nano, Mega
LW-MW-FM
Ce programme va simuler un choix MW-LW-FM. On choisit la gamme par des boutons câblés sur A0, A1, et A2. La console nous indique les changements
Ici, on a trois boutons, on va les déclarer simplement et on fera 3 déclarations complètes.
Programme complet recommandé
Ce programme se fait complètement sous interruption, et libère loop qui peut être utilisé pour faire autre chose.
// Ce programme va simuler un choix MW-LW-FM. On choisit la gamme par des
// boutons câblés sur A0, A1, et A2. La console nous indique les changements
#include <MTobjects.h> // V1.0.6 Voir http://arduino.dansetrad.fr/MTobjects
const uint8_t PIN_BUTTON_MW = A0; // Bouton câblé entre GND et A0
const uint8_t PIN_BUTTON_LW = A1; // Bouton câblé entre GND et A1
const uint8_t PIN_BUTTON_FM = A2; // Bouton câblé entre GND et A2
//Définition du bouton MW
void choixMW(void)
{
Serial.println("On vient de choisir MW"); // Appelée si on appuie sur MW
}
void choixMWfini(void)
{
Serial.println("On vient d'annuler MW"); // Appelée si on appuie sur LW ou FM
}
MTradioButton BoutonMW(PIN_BUTTON_MW, choixMW, choixMWfini, HIGH si_non_appuye, RADIO_BUTTON_0);
//Définition du bouton LW
void choixLW(void)
{
Serial.println("On vient de choisir LW");
}
void choixLWfini(void)
{
Serial.println("On vient d'annuler LW");
}
MTradioButton BoutonLW(PIN_BUTTON_LW, choixLW, choixLWfini, HIGH si_non_appuye, RADIO_BUTTON_1);
//Définition du bouton FM
void choixFM(void)
{
Serial.println("On vient de choisir FM");
}
void choixFMfini(void)
{
Serial.println("On vient d'annuler FM");
}
MTradioButton BoutonFM(PIN_BUTTON_FM, choixFM, choixFMfini, HIGH si_non_appuye, RADIO_BUTTON_2);
void setup()
{
Serial.begin(115200);
BoutonMW.select(); // Pour qu'il y ait au moins une gamme sélectionnée
delay(16 milli_secondes); // Ainsi on est sûr que le bouton est sélectionné (retard possible de la prise en compte 16ms)
}
String noms[3] = {"MW", "LW", "FM"};
void loop()
{
Serial.print("La gamme actuelle est ");
Serial.println(noms[getMTradioButtonValeur()]); // Affiche le nom du bouton sélectionné
delay(2000 milli_secondes); // Pour avoir un affichage qui ne défile pas trop vite
}