本帖最後由 超新手 於 2018-12-15 16:06 編輯
1)一定要在Arduino 偵測完超音波, 再把值讀回, 值才會準
所以最簡單的方法就是去改寫 Firmata 的程式
例如用你的超音波程式去取代原來讀A/D 的程式
這樣你就可以用Firmata的架構, 不用大改
原本 arduino Firmata讀a/d的程式
Firmata.sendAnalog(analogPin, analogRead(analogPin));
改成
if(analogPin == A0){
// 以下是隨便寫
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
pulse_len = pulsein(ECH, HIGH, 1000);
Firmata.sendAnalog(analogPin, pulse_len);
} else {
Firmata.sendAnalog(analogPin, analogRead(analogPin));
}
2)上傳的數值不是本來就可以用 if 了嗎
v = get_distance()
if v[0] >= 10:
if v[1] == 100:
3) 那個 %....確定不是寫錯嗎?
print("cm=%f\tinches=%f" % get_distance())
|