Created
May 24, 2019 09:34
-
-
Save idriszmy/baec4dc8b2763d401467ce872645d53d to your computer and use it in GitHub Desktop.
Menghasilkan corak cahaya LED (Contoh 3)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# | |
# Fungsi kod: Menghasilkan corak cahaya LED (Contoh 3). | |
# Penulis: Idris Zainal Abidin | |
# Blog: https://idrisz.my | |
# Kemaskini: 24 Mei 2019 | |
# | |
from gpiozero import LED, Button, Buzzer # Import fungsi LED, Button dan Buzzer | |
# daripada pustaka gpiozero | |
from time import sleep # Import fungsi sleep dari pustaka time | |
import os # Import system dari pustaka os | |
led1 = LED(17) # led1 bersambung pada GPIO17 | |
led2 = LED(18) # led2 bersambung pada GPIO18 | |
led3 = LED(27) # led3 bersambung pada GPIO27 | |
led4 = LED(22) # led4 bersambung pada GPIO22 | |
led5 = LED(25) # led5 bersambung pada GPIO25 | |
led6 = LED(12) # led6 bersambung pada GPIO12 | |
led7 = LED(13) # led7 bersambung pada GPIO13 | |
led8 = LED(19) # led8 bersambung pada GPIO19 | |
sw1 = Button(21) # sw1 bersambung pada GPIO21 | |
sw2 = Button(16) # sw2 bersambung pada GPIO16 | |
sw3 = Button(20) # sw3 bersambung pada GPIO20 | |
buzzer = Buzzer(26) # buzzer bersambung pada GPIO26 | |
NONE = 0 # Pemboleh ubah untuk mengawal mod led - NONE | |
DECREASE = 1 # Pemboleh ubah untuk mengawal mod led - DECREASE | |
INCREASE = 2 # Pemboleh ubah untuk mengawal mod led - INCREASE | |
ALL_OFF = 9 # Pemboleh ubah untuk mengawal mod led - ALL_OFF | |
ALL_ON = 10 # Pemboleh ubah untuk mengawal mod led - ALL_ON | |
def led(ledNumber): # Fungsi corak cahaya LED dengan pemboleh ubah ledNumber | |
if ledNumber == 1: # Jika pemboleh ubah ledNumber adalah 1 | |
led1.on() # Nyalakan led1 | |
else: # Jika bukan | |
led1.off() # Padamkan led1 | |
if ledNumber == 2: # Jika pemboleh ubah ledNumber adalah 2 | |
led2.on() # Nyalakan led2 | |
else: # Jika bukan | |
led2.off() # Padamkan led2 | |
if ledNumber == 3: # Jika pemboleh ubah ledNumber adalah 3 | |
led3.on() # Nyalakan led3 | |
else: # Jika bukan | |
led3.off() # Padamkan led3 | |
if ledNumber == 4: # Jika pemboleh ubah ledNumber adalah 4 | |
led4.on() # Nyalakan led4 | |
else: # Jika bukan | |
led4.off() # Padamkan led4 | |
if ledNumber == 5: # Jika pemboleh ubah ledNumber adalah 5 | |
led5.on() # Nyalakan led5 | |
else: # Jika bukan | |
led5.off() # Padamkan led5 | |
if ledNumber == 6: # Jika pemboleh ubah ledNumber adalah 6 | |
led6.on() # Nyalakan led6 | |
else: # Jika bukan | |
led6.off() # Padamkan led6 | |
if ledNumber == 7: # Jika pemboleh ubah ledNumber adalah 7 | |
led7.on() # Nyalakan led7 | |
else: # Jika bukan | |
led7.off() # Padamkan led7 | |
if ledNumber == 8: # Jika pemboleh ubah ledNumber adalah 8 | |
led8.on() # Nyalakan led8 | |
else: # Jika bukan | |
led8.off() # Padamkan led8 | |
if ledNumber == ALL_OFF: # Jika pemboleh ubah ledNumber adalah ALL_OFF | |
led1.off() # Padamkan led1 | |
led2.off() # Padamkan led2 | |
led3.off() # Padamkan led3 | |
led4.off() # Padamkan led4 | |
led5.off() # Padamkan led5 | |
led6.off() # Padamkan led6 | |
led7.off() # Padamkan led7 | |
led8.off() # Padamkan led8 | |
elif ledNumber == ALL_ON: # Jika pemboleh ubah ledNumber adalah ALL_ON | |
led1.on() # Nyalakan led1 | |
led2.on() # Nyalakan led2 | |
led3.on() # Nyalakan led3 | |
led4.on() # Nyalakan led4 | |
led5.on() # Nyalakan led5 | |
led6.on() # Nyalakan led6 | |
led7.on() # Nyalakan led7 | |
led8.on() # Nyalakan led8 | |
mode = NONE # Pemboleh ubah mod led | |
ledPosition = 0 # Pemboleh ubah posisi led | |
led(ALL_ON) # Nyalakan semua led | |
buzzer.beep(0.1, 0.1, 1) # Buzzer bunyi beep sekali | |
led(ALL_OFF) # Padamkan semua led | |
try: | |
while True: # Kenyataan berulang utama | |
if sw1.is_pressed and mode != DECREASE: # Jika butang sw1 ditekan dan | |
# mod led bukan DECREASE | |
buzzer.beep(0.1, 0.1, 2) # Buzzer bunyi beep 2 kali | |
mode = DECREASE # Tetapkan mod led kepada DECREASE | |
elif sw2.is_pressed and sw3.is_pressed: # Jika butang sw2 dan sw3 ditekan | |
sleep(0.5) # Tunggu 0.5 saat | |
for loop in range(3): # Buzzer bunyi beep 3 kali beserta kelipan semua led | |
led(ALL_ON) | |
buzzer.on() | |
sleep(0.2) | |
led(ALL_OFF) | |
buzzer.off() | |
sleep(0.2) | |
sleep(1) # Tunggu 1 saat | |
os.system("sudo shutdown -h now") # Mematikan Raspberry Pi | |
elif sw2.is_pressed and mode != INCREASE: # Jika butang sw2 ditekan dan | |
# mod led bukan INCREASE | |
buzzer.beep(0.1, 0.1, 2) # Buzzer bunyi beep 2 kali | |
mode = INCREASE # Tetapkan mod led kepada INCREASE | |
elif sw3.is_pressed and mode != NONE: # Jika butang sw3 ditekan dan | |
# mod led bukan NONE | |
buzzer.beep(0.1, 0.1, 1) # Buzzer bunyi beep sekali | |
mode = NONE # Tetapkan mod led sebagai NONE | |
if mode == INCREASE: # Jika mod led adalah INCREASE | |
if ledPosition < 8: # Jika posisi led lebih kurang daripada 8 | |
ledPosition = ledPosition + 1 # Naikkan posisi led | |
else: # Sebaliknya | |
ledPosition = 0 # Tetapkan posisi led kepada 0 | |
elif mode == DECREASE: # Jika mod led adalah DECREASE | |
if ledPosition > 0: # Jika posisi led lebih besar daripada 0 | |
ledPosition = ledPosition - 1 # Kurangkan posisi led | |
else: # Sebaliknya | |
ledPosition = 8 # Tetapkan posisi led kepada 8 | |
led(ledPosition) # Panggil fungsi posisi led | |
sleep(0.05) # Tunggu 50 mili saat | |
except KeyboardInterrupt: | |
led(ALL_OFF) # Padamkan semua led |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment