Étape 5 :
5 - multiplexés via le registre à décalage de Arduino / Atmega 328 / compteur de potentiomètre
Potentiomètre utilisé pour incrémenter et décrémenter un compteur entre zéro et huit
Code
Compteur de LED 7 segments, multiplexage en utilisant 74HC595 8-bit shift register, compteur d’incrémentation zéro à huit à zéro par potentiomètre
Code mutilé de l’ensemble de ces sources - les gars merci
http://www.Sweeting.org/Mark/blog/2011/11/27/Arduino-74hc595-Shift-Register-and-a-7-segment-LED-Display
http://thecustomgeek.com/2011/06/29/multiplexing-for-a-7-Year-Old/
const int latchPin = 5 ; Broche reliée à la broche 12 de 74HC595 (Latch)
const int dataPin = 6 ; Broche reliée à la broche 14 du 74HC595 (données)
const int clockPin = 7 ; Broche reliée à la broche 11 du 74HC595 (horloge)
int compteur = 0 ; initialiser le compteur à zéro
int potReading = 0 ;
nombres de const byte [10] = / / décrire chaque chiffre en ce qui concerne l’affichage des segments 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
{
B11111100,
B01100000,
B11011010,
B11110010,
B01100110,
B10110110,
B10111110,
B11100000,
B11111110,
B11100110,
};
void setup()
{
pinMode (latchPin, sortie) ; Réglez de façon strictement SR à la sortie
pinMode (clockPin, sortie) ;
pinMode (dataPin, sortie) ;
}
void loop()
{
potReading = analogRead (A0) ;
potReading = carte (potReading, 0, 1023, 0, 8) ;
{
if(potReading > 8)
potReading--;
Show(Numbers[potReading]) ;
}
{
if(potReading < 0)
potReading ++ ;
Show(Numbers[potReading]) ;
}
}
Voir la Sub (nombre d’octets)
{
Utilisez une boucle et une opération de bits AND pour déplacer sur chaque bit qui composent
les sept segment (de gauche à droite, A = > G) et vérifier
pour voir si elle doit être sur ou non
pour (int j = 0; j < = 7; j ++)
{
Ver de l’octet = nombre & (B10000000 >> j) ;
{if(!toWrite)}
continuer ;
} / / Si tous les bits sont 0, alors inutile d’écrire dans le registre à décalage, donc éclater et passer au segment suivant.
shiftIt(toWrite) ; Dans le cas contraire le décalent dans le registre
}
}
void shiftIt (données d’octets)
{
digitalWrite (latchPin, basse) ; La valeur de latchPin basse tout en synchronisant ces 8 bits le registre
pour (int k = 0; k < = 7; k ++)
{
digitalWrite (clockPin, basse) ; clockPin bas avant de lui envoyer un peu
Notez que dans notre cas, nous devons définir pinState sur 0 (bas) pour
« On » comme 74HC595 s’enfonce actuel lorsque vous utilisez un commun
affichage de l’anode. Si vous souhaitez utiliser un affichage de cathode commune puis
ce qui entoure l’interrupteur.
Si (données & (1 << k))
{
digitalWrite (dataPin, HIGH) ; « allumer »
}
d’autre
{
digitalWrite (dataPin, basse) ; « désactiver »
}
digitalWrite (clockPin, HIGH) ; et le peu d’horloge
}
digitalWrite (clockPin, basse) ; arrêter le déplacement de données
digitalWrite (latchPin, HIGH) ; la valeur latchPin élevé de verrouiller et d’envoyer des données
}