Control Relay ด้วย Key Board
|
. สวัสดีครับ ทุกท่านหลังจากที่ผมห่างหายไปนานด้วยว่าภาระงานมีเยอะครับวันนี้กลับมา พร้อมเสนอ มินิโปรเจคครับ หวังว่าจะมีประโยชน์แก่ท่านที่กำลังสนใจศึกษาครับ นั่นคือ การควบคุมรีเลย์ด้วยการกดปุ่มบนคีย์บอร์ดนั่นเองครับ ท่านสามารถนำไปประยุกต์ใช้ได้เช่นการบังคับรถ หรือหุ่นยนต์ เป็นครับ มาดูกันเลยครับ
. ก่อนอื่นให้ท่านทำการ boot raspberry pi ขึ้นมาครับแล้ว remote putty เข้าไปให้เรียบร้อยครับ จากนั้นให้ท่านใช้คำสั่ง cd .. เพื่อถอยกลับไปหนึ่งโฟลเดอร์ ก็คือท่านจะไปหยุดอยู่ที่ Directory home นั่นเอง ครับ

. จากนั้นให้ท่านทำการสร้าง file ที่มีนามสกุล .py ด้วยคำสั่ง sudo nano robot.py

. แล้วให้ท่านทำการ copy source code ด้านล่างนี้ไปวางครับ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
import termios, sys, os import RPi.GPIO as GPIO import time TERMIOS = termios count = 1 count1 = 1 pin = 26 pin1 = 24 slp = 1 slp1 = 2 def getkey(): fd = sys.stdin.fileno() old = termios.tcgetattr(fd) new = termios.tcgetattr(fd) new[3] = new[3] & ~TERMIOS.ICANON & ~TERMIOS.ECHO new[6][TERMIOS.VMIN] = 1 new[6][TERMIOS.VTIME] = 0 termios.tcsetattr(fd, TERMIOS.TCSANOW, new) c = None try: c = os.read(fd, 1) finally: termios.tcsetattr(fd, TERMIOS.TCSAFLUSH, old) return c GPIO.setmode(GPIO.BOARD) GPIO.setup(pin,GPIO.OUT) GPIO.setup(pin1,GPIO.OUT) while (True): key=getkey() print key if key == 'a': print '------- tick:' GPIO.output(pin,True) GPIO.output(pin1,False) print 'MOVING FORWARD' elif key == 's': print '------- tick:)' GPIO.output(pin1,True) GPIO.output(pin,False) print 'MOVING BACKWARD' else: print 'PRESS a for MOVING FORWARD' print 'PRESS s for MOVING BACKWARD' GPIO.cleanup |
แล้วท่าน ต้องจัดระเบียบโค้ดให้ได้ตามนี้ด้วยนะครับ เพราะ python ให้ความสำคัญเรื่องการย่อหน้าของโค้ด ไม่งั้นจะ error นะครับ

. จากนั้นท่านก็ลอง ต่อ บอร์ดรีย์เลย์ หรือลองกับ Webiopi ก็ได้ครับ แล้วใช้คำสั่ง sudo python robot.py เพื่อทำการ RUN ครับ ถ้าไม่มีอะไรผิดพลาดท่าน จะได้หน้าตาแบบ นี้ครับ

แล้วท่านจะเห็นว่า มันไม่มีอะไรเกิดขึ้นเลย นั่นเป็นเพราะว่ามันรันแล้ว และมันก็ไม่ Error ด้วยครับ และนั่นก็หมายถึงว่ามันรอให้เรา กดปุ่ม a,s ที่เราได้เขียนไว้ใน code นั่นเองครับ ลองดูครับ

เสร็จเรียบร้อยครับ มินิโปรเจค โปรเจคแบบมินิ ผมเชื่อว่าหลายท่านอาจมีปัญหา PM หาผมได้ทาง Facebook ได้เลยครับ และนี่คือผลการทำงานที่ได้
ปล. คือความจริงแล้วเราสามารถประยุกให้มันกดปุ่มไหนก็ได้ คุมรีเลย์กี่ช่องก็ได้นะครับ การประยุกต์นั้นไม่ยากครับ เพียวเพิ่ง pin gpio เข้ามา และเขียนแยกไปตามปุ่มที่ต้องการครับ ขอบคุณสำหรับการติดตามครับ