Olika metoder för att köra 7 Segment LED visar med Arduino (5 / 5 steg)
Steg 5:
5 - multiplexed via skiftregister från Arduino / Atmega 328 / Potentiometer counter
Potentiometer för att öka och minska en räknare mellan noll och åtta
Koden
7-segment LED counter, multiplexering med 74HC595 8-bitars SKIFT register, steg counter noll till åtta noll via potentiometer
Koden sargade tillsammans från dessa källor - tack grabbar
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; PIN ansluten till Pin 12 i 74HC595 (spärr)
CONST int dataPin = 6; PIN ansluten till Pin 14 i 74HC595 (Data)
CONST int clockPin = 7. PIN ansluten till Pin 11 i 74HC595 (klocka)
int counter = 0; initialisera counter som noll
int potReading = 0;
CONST byte nummer [10] = / / beskriva varje siffra i form av skärm segment 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
{
B11111100,
B01100000,
B11011010,
B11110010,
B01100110,
B10110110,
B10111110,
B11100000,
B11111110,
B11100110,
};
void setup()
{
pinMode (latchPin, produktionen); ställa in SR pins till utgång
pinMode (clockPin, produktionen);
pinMode (dataPin, produktionen);
}
void loop()
{
potReading = analogRead (A0);
potReading = karta (potReading, 0, 1023, 0, 8);
{
IF(potReading > 8)
potReading--;
Show(Numbers[potReading]);
}
{
IF(potReading < 0)
potReading ++;
Show(Numbers[potReading]);
}
}
void Visa (byte nummer)
{
Använda en slinga och en bitvis AND för att flytta över varje bit som gör upp
de sju segment display (från vänster till höger, A = > G), och kolla
om det ska vara på eller inte
för (int j = 0; j < = 7; j ++)
{
byte toWrite = antal & (B10000000 >> j);
IF(!toWrite) {
fortsätta;
} / / Om alla bitar är 0 då ingen mening med att skriva det till skiftregister, så bryter ut och gå vidare till nästa segment.
shiftIt(toWrite); Annars skifta det in i registret
}
}
void shiftIt (byte data)
{
digitalWrite (latchPin, låg); Ange latchPin låg vid klockning dessa 8 bitar till registret
för (int k = 0; k < = 7; k ++)
{
digitalWrite (clockPin, låg); clockPin låg innan du skickar lite
I vårt fall, vi ska ställa pinState till 0 (låg) för
"På" som 74HC595 sjunker nuvarande när du använder en gemensam
anod display. Om du vill använda en gemensam katod display sedan
byta detta runt.
om (data & (1 << k))
{
digitalWrite (dataPin, hög); slå "På"
}
annat
{
digitalWrite (dataPin, låg); Inaktivera ""
}
digitalWrite (clockPin, hög); och klockan lite i
}
digitalWrite (clockPin, låg); sluta att flytta ut data
digitalWrite (latchPin, hög); latchPin har angetts till hög att låsa och skicka data
}