Skip to content

Instantly share code, notes, and snippets.

@idriszmy
Created May 24, 2019 09:34
Show Gist options
  • Save idriszmy/baec4dc8b2763d401467ce872645d53d to your computer and use it in GitHub Desktop.
Save idriszmy/baec4dc8b2763d401467ce872645d53d to your computer and use it in GitHub Desktop.
Menghasilkan corak cahaya LED (Contoh 3)
#
# 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