- 7-Segment และ 4-Digit 7-Segment Display Module:
- การเชื่อมต่อโมดูล 7 ส่วน 4 หลักกับ Raspberry Pi:
- การเขียนโปรแกรม Raspberry Pi ของคุณ:
- แสดงเวลาบน 4 หลัก 7 ส่วนโดยใช้ Raspberry Pi:
เราทุกคนรู้ดีว่า Raspberry Pi เป็นแพลตฟอร์มการพัฒนาที่ยอดเยี่ยมโดยใช้ไมโครโปรเซสเซอร์ ARM ด้วยพลังการคำนวณที่สูงทำให้สามารถสร้างสิ่งมหัศจรรย์ในมือของผู้ที่ชื่นชอบอุปกรณ์อิเล็กทรอนิกส์หรือนักเรียน ทั้งหมดนี้จะเป็นไปได้ก็ต่อเมื่อเรารู้วิธีทำให้มันโต้ตอบกับโลกแห่งความจริงและวิเคราะห์ข้อมูลผ่านอุปกรณ์เอาท์พุตบางอย่าง มีเซ็นเซอร์จำนวนมากที่สามารถตรวจจับพารามิเตอร์บางอย่างจากโลกแห่งเวลาจริงและถ่ายโอนไปยังโลกดิจิทัลและเราวิเคราะห์ว่าพวกเขาดูพวกมันในหน้าจอ LCD หรือจอแสดงผลอื่น ๆ แต่การใช้หน้าจอ LCD ที่มี PI เพื่อแสดงข้อมูลจำนวนน้อยจะไม่ประหยัดเสมอไป นี่คือที่ที่เราต้องการใช้จอ LCD 16x2 ตัวอักษรและตัวเลขหรือจอแสดงผล 7 ส่วน เราได้เรียนรู้วิธีใช้ LCD แบบตัวอักษรและตัวเลขและจอแสดงผล 7 ส่วนเดี่ยวกับ Raspberry pi แล้ว วันนี้เราจะอินเตอร์เฟซที่ 4 หลักเจ็ด Segment Display Module กับราสเบอร์รี่ Pi และเวลาการแสดงผลมากกว่านั้น
แม้ว่าจอ LCD แบบตัวเลขและตัวอักษร 16x2 จะสะดวกสบายกว่าการแสดงผลแบบ 7 ส่วน แต่ก็มีบางสถานการณ์ที่การแสดงผล 7 ส่วนจะสะดวกกว่าจอ LCD LCD ทนทุกข์ทรมานจากข้อเสียของการมีขนาดอักขระต่ำและจะเกินความจำเป็นสำหรับโครงการของคุณหากคุณกำลังวางแผนที่จะแสดงค่าตัวเลขบางค่า 7 ส่วนยังมีข้อได้เปรียบจากสภาพแสงที่ไม่ดีและสามารถมองจากมุมเบียร์ได้มากกว่าหน้าจอ LCD ทั่วไป ดังนั้นให้เราเริ่มรู้จักมัน
7-Segment และ 4-Digit 7-Segment Display Module:
7 Segment Display มีเจ็ดส่วนในนั้นและแต่ละส่วนมี LED หนึ่งดวงอยู่ข้างในเพื่อแสดงตัวเลขโดยการส่องสว่างส่วนที่เกี่ยวข้อง เช่นเดียวกับถ้าคุณต้องการให้ 7 ส่วนแสดงหมายเลข "5" คุณต้องเรืองแสงส่วน a, f, g, c และ d โดยทำให้หมุดที่เกี่ยวข้องสูง มีการแสดง 7 เซ็กเมนต์สองประเภท: แคโทดทั่วไปและแอโนดทั่วไปที่นี่เรากำลังใช้การแสดงส่วนแคโทดเจ็ดส่วนทั่วไป เรียนรู้เพิ่มเติมเกี่ยวกับการแสดงผล 7 ส่วนที่นี่
ตอนนี้เรารู้วิธีแสดงอักขระตัวเลขที่เราต้องการบนจอแสดงผล 7 ส่วนเดียว แต่เห็นได้ชัดว่าเราต้องการจอแสดงผล 7 ส่วนมากกว่าหนึ่งจอเพื่อถ่ายทอดข้อมูลใด ๆ ที่มากกว่าหนึ่งหลัก ดังนั้นในบทช่วยสอนนี้เราจะใช้โมดูลการแสดงผล 7 ส่วน 4 หลักดังที่แสดงด้านล่าง
อย่างที่เราเห็นมีการเชื่อมต่อจอแสดงผลเจ็ดส่วนสี่ส่วนเข้าด้วยกัน เราทราบดีว่าโมดูล 7 เซ็กเมนต์แต่ละโมดูลจะมี 10 พินและสำหรับ 4 เซกเมนต์เจ็ดส่วนจะมีทั้งหมด 40 พินและมันจะเป็นเรื่องยากสำหรับทุกคนที่จะบัดกรีพวกมันบนกระดานดอทดังนั้นฉันขอแนะนำให้ทุกคนซื้อโมดูล หรือสร้าง PCB ของคุณเองโดยใช้จอแสดงผล 7 ส่วน 4 หลัก แผนผังการเชื่อมต่อสำหรับสิ่งเดียวกันดังแสดงด้านล่าง:
เพื่อให้เข้าใจว่าโมดูลเซกเมนต์ 7 หลัก 4 หลักทำงานอย่างไรเราต้องดูแผนผังข้างต้นดังที่แสดงหมุด A ของจอแสดงผลทั้งสี่จอเชื่อมต่อเพื่อรวบรวมเป็น A เดียวและเหมือนกันสำหรับ B, C…. ไม่เกิน DP โดยพื้นฐานแล้วถ้าทริกเกอร์ A เปิด A ทั้งสี่ตัวควรจะสูงใช่ไหม?
แต่นั่นไม่ได้เกิดขึ้น เรามีพินเพิ่มเติมอีกสี่พินจาก D0 ถึง D3 (D0, D1, D2 และ D3) ซึ่งสามารถใช้เพื่อควบคุมว่าการแสดงผลใดจากทั้งสี่ควรอยู่ในระดับสูง ตัวอย่างเช่นหากฉันต้องการให้เอาต์พุตของฉันแสดงเฉพาะบนจอแสดงผลที่สองควรทำให้ D1 สูงเท่านั้นในขณะที่ทำให้พินอื่น ๆ (D0, D2 และ D3) ต่ำ เพียงแค่เราสามารถเลือกได้ว่าจะให้จอแสดงผลใดใช้งานได้โดยใช้หมุดจาก D0 ถึง D3 และอักขระใดที่จะแสดงโดยใช้หมุดจาก A ถึง DP
การเชื่อมต่อโมดูล 7 ส่วน 4 หลักกับ Raspberry Pi:
มาดูกันว่าเราจะเชื่อมต่อโมดูล 7 ส่วน 4 หลักกับ Raspberry Pi ของเราได้อย่างไร โมดูล 7 ส่วนมี 16 พินตามที่แสดงด้านล่าง โมดูลของคุณอาจมีน้อยกว่า แต่ไม่ต้องกังวลว่าจะยังคงมีสิ่งต่อไปนี้อย่างแน่นอน
- หมุด 7 หรือ 8 ส่วน (หมุดที่นี่เริ่มจาก 1 ถึง 8)
- พินกราวด์ (ที่นี่พิน 11)
- หมุด 4 หลัก (ที่นี่หมุด 13 ถึง 16)
ด้านล่างนี้เป็นแผนผังสำหรับนาฬิกาดิจิตอล raspberry pi โดย การเชื่อมต่อโมดูลการแสดงผล Seven segment 4 หลักกับ Raspberry Pi:
ตารางต่อไปนี้จะช่วยคุณในการเชื่อมต่อและยืนยันว่าเป็นไปตามแผนผังที่แสดงด้านบน
ส. เลขที่ |
หมายเลข Rsp Pi GPIO |
หมายเลข PIN Rsp Pi |
ชื่อ 7 กลุ่ม |
หมายเลขพิน 7-Seg (ที่นี่ในโมดูลนี้) |
1 |
GPIO 26 |
PIN 37 |
กลุ่มก |
1 |
2 |
GPIO 19 |
PIN 35 |
กลุ่มข |
2 |
3 |
GPIO 13 |
PIN 33 |
กลุ่มค |
3 |
4 |
GPIO 6 |
PIN 31 |
ส่วนง |
4 |
5 |
GPIO 5 |
PIN 29 |
กลุ่ม e |
5 |
6 |
GPIO 11 |
PIN 23 |
ส่วนฉ |
6 |
7 |
GPIO 9 |
PIN 21 |
ส่วนก |
7 |
8 |
GPIO 10 |
PIN 19 |
กลุ่ม DP |
8 |
9 |
GPIO 7 |
PIN 26 |
หลัก 1 |
13 |
10 |
GPIO 8 |
PIN 24 |
หลัก 2 |
14 |
11 |
GPIO 25 |
PIN 22 |
หลัก 3 |
15 |
12 |
GPIO 24 |
PIN 18 |
หลัก 4 |
16 |
13 |
พื้น |
พื้น |
พื้น |
11 |
ระบุหมุดบนโมดูลของคุณและคุณก็พร้อมที่จะดำเนินการเชื่อมต่อต่อไป การหาพิน GPIO ใน Raspberry pi อาจเป็นงานที่ท้าทายเล็กน้อยดังนั้นฉันจึงให้ภาพนี้สำหรับ GPIO Pins
การเขียนโปรแกรม Raspberry Pi ของคุณ:
ที่นี่เรากำลังใช้ภาษา Python Programmingสำหรับการเขียนโปรแกรม RPi มีหลายวิธีในการตั้งโปรแกรม Raspberry Pi ของคุณ ในบทช่วยสอนนี้เรากำลังใช้ Python 3 IDEเนื่องจากเป็นรหัสที่ใช้มากที่สุด โปรแกรมหลามสมบูรณ์ จะได้รับในตอนท้ายของการกวดวิชานี้ เรียนรู้เพิ่มเติมเกี่ยวกับโปรแกรมและรันโค้ดใน Raspberry Pi ที่นี่
เราจะพูดถึงคำสั่งสองสามคำสั่งที่เราจะใช้ในโปรแกรม PYHTON สำหรับโครงการนี้
ก่อนอื่นเราจะนำเข้าไฟล์ GPIO จากไลบรารีฟังก์ชันด้านล่างช่วยให้เราสามารถตั้งโปรแกรมพิน GPIO ของ PI ได้ นอกจากนี้เรายังเปลี่ยนชื่อ "GPIO" เป็น "IO" ดังนั้นในโปรแกรมเมื่อใดก็ตามที่เราต้องการอ้างถึงพิน GPIO เราจะใช้คำว่า 'IO' นอกจากนี้เรายังได้นำเข้า เวลา และ วันที่และเวลา ในการอ่านค่าของเวลาจาก RSP พี่
นำเข้า RPi.GPIO เป็นเวลานำเข้า GPIO วันที่และเวลา
บางครั้งเมื่อพิน GPIO ที่เราพยายามใช้อยู่อาจจะทำหน้าที่อื่น ๆ ในกรณีนั้นเราจะได้รับคำเตือนขณะดำเนินการโปรแกรม คำสั่งด้านล่างบอกให้ PI เพิกเฉยต่อคำเตือนและดำเนินการกับโปรแกรม
IO.setwarnings (เท็จ)
เราสามารถอ้างอิงพิน GPIO ของ PI ไม่ว่าจะด้วยหมายเลขพินบนบอร์ดหรือตามหมายเลขฟังก์ชัน เช่นเดียวกับ 'PIN 29' บนกระดานคือ 'GPIO5' เราบอกตรงนี้ว่าเราจะแทนหมุดตรงนี้ด้วย '29' หรือ '5' GPIO.BCM หมายความว่าเราจะใช้ 5 สำหรับ GPIO5 พิน 29
IO.setmode (GPIO.BCM)
และเช่นเคยเราควรเริ่มต้นด้วยการinitialising หมุดที่นี่ทั้งขาส่วนและหมุดหลักที่มีหมุดเอาท์พุทสำหรับวัตถุประสงค์ในการเขียนโปรแกรมเราสร้างอาร์เรย์สำหรับหมุดแบ่งส่วนและเริ่มต้นเป็น '0' หลังจากประกาศเป็น GPIO.OUT
segment8 = (26,19,13,6,5,11,9,10) สำหรับเซ็กเมนต์ใน segment8: GPIO.setup (เซ็กเมนต์, GPIO.OUT) GPIO.output (เซ็กเมนต์, 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) # ปิดเริ่มต้น #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 พิน (ไม่รวมพินจุด) นั่นคือต้องปิดหรือเปิด ตัวอย่างเช่นในการแสดงหมายเลข 5 เราได้ทำการจัดเรียงต่อไปนี้
ส. เลขที่ |
หมายเลข Rsp Pi GPIO |
ชื่อ 7 กลุ่ม |
สถานะที่จะแสดง '5' (0-> ปิด, 1-> เปิด) |
1 |
GPIO 26 |
กลุ่มก |
1 |
2 |
GPIO 19 |
กลุ่มข |
1 |
3 |
GPIO 13 |
กลุ่มค |
0 |
4 |
GPIO 6 |
ส่วนง |
1 |
5 |
GPIO 5 |
กลุ่ม e |
1 |
6 |
GPIO 11 |
ส่วนฉ |
0 |
7 |
GPIO 9 |
ส่วนก |
1 |
ในทำนองเดียวกันเรามีหมายเลขลำดับสำหรับตัวเลขและตัวอักษรทั้งหมด คุณสามารถเขียนด้วยตัวคุณเองหรือใช้แผนภูมิด้านล่าง
ด้วยข้อมูลเหล่านี้เราสามารถสร้างอาร์เรย์สำหรับแต่ละหมายเลขในโปรแกรม python ของเราดังที่แสดงด้านล่าง
null = ศูนย์ = หนึ่ง = สอง = สาม = สี่ = ห้า = หก = เจ็ด = แปด = เก้า =
หากคุณทำตามโปรแกรมจะมีฟังก์ชั่นในการแสดงอักขระแต่ละตัวในการแสดงผล 7 ส่วนของเรา แต่ให้ข้ามไปก่อนแล้วเข้าสู่ while infinite loop ที่ไหนอ่านเวลาปัจจุบันจากราสเบอร์รี่ Pi และแยกค่าของเวลาระหว่างสี่ตัวแปร ตัวอย่างเช่นถ้าเวลาคือ 10.45 ตัวแปร h1 จะมี 1, h2 จะมี 0, m1 จะมี 4vand m2 จะมี 5
now = datetime.datetime.now () ชั่วโมง = now.hour minute = now.minute h1 = ชั่วโมง / 10 h2 = ชั่วโมง% 10 m1 = นาที / 10 m2 = นาที% 10 พิมพ์ (h1, h2, m1, m2)
เราต้องแสดงค่าตัวแปรทั้งสี่นี้บนตัวเลขสี่หลักตามลำดับ ในการเขียนค่าของตัวแปรเป็นตัวเลขเราสามารถใช้บรรทัดต่อไปนี้ ที่นี่เราจะแสดงบนหลัก 1 โดยทำให้สูงขึ้นจากนั้นฟังก์ชัน print_segment (ตัวแปร) จะถูกเรียกให้แสดงค่าในตัวแปรบนการแสดงส่วน คุณอาจสงสัยว่าทำไมเราถึงล่าช้าหลังจากนั้นและทำไมเราจึงปิดตัวเลขนี้หลังจากนี้
GPIO.output (7, 1) #Turn on Digit One print_segment (h1) # พิมพ์ h1 ในเวลาแบ่งส่วนสลีป (delay_time) GPIO.output (7, 0) # ปิด Digit One
เหตุผลก็คืออย่างที่เราทราบกันดีว่าเราสามารถแสดงตัวเลขได้ครั้งละหนึ่งหลักเท่านั้น แต่เรามีตัวเลขสี่หลักที่จะแสดงและเฉพาะในกรณีที่ตัวเลขทั้งสี่หลักปรากฏขึ้นผู้ใช้จะมองเห็นตัวเลขสี่หลักที่สมบูรณ์
แล้วจะแสดงทั้ง 4 หลักพร้อมกันได้อย่างไร?
โชคดีที่เรา MPU ของเราเป็นอย่างมากเร็วกว่าสายตามนุษย์ดังนั้นสิ่งที่เราทำจริง: เราจะแสดงหนึ่งหลักในเวลา แต่เราทำมันได้อย่างรวดเร็วมากที่แสดงข้างต้น
เราเลือกหนึ่งหลักที่จะแสดงมันรอ 2ms (ตัวแปร delay_time) เพื่อให้ MPU และ 7-segment ประมวลผลได้จากนั้นปิดตัวเลขนั้นและย้ายไปยังหลักถัดไปและทำเช่นเดียวกันจนกว่าเราจะถึงหลักสุดท้าย ความล่าช้า 2 มิลลิวินาทีนี้ไม่สามารถสังเกตได้ด้วยตามนุษย์และตัวเลขทั้งสี่หลักดูเหมือนจะเปิดพร้อมกัน
สิ่งสุดท้ายที่ต้องเรียนรู้เพื่อให้ทราบว่า ฟังก์ชัน print_segment (ตัวแปร) ทำงานอย่างไร ภายในฟังก์ชันนี้เราใช้อาร์เรย์ที่เราได้ประกาศไว้ ดังนั้นตัวแปรใดก็ตามที่เราส่งไปยังฟังก์ชันนี้ควรมีค่าระหว่าง (0-9) อักขระตัวแปรจะรับค่านี้และเปรียบเทียบกับค่าจริง ที่นี่ตัวแปรจะถูกเปรียบเทียบกับ '1' ในทำนองเดียวกันเราเปรียบเทียบกับตัวเลขทั้งหมดตั้งแต่ 0 ถึง 9 หากตรงกันเราจะใช้อาร์เรย์และกำหนดค่าแต่ละค่าให้กับหมุดเซ็กเมนต์ตามลำดับดังที่แสดงด้านล่าง
def print_segment (charector): if charector == 1: for i in range (7): GPIO.output (segment8, one)
แสดงเวลาบน 4 หลัก 7 ส่วนโดยใช้ Raspberry Pi:
ใช้แผนผังและรหัสที่ให้ไว้ที่นี่เพื่อทำการเชื่อมต่อและตั้งโปรแกรม raspberry pi ของคุณตามนั้น หลังจากทุกอย่างเสร็จสิ้นเพียงแค่เปิดโปรแกรมและคุณจะพบเวลาปัจจุบันที่แสดงในหน้าจอเจ็ดส่วน แต่มีบางสิ่งที่คุณต้องตรวจสอบก่อนหน้านี้
- ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่า Raspberry Pi ด้วยเวลาปัจจุบันในกรณีที่ทำงานในเวลาออฟไลน์
- เพิ่มพลัง Raspberry pi ของคุณด้วยอะแดปเตอร์ไม่ใช่กับแล็ปท็อป / คอมพิวเตอร์ของคุณเนื่องจากปริมาณกระแสไฟฟ้าที่ดึงโดยจอแสดงผล 7 ส่วนนั้นสูงและพอร์ต USB ของคุณไม่สามารถจ่ายได้
หากทุกอย่างเป็นไปตามที่คาดไว้คุณควรพบสิ่งนี้ด้านล่าง
การทำงานที่สมบูรณ์แบบของนาฬิกาปี่นี้ราสเบอร์รี่นอกจากนี้ยังสามารถตรวจสอบได้ที่วิดีโอได้รับด้านล่างหวังว่าคุณจะชอบโครงการนี้และสนุกกับการสร้างโครงการ แจ้งให้เราทราบว่าคุณคิดอย่างไรหรือหากคุณต้องการความช่วยเหลือ