หากคุณเป็นคนหนึ่งที่ประสบปัญหาเดียวกัน บทความนี้จะช่วยให้คุณเข้าใจ BCM ใน Raspberry Pi ได้อย่างสมบูรณ์
BCM คืออะไร และเหตุใดจึงใช้ใน Raspberry Pi
บีซีเอ็ม เป็นคำย่อของ “ ช่อง SOC ของ Broadcom ; ใน Raspberry Pi มีสองวิธีในการอ้างถึงพินของบอร์ด Raspberry Pi: วิธีหนึ่งคือ บีซีเอ็ม และอีกอย่างคือ กระดาน . พินระดับล่างบนบอร์ดที่กำหนดโดยชิป Broadcom คือพิน BCM และหมายเลข BCM จะแตกต่างจากหมายเลขพินของบอร์ด/ชิป เนื่องจากในบอร์ดเริ่มต้นของ Raspberry Pi มีจำนวนพินน้อยกว่า เมื่อบอร์ดใหม่เปิดตัว พินก็เพิ่มมากขึ้น และหมายเลข BCM ยังคงเหมือนเดิม เนื่องจากการจัดตำแหน่งโดยรวมของหมายเลขพินถูกรบกวน
Pins การกำหนดค่าของบอร์ด Raspberry Pi
ภาพด้านล่างแสดงการกำหนดค่าพินของบอร์ด Raspberry Pi ล่าสุดซึ่งมี 40 พิน ชื่อพินที่กล่าวถึงใน สี่เหลี่ยมสี คือ หมายเลข BCM ของหมุดและหมายเลขที่ระบุด้านใน วงกลม เป็นตัวแทนของ หมายเลขคณะกรรมการ ของพิน
เพื่อความสะดวกของผู้ใช้ Raspberry Pi รองรับทั้งการใช้งานของ บีซีเอ็ม และ กระดาน ตัวเลข ผู้ใช้เพียงแค่ต้องอ้างถึงพวกเขาในรหัสก่อนที่จะเข้ารหัสพิน
เพื่ออ้างถึงตัวเลขที่ปรากฏอยู่ภายใน วงกลม (1,2,3,4,…) GPIO.บอร์ด การกำหนดค่าจะใช้ภายในสคริปต์ Python:
GPIO.บอร์ดในขณะที่เพื่ออ้างถึงหมุดด้านใน สี่เหลี่ยมสี (GPIO10, GPIO11, GPIO12,…) GPIO.BCM ถูกนำมาใช้:
GPIO.BCM
จะใช้ BCM ในสคริปต์ Python ใน Raspberry Pi ได้อย่างไร
ลองทำความเข้าใจด้วยตัวอย่าง ถ้าฉันต้องใช้พิน 11 ของบอร์ด (GPIO17, BCM) เพื่อสลับ LED ฉันจะใช้ในโค้ด Python ตามที่ระบุไว้ด้านล่าง:
นำเข้า RPi.GPIO เช่น จีพีไอโอนำเข้า เวลา
GPIO.setmode ( GPIO.BCM )
GPIO.setup ( 17 ,GPIO.OUT )
สำหรับ ฉัน ใน พิสัย ( สิบห้า ) :
GPIO.เอาท์พุท ( 17 ,GPIO.สูง )
เวลานอน ( 2 )
GPIO.เอาท์พุท ( 17 , GPIO.ต่ำ )
เวลานอน ( 2 )
ในรหัสการตั้งค่าโหมดพิน ฉันได้กำหนดการกำหนดค่าพิน BCM เมื่อเริ่มต้น หลังจากนั้นฉันใช้พิน GPIO17 แทน 11 (หมายเลขบอร์ด)
วงจรสำหรับรหัส Python
วงจรฮาร์ดแวร์สำหรับโค้ดด้านบนแสดงอยู่ในภาพด้านล่าง ซึ่งฉันได้เน้นที่พิน GPIO 17 (BCM)
ไฟ LED จะกะพริบ 15 ครั้ง โดยมีการหน่วงเวลา 2 วินาทีระหว่างสถานะเปิดและปิดแต่ละครั้ง
บทสรุป
บีซีเอ็ม เป็นแชนเนลของ Broadcom บน Raspberry Pi ซึ่งใช้เพื่อกำหนดค่าพิน Raspberry Pi โดยใช้หมายเลขแชนเนลของ Broadcom เดอะ บีซีเอ็ม จำนวนพินแตกต่างจากหมายเลขบอร์ด ตัวเลขเหล่านี้ใช้ในขณะตั้งโปรแกรมพิน GPIO ผู้ใช้ต้องกำหนด GPIO.setmode จุดเริ่มต้น. หลังจากนั้นสามารถใช้พินตามรหัสได้