-
7Segment에 숫자를 표시Arduino/Shift Register 2020. 11. 6. 18:45
D Flip Flop은 LOW에서 HIGH가 될 때, 신호를 내보낸다.
레지스터의 14번 핀을 통해 10진수의 데이터가 입력되면
a~h핀(8개. h핀은 7Segment의 dp핀에 연결)을 통해 2진수 형태의 데이터가 출력된다.
하드웨어의 연결
먼저, 아두이노의 5V선과 빵판의 VCC선과 연결을 한다.
그리고 아두이노의 GND선과 빵판의 GND와 연결을 한다.
VCC와 GND가 필요하면 점프선으로 연결한다.
레지스터의 16번핀은 빵판의 VCC에 연결.
레지스터의 10번핀은 빵판의 VCC에 연결.
레지스터의 9번 핀에는 아무것도 연결하지 않는다.
레지스터와 아두이노의 핀 연결
레지스터의 14번핀과 아두이노의 3번핀을 연결
레지스터의 13번핀은 아두이노의 GND핀에 연결
레지스터의 12번핀은 아두이노의 4번핀과 연결
레지스터의 11번핀은 아두이노의 3번핀과 연결
레지스터와 7Segment와의 하드웨어 연결
레지스터의 15번핀은 7Segment의 a에 연결
레지스터의 1번핀~6번 7Segment의 각 b~g에 연결
레지스터의 7번핀은 7Segment의 dp에 연결
레지스터의 8번핀은 빵판의 GND에 연결
아래는 아두이노와 레지스터와의 연결 그림이다.
그리고 7Segment의 가운데 두 핀은 각 각 220옴 저항을 연결하고 각 각 빵판의 GND에 연결한다.
아래의 세 그림은 7Segment와 저항을 연결한 그림이다.
아래의 그림에서 각 저항이 끝에 연결된 초록색 선과 붉은선은 빵판의 GND에 연결한다.
전체적으로 연결한 모습은 아래의 그림이다.
0~9의 숫자를 7Segment에 출력하는 프로그램을 작성해보자.
그리고 아래의 소스에서 LSBFIRST라고 하면 아래 내용의 7Segment에 숫자를 출력하는 내용과 같다.
다만 여기서는 10진수로 표현한 형태이다.
designatedroom87.tistory.com/267?category=900171
7Segment에 숫자를 출력하는 내용은
digitalWrite(LATCH_PIN, LOW) 함수와 digitalWrite(LATCH_PIN, HIGH)함수 사이에 들어오면 된다.소스 코드
더보기const int LATCH_PIN = 4; // 12 RCLK LATCH PIN const int CLOCK_PIN = 3; // 11 SCK CLOCK PIN const int DATA_PIN = 2; // 14 SER DATA PIN int g_7SEGMENT_Num[10] = { // LSBFIRST 252, // 0 96 , // 1 218, // 2 242, // 3 102, // 4 182, // 5 190, // 6 224, // 7 254, // 8 246 // 9 }; // 레지스터와 7Segment의 연결 // 15번핀과 a에 연결 // 1번핀부터 7번핀까지 b~h에 그리고 마지막으로 dp를 연결 void setup() { // put your setup code here, to run once: pinMode(LATCH_PIN,OUTPUT); pinMode(CLOCK_PIN,OUTPUT); pinMode(DATA_PIN,OUTPUT); /* // 동작을 시키기 위한 구문 digitalWrite(LATCH_PIN, LOW); shiftOut(DATA_PIN,CLOCK_PIN,LSBFIRST,218); // LSBFIRST, MSBFIRST digitalWrite(LATCH_PIN, HIGH); */ } void loop() { // put your main code here, to run repeatedly: for (int decimal = 0; decimal < 10; decimal++) { // 동작을 시키기 위한 구문 digitalWrite(LATCH_PIN, LOW); shiftOut(DATA_PIN,CLOCK_PIN,LSBFIRST,g_7SEGMENT_Num[decimal]); // LSBFIRST, MSBFIRST digitalWrite(LATCH_PIN, HIGH); delay(1000); } }