์ ๋ธ๋ก๊ทธ์ ํฌ์คํ ํ๋ ๋ด์ฉ์ธ๋ฐ ์ข ์ด๋ ค์ด ๋ด์ฉ์ด๋ผ์ ์ด๊ฑธ ์๊ฐํด์ผํ๋ ๋จ๊ฐํ์ง๋ง 7 Segment LED์ ์ฐ๊ฒฐ๋๊ธฐ ๋๋ฌธ์ ์ต๋ํ ๊ฐ๋จํ๊ฒ๋ง ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์ด์ ์๊ฐ์ 7 Segment LED ์ ์ด๋ฅผ ๋ฐฐ์ ์ต๋๋ค. ์ด๊ฑธ ์ฌ์ฉํ๊ธฐ ์ํด์ ์ด 8ํ์ ์๋์ด๋ ธ์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค. ๋ฌธ์ ๋ 2๊ฐ ์ด์์ 7 Segment LED๋ฅผ ์ ์ดํ ๊ฒฝ์ฐ ์๋์ด๋ ธํ์ด ๋ถ์กฑํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋์ ์๋์ด๋ ธ ์ฌ์ฉ๋๋ ํ์ ์ค์ผ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ค๋ณด๋๊น ์ฌ๋ฌ ์นฉ์ค์ ์ฌํํธ๋ ์ง์คํฐ๋ผ๋ ์นฉ์ ์๊ฒ ๋์์ผ๋ฉฐ ์จ๋ผ์ธ ๊ฐ์์๋ฎฌ๋ ์ดํฐ์์๋ ๋ชจ๋ธ๋ช 75HC595์นฉ(์ฌํํธ๋ ์ง์คํฐ)์ด ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ์ด ์นฉ์ ์ด์ฉํด์ ์ ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์นฉ๋ง๋ณด๋ฉด์ ํ๊ฐ๋ฆฝ๋๋ค. ์ค์ ๋ก ์นฉ์ ๊ตฌ๋งคํ์ค๋ ๋ฐ์ดํฐ์ํธ๋ฅผ ๊ผญ ์ธํฐ๋ท์์ ์ฐพ์ผ์
์ ์ดํด๋ด์ผ ํฉ๋๋ค. ๋ฌผ๋ก ์ ๋ฐ์ดํฐ์ํธ๋ฅผ ๋ณด๊ธฐ๊ฐ ์ฐธ ํ๋ค๋๊ตฐ์. ๊ฐ๋จํ ์นฉ๊ตฌ์ฑ๊ณผ ํ ์ฐ๊ฒฐ๋ก ๋์ถฉ ์ด ์นฉ์ ์๋์๋ฆฌ๋ง ์ดํดํ๊ณ ์ฌ์ฉํด ๋ณด์์ต๋๋ค. ์ฐธ๊ณ ๋ก ์นฉ์ ์ฌ์ฉํ์ค๋ ์นฉ์ ์ฌ์ฉ๋๋ ์ ์์ ๊ผญ ํ์ธํ์๊ณ ์จ์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์นฉ์ด ๋ง๊ฐ์ง ์ ์์ด์ ์กฐ์ฌํด์ ๋ค๋ฃจ์
์ผ ํฉ๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก 3๊ฐ์ ํ์ ์ฌ์ฉํ์ฌ ๊ฒฐ์ ํ, ํด๋ญํ, ๋ฐ์ดํฐํ์ผ๋ก ํด์ ์ด ์นฉ์ ์ ์ดํ ์ ์์ต๋๋ค. ๊ฐ๋ น 2๊ฐ ์ด์์ 75HC595๋ฅผ ์ฌ์ฉํด๋ 3ํ๋ง์ผ๋ก ์ง๋ ฌ์ฐ๊ฒฐ์ ํตํด ์ ์ด๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ์ด๊ฑด ๋ค์์ ์๊ฐํ๊ณ ํ์ฌ ์ด ์นฉ์ ์๋์ด๋ ธ์์ ์ ์ดํ๋๊ฒ ๊ฐ์ฅ ์ค์ํฉ๋๋ค.
์นฉ์ด ์ ๋ฉด์ผ๋ก ๋์ด ์๊ธฐ ๋๋ฌธ์ ์นฉ์ ํ์ ์์ผ์ผํฉ๋๋ค. ๊ทธ๋ฆผ์ ์ ๋ณด์๋ฉด ๋ค์ง์ด์ ธ์๋๊ฑธ ๋ณด์ค๊บผ์์. ๋ง์ฐ์ค๋ก ํด๋น์นฉ์ ๋์ ์ ๋๋ฉด ํ์ด๋ฆ์ด ๋ํ๋ฉ๋๋ค. 5V์ Gnd์ ๊ทธ๋ฆผ์์ ๋ณด๋๊ฒ์ฒ๋ผ ๋์ผํ๊ฒ ๋ฐฐ์นํ์๋ฉด ๋ฉ๋๋ค.
์ฐธ๊ณ ๋ก Q0์ด ๊ธฐ๋ฆ์์ ๋ณด๋๊ฒ์ฒ๋ผ ํ๋จ์ ์์ด์ ์ง๋์๊ฐ์ ๋ฐฐ์ด๋ฐ๋ก A~Gํ๊ณผ DPํ์ ์์ฐจ์ ์ผ๋ก Q0~Q7๊น์ง ์ฐ๊ฒฐํ๋ฉด ์ ์ด ์์ด๋ป์ Q0์ ๊ทธ๋ฅ DPํ(์ LED)์ผ๋ก ํ๋ค์. ๋๋จธ์ง Q1~Q7์ A~Gํ์ผ๋ก ์ฐ๊ฒฐํ์ต๋๋ค. ๊ทธ๋์ ๋ฐฐ์ด๋ณ์๊ฐ๋ค์ด ์ง๋์๊ฐ์ ์ ๋๋ก ์ดํด ๋ชปํ์ จ๋ค๋ฉด ์ฝ๊ฐ ํผ๋๋์ค๊บผ์์.
์ด๊ฑธ๋ฐฐ์ด๋ณ์๋ก ํ๋ฉด
byte data[]={
0B10000001,
0B11110010,
0B01001001,
0B01100000,
0B00110011,
0B00100100,
0B00000101,
0B11110000,
0B00000001,
0B00100000
};
์๋ง ์ง๋์๊ฐ์ ์๊ฐํ๋ฉด 2์ฐจ ๋ฐฐ์ด๋ณ์๋ก ์๊ฐํ์
จ๋ ๋ถ๋ ์์๊บผ์์. ์ด๊ฑด ํ๋์ ๊ฐ์ผ๋ก ํํ์ด ๊ฐ๋ฅํฉ๋๋ค.
์ด๊ฑธ 16์ง์๋ก ํ๋ฉด 0x81 ์ด ๋ฉ๋๋ค. ๋ฐ์ดํฐ์ซ์๊ฐ์ผ๋ก ํํ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ด ๊ฐ์ 2์ง์ ๋นํธ๋ก ํด์ ๋ค์ ํํํ๋ฉด ์ ๋ฐฐ์ด์ฒ๋ผ ๋ํ๋๊ฒ ๋ฉ๋๋ค. ์ ํํ์ ๊ธฐ๊ณ๊ฐ ์ดํดํ๊ธฐ ์ฌ์ด ์ซ์ํํ์
๋๋ค.
์ง๋ฒ์ ์์์ผํ๋ ๊ฐ๋จํ ์ค๋ช
ํ์๋ฉด
10000001 ์ ํจํด์ด๊ณ 2์ง์์
๋๋ค.
1000 0001๋ก 4๊ฐ์ฉ ์ชผ๊ฐ์ 16์ง์๋ก ๋ํ๋
๋๋ค.
8๊ณผ 1๋ก ํํ๋ฉ๋๋ค.
0001=>1
0010=>2
0011=>3
.....
์๋ 8421 ํ๋ฅผ ์์งํด์ผ ํ๋๋ฐ ํ์ฌ ์ด๊ฒ์ด ์ค์ํ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๋์ถฉ ๋ค๊ฐ๋ก ๋ฌถ์ผ๋ฉด 16์ง์ 3๊ฐ์ฉ ๋ฌถ์ผ๋ฉด 8์ง์๋ผ๋ ์ ๋๋ก ์๋ฏธ๋ง ์ดํดํ์ธ์.
16์ง์๋ก ๋ฐฐ์ด๋ณ์ ๊ฐ์ ํ๋ค๋ฉด 0x81๋ก ํํํด์ ์ ์ฅํด๋ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋์ต๋๋ค. ๊ทธ๋ฅ ์ดํดํ๊ธฐ ์ฝ๊ฒ ์ ๋ฐฐ์ด๋ณ์์ ํ์์ผ๋ก ์ดํดํ์
์ ์ฝ๋ฉํ์ธ์.
10์ง์๊ฐ ์๋ ๊ธฐ๊ณ๊ฐ ์ดํดํ๊ธฐ ์ฌ์ด ์ซ์ํํ๋ก ํํํ๋ค๊ณ ์๊ฐํ์ธ์.
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
digitalWrite(latchPin, LOW); //์ด๋ฆผ
shiftOut(dataPin, clockPin, MSBFIRST, data[i]); //ํจํด์
๋ ฅ
digitalWrite(latchPin, HIGH); //๋ซํ
74HC595์นฉ(Q0~Q7) => 7 Segment LED(DP,A~G) ์ถ๋ ฅ
byte data[]={
0B10000001,
0B11110010,
0B01001001,
0B01100000,
0B00110011,
0B00100100,
0B00000101,
0B11110000,
0B00000001,
0B00100000
};
int latchPin = 11; //ST_CP Pin
int clockPin = 12; //SH_CP Pin
int dataPin = 9; //DS Pin
void setup(){
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop(){
for(int i=0;i<10;i++){
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, data[i]);
digitalWrite(latchPin, HIGH);
delay(1000);
}
}
3ํ์ ์ด์ฉํ์ฌ 74HC595 ์นฉ์ ์ ์ดํ์ฌ 7 Segment LED์ ์ถ๋ ฅํ์์ต๋๋ค. ์ฌํํธ ๋ก์ง์ ์ฌ์ค ์ข ๋ณต์กํฉ๋๋ค. ์ฝ๋ฉ ๋ ํด๋ฅ๋ ฅ์ด ์์ด์ผ ํ๋ ๋ถ๋ถ์์ผ๋ก ๊ทธ๋ฅ ํจ์๋ช ๋ง ์ดํดํด ์ฃผ์ธ์. ์์ ์ฐธ๊ณ ์ถ์ฒ ๊ฐ์๋ฉด ํํ ๋ฆฌ์ผ๋ก ์ฌํํธ ํจ์์ ๋ก์ง์ ์ดํด๋ณผ ์ ์์ต๋๋ค. ๋ ํด๋ฅ๋ ฅ์ด ๋์๋ฉด ์ด๋ค์์ผ๋ก 74HC595 ์นฉ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋์ง ํ์ธํ์ค ์ ์์ ๊บผ์์.
์ฝ๋ฉ์ ์์ ์๋๋ถ๋ค์ ๋ณธ์ธ์ด ์ง์ ๋ก์ง์ ์ง๋๋ถ๋ค๋ ์์ง๋ง ์ด๋ณด๋ถ๋ค์ ๊ทธ๋ฅ ์๋ ํจ์๋ง ์ ์ฌ์ฉํ์ฌ ์ํ๋ ๋์์ ์ํํ๋๊ฒ ์ค์ํฉ๋๋ค.
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, data[i]);
digitalWrite(latchPin, HIGH);
์ด๊ฒ์ด ์ฝ๋ฉ์ ์ ๋ถ์ ๋๋ค. ์ด๊ฑธ ํตํด์ 74HC595 ์นฉ์ ์ ์ดํ ์ ์์ด์ ์ฝ๊ฒ ์ํ๋ ๊ธ์๋ ์ซ์๋ฅผ 7 Segment LED์ ์ถ๋ ฅ์ ํ ์ ์๋ ๊ฒ์ด์ฃ .
์ด ์ธ์ค๋ง ์ดํดํ์๋ฉด ๋ฉ๋๋ค.
์ด๋ฆผ
์ฌํํธ๋ ์ง์คํธ์ ๋ฐ์ดํฐ ์ ์ก
๋ซํ
์ด ๋ฌธ์ฅ๋ง ์์งํ์๊ณ ํ๋ฒ ์ด ์ธ์ค์ ๊ฐ์ง๊ณ ๋ญ ๋ง๋ค์ง ์์์ ๋๋๋ฅผ ํผ์ณ๋ณด์ธ์.