我遇到了问题。我最近买了一块Arduino Uno板。我试图做一些有趣的事情,比如控制我电脑的输入。我使用Python pySerial,程序如下:
arduino = serial.Serial(portaCOM, 9600, timeout = 1)
... in loop ->
arduino.write(value)
def sliderUpdate(self, event):
pos = self.slider.GetValue()
arduino.write(pos)
time.sleep(.1)
print arduino.readline()
try:
arduino = serial.Serial(portaCOM, 9600, timeout = 1)
except:
print "Errore di connessione alla porta seriale"
写入值应通过USB将值发送到我的主板。 加载的程序是:
const int ledPin = 11;
byte brightness;
void setup(){
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop(){
while(Serial.available()){
brightness = Serial.read();
Serial.print(brightness);
analogWrite(ledPin, brightness); //LED doesn't refresh the brightness
delay(10);
}
}
我的LED工作正常。我尝试使用Arduino提供的Fade示例并且它正在工作..
我检查了程序是否正确发送数据。是的。它返回我之前发送的相同内容。
它应检索已发送的值并设置analaogWriter(pin, VALUE)
,但有些错误或无效。
如何解决此问题?
解决方案
Arduino代码
const int ledPin = 11;
byte valoreLed;
void setup(){
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop(){
while(Serial.available()){
valoreLed = Serial.read();
analogWrite(ledPin, valoreLed);
delay(20);
}
}
Python脚本代码:
pos = self.slider.GetValue()
arduino.write(chr(pos))
谢谢大家! :)
答案 0 :(得分:2)
value
的价值是多少?试试arduino.write(chr(0xFF))
,LED是否会一直亮着?答案 1 :(得分:1)
我在你的评论中看到LED与第一个字符一起工作,但你看不到不同字符的变化。绝对要确保您发送的ASCII字符与之前的字符明显不同,例如发送ASCII 0后跟ASCII 255。
编辑: 既然您说FadeLED示例有效,那么您可以采用该示例并为其添加串行端口功能吗?例如,仅在收到序列字符后淡出。这至少可以让您确信串口和LED可以在您编写的代码中共存。另外,我假设您正在使用here中的FadeLED示例。如果是这样,请确保设置正确的引脚编号,因为参考代码使用引脚9,但示例代码使用引脚11。
另一个编辑:
你说你从Arduino中正确地接收了字符,但是你正在使用pySerial ReadLine
函数,它应该阻塞直到它看到换行符,并且我在Arduino代码中看不到任何会生成没有先发送给它的换行符。要消除问题中的变量数量,请尝试使用HyperTerminal或类似的COM端口程序将字节发送到Arduino,而不是Python程序。例如,您可以发送空格字符(ASCII 32)和'}'字符(ASCII 125),它们应该足够不同,以便在LED中创建可见的差异。
答案 2 :(得分:1)
我怀疑arduino.readline()
等待换行符,而你的Arduino代码永远不会发送换行符。因此,Python代码在发送第一个值后无限期地阻塞。
答案 3 :(得分:0)
我首先要确定串口的哪一侧存在问题。
首先,您可以使用Arduino上的硬编码循环驱动LED吗? LED是否按预期改变亮度?
一旦这样做了,你可以让Arduino在终端应用程序(例如内置于Arduino IDE中)手动发送内容时做一些明显正确的事情。这可能需要更改Arduino代码。
一旦有效,我就会专注于Python代码,确保你正在使用正确的COM端口等。
答案 4 :(得分:-1)
“写入值应通过USB将值发送到我的电路板”
如果这不是拼写错误,则无法使用PySerial访问USB端口。有替代pyUSB,可能还有其他人。