Arduino和Raspberry Pi之间的USB通信



我有一个通过USB连接的Arduino和一个树莓派。Python程序通过USB发送一个值,然后arduino接收并打开LED。arduino将模拟值从A0发送到Raspberry上的Python程序。但是Python有时接收024244而不是1024。我该怎么解决这个问题?这是我的代码:http://www.bitsharr.com/Hsoxw7nG

Arduino代码:

int led = 13;
char  charIn;
int sensorPin = A0;    // select the input pin for the potentiometer
int sensorValue = 0;  // variable to store the value coming from the sensor
long previousMillis = 0; 
long interval = 1000;  
// the setup routine runs once when you press reset:
void setup() {           
// initialize the digital pin as an output.
pinMode(led, OUTPUT);  
Serial.begin(9600); //This initializes the USB as a serial port
}
void loop() {
if (Serial.available()) {
delay(5); // warten bis alle Daten da sind
while(Serial.available() > 0) {
charIn =(char) Serial.read();
if (charIn == '1') {
digitalWrite(led,HIGH);
delay(5000);
digitalWrite(led,LOW);
}
}
}

Python代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-
from serial import Serial
ser = Serial('/dev/ttyUSB0', 9600)
x=ser.readline()
ser.write('1')
print(x)
def cleanup( str ):
result = ""
for c in str:
if( (c >= "0") and (c <= "9") ):
result += c
return result
print( cleanup(x))
#ser.write("1") 
sensorValue = analogRead(sensorPin); //Reads the voltage of the resistor.
Serial.println(sensorValue); //Writes the voltage on the Serial port.
}

首先,您在Python代码中使用Arduino代码

sensorValue = analogRead(sensorPin); //Reads the voltage of the resistor.
Serial.println(sensorValue); //Writes the voltage on the Serial port.

您的计算机如何知道Arduino上的值您需要将其移动到Arduino代码中。我不能告诉你在哪里:你从来没有具体说明你想用这个代码完成什么。


您的代码还有一些问题:

  • #ser.write("1")应为ser.write("1")
  • 这两行还不错,但它们是一种糟糕的编码实践,因为您没有使用它们:long previousMillis = 0;

    long interval = 1000;


但python有时会接收024、24或4,而不是1024。

Arduino从未发送过任何东西;没有CCD_ 9或CCD_!我不知道你是如何接收数据的。如果您对上面的代码进行了编辑,并/或准确地指定了您想做什么(即向Arduino发送1,打开LED,每五秒钟获取一次传感器数据,如果数据超过50%,请关灯),但仍然不知道该怎么办,请随时发表评论进行澄清。

相关内容

  • 没有找到相关文章

最新更新