Skyduino:~#
Articles
arduino, programmation

[Arduino] Afficheur 7 segment de comfile

Salut à tous !

Un membre du forum arduino m’avais demandé de l’aide pour contrôler son afficheur 7 segment fabriqué par la société comfile.
Datasheet : http://www.lextronic.fr/~lextronic_doc/SGN-S4.pdf

Même si je ne possède pas cette afficheur le faire fonctionner était relativement simple.
Je poste ici le code pour que cela puisse être utile à d’autre personne.

Voici le code testé et approuvé par le membre du forum arduino :
Remarque je ne poste que les fonctions importantes.

/* Init slave */
void 7seg_begin(byte address = 0xE0){
  Serial.print(address, BYTE); // slave address
  Serial.print(0xA4, BYTE); // Init com
}

/* Display 16 bit Hexa */
void 7seg_hexa(byte b1, byte b2, byte address = 0xE0){
  Serial.print(address, BYTE); // slave address
  Serial.print(0xFA, BYTE); // Hexa display
  Serial.print(b1,BYTE); // LSB
  Serial.print(b2,BYTE); // MSB
}

/* Display char */
void 7seg_char(char dc, byte digit, byte address = 0xE0){
  Serial.print(address, BYTE); // slave address
  Serial.print(digit, BYTE); // Digit 1
  Serial.print(dc); // char
}

/* Display 4 char String */
void 7seg_string(char d1, char d2, char d3, char d4, byte address = 0xE0){
  Serial.print(address, BYTE); // slave address
  Serial.print(0x01, BYTE); // Digit 1
  Serial.print(d1); // char
  Serial.print(address, BYTE); // slave address
  Serial.print(0x02, BYTE); // Digit 2
  Serial.print(d2); // char
  Serial.print(address, BYTE); // slave address
  Serial.print(0x03, BYTE); // Digit 3
  Serial.print(d3); // char
  Serial.print(address, BYTE); // slave address
  Serial.print(0x04, BYTE); // Digit 4
  Serial.print(d4); // char
}

/* Show (and if blink) decimal point on digit */
void 7seg_dpoint(byte digit, boolean blink = false, byte address = 0xE0){
  switch(digit){
  case 1:
    Serial.print(address, BYTE); // slave address
    if(blink)
      Serial.print(0xD6, BYTE);
    else
      Serial.print(0xD1, BYTE);
    break;
  case 2:
    Serial.print(address, BYTE); // slave address
    if(blink)
      Serial.print(0xD7, BYTE);
    else
      Serial.print(0xD2, BYTE);
    break;
  case 3:
    Serial.print(address, BYTE); // slave address
    if(blink)
      Serial.print(0xD8, BYTE);
    else
      Serial.print(0xD3, BYTE);
    break;
  case 4:
    Serial.print(address, BYTE); // slave address
    if(blink)
      Serial.print(0xD9, BYTE);
    else
      Serial.print(0xD4, BYTE);
    break;
  }
}

/* Stop blink of all decimal point */
void 7seg_noblink(byte address = 0xE0){
  Serial.print(address, BYTE); // slave address
  Serial.print(0xDF, BYTE);
}

/* Hide all decimal point */
void 7seg_nopoint(byte address = 0xE0){
  Serial.print(address, BYTE); // slave address
  Serial.print(0xD0, BYTE);
}

Discussion

Pas encore de commentaire.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

Skyduino devient Carnet du Maker

Le site Carnet du Maker remplace désormais le blog Skyduino pour tout ce qui touche à l'Arduino, l'informatique et au DIY.