Đặt một chân GPIO làm đầu ra


9

Tôi đọc ở đây rằng tôi có thể chuyển trạng thái của chân GPIO được đặt thành đầu ra trong Python bằng lệnh sau:

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

nơi LEDlà giá trị pin. Tôi có thể bật đèn LED bằng mã sau:

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

Nhưng khi tôi thử GPIO.output(LED, not GPIO.input(LED)), lỗi sau đây được đưa ra.

RPi.GPIO.WrongDirectionException: Kênh GPIO chưa được thiết lập hoặc được thiết lập sai hướng

Tôi có nên thiết lập kênh GPIO khác với ở trên không hoặc là trang web tôi tham chiếu đăng thông tin không chính xác?

Câu trả lời:


13

Bạn không thể đọc một đầu ra. Chỉ cần lưu trữ trạng thái của pin trong một biến.

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)

8

Mặc dù được nêu ở nơi khác, bạn CÓ THỂ đọc một đầu ra bằng cách chỉ cần nhập cùng mã pin GPIO và nhận giá trị trả về mà bạn vừa đặt ra trước đó:

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 

Thật vậy, bạn có thể đọc một cổng đầu ra. Tuy nhiên lưu ý rằng nếu bạn thực hiện điều đó từ một quy trình khác và sau đó gọi GPIO.cleanup (), điều này sẽ dẫn đến trạng thái thay đổi cổng thành không.
Diomidis Spinellis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.