กลับไปหน้ารวมไฟล์
shift-register-7segment.md

จัดการ Pin ให้เทพด้วย IC 74HC595 Shift Register

ถ้าเอ็งต่อ 7-segment display เข้ากับ Arduino ตรงๆ ตัวเดียวก็ล่อไป 7 digital pins แล้วนะน้อง ถ้าเกิดอยากจะหล่อต่อสัก 2 ตัวนี่ต้องควักมาใช้ถึง 14 pins เลยนะเฮ้ย! แป๊บเดียว Pins ก็หมดบอร์ดแล้วเนี่ย แต่ไม่ต้องห่วง 74HC595 Shift Register คือ IC เวทมนตร์ที่จะมาแก้ปัญหานี้ให้เอ็งเอง จัดไปวัยรุ่น!

invisible_mess_glasses_relay_schema_1772681179521.png

การแปลง Serial เป็น Parallel

เจ้า Shift Register นี่ทำหน้าที่เป็นตัวขยายร่าง Pins ให้เรา:

  1. Data Line: Arduino จะส่งข้อมูลมาเป็นชุด 8 bits (เช่น 11001100 ที่เอาไว้กำหนดรูปแบบไฟ LED) ผ่านสายไฟแค่เส้นเดียว (Serial Data)
  2. Clock Line: สายเส้นที่สองทำหน้าที่เป็นเหมือน "เมโทรนอม" คอยให้จังหวะ บอกเจ้าชิปว่า "เฮ้ย บิทต่อไปกำลังมาแล้วนะ"
  3. Latch Line: พอข้อมูลครบ 8 bits เข้าไปนอนรอในชิปแล้ว Arduino ก็จะส่งสัญญาณ "Latch" บอกให้ชิปปล่อยไฟออกไปที่ output ทั้ง 8 pins (Parallel) พร้อมกันทันที

ทำแบบนี้ เอ็งก็คุม output ได้ตั้ง 8 ช่อง โดยใช้ Pins บน Arduino แค่ 3 Pins เอง หล่อเท่เลยงานนี้!

อุปกรณ์ที่ต้องใช้ (ห้ามช็อตนะตัวนี้)

  • Arduino Uno/Nano
  • IC 74HC595 Shift Register
  • 7-Segment Display (จะแบบ Common Anode หรือ Cathode ก็จัดมา)
  • Current Limiting Resistors (จัดไป 8 ตัว อย่าลืมใส่ล่ะเดี๋ยว LED บึ้ม)

การต่อแบบ Daisy Chaining

ความพีคของ Shift Register คือมันเอามา "พ่วง" กันได้ว่ะน้อง ข้อมูลที่ล้นจากตัวแรกมันจะไหลไปเข้า input ของตัวที่สองเอง หมายความว่าเอ็งจะคุม 2 จอ (16 LEDs) หรือ 3 จอ (24 LEDs) เอ็งก็ยังใช้แค่ 3 Pins เท่าเดิมเป๊ะบน Arduino ของเอ็ง ท่านี้คือท่าบังคับถ้าเอ็งจะสร้าง LED Cube ใหญ่ๆ หรือพวกป้ายคะแนน (Scoreboards) เลยนะเว้ย สู้งานนะน้อง!

ข้อมูล Frontmatter ดั้งเดิม

title: "Seven-segment display with a 74HC595"
description: "Expand your pins! Learn how to use a Shift Register to control a 7-segment display using only 3 Arduino pins instead of 7."
category: "Screens & Displays"
difficulty: "Intermediate"