[英]Led issue with arduino controled by raspberry pi/python
我的项目有2个部分有问题。 我正在使用树莓派读取和控制电位计和一些LED。
1当我用电位计控制LED时,LED的闪光阈值低但不高,我该如何解决?
(已修复)2首次启动脚本时,必须将电位计设置为0,否则会从电位计中读取异常读数,该如何解决?
我尝试添加一个延迟之前和之后。 我试过添加中心字符串之前,没有运气。 我在整个Google上都在寻找解决方案,但是没有运气。 我所发现的只是眨眼示例的脚本。
我通过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
我在初始化这一行看到一个问题:
POT = Arduino.analogRead(0)
然后,在此期间,您在此处使用POT
作为引脚号,但是POT
将在上面的行中初始化为变量:
pot = Arduino.analogRead(POT)
我认为这就是为什么您会得到意想不到的行为。 我认为,如果你改变的初始化POT
到POT=0
或者(如果它没有脚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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.