【 아두이노 센서#10】 나이트 라이더 만들어보기
지난시간 시프트 레지스터의 개념(시프트 레지스터 이해하기☜클릭)과 홀 수 번째 LED를 켜보는 실습(시프트 레지스터 실습1☜클릭)을 해 보았다.
오늘은 조금 응용해서 Light Rider 라는 것을 만들어 볼 것이다.
오래전 한국에 방영된 전격Z작전과 리메이크작 미드 Knight Rider 에서 이름을 따서 Light Rider라 지었다. 드라마에서 '키트'라고 불리는 인공지능 무적 스포츠카 앞부분에 달린 LED의 동작 형태를 따라 만든 것이다.
지금은 구리(?)지만... 센세이셔널 했던 당시 미드를 잠시 감상해보자
▶ 실험에 사용되는 74HC595 IC 자료
《 74HC595 IC 핀배열》
▶ 실습 목표 :
1. 8bit 시프트 레지스터 IC 이기 때문에, LED 8개를 연결한다.
2. LED의 불 빛 하나가 좌에서 우로, 다시 우에서 좌로 연속으로 이동하듯 켜지는 동작이 반복되도록 한다.
▶ 실습 회로도면 :
(이미지 클릭하면 확대 가능)
(괄호 안은 2단으로 연결할 경우 필요 수량)
3. IC가 동작하기 위한 전원(vcc-16번, Gnd-8번)은 반드시 인가 되어야 동작이 되며, 만약 +,-를 정반대로 인가할 경우 IC가 손상될 수 있으니 주의한다.
▶ 프로그램 코드 및 설명 :
const int SER=8; // 아두 8핀 <-> 595IC Serial Data (14핀)
const int LATCH=9; // 아두 9핀 <-> 595IC Latch CLK (12핀)
const int CLK= 10; // 아두 10핀 <-> 595IC Shift CLK (11핀)
// LED 점등을 위해 10진수로 계산한 값을 배열로 저장
int seq[14]={ 1, 2, 4, 8, 16, 32, 64, 128, 64, 32, 16, 8, 4, 2 };
void setup() {
//시프트 레지스터에 연결된 각 핀의 입출력 모드를 출력으로 지정
pinMode(SER, OUTPUT);
pinMode(LATCH, OUTPUT);
pinMode(CLK, OUTPUT);
}
void loop() {
for (int i=0; i <14; i++) {
digitalWrite(LATCH, LOW); //LATCH에 LOW 입력
shiftOut(SER, CLK, MSBFIRST, seq[i]); // 배열의 인덱스(i) 값 전송
digitalWrite(LATCH, HIGH); //LATCH에 HIGH 입력
delay(100); // delay값으로 LED켜지는 속도 조절
}
}
▶ 실행 결과 :
(영상은 고화질로 설정하고 전체화면으로 보세요)
▶ 아두이노 파일(다운) :
'아두이노 > 2. 아두이노센서' 카테고리의 다른 글
【 아두이노 센서#12】 시프트레지스터 Bit(연산자)제어 실습 (0) | 2018.12.19 |
---|---|
【 아두이노 센서#11】 시프트레지스터 2단 연결하기 나(Daisy Chain) (0) | 2018.12.17 |
【 아두이노 센서#9】 시프트 레지스터 이해하기 실습1 (0) | 2018.12.13 |
【 아두이노 센서#8】 시프트 레지스터 이해하기 (Shift Register) (0) | 2018.12.12 |
【 아두이노 센서#7】 I2C LCD로 TMP36 온도센서값 출력하기 #3 (0) | 2018.12.11 |