Ardu? No!MTobjectsLes ensembles de boutonsMTanalogButtons ≫ MTanalogButtons: Test 1

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()
{
}