Raspberry pi | Contoh Coding Mudah Dengan Python

Dalam tutorial ini, anda akan lihat beberapa contoh structure coding python yang mudah dilakukan dan senang difahami bagi sesiapa yang mempunyai pengalaman mengolah coding.

Tutorial ini akan menggunakan pin GPIO pada Raspberry pi untuk mengawal komponen elektronik. Penting untuk kita tahu bahawa pin GPIO ini mempunyai beberapa mode. Mode yang akan diterangkan adalah ‘BCM’ dan ‘BOARD’

Satu lagi yang perlu ambil perhatian adalah command GPIO.cleanup(). Command ini sngat penting untuk reset semula pin GPIO yang telah digunakan supaya dapat recycle semula pin tersebut untuk kegunaan project lain

Nombor di tengah adalah mode BOARD
mode BCM adalah pin yang berlabel GPIO

Menyalakan LED

# Sambungan Litar

  • LED 1: sambung ke GPIO 25(mode BCM)
  • LED 2: sambung ke GPIO 8(mode BCM)
  • LED 3: sambung ke GPIO 7 (mode BCM)
  • GND: sambung ke pin GND

#Coding/Sketch

Create file pada root dierctory dengan command ini pada terminal

$.nano led_test.py

#Bahagian ini adalah list library yang akan 
#digunakan dalam coding
import RPi.GPIO as GPIO
import time

#set pin GPIO ke BCM
GPIO.setmode(GPIO.BCM)

#declare pin GPIO yang digunakan
GPIO.setup(25, GPIO.OUT)
GPIO.setup(8, GPIO.OUT)
GPIO.setup(7, GPIO.OUT)

#coding utama yang akan dijalankan
GPIO.output(25,GPIO.HIGH)
GPIO.output(8,GPIO.LOW)
GPIO.output(7,GPIO.LOW)
time.sleep(3) 
#time.sleep adalah sama seperti delay yang digunakan dlm Arduino 
#3 bersamaan dengan 3 saat
GPIO.output(25,GPIO.LOW)
GPIO.output(8,GPIO.HIGH)
GPIO.output(7,GPIO.LOW)
time.sleep(3)
GPIO.output(25,GPIO.LOW)
GPIO.output(8,GPIO.LOW)
GPIO.output(7,GPIO.HIGH)
time.sleep(3)

GPIO.cleanup()

copy atau type kan coding diatas dan tekan Ctrl+x, kemudian tekan y dan tekan Enter

Coding di atas menggunakan 3 LED di mana setiap LED akan menyala selama 3 saat

Ultrasonic Sensor

#Sambungan Litar

#Coding 1

Create file pada root dierctory dengan command ini pada terminal

$.nano ultrsonicsensor1.py

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

TRIG=23
ECHO=24
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)

#Initial setup
GPIO.output(TRIG, True)
time.sleep(0.0001)
GPIO.output(TRIG, False)

#Coding Utama
while GPIO.input(ECHO) == False:
    start = time.time()
while GPIO.input(ECHO) == True:
    end = time.time()

sig_time = end-start

distance = sig_time / 0.000058
distance = round (distance, 2)

print('Distace: {} cm'.format(distance))

GPIO.cleanup()

Menggunakan coding di atas anda akan dapat jumlah jarak object yang berada di hadapan ultrasonic sensor anda. Pada bahagian initial setup, ultrasonic sensor menembak signal ultrosonic sensor setiap o.ooo1 saat.

Kemudian pada coding utama pengiraan jarak dapat dihasilkan melalui masa signal ultrasonic sampai ke receiver.

Tetapi coding ini hanya berjalan sekali sahaja. Untuk menjadikan loop untuk coding diatas sedikit tambahan perlu di ubah suai.

Coding #2

Create file pada root dierctory dengan command ini pada terminal

$.nano ultrsonicsensor2.py

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

TRIG=23
ECHO=24
GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)

try:
    def get_distance():
	GPIO.output(TRIG, True)
	time.sleep(0.0001)
	GPIO.output(TRIG, False)

        while GPIO.input(ECHO) == False:
            start = time.time()
        while GPIO.input(ECHO) == True:
            end = time.time()

        sig_time = end-start

        distance = sig_time / 0.000058
        distance = round (distance, 2)

        print('Distace: {} cm'.format(distance))
        return distance
    while True:
        distance = get_distance()
        time.sleep(0.1)
except KeyboardInterrupt:
        GPIO.cleanup()

Coding di atas akan menjadikan coding ultrasonic tadi ‘loop’. Terdapat syarat yang perlu dipenuhi sebelum coding ‘loop’ dijalankan iaitu perlu ada protocol ‘stop’

Dalam contoh di atas coding stop menggunakan function KeyboardInterrupt iaitu apabila Ctrl+C ditekan coding tersebut akan berhenti dan GPIO.cleanup() dpat dijalankan

Ultrasonic + LED

#Sambungan Litar

#Coding

Create file pada root dierctory dengan command ini pada terminal

$.nano ultrsonicsensor_led.py

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

TRIG=23
ECHO=24
LED1=25
LED2=8
LED3=7

GPIO.setup(TRIG, GPIO.OUT)
GPIO.setup(ECHO, GPIO.IN)
GPIO.setup(LED1, GPIO.OUT)
GPIO.setup(LED2, GPIO.OUT)
GPIO.setup(LED3, GPIO.OUT)


try:
    def LED1_ON():
        GPIO.output(LED1,GPIO.HIGH)
        GPIO.output(LED2,GPIO.LOW)
        GPIO.output(LED3,GPIO.LOW)
    def LED2_ON():
        GPIO.output(LED1,GPIO.LOW)
        GPIO.output(LED2,GPIO.HIGH)
        GPIO.output(LED3,GPIO.LOW)
    def LED3_ON():
        GPIO.output(LED1,GPIO.LOW)
        GPIO.output(LED2,GPIO.LOW)
        GPIO.output(LED3,GPIO.HIGH)
    def get_distance():
        GPIO.output(TRIG, True)
        time.sleep(0.0001)
        GPIO.output(TRIG, False)
        
        while GPIO.input(ECHO) == False:
            start = time.time()
        while GPIO.input(ECHO) == True:
            end = time.time()

        sig_time = end-start

        distance = sig_time / 0.000058
        distance = round (distance, 2)

        print('Distace: {} cm'.format(distance))
        return distance
    while True:
        distance = get_distance()
        time.sleep(0.1)
        
        if distance<=10:
            LED1_ON
        if 10 > distance > 20:
            LED2_ON
        if distance >=20:
            LED3_ON
except KeyboardInterrupt:
        GPIO.cleanup()
        print('Program Off')

Coding di atas adalah contoh cara menggunakan data sensor untuk trigger proses lain di mana data ultrasonic sensor digunakan untuk menghidupkan LED.

Servo motor

#Sambungan Litar

  • Input : sambungkan ke GPIO 4
  • Vcc: sambungkan ke 5V
  • GND: sambungkan ke GND

#Coding

Create file pada root dierctory dengan command ini pada terminal

$.nano servo.py

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
SERVO = 4
GPIO.setup(SERVO, GPIO.OUT)


p = GPIO.PWM(SERVO, 50) # GPIO 4 for PWM with 50Hz
p.start(2.5) # Initialization
try:
  while True:
    p.ChangeDutyCycle(5)
    time.sleep(0.5)
    p.ChangeDutyCycle(7.5)
    time.sleep(0.5)
    p.ChangeDutyCycle(10)
    time.sleep(0.5)
    p.ChangeDutyCycle(12.5)
    time.sleep(0.5)
    p.ChangeDutyCycle(10)
    time.sleep(0.5)
    p.ChangeDutyCycle(7.5)
    time.sleep(0.5)
    p.ChangeDutyCycle(5)
    time.sleep(0.5)
    p.ChangeDutyCycle(2.5)
    time.sleep(0.5)
except KeyboardInterrupt:
  p.stop()
  GPIO.cleanup()

Coding diatas adalah coding untuk menggerakkan servo motor menggunakan Raspberry pi. Nilai indicator untuk darjah pusingan adalah:

  • 2.5 = 0 darjah
  • 7.5 = 90 darjah
  • 12.5= 180 darjah

Tinggalkan Jawapan

Masukkan butiran anda dibawah atau klik ikon untuk log masuk akaun:

WordPress.com Logo

Anda sedang menulis komen melalui akaun WordPress.com anda. Log Out /  Tukar )

Twitter picture

Anda sedang menulis komen melalui akaun Twitter anda. Log Out /  Tukar )

Facebook photo

Anda sedang menulis komen melalui akaun Facebook anda. Log Out /  Tukar )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: