[RESOLU] Utilisation du TIL311

Bonjour à tous.

Je cherche à utiliser un afficheur hexadécimal avec la carte arduino UNO. Cet afficheur est le TIL311 de Texas instrument. J'ai consulté la documentation technique et pense avoir à peu près compris comment il fonctionne. Mon problème est que je ne sais pas comment envoyer un signal d'horloge à la bascule D. De plus je ne comprend pas comment et où câbler le "BLANKING INPUT". Je vous joins la documentation technique du TIL311.

Pouvez-vous m'aider ?

til311.pdf (103 KB)

Pour la bascule D je suppose que tu parles du "LATCH STROBE INPUT" de la datasheet. Bin pourquoi vouloir générer un signal d'horloge ? d'après ce que je comprend il te suffit juste de faire une impulsion après avoir modifiés tes LATCHES pour que l'affichage se met à jour. Pour le blanking input, il sert à moduler la luminosité, relie le donc à un pwm si tu souhaites le faire, sinon relie le au GND ...

Salut,

J'ai fait un petit code d'exemple en suivant le datasheet que tu as fourni.
Mais vu que je n'ai pas le composant sous la main je ne peut pas garantir que le code marche :wink:

/* Lignes de controle */
#define LATCH_STROBE 2
#define BLANK_INPUT 3

/* Bus de données */
#define LATCH_DATA_A 4
#define LATCH_DATA_B 5
#define LATCH_DATA_C 6
#define LATCH_DATA_D 7

/* Macro d'usages */
#define afficheurOn() digitalWrite(BLANK_INPUT, LOW)
#define afficheurOff() digitalWrite(BLANK_INPUT, HIGH)

void affichage(uint8_t valeur) {
  valeur &= 0x0F; // Sécurité : 0 < valeur < 15
  
  /* Envoi des données sur le latch */
  digitalWrite(LATCH_DATA_A, bitRead(valeur, 0));
  digitalWrite(LATCH_DATA_B, bitRead(valeur, 1));
  digitalWrite(LATCH_DATA_C, bitRead(valeur, 2));
  digitalWrite(LATCH_DATA_D, bitRead(valeur, 3));
  
  /* Affichage des données */
  delayMicroseconds(100);
  digitalWrite(LATCH_STROBE, LOW);
  delayMicroseconds(100);
  digitalWrite(LATCH_STROBE, HIGH);
}

void setup() {
  pinMode(LATCH_STROBE, OUTPUT);
  pinMode(BLANK_INPUT, OUTPUT);
  
  pinMode(LATCH_DATA_A, OUTPUT);
  pinMode(LATCH_DATA_B, OUTPUT);
  pinMode(LATCH_DATA_C, OUTPUT);
  pinMode(LATCH_DATA_D, OUTPUT);
  
  afficheurOff();
}

void loop() {
  static byte i = 0;
 
  affichage(i++);
  if(i > 15) i = 0;
  
  delay(1000);
}

(Si ça marche fait le moi savoir ;))

Atton_666: Tu as pu tester mon code ? :slight_smile:

Je l'ai pas le composant moi xD

B@tto:
Je l'ai pas le composant moi xD

Oups ... #FAIL :sweat_smile:

Salut,
Vraiment désolé de mon absence j'ai été très occupé par mes études et donc je n'ai pas pu avancer sur Arduino. Pour le code je teste ça ce soir et je dirai comment ça réagi.

Merci pour votre aide et encore désolé.

Atton_666:
Vraiment désolé de mon absence j'ai été très occupé par mes études et donc je n'ai pas pu avancer sur Arduino. Pour le code je teste ça ce soir et je dirai comment ça réagi.

Pas de probléme, les études c'est le plus important :wink:

... minute mais qu'est ce que je fou sur le forum au lieu de réviser mes partiels ? :zipper_mouth_face:

Bonsoir,

J'ai testé et tout fonctionne parfaitement bien.

Merci infiniment pour l'aide et surement à bientôt sur le forum ^^

Atton_666:
J'ai testé et tout fonctionne parfaitement bien.

Merci infiniment pour l'aide et surement à bientôt sur le forum ^^

Pas de quoi :wink:

Au passage j'ai publié le morceau de code sur mon blog (il y a déja quelque temps) :

Et j'ai aussi fait un exemple d'utilisation en "condition réel" :