Ci-dessous, les différences entre deux révisions de la page.
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:// | Le circuit est basé sur un driver de leds 7-segments : le [[http:// | ||
+ | |||
+ | {{ : | ||
Le driver communique en i2c. La première étape est de suivre les pistes pour savoir où connecter l' | Le driver communique en i2c. La première étape est de suivre les pistes pour savoir où connecter l' | ||
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' | ||
+ | |||
+ | Nous utilisons le code Arduino suivant: | ||
+ | |||
+ | < | ||
+ | /* | ||
+ | * Programme de Test pour le projet | ||
+ | * matrice d' | ||
+ | */ | ||
+ | |||
+ | #include " | ||
+ | |||
+ | 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(); | ||
+ | delay(500); | ||
+ | initDisplay(); | ||
+ | } | ||
+ | void initDisplay() { | ||
+ | Wire.beginTransmission(saa1064); | ||
+ | Wire.write(B00000000); | ||
+ | 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); | ||
+ | Wire.write(digits[z]); | ||
+ | Wire.write(digits[z]); | ||
+ | Wire.write(digits[z]); | ||
+ | Wire.write(digits[z]); | ||
+ | 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); | ||
+ | Wire.write(digits[z]+128); | ||
+ | Wire.write(digits[z]+128); | ||
+ | Wire.write(digits[z]+128); | ||
+ | Wire.write(digits[z]+128); | ||
+ | Wire.endTransmission(); | ||
+ | delay(500); | ||
+ | } | ||
+ | } | ||
+ | void clearDisplay() { | ||
+ | Wire.beginTransmission(saa1064); | ||
+ | Wire.write(1); | ||
+ | Wire.write(0); | ||
+ | Wire.write(0); | ||
+ | Wire.write(0); | ||
+ | Wire.write(0); | ||
+ | Wire.endTransmission(); | ||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | displayDigits(); | ||
+ | clearDisplay(); | ||
+ | delay(1000); | ||
+ | } | ||
+ | </ | ||
+ |