การสลับ GPIO ขาตั้งเป็นเอาท์พุท


9

ฉันอ่านที่นี่ว่าฉันสามารถสลับสถานะของ GPIO pin ที่ตั้งค่าเป็นเอาต์พุตใน Python โดยใช้คำสั่งต่อไปนี้:

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

โดยที่LEDค่าพิน ฉันสามารถเปิดไฟ LED โดยใช้รหัสต่อไปนี้:

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

แต่เมื่อฉันลองGPIO.output(LED, not GPIO.input(LED))ข้อผิดพลาดต่อไปนี้จะถูกโยนทิ้ง

RPi.GPIO.WrongDirectionException: ยังไม่ได้ตั้งค่าช่อง GPIO หรือตั้งค่าผิดทิศทาง

ฉันควรจะตั้งค่าช่อง GPIO แตกต่างจากด้านบนหรือเป็นเว็บไซต์ที่ฉันอ้างถึงการโพสต์ข้อมูลที่ไม่ถูกต้องหรือไม่

คำตอบ:


13

คุณไม่สามารถอ่านเอาต์พุต เพียงเก็บสถานะของพินในตัวแปร

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

แม้ว่าจะระบุไว้ที่อื่นคุณสามารถอ่านเอาต์พุตได้โดยเพียงแค่ใส่รหัส GPIO เดียวกันและรับค่าที่ส่งคืนคุณเพิ่งตั้งค่าไว้ก่อนหน้านี้:

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 

แน่นอนคุณสามารถอ่านพอร์ตเอาต์พุต อย่างไรก็ตามโปรดทราบว่าหากคุณทำเช่นนั้นจากกระบวนการที่แตกต่างจากนั้นเรียก GPIO.cleanup () สิ่งนี้จะส่งผลให้สถานะการเปลี่ยนพอร์ตเป็นศูนย์
Diomidis Spinellis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.