Bonjour tout le monde,
Je bosse sur un projet d'afficheur 7segments 12volt et j'ai un petit soucis de tension...
Voilà le schéma électrique qui devrait être assez clair
J'utilise la broche "Blanking" des décodeurs pour afficher ou non mes chiffres. Les transistors sont des BC557B.
Et voici mon code :
#include <Wire.h>
byte digits[10] = {
B00000000 ,
B10000000 ,
B01000000 ,
B11000000 ,
B00100000 ,
B10100000 ,
B01100000 ,
B11100000 ,
B00010000 ,
B10010000
};
byte aff[3] = {
B00000000 ,
B00000001 ,
B00000010 ,
};
long unsigned tmpspresent = 0;
long unsigned temps = 0;
int intervalle = 1000;
byte seconde = 0;
void setup() {
Wire.begin(); //creates a Wire object
void loop() {
tmpspresent = millis();
if (tmpspresent - temps >= intervalle) {
temps = tmpspresent;
seconde ++;
if (seconde >= 100) {
seconde = 0;
}
}
decoupageNombre(seconde);
}
void decoupageNombre(int seconde)
{
byte numero = 0;
byte unite = seconde %10;
byte dizaine = seconde /10;
numero = 2;
afficherChiffre(dizaine, numero);
delay(1);
numero = 1;
afficherChiffre(unite, numero);
delay(1);
}
void afficherChiffre(byte chiffre, byte numero)
{
byte x = chiffre;
byte y = numero;
Wire.beginTransmission(0x20); //starts talking to slave device
Wire.write(0x13); //selects the GPIOB pins
Wire.write(B00000011); //turns on pin 0 of GPIOB
Wire.endTransmission();//ends communication with the device
Wire.beginTransmission(0x20); //starts talking to slave device
Wire.write(0x12); //selects the GPIOA pins
Wire.write(digits[x]); // turns on pins 0 and 1 of GPIOA
Wire.endTransmission(); //ends communication with the device
Wire.beginTransmission(0x20); //starts talking to slave device
Wire.write(0x13); //selects the GPIOB pins
Wire.write(aff[y]); //turns on pin 0 of GPIOB
Wire.endTransmission();//ends communication with the device
}
Ce code ne sert qu'a compter les secondes sur 2 afficheurs mais à terme, je vais afficher l'heure et un score avec un total de 8 afficheurs.
Mon soucis est qu'il y a une baisse de tension au borne des leds ce qui engendre une luminosité bien trop faible. Avec le code ci-dessus j'ai 6volts aux borne de mes leds mais j'ai remarqué que en passant la fréquence de rafraichissement des afficheurs de 1milliseconde à 1seconde (dans le "void decoupageNombre") j'obtiens 12v. Évidemment 1seconde de rafraichissement c'est nul pour afficher mes chiffres...
Avez-vous une idée de la source de mon problème ? Problème de câblage, programmation... ?
