정보나눔

오픈소스하드웨어 프로젝트에 대한 다양한 정보를 나누는 공간입니다.

이 회로도의 74HC595의 역할과 아두이노 핀에 대해 이해가 안가네요 ㅠㅠ
이현우 | 2015-08-11

 

1) 여기서 아두이노의 Data pin 74HC595의 14번핀으로 들어가는 이유는 설계자가 아두이노에서 스케치한 데이터를 입력하기 위함인거죠?

2) Clock에서 나와서 74HC595의 11번 핀으로 들어가는 이유는 코코아팹 튜토리얼 게시판(?)에 포스팅된 글에서 봤었는데 "규칙적인, 정확한 데이터를 전달하기 위해서는 클럭을 공급하여 동기화를 해주어야 합니다" 라고 쓰여있더라구요. 근데 그 이유가 여기서 11번 핀으로 들어가는 그 이유와 동일한 것인지 잘 몰라서 맞는지 확인차 여쭤볼게요 ;

3) Latch는 데이터를 잡아주는(일종의 저장) 역할이라서 12번 핀에 들어간 것 같긴 한데...

왜 저렇게 연결하였는지 아두이노와 74hc595에 대해 설명해주시면 정말 감사하겠습니다. ㅠㅠ

 


"아두이노 스케치 코드"

int dataPin = 13;
int latchPin = 12;
int clockPin = 11;   // 이렇게 전역변수로 선언해주었습니다.


long previousMillis = 0;  // Delay 보조


int analogOut = 10;         // 밝기조절용 PWM
int level[4] = {5,4,3,2};          // 2 : 1st, 3 : 2nd, 4 : 3rd, 5 : 4th floor
int value = 0;    // LED 임시 변수
int value2 = 0;    // LED 임시 변수2

void setup(){
  pinMode(dataPin, OUTPUT);
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);
  analogWrite(analogOut,0);  // 74HC595 /OE=LOW는 Active 
  Serial.begin(9600);

void loop(){
  //ani_indi();
  ani_test();
  /*ani_col_con();
  ani_row_con();
  ani_hight_con();
  for(int i=0;i<5;i++){
    bright_con();
   i++;
  }
  cross_con(); 
  for(int i=0;i<10;i++){
    rotary1_con();
    i++;
  }
  for(int i=0;i<10;i++){
    rotary2_con();
    i++;
  }
  char_con();*/
}

void writeOutput(){     // 74HC595 데이터 입력
  digitalWrite(latchPin, LOW);    // 각 애니메이션들의 배열에서 받은 값을
  shiftOut(dataPin, clockPin, MSBFIRST, value);         // shiftOut 함수로 74HC595에 시리얼 입력
  shiftOut(dataPin, clockPin, MSBFIRST, value2); // value 는 1~8번핀의 값
  digitalWrite(latchPin,HIGH);    // value2는 9~16번핀의 값
}

 

//=----------------------

 

ㅇ이렇게 LED를 여러개 연결시켜서 원하는 모양을 내고 싶은데, 회로적인 부분에서 이해가 잘 안가서요.. ;;

 

프로필사진

SaBo 2015-08-11 13:20:26

 

1) 여기서 아두이노의 Data pin 74HC595의 14번핀으로 들어가는 이유는 설계자가 아두이노에서 스케치한 데이터를 입력하기 위함인거죠?

- 스케치한 데이터.....도 맞겠지만 정확히는 출력할 핀 정보를 씨리얼로 보내기 위한 핀이라는게 맞을 것 같네요

 

2) Clock에서 나와서 74HC595의 11번 핀으로 들어가는 이유는 코코아팹 튜토리얼 게시판(?)에 포스팅된 글에서 봤었는데 "규칙적인, 정확한 데이터를 전달하기 위해서는 클럭을 공급하여 동기화를 해주어야 합니다" 라고 쓰여있더라구요. 근데 그 이유가 여기서 11번 핀으로 들어가는 그 이유와 동일한 것인지 잘 몰라서 맞는지 확인차 여쭤볼게요 ;

- 네 맞습니다. 해당 칩은 씨리얼로 데이터를 주고 받기 때문에 정확한 데이터를 송수신 하기 위해서는 동기화를 해주어야 하는데, 이는 클럭을 인가함으로써 동기화를 시켜줍니다. 

 

3) Latch는 데이터를 잡아주는(일종의 저장) 역할이라서 12번 핀에 들어간 것 같긴 한데...왜 저렇게 연결하였는지

- 왜 저렇게 연결하였는지 라는 질문이 무슨 뜻인지 잘 모르겠네요. 해당 칩 사용을 하기 위한 튜토리얼이 저런 하드웨어 구성으로 세팅이 되어있기 때문에 저렇게 연결한거겠죠?

프로필사진

이현우 2015-08-11 19:47:04

감사합니다ㅠ 제가 전자/디지털 전공 지식이 많이 얕아서 이렇게 기초적인 것도 잘 모르고 중심도 못잡고 막 질문하네요 ;;

1,2번 질문에 대해서 잘 설명해주셔서 이해됬는데 혹시 3번 Latch에 대해서 설명 해주실수 있으신가요?

제가 배웠던 latch회로는 앞에 나온 출력을 다시 피드백으로 뒤로 먹이는 그런 latch였는데 그게 저장의 의미인가요?

 

-p.s- Sabo님 레이저총 만드는거 정말 신기해서 이번 학기 시작전에 꼭 하고싶은 프로젝트인데 잘봤습니다!

프로필사진

수박쨈 2015-08-11 21:14:46

Latch핀의 경우는 입력한 값대로 IC에서 데이터를 출력시킬때 사용하는 핀입니다.

 

예를들어 Latch핀에 0이 들어가게 되면 쉬프트레지스터에서는 데이터를 출력시키지 않고 입력 받은값대로 각 IC출력핀(0번부터 7번까지)에 값을 저장하고 있게 됩니다.

그러다가 각 출력핀에 모든 값이 다 들어가고 Latch핀에 1이 들어가게 되면 0번 부터 7번핀에 입력된 각 핀의 값들이 외부로 출력됩니다.

프로필사진

이현우 2015-08-12 08:45:35

Latch는 한 마디로 데이터들(0~7)이 한번에 준비~~~~땅! 할수 있게 잠시 잡아주는 역할인 거군요 굿굿

자세한 설명 감사합니다 수박쨈님 ㅠ

이전글   |    센서 측정값을 sd카드에 저장하는 방법 2015-08-11
다음글   |    블루투스를 이용한 모터제어 질문 드립니다.... 2015-08-12