หลังจากเมื่อบทความตอนที่แล้วเราได้ทดลองสร้าง Python เพื่อทำนาฬิกาปลุกบน Raspberry Pi กันไปแล้วนะครับ วันนี้เราจะนำโค้ดอันเก่า มาปรับปรุงกันใหม่ ให้เป็น Raspberry Alarm Clock เพื่อร้องเพลงเคารพธงชาติตอน 6 โมงเย็น พร้อมด้วย ไฟ LED กระพริบแสดงสถานะกันนะครับ โดยไฟ LED จะกระพริบอยู่สองแบบ คือแบบ Normal เพื่อให้เราว่าโปรแกรมเรายังทำการนับเวลาอยู่นะ และมีไฟกระพริบบอกในขณะทำการร้องเพลง เมื่อร้องจบ ก็จะกลับมาแสดงสถานะปกติครับ เอาละครับเพื่อไม่ให้เป็นการเสียเวลาเรามาเริ่มกันดีกว่า
อันดับแรก เรามาดู Hardware กันก่อนครับ
อุปกรณ์ทดลองก็มี
R 1K 3 ตัว
LED สีแดง 2 ตัว (ใช้บอกสถานะขณะทำการร้องเพลง)
LED สีส้ม 1 ตัว (ใช้บอกสถานะ normal)
แผ่นต่อวงจร (Breadboard)
สายจั๊ม
บอร์ด Raspberry Pi
และ ลำโพงเล็กๆ
สำหรับวงจรนะครับ จะใช้อุปกรณ์ต่อตามขาดังนี้
GPID0 (ขา 3) ต่อเข้า LED ส้ม ขา +
GPIO1 (ขา5) ต่อเข้า LED แดง1 ขา +
GPIO4 (ขา7) ต่อเข้า LED แดง2 ขา+
GND (ขา9) ต่อเข้าปายขาตัวท้านทาน 1k ทุกตัว เพื่อให้ครบวงจร
ถ้า งง ก็ไปดูขา GPIO และ การต่อใกล้ๆ กันเลยครับ
สำหรับคนที่จะดูรายชื่อขา GPIB ก็ลองไปศึกษาเพิ่มเติมได้ครับที่
–> http://elinux.org/RPi_Low-level_peripherals
ตัวอย่างการนับขา GPIO ให้หันบอร์ดเข้าหาตัว (ทำให้ตัว Raspberry Pi ตั้งหัวขึ้น) และอ่านเรียงตามนี้นะครับ
หลังจากนั้นก็โปรแกรม python เข้าไป สำหรับโค้ด rev 1.0.3 ตัวนี้ ผมได้ทำการแก้ไขโดยเพิ่มการ Import RPi.GPIO เข้าไป เพื่อให้สามารถส่งสัญญาณออก port GPIO ให้ LED สามารถกระพริบได้ครับ ไปดูโค้ดกันเลยครับ
# Application: Raspberry Pi sing the national anthem # Rev 1.0.3 (12-August-2013) # Made By : ChokeLive (chokelive@gmail.com) # website: www.chokelive.com import time import pygame import RPi.GPIO as GPIO pygame.init() clock = pygame.time.Clock() GPIO.setmode(GPIO.BOARD) GPIO.setup(3,GPIO.OUT) GPIO.setup(5,GPIO.OUT) GPIO.setup(7,GPIO.OUT) GPIO.output(3,GPIO.LOW) GPIO.output(5,GPIO.LOW) GPIO.output(7,GPIO.LOW) ledFlag = 0 while True: clock.tick(1) theTime=time.strftime("%H:%M:%S", time.localtime()) print theTime # Blink Normal LED if ledFlag == 0: ledFlag = 1 GPIO.output(3,GPIO.HIGH) else: ledFlag = 0 GPIO.output(3,GPIO.LOW) if theTime == "18:00:00": print "Play Sound!!" pygame.mixer.init() pygame.mixer.music.load("thaination.mp3") pygame.mixer.music.play() while pygame.mixer.music.get_busy(): pygame.time.Clock().tick(3) GPIO.output(3,GPIO.LOW) # Blink Sound LED if ledFlag == 0: ledFlag = 1 GPIO.output(5,GPIO.HIGH) GPIO.output(7,GPIO.LOW) else: ledFlag = 0 GPIO.output(5,GPIO.LOW) GPIO.output(7,GPIO.HIGH)
สำหรับการทำงานนะครับ โปรแกรมก็จะนับเวลาไปเรื่อยๆ มีการ print เวลาออกหน้าจอ command (ถ้า SSH เข้าไปก็จะเห็น) ทุกๆ 1 วินาที และจะมีไฟ LED สีส้มกระพริบบอกสถานะอยู่ตลอดเวลา หลังจากนั้น เมื่อเวลาดำเนินไปถึง 18:00 น. ตัว Pi ก็จะทำการเล่นเพลงเคารพธงชาติ พร้อมด้วย LED สีแดงจะแสดงสถานะกระพริบกันสลับไปมาระหว่างการร้องเพลงชาติ หลังจากเพลงชาติจบแล้ว ไฟสีส้มก็จะมากระพริบตามปกติครับ
ถ้าใครนึกภาพไม่ออกลองไปดู youtube ที่ผมได้ถ่ายเป็น clip Video ไว้ครับ
ลองไปทดลองศึกษาและเล่นดูครับ สนุกแถวได้ความรู้ด้วยครับ แล้วพบกันใหม่ตอนหน้าครับ