Tags:
Forums: 

คือผมลองเขียน code python ที่ได้จากเว็บบล๊อกแห่งหนึ่ง เชื่อม sensor ผ่าน GPIO 2pin บน Raspberrypi พอรัน code แล้วเกิด error ดังนี้ครับ (บรรทัดที่ ******) จะแก้ code ยังไงดีครับ ขอบคุณครับ

def reading(sensor):
import time
import RPi.GPIO as GPIO

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)

if sensor == 0:
    GPIO.setup(17,GPIO.OUT)
    GPIO.setup(27,GPIO.IN)
    GPIO.output(17,GPIO.LOW)

    time.sleep(0.3)

    GPIO.output(17, True)

    time.sleep(0.00001)

    GPIO.output(17, False)

    while GPIO.input(27) == 0:
        signaloff = time.time()

    while GPIO.input(27) == 1:
        signalon = time.time()

****** timepassed = signalon - signaloff

    distance = timepassed * 17000

    return distance

    GPIO.cleanup()

else:
    print "Incorrect usonic() function varible."

******print reading(0)

Get latest news from Blognone
By: sk.maxmize
iPhoneWindows PhoneAndroidBlackberry
on 10 July 2014 - 00:07 #720559

ถ้าจะให้ดีช่วยโพสว่า Error อ่ะก็ยังดีครับ

อาจจะเป็นที่

while GPIO.input(27) == 0:
    signaloff = time.time()

while GPIO.input(27) == 1:
    signalon = time.time()

แล้วเช็คดู Input ที่รับเข้ามาทาง Pin 27 ดูครับ ว่าตอนแรกเป็น 0 หรือ 1

By: mix5003
AndroidUbuntuWindows
on 10 July 2014 - 12:53 #720662

ผมเดาตามด้านบนครับ คือ ถ้า GPIO.input(27) เป็น 1 เลย ตัวแปร signaloff จะไม่มีครับ น่าจะ error ตรงนี้
ลองใส่

signaloff = time.time()
signalon = time.time()
while GPIO.input(27) == 0:
    signaloff = time.time()

while GPIO.input(27) == 1:
    signalon = time.time()

ส่วนบรรทัดล่าง ตรง print ผมเดาว่าเกิดตอนเรียกครั้งที่ 2 เพราะก่อน else มัน

    return distance

    GPIO.cleanup()

จะเห็นว่ามัน return ก่อน cleanup ดังนั้น cleanup ไม่มีโอกาศทำงานแน่นอนครับ อาจจะเพราะไม่ได้ cleanup รอบ 2 เลยพังมั้งครับ

ปล เดาล้วนๆ ไม่เคยเขียน rasberry pi

By: gsoftthai
Windows PhoneAndroidUbuntuWindows
on 10 July 2014 - 15:18 #720710
gsoftthai's picture

ขอบคุณครับ ทั้งสองท่าน

By: JavaDevil
iPhoneUbuntuIn Love
on 10 July 2014 - 16:20 #720726

สรุปมัน Error อะไรครับเนี้ย