Hoe werkt de GPIO poort

P1-2 Een pin als ‘INPUT’ heeft geen waarde (floating) maar kan met een interne weerstand ‘hoog’ (UP) of ‘laag’ (DOWN) gezet worden. Zodra de switch wordt ingedrukt zal de waarde omgeschakeld worden en wordt deze als zodanig gedetecteerd. PUD GPIO.setup(pin,GPIO.IN, pull_up_down=GPIO.PUD_UP) dus switch wordt verbonden met GND GPIO.setup(pin,GPIO.IN, pull_up_down=GPIO.PUD_DOWN) dus switch wordt verbonden met 5V In sommige distributies dient eerst de RPi.GPIO functie toegevoegd te worden met:

sudo apt-get update
sudo apt-get install python-pip python-dev
sudo pip install RPi.GPIO

Python script om Raspberry met een button tussen pin 33 en GND uit te schakelen:


#!/usr/bin/python
#
import RPi.GPIO as GPIO
import time
import os

shutdownPin = 13
GPIO.setmode(GPIO.BCM)
GPIO.setup(shutdownPin,GPIO.IN, pull_up_down=GPIO.PUD_UP)

while True:
    pinStatus = GPIO.input(shutdownPin)
    if pinStatus == False:
        os.system("sudo halt")
    time.sleep(1)

Een andere (mooiere) manier is het volgende script met interrupt mode:


#!/usr/bin/python
#
from subprocess import call 
import RPi.GPIO as gpio 

# Define a function to keep script running 
def loop(): 
    raw_input() 

# Define a function to run when an interrupt is called 
def shutdown(pin):
    call('halt', shell=False) 

shutdownPin = 13 
gpio.setmode(gpio.BCM) 
gpio.setup(shutdownPin, gpio.IN) 
gpio.add_event_detect(shutdownPin, gpio.RISING, callback=shutdown, bouncetime=200) 

loop()

.