Beralih pin GPIO ditetapkan sebagai output

9

Saya membaca di sini bahwa saya bisa beralih keadaan pin GPIO diatur ke output dalam Python menggunakan perintah berikut:

GPIO.output(LED, not GPIO.input(LED))

di mana LEDnilai pin. Saya dapat menyalakan LED menggunakan kode berikut:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
LED = 17
GPIO.setup(LED,GPIO.OUT)
GPIO.output(LED,True)

Tetapi ketika saya mencoba GPIO.output(LED, not GPIO.input(LED)), kesalahan berikut dilemparkan.

RPi.GPIO.WrongDirectionException: Saluran GPIO belum diatur atau diatur ke arah yang salah

Apakah saya seharusnya mengatur saluran GPIO secara berbeda dari atas atau apakah situs yang saya rujuk memposting informasi yang salah?

bobthechemist
sumber

Jawaban:

13

Anda tidak dapat membaca output. Cukup simpan status pin dalam variabel.

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
LED = 17
ledState = False
GPIO.setup(LED,GPIO.OUT)

ledState = not ledState
GPIO.output(LED, ledState)
Gerben
sumber
8

Meskipun dinyatakan di tempat lain, Anda DAPAT membaca keluaran hanya dengan memasukkan pin GPIO yang sama dan mendapatkan nilai yang dikembalikan seperti yang Anda tentukan sebelumnya:

GPIO.setup(LED_red, GPIO.OUT) #set Pin LED_red as aoutput

GPIO.output(LED_red, GPIO.HIGH) #set Pin LED_red = HIGH (ON)

GPIO.input(LED_red) returns 1 
pengguna14486
sumber
Memang Anda bisa membaca port output. Namun perhatikan bahwa jika Anda melakukan itu dari proses yang berbeda dan kemudian memanggil GPIO.cleanup (), ini akan menghasilkan kondisi port berubah menjadi nol.
Diomidis Spinellis