2016-02-02 41 views
0

我遇到了與我的項目的2個部分有關的問題。我使用樹莓派來閱讀和控制電位器和一些LED。由樹莓派/ python控制的arduino導致的問題

1當我用電位計控制LED燈時,我的LED燈在我的低門檻上閃爍,但不在我的上限上,我該如何解決這個問題?

(固定)2我的電位器必須設置爲0時,首先啓動腳本其他明智的我從我的電位器異常讀取,我怎麼能解決這個問題?

我試着在前後添加一個延遲。我曾嘗試在中間添加字符串,但沒有運氣。我在谷歌搜索解決方案,沒有運氣。我發現的所有內容都是眨眼示例的腳本。

我有這個腳本運行在我的覆盆子pi通過python來控制我的arduino。如果我將它張貼在錯誤的區域,請讓我知道它應該發佈在哪裏,以便我可以移動它。

這是我的腳本!

from nanpy import Arduino 
from nanpy import serial_manager 
from time import sleep 

serial_manager.connect('/dev/ttyUSB0') 

POT = 0 
LED1 = 13 
LED2 = 12 
LED3 = 11 
LED4 = 10 
LED5 = 9 
LED6 = 8 
LED7 = 7 
LED8 = 6 

Arduino.pinMode(POT, Arduino.INPUT) 
Arduino.pinMode(13, Arduino.OUTPUT) 
Arduino.pinMode(12, Arduino.OUTPUT) 
Arduino.pinMode(11, Arduino.OUTPUT) 
Arduino.pinMode(10, Arduino.OUTPUT) 
Arduino.pinMode(9, Arduino.OUTPUT) 
Arduino.pinMode(8, Arduino.OUTPUT) 
Arduino.pinMode(7, Arduino.OUTPUT) 
Arduino.pinMode(6, Arduino.OUTPUT) 

print "starting" 
while True: 
    pot = Arduino.analogRead(POT) 
#this is the section that is blinking when it shouldn't 
    if pot < 450: 
     Arduino.digitalWrite(LED1, Arduino.HIGH) 
     Arduino.digitalWrite(LED2, Arduino.HIGH) 
     Arduino.digitalWrite(LED3, Arduino.HIGH) 
     Arduino.digitalWrite(LED4, Arduino.HIGH) 
     Arduino.digitalWrite(LED5, Arduino.LOW) 
     Arduino.digitalWrite(LED6, Arduino.LOW) 
     Arduino.digitalWrite(LED7, Arduino.LOW) 
     Arduino.digitalWrite(LED8, Arduino.LOW) 
     sleep(.5) 
# 
    if pot <650> 450: 
     Arduino.digitalWrite(LED1, Arduino.LOW) 
     Arduino.digitalWrite(LED2, Arduino.LOW) 
     Arduino.digitalWrite(LED3, Arduino.LOW) 
     Arduino.digitalWrite(LED4, Arduino.LOW) 
     Arduino.digitalWrite(LED5, Arduino.LOW) 
     Arduino.digitalWrite(LED6, Arduino.LOW) 
     Arduino.digitalWrite(LED7, Arduino.LOW) 
     Arduino.digitalWrite(LED8, Arduino.LOW) 
     sleep(.1) 
    if pot > 650: 
     Arduino.digitalWrite(LED1, Arduino.LOW) 
     Arduino.digitalWrite(LED2, Arduino.LOW) 
     Arduino.digitalWrite(LED3, Arduino.LOW) 
     Arduino.digitalWrite(LED4, Arduino.LOW) 
     Arduino.digitalWrite(LED5, Arduino.HIGH) 
     Arduino.digitalWrite(LED6, Arduino.HIGH) 
     Arduino.digitalWrite(LED7, Arduino.HIGH) 
     Arduino.digitalWrite(LED8, Arduino.HIGH) 
     sleep(.5) 
# print pot 

回答

0

我想通了。眨眼問題沒有預料到。然而它的表現就像LED被設置爲延遲約0.5秒。 這是我的新腳本。

from nanpy import Arduino 
from nanpy import serial_manager 
from time import sleep 

serial_manager.connect('/dev/ttyUSB0') 

POT = 0 
LED1 = 13 
LED2 = 12 
LED3 = 11 
LED4 = 10 
LED5 = 9 
LED6 = 8 
LED7 = 7 
LED8 = 6 

Arduino.pinMode(POT, Arduino.INPUT) 
Arduino.pinMode(13, Arduino.OUTPUT) 
Arduino.pinMode(12, Arduino.OUTPUT) 
Arduino.pinMode(11, Arduino.OUTPUT) 
Arduino.pinMode(10, Arduino.OUTPUT) 
Arduino.pinMode(9, Arduino.OUTPUT) 
Arduino.pinMode(8, Arduino.OUTPUT) 
Arduino.pinMode(7, Arduino.OUTPUT) 
Arduino.pinMode(6, Arduino.OUTPUT) 

print "starting" 
while True: 
    pot = Arduino.analogRead(POT) 
    if pot < 450: 
     Arduino.digitalWrite(LED1, Arduino.HIGH) 
     Arduino.digitalWrite(LED2, Arduino.HIGH) 
     Arduino.digitalWrite(LED3, Arduino.HIGH) 
     Arduino.digitalWrite(LED4, Arduino.HIGH) 
     Arduino.digitalWrite(LED5, Arduino.LOW) 
     Arduino.digitalWrite(LED6, Arduino.LOW) 
     Arduino.digitalWrite(LED7, Arduino.LOW) 
     Arduino.digitalWrite(LED8, Arduino.LOW) 
     sleep(.01) 
    elif pot > 650: 
     Arduino.digitalWrite(LED1, Arduino.LOW) 
     Arduino.digitalWrite(LED2, Arduino.LOW) 
     Arduino.digitalWrite(LED3, Arduino.LOW) 
     Arduino.digitalWrite(LED4, Arduino.LOW) 
     Arduino.digitalWrite(LED5, Arduino.HIGH) 
     Arduino.digitalWrite(LED6, Arduino.HIGH) 
     Arduino.digitalWrite(LED7, Arduino.HIGH) 
     Arduino.digitalWrite(LED8, Arduino.HIGH) 
     sleep(.01) 
    else: 
     Arduino.digitalWrite(LED1, Arduino.LOW) 
     Arduino.digitalWrite(LED2, Arduino.LOW) 
     Arduino.digitalWrite(LED3, Arduino.LOW) 
     Arduino.digitalWrite(LED4, Arduino.LOW) 
     Arduino.digitalWrite(LED5, Arduino.LOW) 
     Arduino.digitalWrite(LED6, Arduino.LOW) 
     Arduino.digitalWrite(LED7, Arduino.LOW) 
     Arduino.digitalWrite(LED8, Arduino.LOW) 
     sleep(.01) 
    print pot 
0

我看到一個問題,在初始化,在這一行:

POT = Arduino.analogRead(0) 

然後,在這期間,你用POT的針數在這裏,但POT將在上面行被初始化一個變量:

pot = Arduino.analogRead(POT) 

我認爲這就是爲什麼你會意想不到的行爲。我認爲如果您將POT的初始化更改爲POT=0或者您的鍋連接到的管腳號(如果它不是管腳0),它可能會起作用。

+0

謝謝,我的固定問題2用鍋沒有閱讀的權利。不過,我仍然有閃爍的問題。 – Deth73

+0

您能否將閃爍的問題描述得更好一點,以便我們能夠提供更多幫助?例如,你預計這個閃爍?在哪種狀態下發生,或者發生了什麼不應該發生。另外,請記住在有幫助的情況下提供答案。謝謝! –