ARDUINO pilote un afficheur AXE133

Introduction
Utiliser un afficheur AXE133 est bien pratique et très facile avec un PICAXE. La compatibilité est totale puisque, comme on dit, c'est fait pour.
La curiosité en a surement poussé plus d'un à essayer d'utiliser cet afficheur avec un autre type de microcontrôleur, un ARDUINO par exemple.

Deux problèmes se posent dans une telle communication :
D'une part, dans l'instruction ''serout'' de PICAXE, le ''baudmode'' à utiliser pour communiquer avec l'afficheur est ''N2400'', donc une sortie inversée (idle low).
Une instruction ''Serial.begin(2400,8N1)'' chez ARDUINO définit le ''baudrate'', la parité et le nombre de bits de stop, mais ne permet pas d'inverser la sortie.
Deux solutions sont envisageables pour réaliser cette inversion :
   - reprogrammer le PICAXE 18M2 de l'afficheur AXE133 pour lui permettre une communication avec un signal inversé

            (idle high pour baudmode=T2400 au lieu de idle low pour baudmode=N2400)
   - utiliser un transistor et une résistance pour inverser la polarité du signal transmis, c'est la solution que je propose ici.
D'autre part,
le PICAXE 18M2 du module doit traîter les informations qui lui sont envoyées avant de commander l'afficheur proprement dit.
Il faut donc tenir compte de cette lenteur relative en marquant une pause après l'envoi de chaque octet vers l'afficheur.

Cet article a pu être rédigé grâce au travail de Mr.Bendbau (pseudonyme ?) dont j'ai trouvé le témoignage sur le forum ARDUINO.


Réalisation

Le choix du transistor ''N-channel Enhanced MOS-FET'' n'est pas critique et un transistor bipolaire convient également.


Exemple de ''sketch'' ARDUINO pour l'envoi de caractères à l'afficheur AXE133

int compteur=0;

void setup() {
  Serial.begin(2400);
  // Compatibilité avec l'afficheur (8-bits, No-Parity, 1-Stop_bit)
}

void loop() {
  // Effacement de l'écran
  Serial.write(254);
  delay(10);
  Serial.write(1);
  delay(30);          // Temps nécessaire à l'effacement de l'écran
 
  Serial.print("P");
  delay(10);
  Serial.print("C");
  delay(10);
  Serial.print("_");
  delay(10);
  Serial.print("A");
  delay(10);
  Serial.print("u");
  delay(10);
  Serial.print("t");
  delay(10);
  Serial.print("o");
  delay(10);
  Serial.print("m");
  delay(10);
  Serial.print("a");
  delay(10);
  Serial.print("t");
  delay(10);
  Serial.print("i");
  delay(10);
  Serial.print("o");
  delay(10);
  Serial.print("n");
  delay(10);

  Serial.write(254);
  delay(10);
  Serial.write(199);
  delay(10);       
 
  Serial.print(compteur);
  delay(10);
  compteur+=1;
  if(compteur>9){
    compteur=0;
  }

  // Pause avant bouclage
  delay(500);
 }







Autre exemple :  Affichage d'une valeur analogique sur 3 digits









Aucun commentaire:

Enregistrer un commentaire

Les commentaires constructifs sont les bienvenus.
Contact par mail via mon profil dans la colonne de droite.