MTanalogButtons, Test 1
Gestion par événements pour Uno, Nano, Mega
Test du CAN avec deux pins analogiques
Quand on utilise une seule pin analogique, une fois établi la tension pour un bouton, elle ne changera pas. Quand on utilise deux pins analogiques, le multiplexeur va passer d'une tension à l'autre avant de faire la conversion. Le programme suivant utilise deux MTanalogButtons qui sont lus alternativement. Lors des appuis sur un bouton, la tension mesurée pour le premier est comprise entre 0V et 1,1V, et le deuxième impose en entrée du CAN une tension de 5V. Ainsi on va d'un côté à l'autre des tensions. Je ne constate aucune erreur de lecture.
Exemple de programme complet
// Ce programme vérifie qu'une lecture analogique sur une autre broche ne
// perturbe pas la mesure
// Comme on utilise un seul CAN avec un multiplexeur, il faut vérifier qu'en
// passant d'une broche à l'autre, on arrive bien à lire
//
// Ici, on va lire un keypad avec la broche A5 et mettre la broche A0 à 5V.
// Comme on a deux MTanalogButtons, on va lire alternativement A5 et A0
// Avant la lecture des boutons, on lira donc un 5V.
#include <MTobjects.h> // V1.1.1 Voir http://arduino.dansetrad.fr/MTobjects
const byte PIN_1 = A5;
const byte PIN_2 = A0; // La broche A0 est à 5V
const word TABLE_DES_SEUILS[] = {982, 920, 880, 840, 797, 754, 710, 665, 619, 571, 523, 471, 421, 369, 316, 260, 204, 145, 87, 28, 0}; // Valeurs des seuils de comparaisons
void appuis(byte touche)
{
Serial.print("La touche n°");
Serial.print(touche);
Serial.print(" vient d'être appuyée ");
}
void relachement(void)
{
Serial.println("et relâchée");
Serial.println(analogRead(PIN_2));
}
MTanalogButtons Keypad1(PIN_1, TABLE_DES_SEUILS, appuis, relachement); // Celui que l'on observe
MTanalogButtons Keypad2(PIN_2, TABLE_DES_SEUILS); // Imposera des lectures à 1024
void setup()
{
Serial.begin(115200); // Régler aussi la console à 115200 bauds!
analogReference(INTERNAL); // On a ainsi allers retour sur le CAN entre le 5V et une tension faible si on appui sur un bouton
Serial.println("Appuyez sur des touches");
}
void loop()
{
}