0
我正在玩arduino。在項目書中,它有一個用於從溫度傳感器獲取溫度的項目。我迷上了它,並寫下如下簡單代碼arduino串行和pySerial
const int sensorPin = A0;
void loop(){
int sensorVal = analogRead(sensorPin);
float voltage = (sensorVal/1024.0)* 5.0;
float temperature = (voltage - .5) * 100;
Serial.println(temperature);
}
打印串口監視器中的溫度。我用pySerial從這樣
try:
ser = serial.Serial('/dev/ttyACM0', 9600)
except serial.SerialException as se:
print se
exit()
while True:
temperature = ser.readline()
print "Temp from arduino", temperature
try:
temperature = float(temperature)
print "FLoat temperature", temperature
except ValueError as ve:
print ve
continue
Arduino的獲得臨時但問題是,雖然從阿爾杜伊諾IDE串行監視器的顯示通常的溫度(22.3 EG)是蟒正常浮點數具有數除以10
Temp from arduino 2.27
FLoat temperature 2.27
我該如何處理?
你的輸出是相同的?另外,你會想要'漂浮()'更早,因爲在收到數據之後..你已經毀了它,從一開始就不把它看作是一個'float()'。例如,你不能做'x = 10.15; x = int(x); x = float(x);'因爲即使你試圖將其轉換回來,它也會結束'10'。不是這樣做會有所幫助,而是使用'temperature = float(ser.readline()'來代替 – Torxed
在串口監視器和輸入pySerial中輸出有區別是很奇怪的,我認爲沒有理由 - 顯示來自串行接口的文本我有兩個問題和一個建議,爲什麼不用1023而不是1024進行分頻?爲什麼這個「 - .5」?試着將串行的「voltage」值打印出來結果 –
@Torxed ValueError:float()的無效文字:22.73.24這就是我得到的float(ser.readline())它就像它讀取一行以及下面一行中的內容......必須同步arduino Serial.println()和python的serial.readline()? – Apostolos