[아두이노] 74HC595+CD4511+7SegmentLED 제어

IOT/아두이노|2019. 2. 18. 08:19

[아두이노] 74HC595+CD4511+7SegmentLED 제어



최종적으로 쉬프트레지스터(74HC595)와 7 segment Decoder(CD4511)를 결합하여 7 Segment LED를 제어하는 실험을 하고자 합니다. 아두이노에서 7 Segment LED를 제어하는 실험에서 출발하여 74HC595, CD4511 칩들을 개별적으로 이용하여 7 Segment LED를 제어 했었습니다. 이 두 칩을 연결하여 제어를 통해 7 Segment LED 실험을 마루리 하고자 합니다.

1. 7 74HC595 + CD4511 연결



위 그림에서 보면 아두이노에서 74HC595 칩으로 3개의 핀으로 입력을 하면 74HC595 칩에서는 8개의 출력 신호를 만들어 냅니다. 8개의 출력 신호에서 4개의 출력로 나눠서 각 CD4511 칩에 입력으로 들어가고 CD4511 칩에서 7개의 출력 신호를 최종적으로 만들어 냅니다.

여기서 출력핀을 제외한 나머지 핀들은 Vcc, Gnd에 연결되는 핀인데 그림에서는 생략 했습니다. 혹시 이해가 안되시는 분들은 위의 참고자료를 보시고 각 칩에 대한 연결을 다시 공부하셔야 합니다.

2. 회로도 구성


  • 준비물 : 74HC595 칩 1개, CD4511 칩 1개, 7 Segment LED 2개, 저항 330옴 2개, 저항 10k옴 8개, 아두이노우노, 뻥판
  • 내용 : 74HC595+CD4511 칩을 연결하여 7 Segment LED에 숫자를 출력하게 하자. 참고로 7 Segment LED(캐소드형)


전체 회로도 구성을 보시면 머리가 복잡해질 꺼에요. 이것은 개별적으로 이해 하시면 쉬울 꺼에요.

첫번째, 74HC595 칩을 제어하기 위해서 9,11,12핀을 이용한다. 회로도 74HC595 칩에 입력선과 Vcc, Gnd 선 연결만 생각하시고 출력선은 잠시 잊어주세요.

두번쨰, CD4511 칩을 제어하기 위해서는 4개의 입력이 필요합니다 하지만 회로도에서 입력선을 제외한 나머지 Vcc, Gnd 선 연결만 생각하시고 입력선, 출력선은 잠시 잊어 주세요.

세번째, CD4511 칩 입력 4개의 핀이고 8421(BCD) 코드표의 기준으로 배치하니깐 '0000'은 74HC595 출력핀 기준으로 '4321' 핀 순서로 입력을 넣어야 합니다. 그래서 1=A, 2=B, 3=C, 4=D 핀끼리 연결합니다. 나머지 CD4511 칩에다도 '0000'은 '8765' 핀 순서로 입력을 넣어야 겠죠. 5=A, 6=B, 7=C, 8=D 핀끼리 연결합니다.

네번째, 7 Segment LED은 CD4511칩의 출력 A,B,C,D,E,F,G핀에서 7 Segment LED의 입력 a,b,c,d,e,f,g핀으로 순서대로 A=a, B=b, C=c, D=d, E=e, F=f, G=g로 연결하면 됩니다.

다섯번째, 7 Segment LED은 캐소드형으로 변경 해주세요. 보고 똑같이 선 연결했는데 왜! 안돼! 이럴 수 있습니다. 애노드형인지 캐소드 형인지 꼭 확인이 필요합니다. 7 Segment LED은 캐소드형이여서 COM2의 핀에 Gnd로 연결을 하게 됩니다. 딱 볼때 COM1 or COM2가 Vcc로 연결되면 애노드형, Gnd로 연결되면 캐소드형으로 생각하시면 됩니다.

보시면 선연결이 많다 보니깐 복잡해 보이는데 개별적으로 하나씩 선 연결하시면 그리 어렵지 않을거라 생각 되네요.

3. 코딩


  • 사용함수 : pinMode(출력핀, 모드), digitalWrite(결쇠핀, 열림/잠금), shiftOut(데이터입력핀, 클럭핀, 순서, 데이터전송값)
  • 내용 : 쉬프트레지스터(74HC595)에 맞춰서 2개의 7 Segment LED에 숫자를 출력해 보자.
  • 참고 : 쉬프트레지스터(74HC595) 제어(아두이노)

설계

(1) 숫자패턴 배열변수 만든다.

byte data[]={
0B00000000,
0B00000001,  
0B00000010,
0B00000011,
0B00000100,  
0B00000101,  
0B00000110,  
0B00000111,
0B00001000,  
0B00001001,  
};

지난 시간의 쉬프트레지스터(74HC595) 코딩을 기준으로 약간만 수정하여 의미만 전달하도록 코딩했습니다. 8개의 비트값이 있습니다. 왼쪽 4개는 왼쪽 CD4511 칩에 입력값이고 오른쪽 4개는 오른쪽 CD4511 칩에 입력값이 됩니다.

즉,

0000 0001 => '0' 과 '1' 이 7 Segment LED에 출력됩니다.

만약에 '1'과 '2'을 출력하고 싶다면 바이트 값이 어떻게 바꿔야 할까요.

0001 0010 => 0B00010010

이해가 되셨죠.

(2) 숫자 출력

digitalWrite(latchPin, LOW); //열림
shiftOut(dataPin, clockPin, MSBFIRST, data[i]); //패턴입력
digitalWrite(latchPin, HIGH); //닫힘

코딩을 하면

byte data[]={
0B00000000,
0B00000001,  
0B00000010,
0B00000011,
0B00000100,  
0B00000101,  
0B00000110,  
0B00000111,
0B00001000,  
0B00001001,  
};

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);
  }  
}

4. 추가 코딩(프로그램영역이라 생략하셔도 됨)


본 코딩은 제 블로그에 올렸던 코딩으로 설명 드리겠습니다.

0B00000000을 16진수로 표현할 수 있다고 했죠. 16진수로 '0x00'로 표현이 됩니다.
그러면 위 값들을 다시 표현을 하면은 다음과 같습니다.

0x00
0x01
0x02
0x03
0x04
0x05
0x06
0x07
0x08
0x09

자세히 보시면 한자리씩 증가되는걸 보실 수 있을꺼에요. 그러면 11이면'0x11'로 표현이 되면 '0x' 이것만 빼면은 그냥 숫자로 생각해도 되겠다는 생각이 아마 들꺼에요. 이걸 이용해서 숫자를 쉽게 만들어보자는 생각을 하셔야 합니다.

7 Segment LED가 2개를 사용하니깐 16진수를 사용하면 2자리 숫자를 쉽게 표현이 되겠죠.

byte total=0x00; //출력
byte A=0x00; //1의 자리
byte B=0x00; //10의 자리

이렇게 3개의 변수를 선언합니다. loop()함수 내에서

A=A+0x01;  or A+=0x01;

이렇게 하면 A은 0x01씩 증가합니다. delay(1000) 함수로 1초 단위로 저 명령문을 수행하면 1초 단위로 '0x01'씩 숫자를 증가 시키고 그 값은7 Segment LED로 숫자 1씩 증가한 숫자가 출력되겠죠.

1분짜리 시간을 카운터 한다고 해봅시다.

void loop(){
  
  total = A+B;  
  현재 total값 74HC595에 출력;

  delay(1000);
    
  A=A+0x01; 
  if(A==0x0A){
    A=0x00;
    B=B+0x10;
  }
    
  if(total==0X59) B=0x00;
}

A을 '0x01'증가 시킵니다. if 조건문으로 '0x0A' 이면 '0x00' 초기화 합니다. 여기서 '0x0A'은 10을 나타냅니다. 16진수는 9까지는 숫자로 나타내고 10부터 A,B,C,D,E,F로 0~15까지 숫자를 한자리에 표현을 할 수 있습니다. 그래서 16진수인거죠. 우리가 일상에서 쓰는 0~9까지 10진수 입니다. 그렇다고 10진수라고 부르며 쓰지는 않죠. 생략해서 그냥 숫자를 쓰는 것 뿐이죠. 16진수는 0~15까지 한자리에 표현할 수 있는 숫자라는 것만 머리속에 담아 놓으시면 됩니다.

다시 돌아와서 A은 일의 자리이기 때문에 0~9까지 숫자가 표현되고 10(0x0A)가 되면 안되겠죠. 딱 9(0x09)까지만 출력되여야 하기 때문에 조건문으로 10인지 체크하는 것이죠. 10이면 B가 10의 자리이기 때문에 그때 두번째 자리에 '0x10'을 더하게 됩니다. 조건문에서 10이 되니깐 1의 자리는 '0x00'으로 초기화 하고 10의 자리는 '0x10'으로 1이 증가 시키는 로직으로 표현된 것이죠.

마지막으로 if문은 total이 0x59이면 이전에 delay()함수로 1초가 지났기 때문에 실제는 60초가 됩니다. 하지만 loop()함수가 다음 호출되어 반복하기 전이기 때문에 total값은 59초값을 가지고 있기 때문에 if 조건문에서 '0x59' 인가라고 조건을 단것이지요. 실제로는 60초인가라는 조건문으로 생각하시면 됩니다. 60초면 B를 초기화 시키기 위해서 B=0x00로 표현하게 됩니다.

결론은 첫번째 if문은 A을 증가시킨값이 10초 되면 A를 초기화 후 B를 1씩 증가시키고 두번재 if문 B가 60초가 되면 B를 초기화 시키라는 로직입니다. 60초 되면 A은 10초가 되고 A는 초기화 되고 B은 60초 되면 당연이 B도 초기화 됩니다. 다음 루프함수는 total = 0x00 + 0x00; 이 됩니다. 결론은 00이 7 Segment LED에 출력이 됩니다.

이걸 이용하시면 시계를 만들 수 있겠죠. 초기값을 현재 시간값으로 저장시키면 자동으로 그 시간을 기준으로 시간을 계속 출력시킬 수 있겠죠.

코딩을 수정을 하면

byte total=0x00;//출력
byte A=0x00; //1의 자리
byte B=0x00; //10의 자리

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(){

  total = A+B;  
   
  digitalWrite(latchPin, LOW);
  shiftOut(dataPin, clockPin, MSBFIRST, total);
  digitalWrite(latchPin, HIGH);       
  
  delay(1000);
    
  A=A+0x01; 
  if(A==0x0A){
    A=0x00;
    B=B+0x10;
  }
    
  if(total==0X59) B=0x00;
}

5. 결과


회로도를 만드는 과정을 영상으로 만들려고 하니깐 너무 심한 노가다여서 그냥 마지막 출력된 영상만 보여줄까도 고민하다고 그래도 전과정을 보여주는게 나을 것 같아서 이미 회로도를 만들어 놓은게 있었지만 한번 더 작업을 했네요.


마무리


드디어 7 Segment LED를 아두이노 제어에서 여기까지 왔습니다. 다른 칩까지 가면 너무 힘들 것 같아서 여기서 최종적으로 마무리 할까 합니다. 원래는 74HC595, CD4511 칩들은 대량의 LED를 제어할 목적으로 많이 쓰는 것 같더군요. 이 칩만 잘 활용해도 아두이노우노의 적은 핀을 가지고도 많은 부품들을 제어할 수 있어 확장성이 엄청 좋습니다. 한번 힘들더라도 부품의 데이터시트나 여러 블로그의 예제들을 보고 연구해 보셨으면 합니다.
이것만 알아도 표현할 수 있는 것들이 무궁무진 하니깐 상상의 나래를 펼쳐 보세요.


댓글()

[아두이노] 스위치버턴으로 CD4511를 제어해 보자

IOT/아두이노|2019. 2. 17. 17:31

[아두이노] 스위치버턴으로 CD4511를 제어해 보자



지금까지 7 Segment LED를 제어하는데 필수적으로 아두이노를 사용했습니다. 하지만 이번에 아두이노 없이 4x스위치버턴으로 CD4511 칩의 입력값을 제어하여 그 결과를 7 Segment LED로 출력하는 실험입니다. 보다 쉽게 CD4511 칩 제어하는 원리를 이해하실 수 있을거에요.

1. 회로도 구성


  • 준비물 : CD4511 칩 1개, 7 Segment LED 1개, 저항 330옴 1개, 저항 10k옴 4개, 파워서플라이. DIP Switch SPST x 4
  • 내용 : CD4511 칩을 이용해서 7 Segment LED에 숫자를 출력하게 하자. 참고로 7 Segment LED(캐소드형)

지난 시간의 회로도에서 아두이노를 뺀 부분에 파워서플라이. DIP Switch SPST x 4를 연결한 회로도입니다.


2. 스위치버턴와 CD4511 칩의 동작 원리


스위치 버턴(DIP Switch SPST x 4)의 동작 원리는 지난 시간의 아두이노코딩에서 패턴을 생각하시면 됩니다.

int data[10][4]={
  {0,0,0,0}, //0
  {0,0,0,1}, //1
  {0,0,1,0}, //2
  {0,0,1,1}, //3
  {0,1,0,0}, //4
  {0,1,0,1}, //5
  {0,1,1,0}, //6
  {0,1,1,1}, //7
  {1,0,0,0}, //8
  {1,0,0,1}  //9
};

이렇게 2차배열변수로 패턴을 저장했었죠. 이 값은 8421(BCD) 코드값입니다.

0000 //0
0001 //1
0010 //2
0011 //3
0100 //4
0101 //5
0110 //6
0111 //7
1000 //8
1001 //9
....
1111 //F

이렇게 8421(BCD) 코드에서 0~9까지만 사용 합니다. 그리고 자세히 보시면 네자리로 구성되어 있는걸 보실거에요. 회로도에 보시면 4x스위치 버턴을 구성되어 있습니다. 여기서 눈치가 빠른분들은 아 8421 코드표랑 4x스위치버턴과 연관있지 않을까 생각하실 겁니다.
회로도의 스위치 버턴을 자세히 보시면 8421 코드표랑 4x스위치버턴을 일치시켰습니다. 그리고 4x스위치버턴의 방향이 전부 아래 방향으로 향하고 있는데 이상태는 전류가 차단 된 0V의 상태이고 버턴이 위로 향할때 CD4511 칩에 Vcc의 전류가 흘러 들어가 됩니다.

4x스위치 버턴의 위치에 따라 동작은 -

  • 0000 상태 : CD4511(7 Segment Decoder) 칩의 출력은 7 Segment LED의 0의 LED가 불이 들어오도록 출력
  • 0001 상태 : CD4511(7 Segment Decoder) 칩의 출력은 7 Segment LED의 1의 LED가 불이 들어오도록 출력

설명보다도 실제 가상시뮬레이터로 4x스위치 버턴을 한번 위아래로 8421 코그 값대로 1이면 위로 올리고 0이면 아래로 내리면서 스위치 버턴을 조작하시면 CD4511 칩의 입력신호에 따른 7 Segment LED로 어떻게 출력되는지 쉽게 확인할 수 있을꺼에요.

좀 더 CD4511(7 Segment Decoder) 칩의 출력 상태를 알고 싶다면 7 Segment LED 대신에 7개의 LED를 배치하여 정확히 CD4511(7 Segment Decoder) 칩의 7개의 출력 값들의 변화를 확인할 수 있습니다.

예)

0은 0000 => 출력값은 1111110 됩니다.

3. 결과


가상시뮬레이터에 회로도를 배치하는 과정과 결과가 어떻게 출력되는지 보여주는 영상입니다. 잘 모르셔도 그대로 따라서 회로도를 만들어 보시면 글을 읽는것보다 싶게 동작 원리가 이해가 되실 꺼에요.


마무리


여기서, 4x스위치 버턴을 통해 CD4511 칩을 제어하는 회로도를 소개하는 이유는 CD4511 칩의 입력신호에 대한 출력신호를 쉽게 이해하기 위해서 입니다. 그리고, 4x스위치 버턴을 통한 실제 수동 제어를 해보면서 이런 동작을 지난시간에 아두이노 코딩제어를 통해 7 Segment LED 숫자를 만든 것을 직접 수동제어를 통해 느끼게 하는게 목적이기도 합니다. 또한, 지난시간에 명령 로직 코딩을 통해 쉽게 0~9까지 출력했던 아두이노와 비교를 통해 현실의 동작을 프로그램화 하면 얼마나 편하게 제어가 되는지 보여줄려는 의도도 있지요.


댓글()

[아두이노] 7 Segment Decoder(CD4511) 제어

IOT/아두이노|2019. 2. 16. 14:57

[아두이노] 7 Segment Decoder(CD4511) 제어



이번에도 새로운 칩을 소개 합니다. 7-segment Decoder(CD4511)은 7 Segment LED를 제어하는데 효율적인 칩입니다. 다른곳에서 원리만 이해하셨다면 사용 가능합니다. 이 칩은 4가지 값에 의해서 7개의 출력값을 만들어 낼 수 있습니다. 이 칩도 제 블로그에서 소개했던 내용인데 7 Segment LED를 포스팅 할때 한번에 소개하는게 나을 것 같아서 가상시뮬레이터에서도 제공되는 칩으로 이번에는 CD4511 칩을 이용해 실험하고자 합니다.

1. 7 segment Decoder(CD4511)



위 그림에서 보는것 처럼 입력 A,B,C,D 핀으로 아두이노에서 4개의 핀의 출력값을 CD4511 칩에 입력으로 받게 됩니다. CD4511 칩의 연결은 다음 과 같습니다.

  • Vcc핀 과 Gnd핀은 아두이노에 5V와 Gnd 핀에 연결
  • LT핀와 BI핀은 Vcc로 연결
  • LE핀은 Gnd로 연결
  • 입력 A,B,C,D핀은 아두이노 디지털핀 4개 연결(실험에서는 2,3,4,5핀 사용)
  • 출력 a,b,c,d,e,f,g핀은 7 Segment LED의 DP핀을 제외한 나머지 순차적으로 A,B,C,D,E,F,G핀에 연결

여기서 회로도 설계할때에 선 연결이 노가다 작업으로 좀 힘들지만 그래도 한번 이해하면 나중에 쉽게 사용이 가능해 집니다. CD4511 칩에 선들을 어떻게 연결하는지가 숙지하시면 됩니다.

2. 회로도 구성


  • 준비물 : CD4511 칩 1개, 7 Segment LED 1개(캐소드형임), 저항 330옴 1개, 저항 10k옴 4개, 아두이노우노, 뻥판
  • 내용 : CD4511 칩을 이용해서 7 Segment LED에 숫자를 출력하게 하자. 참고로 7 Segment LED(캐소드형)


CD4511 칩에 입력을 바로 아두이노의 출력값 5V를 보내지 않고 10K옴의 저항을 붙여줍니다. 스위치 버턴을 연상하시면 됩니다. 어짜피 상태값만 보내주면 되기 때문인거죠. 정확히 CD4511 칩의 허용 전압이 기억이 안나서 안전하게 저항을 붙였습니다. 데이터시트를 인터넷에서 찾아보셔서 허용 전압을 참고하시면 되겠습니다. 위에서 설명한 CD4511 칩의 핀들이 어디에 연결하는지 설명한대로 실제 선을 연결하시면 됩니다. 그리고 주의할 것은 7 Segment LED은 캐소드형 입니다.

처음에만 복잡해 보일뿐 익숙해지면 단순합니다. 핀에 마우스를 대면 핀 이름이 나오고 해당된 부품과 연결하시면 됩니다.

3. 코딩


  • 사용함수 : pinMode(출력핀, 모드), digitalWrite(출력핀, 상태값)
  • 내용 : 아두이노에서 4개의 출력 상태를 값을 CD4511 칩을 제어하여 7 Segment LED에 숫자를 0~9까지 순차적으로 출력해보자.(7 Segment LED은 캐소드형으로 이 기준으로 코딩함)

  • CD4511 제어 :
    • digitalWrite(출력핀, 상태값)으로 CD4511 칩의 출력값을 결정

참쉽죠. LED 제어할대 배운 PinMode()와 digitalWrite()함수만 사용하시면 됩니다.

설계

(1) 숫자 패턴만들기

CD4511 4개의 입력값을 받습니다. 그러면 4개의 상태를 8421 BCD 코드표를 참조하시면 좋습니다. 캐소드형 7 Segment LED를 하면 정확히 아두이노 핀의 역순으로 코딩하면 일치하게 됩니다. 그래서 이번 실험은 이해하기 쉽게 캐소드형 코딩을 선택했습니다.

0000 => 0
0001 => 1
0010 => 2
...

0은 0000 => 출력값은 1111110 됩니다.
0은 A[4] = {0,0,0,0}
그러면 0~9까지 10개의 패턴이니깐 2차배열변수로 만들면은 아래와 같이 만들어 지겠죠.

int data[10][4]={
   {0,0,0,0}, //0
   {0,0,0,1}, //1
   {0,0,1,0}, //2
   {0,0,1,1}, //3
   {0,1,0,0}, //4
   {0,1,0,1}, //5
   {0,1,1,0}, //6
   {0,1,1,1}, //7
   {1,0,0,0}, //8
   {1,0,0,1}  //9
};

(2) 숫자 출력

0은 A[4] = {0,0,0,0} 이고,
datapin은 datatpin[4] = { 5,4,3,2} 하면

 for(int j=0;j<4;j++){
    digitalWrite(datapin[j],A[j]);
 }

이렇게 됩니다. 하지만 10개의 패턴과 각 패턴의 상태값 4개를 2차 배열 위의 date[10][4]로 만들면 2차 for문을 사용하면

  for(int i=0;i<10;i++){
     for(int j=0;j<4;j++){
       digitalWrite(datapin[j],data[i][j]);
     }
     delay(1000);
  }     

여기서 delay(1000)을 두어 1초 단위로 0~9까지 7 Segment LED에 출력되게 됩니다.

코딩을 하면

int data[10][4]={
   {0,0,0,0}, //0
   {0,0,0,1}, //1
   {0,0,1,0}, //2
   {0,0,1,1}, //3
   {0,1,0,0}, //4
   {0,1,0,1}, //5
   {0,1,1,0}, //6
   {0,1,1,1}, //7
   {1,0,0,0}, //8
   {1,0,0,1}  //9
};
int datapin[4] ={5,4,3,2};

void setup(){
  for(int i=0;i<4;i++){
    pinMode(datapin[i],OUTPUT);
  }
}
void loop(){
   for(int i=0;i<10;i++){
     for(int j=0;j<4;j++){
       digitalWrite(datapin[j],data[i][j]);
     }
     delay(1000);
  } 
} 

4. 결과


결과 동영상을 보면 다이렉트로 전 과정을 동영상 촬영을 했는데 회로도를 만드는 과정에서 Vcc 선을 Gnd로 잘못 연결해서 가상시뮬레이터 처음 실행에서 CD4511 칩이 망가졌습니다. 가상시뮬레이터라서 실제로 CD4511 칩이 망가지는 것이 아니기 때문에 그렇게 큰 의미는 없지만 이걸 실제로 선을 잘못 연결한다면 칩에 문제가 생기겠지요. 다시 동영상으로 촬영할려다가 선 연결의 중요성과 이런 점에서 가상시뮬레이터를 사용의 장점이 될 것 같아서 그냥 올립니다.(실제로 다시 촬영하기 귀찮음!)

마무리


74HC595 칩은 3핀을 사용했지만 CD4511 칩은 4핀을 사용합니다. 그러면 이전 시간에 배운 74HC595 칩으로 하는게 좋을 것 같다는 생각을 하실 수 있습니다. CD4511 칩을 제어는 무지 간단 합니다. 아두이노 없이도 이 칩을 이용해서 7 Segment LED를 제어가 가능합니다.

그리고 74HC595+CD4511으로 7 Segment LED를 제어를 한번 해보세요. 이 두 칩을 배우고 나서 이걸 합쳐서 실험해보고 싶어져서 7 Segment LED를 제어 해보았어요. 이 내용은 다음 포스팅에 쓰도록 할께요. 한번 두 칩에 동작 원리를 생각하고 회로도를 구성하고 코딩해보세요.

한번 74HC595칩과 CD4511을 결합을 하면 어떻게 회로도가 표현 되는지 상상의 나래를 펼쳐보세요.


댓글()