Outils pour utilisateurs

Outils du site


wiki:projets:matrice-ferofluide

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
wiki:projets:matrice-ferofluide [2014/10/17 21:38]
karang
wiki:projets:matrice-ferofluide [2020/10/05 14:37] (Version actuelle)
Ligne 12: Ligne 12:
  
 Le circuit est basé sur un driver de leds 7-segments : le [[http://tronixstuff.com/wp-content/uploads/2011/07/nxp-saa1064.pdf|SAA1064]]. Le circuit est basé sur un driver de leds 7-segments : le [[http://tronixstuff.com/wp-content/uploads/2011/07/nxp-saa1064.pdf|SAA1064]].
 +
 +{{ :wiki:projets:saa1064.jpg?300 |}}
  
 Le driver communique en i2c. La première étape est de suivre les pistes pour savoir où connecter l'arduino. Les physiciens de l'UPMC qui ont conçu ce circuit, nous ont simplifié la vie : on trouve sur le bord de la carte, 4 connecteurs femelles correspondant à SCL, SDA, +5V, GND. Le driver communique en i2c. La première étape est de suivre les pistes pour savoir où connecter l'arduino. Les physiciens de l'UPMC qui ont conçu ce circuit, nous ont simplifié la vie : on trouve sur le bord de la carte, 4 connecteurs femelles correspondant à SCL, SDA, +5V, GND.
Ligne 23: Ligne 25:
  
 Là encore les concepteurs du circuit ont rendus cela paramétrable grâce à 3 cavaliers qui réalisent des combinaisons de 3 résistances (10kOhm, 22kohm, 18kohm). On peut déterminer quel cavalier sélectionne quelle adresse avec la formule du diviseur de tension : R2/(R1+R2). Là encore les concepteurs du circuit ont rendus cela paramétrable grâce à 3 cavaliers qui réalisent des combinaisons de 3 résistances (10kOhm, 22kohm, 18kohm). On peut déterminer quel cavalier sélectionne quelle adresse avec la formule du diviseur de tension : R2/(R1+R2).
 +
 +  * 0x70 -> Cavalier 2
 +  * 0x72 -> Aucun cavalier
 +  * 0x74 -> Cavalier 1
 +  * 0x76 -> Cavalier 3
 +
 +Avant de tester sur le circuit de la matrice, nous testons le driver sur un circuit trouvé dans la boîte (surement le circuit d'origine du driver), qui possède 4 afficheurs 7 segments.
 +
 +Nous utilisons le code Arduino suivant:
 +
 +<code=cpp>
 +/*
 +  * Programme de Test pour le projet
 +  * matrice d'electroaimants
 +  */
 +
 +#include "Wire.h" // Bibliothèque I2C pour Arduino
 +
 +byte saa1064 = 0x70 >> 1; // Adresse I2C du driver (le décallage est important)
 +
 +// Codes pour les chiffres de 0 à 9 et les caractères de A à F
 +int digits[16] = {63, 6, 91, 79, 102, 109, 125,7, 127, 111, 119, 124, 57, 94, 121, 113};
 +
 +void setup() {
 +  Wire.begin(); // On lance le bus
 +  delay(500);
 +  initDisplay();
 +}
 +void initDisplay() {
 +  Wire.beginTransmission(saa1064);
 +  Wire.write(B00000000); // Le prochain byte est le byte de contrôle
 +  Wire.write(B01000111);
 +  Wire.endTransmission();
 +}
 +void displayDigits() {
 +  // Affiche les chiffre de 0 à 9 plus les caractères A à F
 +  for (int z=0; z<16; z++) {
 +    Wire.beginTransmission(saa1064);
 +    Wire.write(1); // On envoi des données
 +    Wire.write(digits[z]); // digit 1 (RHS)
 +    Wire.write(digits[z]); // digit 2
 +    Wire.write(digits[z]); // digit 3
 +    Wire.write(digits[z]); // digit 4 (LHS)
 +    Wire.endTransmission();
 +    delay(500);
 +  }
 +  // Affiche les chiffre de 0 à 9 plus les caractères A à F, avec un point
 +  for (int z=0; z<16; z++) {
 +    Wire.beginTransmission(saa1064);
 +    Wire.write(1); // On envoi des données
 +    Wire.write(digits[z]+128); // digit 1 (RHS)
 +    Wire.write(digits[z]+128); // digit 2
 +    Wire.write(digits[z]+128); // digit 3
 +    Wire.write(digits[z]+128); // digit 4 (LHS)
 +    Wire.endTransmission();
 +    delay(500);
 +  }
 +}
 +void clearDisplay() {
 +  Wire.beginTransmission(saa1064);
 +  Wire.write(1); // On envoi des données
 +  Wire.write(0); // digit 1 (RHS)
 +  Wire.write(0); // digit 2
 +  Wire.write(0); // digit 3
 +  Wire.write(0); // digit 4 (LHS)
 +  Wire.endTransmission();
 +}
 +
 +void loop() {
 +  displayDigits();
 +  clearDisplay();
 +  delay(1000);
 +}
 +</code>
 +
wiki/projets/matrice-ferofluide.1413581922.txt.gz · Dernière modification: 2016/09/11 10:50 (modification externe)