簡體   English   中英

如何使用帶有樹莓派和 Arduino 的 3 個超聲波傳感器的輸入來制作變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM