- 7 세그먼트 및 4 자리 7 세그먼트 디스플레이 모듈 :
- 4 자리 7 세그먼트 모듈을 Raspberry Pi와 연결 :
- Raspberry Pi 프로그래밍 :
- Raspberry Pi를 사용하여 4 자리 7 세그먼트에 시간 표시 :
우리 모두는 Raspberry Pi ARM 마이크로 프로세서를 기반으로 한 멋진 개발 플랫폼입니다. 높은 계산 능력으로 전자 애호가 또는 학생의 손에서 놀라운 일을 해결할 수 있습니다. 이 모든 것은 실제 세계와 상호 작용하고 일부 출력 장치를 통해 데이터를 분석하는 방법을 알고 있어야만 가능합니다. 실시간 세계에서 특정 매개 변수를 감지하여 디지털 세계로 전송할 수있는 센서가 많이 있으며이를 LCD 화면이나 다른 디스플레이에서보고 분석합니다. 그러나 소량의 데이터를 표시하기 위해 PI가있는 LCD 화면을 사용하는 것은 항상 경제적이지 않습니다. 16x2 영숫자 LCD 디스플레이 또는 7- 세그먼트 디스플레이를 선호하는 곳입니다. 우리는 이미 Raspberry pi와 함께 Alphanumeric LCD 및 단일 세그먼트 7- 세그먼트 디스플레이를 사용하는 방법을 배웠습니다. 오늘 우리는4 자리 7 세그먼트 디스플레이 모듈을 Raspberry Pi와 인터페이스하고 그 위에 시간을 표시합니다.
16x2 영숫자 LCD가 7 세그먼트 디스플레이보다 훨씬 더 편안하지만, 7 세그먼트 디스플레이가 LCD 디스플레이보다 더 편리한 시나리오는 거의 없습니다. LCD는 문자 크기가 작다는 단점이 있으며 일부 숫자 값을 표시하려는 경우 프로젝트에 과도하게 사용됩니다. 7 세그먼트는 또한 열악한 조명 조건에 대한 장점이 있으며 일반 LCD 화면보다 더 큰 각도에서 볼 수 있습니다. 그러니 우리가 그것을 알게합시다.
7 세그먼트 및 4 자리 7 세그먼트 디스플레이 모듈:
7 세그먼트 디스플레이에는 7 개의 세그먼트가 있으며 각 세그먼트에는 해당 세그먼트를 켜서 숫자를 표시하는 하나의 LED가 있습니다. 7 세그먼트에 숫자 "5"가 표시되도록하려면 해당 핀을 높게 설정하여 세그먼트 a, f, g, c, d를 발광해야합니다. 7 세그먼트 디스플레이에는 Common Cathode 및 Common Anode의 두 가지 유형이 있습니다. 여기서는 Common Cathode 7 세그먼트 디스플레이를 사용 합니다. 여기에서 7 세그먼트 디스플레이에 대해 자세히 알아보십시오.
이제 우리는 하나의 7 세그먼트 디스플레이에 원하는 숫자를 표시하는 방법을 알았습니다. 그러나 한 자리 이상의 정보를 전달하려면 7 세그먼트 디스플레이가 두 개 이상 필요하다는 것은 매우 분명합니다. 따라서이 튜토리얼 에서는 아래와 같이 4 자리 7 세그먼트 디스플레이 모듈 을 사용합니다.
보시다시피 4 개의 7 개의 세그먼트 디스플레이가 함께 연결되어 있습니다. 우리는 7 세그먼트 모듈마다 10 개의 핀이 있고, 4 개의 7 세그먼트 디스플레이에는 총 40 개의 핀이있을 것이라는 것을 알고 있으며 누구든지 도트 보드에 납땜하는 것이 바쁠 것이므로 누구나 모듈을 구입하는 것이 좋습니다. 또는 4 자리 7 세그먼트 디스플레이를 사용하기 위해 자신 만의 PCB를 만드십시오. 동일한 연결 회로도는 다음과 같습니다.
4 자리 7 세그먼트 모듈 이 어떻게 작동하는지 이해하려면 위의 회로도를 살펴 봐야합니다. 표시된 것처럼 4 개의 디스플레이 모두의 A 핀이 하나의 A로 모이고 B, C….까지 DP까지 동일한 핀이 연결되어 있습니다. 그래서 기본적으로 트리거 A가 켜지면 네 개의 A가 모두 높아야합니다.
그러나 그것은 일어나지 않습니다. D0에서 D3 (D0, D1, D2 및 D3)까지 4 개의 핀이 추가되어있어 4 개 중 어떤 디스플레이가 하이로 이동해야하는지 제어하는 데 사용할 수 있습니다. 예: 출력이 두 번째 디스플레이에만 표시되도록하려면 다른 핀 (D0, D2 및 D3)을 낮게 유지하면서 D1 만 높게 만들어야합니다. D0에서 D3까지의 핀을 사용하여 활성화 할 디스플레이를 선택하고 A에서 DP까지의 핀을 사용하여 표시 할 문자를 선택할 수 있습니다.
4 자리 7 세그먼트 모듈을 Raspberry Pi와 연결:
이 4 자리 7 세그먼트 모듈을 Raspberry Pi와 연결하는 방법을 살펴 보겠습니다. 7- 세그먼트 모듈에는 아래와 같이 16 개의 핀이 있습니다. 모듈이 더 적을 수 있지만 여전히 다음 사항이 확실하게 유지됩니다.
- 7 개 또는 8 개 세그먼트 핀 (여기서는 1부터 8까지의 핀)
- 접지 핀 (여기서는 핀 11)
- 4 자리 핀 (여기서는 핀 13 ~ 16)
다음은 4 자리 7 세그먼트 디스플레이 모듈을 Raspberry Pi와 연결 하여 raspberry pi 디지털 시계에 대한 회로도입니다 .
다음 표는 또한 연결을 만들고 위에 표시된 회로도에 따른 것인지 확인하는 데 도움이됩니다.
S. 아니 |
Rsp Pi GPIO 번호 |
Rsp Pi PIN 번호 |
7 세그먼트 이름 |
7-Seg 핀 번호 (여기이 모듈에서) |
1 |
GPIO 26 |
핀 37 |
세그먼트 A |
1 |
2 |
GPIO 19 |
핀 35 |
세그먼트 B |
2 |
삼 |
GPIO 13 |
핀 33 |
세그먼트 c |
삼 |
4 |
GPIO 6 |
핀 31 |
세그먼트 d |
4 |
5 |
GPIO 5 |
핀 29 |
세그먼트 e |
5 |
6 |
GPIO 11 |
핀 23 |
세그먼트 f |
6 |
7 |
GPIO 9 |
핀 21 |
세그먼트 g |
7 |
8 |
GPIO 10 |
핀 19 |
세그먼트 DP |
8 |
9 |
GPIO 7 |
핀 26 |
숫자 1 |
13 |
10 |
GPIO 8 |
핀 24 |
숫자 2 |
14 |
11 |
GPIO 25 |
핀 22 |
숫자 3 |
15 |
12 |
GPIO 24 |
핀 18 |
숫자 4 |
16 |
13 |
바닥 |
바닥 |
바닥 |
11 |
모듈의 핀을 식별하면 연결을 계속할 수 있습니다. Raspberry pi에서 GPIO 핀을 찾는 것은 약간 어려운 작업 일 수 있으므로 GPIO 핀에 대한이 사진을 제공했습니다.
Raspberry Pi 프로그래밍:
여기에서는 RPi를 프로그래밍 하기 위해 Python 프로그래밍 언어를 사용 합니다. Raspberry Pi를 프로그래밍하는 방법에는 여러 가지가 있습니다. 이 튜토리얼에서는 가장 많이 사용되는 Python 3 IDE를 사용합니다. 완전한 파이썬 프로그램은 이 튜토리얼의 끝에 제공됩니다. 여기에서 Raspberry Pi의 프로그램 및 실행 코드에 대해 자세히 알아보세요.
이 프로젝트를 위해 PYHTON 프로그램에서 사용할 몇 가지 명령에 대해 이야기하겠습니다.
먼저 라이브러리에서 GPIO 파일 을 가져올 것입니다. 아래 기능을 사용하면 PI의 GPIO 핀을 프로그래밍 할 수 있습니다. 또한 "GPIO"의 이름을 "IO"로 변경하고 있으므로 프로그램에서 GPIO 핀을 참조 할 때마다 'IO'라는 단어를 사용합니다. Rsp Pi에서 시간 값을 읽기 위해 시간 과 날짜 시간 도 가져 왔습니다.
RPi.GPIO를 GPIO로 가져 오기 시간, 날짜 시간
때때로 우리가 사용하려는 GPIO 핀이 다른 기능을 수행 할 때도 있습니다. 이 경우 프로그램을 실행하는 동안 경고를 받게됩니다. 아래 명령은 PI가 경고 를 무시 하고 프로그램을 진행 하도록 지시합니다.
IO.setwarnings (False)
PI의 GPIO 핀을 보드의 핀 번호 또는 기능 번호로 참조 할 수 있습니다. 보드의 'PIN 29'와 마찬가지로 'GPIO5'입니다. 그래서 우리는 여기서 핀을 '29'또는 '5'로 나타낼 것이라고 말합니다. GPIO.BCM은 GPIO5 핀 29에 5를 사용함을 의미합니다.
IO.setmode (GPIO.BCM)
항상 핀 을 초기화하는 것으로 시작해야합니다. 여기서 세그먼트 핀과 숫자 핀은 모두 출력 핀 입니다. 프로그래밍 목적으로 세그먼트 핀에 대한 배열을 형성하고 GPIO로 선언 한 후 '0'으로 초기화합니다.
segment8 = (26,19,13,6,5,11,9,10) 세그먼트 8의 세그먼트: GPIO.setup (segment, GPIO.OUT) GPIO.output (segment, 0)
마찬가지로 숫자 핀의 경우 출력 핀으로 선언하고 기본적으로 '0'으로 만듭니다.
#Digit 1 GPIO.setup (7, GPIO.OUT) GPIO.output (7, 0) # 초기 Off #Digit 2 GPIO.setup (8, GPIO.OUT) GPIO.output (8, 0) # 초기 Off #Digit 3 GPIO.setup (25, GPIO.OUT) GPIO.output (25, 0) # 초기 Off #Digit 4 GPIO.setup (24, GPIO.OUT) GPIO.output (24, 0) # 초기 Off
우리는 7 개의 세그먼트 디스플레이에 각 숫자를 표시 하기 위해 배열 을 형성 해야합니다. 하나의 숫자를 표시하려면 7 개의 세그먼트 핀 (점 핀 제외)을 모두 제어해야합니다. 즉, 해당 핀을 끄거나 켜야합니다. 예를 들어 숫자 5를 표시하기 위해 다음과 같이 배열합니다.
S. 아니 |
Rsp Pi GPIO 번호 |
7 세그먼트 이름 |
'5'를 표시하는 상태입니다. (0-> 끄기, 1-> 켜기) |
1 |
GPIO 26 |
세그먼트 A |
1 |
2 |
GPIO 19 |
세그먼트 B |
1 |
삼 |
GPIO 13 |
세그먼트 c |
0 |
4 |
GPIO 6 |
세그먼트 d |
1 |
5 |
GPIO 5 |
세그먼트 e |
1 |
6 |
GPIO 11 |
세그먼트 f |
0 |
7 |
GPIO 9 |
세그먼트 g |
1 |
마찬가지로 우리는 모든 숫자 와 알파벳에 대한 시퀀스 번호를 가지고 있습니다. 직접 작성하거나 아래 차트를 사용할 수 있습니다.
이러한 데이터를 사용하여 아래와 같이 파이썬 프로그램에서 각 숫자 에 대한 배열을 구성 할 수 있습니다.
null = 0 = 1 = 2 = 3 = 4 = 5 = 6 = 7 = 8 = 9 =
프로그램을 따르면 각 문자를 7 세그먼트 디스플레이에 표시하는 기능이 있지만 지금은 건너 뛰고 while 무한 루프에 들어갑니다. 여기서 라즈베리 파이부터 현재 시간을 판독하고 네 개의 변수 간의 시간의 값을 분할. 예를 들어 시간이 10.45이면 변수 h1은 1, h2는 0, m1은 4vand m2는 5가됩니다.
now = datetime.datetime.now () 시간 = now.hour 분 = now.minute h1 =시 / 10 h2 = 시간 % 10 m1 = 분 / 10 m2 = 분 % 10 print (h1, h2, m1, m2)
이 네 개의 변수 값을 각각 네 자리에 표시해야합니다. 숫자에 변수 값을 쓰려면 다음 줄을 사용할 수 있습니다. 여기서 우리는 숫자 1을 높게 하여 표시 한 다음 print_segment (변수) 함수를 호출하여 세그먼트 디스플레이에 변수의 값을 표시합니다. 그 이후에 지연이 발생하는 이유와 이후에이 숫자를 끄는 이유가 궁금 할 것입니다.
GPIO.output (7, 1) # Digit One 켜기 print_segment (h1) # 세그먼트 time.sleep (delay_time)에 h1 인쇄 GPIO.output (7, 0) # Digit One 끄기
그 이유는 우리가 알고 있듯이 한 번에 한 자리 만 표시 할 수 있지만 표시 할 4 자리가 있고 4 자리가 모두 표시되는 경우에만 전체 4 자리 숫자가 사용자에게 표시되기 때문입니다.
그렇다면 동시에 4 자리 숫자를 모두 표시하려면 어떻게해야 합니까?
운 좋게도 우리의 MPU는 사람의 눈보다 훨씬 빠르기 때문에 실제로 수행하는 작업은 한 번에 하나의 숫자를 표시하지만 위와 같이 매우 빠르게 수행합니다.
MPU와 7 세그먼트가 처리 할 수 있도록 2ms (variable delay_time) 동안 대기하는 한 자리 디스플레이를 선택하고 그 자리를 끄고 다음 자리로 이동하고 마지막 자리에 도달 할 때까지 동일한 작업을 수행합니다. 이 2ms의 지연은 육안으로는 관찰 할 수 없으며 네 자리가 모두 동시에 켜진 것처럼 보입니다.
print_segment (variable) 함수가 어떻게 작동 하는지 알기 위해 마지막으로 배울 것 입니다. 이 함수 안에서 우리는 지금까지 선언 한 배열을 사용합니다. 따라서 우리가이 함수에 보내는 변수가 (0-9) 사이의 값을 가져야한다면 변수 문자는이 값을 받아 실제 값과 비교합니다. 여기서 변수는 '1'과 비교됩니다. 유사하게 0에서 9까지의 모든 숫자와 비교합니다. 일치하는 경우 배열을 사용하고 아래에 표시된대로 각 세그먼트 핀에 각 값을 할당합니다.
def print_segment (charector): if charector == 1: for i in range (7): GPIO.output (segment8, one)
Raspberry Pi를 사용하여 4 자리 7 세그먼트에 시간 표시:
여기에 제공된 회로도와 코드를 사용하여 연결을 만들고 그에 따라 라즈베리 파이를 프로그래밍하십시오. 모든 작업이 완료된 후 프로그램을 실행하면 7 세그먼트 디스플레이에 현재 시간이 표시됩니다. 하지만이 전에 확인해야 할 사항이 거의 없습니다.
- 오프라인 시간에 실행되는 경우를 대비하여 Raspberry Pi를 현재 시간으로 설정했는지 확인하십시오.
- 7 세그먼트 디스플레이에서 끌어온 전류의 양이 높고 USB 포트가이를 소싱 할 수 없기 때문에 랩톱 / 컴퓨터가 아닌 어댑터로 Raspberry 파이에 전원을 공급하십시오.
모든 것이 예상대로 작동하면 아래와 같은 것을 찾을 수 있습니다.
이 라즈베리 파이 시계의 완전한 작동은 아래 의 비디오 에서도 확인할 수 있습니다. 프로젝트가 마음에 들었고 프로젝트를 즐겁게 만들었기를 바랍니다. 당신의 생각이나 도움이 필요하면 알려주세요.