ทำ LED Blinker ด้วย RPI.GPIO.TH

RPI.GPIO.TH เป็นโครงการที่สร้างส่วน Interface ภาษา Python สำหรับใช้สื่อสารระหว่าง Raspberry Pi กับอุปกรณ์หรือ sensors ต่าง ๆที่ใช้กันทั่วไป โดยเน้นที่ความง่ายเพื่อให้ผู้เริ่มต้นศึกษาสามารถเริ่มต้นโครงงานของตัวเองได้ในเวลารวดเร็ว และเป็นพื้นฐานสำหรับการเรียนรู้ในระดับที่ลึกลงไป

โครงงานแรกที่นำมาเสนอให้ดูเป็นตัวอย่างคือการทำระบบไฟวิ่งและไฟกระพริบ ด้วยความยาวของการเขียน code ภาษา Python เพียง 19 บรรทัด
อธิบาย

1. Libraries :

from gadgets.led import ARRAY_LED
import time

Module ชื่อ ARRAY_LED เป็นหนึี่งในกลุ่มอุปกรณ์ประเภท LED ทำหน้าที่ดูแล LED หลายดวงพร้อมกัน

 2. Funtion :

def lighting(l):
 for j in range(2):
  for i in ps:
   l.blink([i],1,0.1)
  for k in ps_rev:
   l.blink([k],1,0.1) 
 for j in range(3):  
  l.blink(ps,3,0.1)
  time.sleep(0.5)

lighting เป็นฟังก์ชั่นทำหน้าที่ในการแสดงการเปิด-ปิด LED ตามจังหวะเวลา ฟังก์ชั่นนี้รับ argument เข้ามาเป็น ARRAY_LED instance ซึ่งแทนที่ด้วย l

ARRAY_LED.blink(leds=[],numTimes=3,dur=0.1) 

เป็นชุดคำสั่งให้ LED ที่ต่อกับ Pin หมายเลขต่าง ๆ ที่กำหนดไว้ใน leds=[] จำนวนครั้งของการกระพริบระบุไว้ที่ numTimes ระยะเวลาระหว่างการเปิด-ปิด กำหนดไว้ใน dur ในหน่วยของวินาที  ในตัวอย่างกำหนดไว้เป็น

l.blink([i],1,0.1)

ซึ่งหมายถึงให้ LED ที่มีหมายเลข Pin ที่ i กระพริบ 1 ครั้ง ระยะเวลาห่างของการเปิด-ปิด เป็น 0.1 วินาที


3. Variables :

ps = [29,31,33,35,37]
ps_rev = ps[::-1] # reverse list
l = ARRAY_LED(ps)

สร้างตัวแปรขึ้นมา 3 ตัว คือ
ps เป็น List เก็บหมายเลขตำแหน่งของ Pin ที่ใช้ต่อกับ LED
ps_rev ทำหน้าที่เดียวกับ ps เพียงแต่มีการเรียงลำดับของหมายเลขตำแหน่ง Pin สลับกัน
l คือตัวแปรที่เป็น instance ของ ARRAY_LED

4. Working :

for i in range(10):
 lighting(l)

การทำงานคือการวน loop เรียกใช้ funtion lighting() นั่นเอง

5. Cleanup :

l.cleanup()

เป็นการคืนทรัพยากรให้ระบบ และล้างสถานะของ Pin ที่ใช้งาน

Code ที่สำเร็จแล้ว

from gadgets.led import ARRAY_LED
import time

def lighting(l):
 for j in range(2):
  for i in ps:
   l.blink([i],1,0.1)
  for k in ps_rev:
   l.blink([k],1,0.1) 
 for j in range(3):  
  l.blink(ps,3,0.1)
  time.sleep(0.5)

ps = [29,31,33,35,37]
ps_rev = ps[::-1] # reverse list
l = ARRAY_LED(ps)
for i in range(10):
 lighting(l)
l.cleanup()
  

Previous
Next Post »