반응형

 【 아두이노 센서#10】 나이트 라이더 만들어보기


지난시간 시프트 레지스터의 개념(시프트 레지스터 이해하기☜클릭)과 홀 수 번째 LED를 켜보는 실습(시프트 레지스터 실습1☜클릭)을 해 보았다. 


 오늘은 조금 응용해서 Light Rider 라는 것을 만들어 볼 것이다. 


오래전 한국에 방영된 전격Z작전과 리메이크작 미드 Knight Rider 에서 이름을 따서 Light Rider라 지었다. 드라마에서 '키트'라고 불리는 인공지능 무적 스포츠카 앞부분에 달린 LED의 동작 형태를 따라 만든 것이다. 


 지금은 구리(?)지만... 센세이셔널 했던 당시 미드를 잠시 감상해보자





▶ 실험에 사용되는 74HC595 IC 자료



《 74HC595 IC 핀배열》


▶ 실습 목표 :  


1. 8bit 시프트 레지스터 IC 이기 때문에, LED 8개를 연결한다. 

 

2. LED의 불 빛 하나가 좌에서 우로, 다시 우에서 좌로 연속으로 이동하듯 켜지는 동작이 반복되도록 한다. 



▶ 실습 회로도면 :

  (이미지 클릭하면 확대 가능)





(괄호 안은 2단으로 연결할 경우 필요 수량)





▶ 실습 절차  : 

1. 위 회로 연결 도면을 보며 착오가 없도록 연결해준다. LED의 +, - 극성 방향에 주의 해서 연결한다. 

2. 저항은 LED를 보호해 줄 수 있는 저항 값을 달아주면 되기에 가지고 있는 저항 중에 100Ω~470Ω 사이의 저항값이 있으면, 어떤 것이든 사용가능하다. 


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);              //LATCHLOW 입력

   shiftOut(SER, CLK, MSBFIRST, seq[i]); // 배열의 인덱스(i) 값 전송

   digitalWrite(LATCH, HIGH);             //LATCHHIGH 입력

   delay(100);                                     // delay값으로 LED켜지는 속도 조절

   }   

}



1.  프로그램 코드를 파악할 때 맨 위쪽 《74HC595 핀배열 을 참고해서 본다면 파악하기가 훨씬 쉽다. 
2.  int 변수 선언에서 'const int' 라고 선언을 하면, 선언된 변수의 내용 값이 프로그램 내에서 어떤 계산이나 착오에 의해 변하는 것을 막고 싶을 때 선언하는 것이다. 때문에 이런 염려가 없을 경우는 그냥 'int' 로 선언 하면 된다. 

3.  "int seq[14]={1,2,4 ... "을 살펴보자, LSB(최하위비트)에서 MSB(최상위비트)로 LED가 하나씩만 켜질 수 있는 10진 값을 배열형태로 잡아 놓은 것이다. 최상위비트(값:128)를 켠 다음에는 다시 하위비트로 내려가는 방향으로 배열이 구성되어 있다.


▶ 실행 결과 :

 (영상은 고화질로 설정하고 전체화면으로 보세요)



▶ 아두이노 파일(다운) :

Latch_LightRider.ino


반응형