[英]How to make a variable with the inputs of 3 ultrasonic sensors with a raspberry pi and an Arduino?
我正在使用具有 3 個超聲波傳感器的 Arduino Uno,並且我已經成功地讓我的樹莓派打印出這些值,但我不知道如何將它們變成變量。
這是Arduino代碼
void setup() {
Serial.begin(9600);
void loop() {
digitalWrite(trigPin1, LOW);
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(2);
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin1, HIGH);
distance1 = (duration1/2) / 29.1;
digitalWrite(trigPin2, LOW);
delayMicroseconds(2);
digitalWrite(trigPin2, HIGH);
delayMicroseconds(2);
digitalWrite(trigPin2, LOW);
duration2 = pulseIn(echoPin2, HIGH);
distance2 = (duration2/2) / 29.1;
digitalWrite(trigPin3, LOW);
delayMicroseconds(2);
digitalWrite(trigPin3, HIGH);
delayMicroseconds(2);
digitalWrite(trigPin3, LOW);
duration3 = pulseIn(echoPin3, HIGH);
distance3 = (duration3/2) / 29.1;
Serial.print(distance1);
Serial.print(" distance1 - ");
Serial.print(distance2);
Serial.print("distance2 - ");
Serial.print(distance3);
Serial.println("distance3 - ");
這是 Raspberry Pi 上的 Python 代碼
import serial
if __name__ == '__main__':
ser = serial.Serial('/dev/ttyACM0', 9600, timeout=1)
ser.reset_input_buffer()
while True:
if ser.in_waiting > 0:
line = ser.readline().decode('utf-8').rstrip()
print(line)
樹莓派和 Arduino 也通過 USB 連接。
感謝您的幫助,如果提到的內容沒有意義,請提出任何問題
您確定您連接的 USB 端口是/dev/ttyACM0
正確的端口嗎? 如果您在 Raspberry 終端中鍵入ls /dev/tty*
,它將顯示已連接的端口。
根據我的評論,我建議您將串行協議簡化為僅值和分隔符。
所以在arduino上你可以有這樣的東西:
String distance_output ;
distance_output = distance1 ;
distance_output += ":" ;
distance_output += distance2 ;
distance_output += ":" ;
distance_output += distance3 ;
Serial.println(distance_output.c_str());
這將產生類似"21:18:10"
的輸出字符串
然后在 pi 上,您可以只使用以下代碼:
while True:
if ser.in_waiting > 0:
line = ser.readline().decode('utf-8').rstrip()
values = line.split(":")
if len(values) == 3:
dist1 = int(values[0])
dist2 = int(values[1])
dist3 = int(values[2])
展望未來,您可能希望擴展此協議以識別不同的傳感器等。
但希望這會幫助你進步。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.