วันอังคารที่ 1 มีนาคม พ.ศ. 2559

ทดลองเขียน python: อ่านค่าจากสวิทช์

ได้บอร์ด Raspberry Pi มานานหลายเดือนแล้ว เดิมทีจะเอาไปทำระบบ Digital Signage เลยซื้อไว้ 2 ตัว แต่พอจะทำจริง xibo ยกเลิกโปรแกรมบน Ubuntu ทำให้ฝันสลายและงานเข้า เพราะเหลือแต่ไคลเอนท์จาก Android และ Windows สุดท้ายเลยเลือกซื้อ Android Box ไปแทน (แพงกว่าหลายร้อยบาท)

แล้ว Raspberry Pi ก็นอนค้างอยู่ที่โต๊ะจนฝุ่นเกาะ จนล่าสุดเลยเอามาดูหนังฟังเพลง โดยลง OpenElec สำหรับดูหนังตัวหนึ่ง ลง Volumio สำหรับฟังเพลงเครื่องหนึ่ง

รวมๆ ก็ถือว่าใช้ได้ดี แต่บังเอิญอยากทำปุ่มควบคุม Volumio โดยไม่ต้องเปิดเครื่องคอมพิวเตอร์ สุดท้ายก็ลองเขียนโปรแกรมควบคุมผ่าน Python ก็พอเขียนได้แต่ยังไม่สามารถประยุกต์ใช้ได้อย่างเต็มประสิทธิภาพ คงต้องอาศัยประสบการณ์สักพัก

บทความนี้ไม่ได้กล่าวถึงการติดตั้ง python ต้องอ่านและทำตามวิธีการติดตั้งที่ เว็บนี้


ใช้ GPIO Extension Board เพื่อสะดวกต่อการเชื่อมต่ออุปกรณ์อื่นๆ




เริ่มจากเขียนคำสั่งแรก ซึ่งต้องนำเข้าโมดูล GPIO และเรียกใช้โมดูล time เพื่อหน่วงเวลาตอนกดปุ่ม

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(17,GPIO.IN)

prev_input = 0

while True:
  input = GPIO.input(17)

  if ((not prev_input) and input):
    print("Button pressed")

  prev_input = input
  time.sleep(0.05)


อธิบายโค้ด:

กำหนดขา 17 ให้เป็น Input
กำหนดค่า prev_input = 0 ใช้ในการตรวจสอบปุ่มกดก่อนหน้า
ทำงานไปเรื่อยๆ ด้วยคำสั่ง while True
เก็บค่าสถานะของขา 17 ไว้ในตัวแปรชื่อ input
ตรวจสอบถ้า ก่อนหน้าไม่ได้กดปุ่ม prev_input = 0 และมีสถานะ HIGH มาที่ขา 17
ให้พิมพ์ข้อความ "Button pressed"
เก็บค่า input ไว้ใน prev_input เพื่ออ้างอิงค่า
หน่วงเวลา 0.05


การเชื่อมต่ออุปกรณ์เข้ากับ Raspberry Pi

ต่อวงจรเพื่อรับค่าจากสวิทช์


แค่นี้ก็สามารถใช้งานปุ่มกดกับบอร์ด Raspberry Pi ได้แล้ว และบทความต่อไปจะเขียนคำสั่งควบคุมการเล่นเพลงผ่าน MPD Server คอยติดตามนะครับ

อ่านเพิ่มเติมได้ที่:
https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/robot/buttons_and_switches/

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

Driver สำหรับ USB UART TTL

https://drive.google.com/open?id=0B80EqvaAGSB8dU9EMXdwQmJCLVE