# 超音波測距感測器

![](https://1275793585-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LaZQFBYOS3O0ksiEmR1%2F-LoyhZ7TGT0i8ZxuGcbY%2F-LoyhbqX23IHfRjLOXLu%2Flinkit7697_ultrasonic_00.png?generation=1568715213295172\&alt=media)

## LinkIt 7697 專案說明

使用「LinkIt 7697 NANO Breakout」連接「超音波測距感測器」， 每0.5秒讀取超音波測距感測器所測到的距離。

此**超音波測距感測器**包含於「[**洞洞么教學材料包**](https://www.robotkingdom.com.tw/product/rk-education-kit-001/) 」內。

### LinkIt 7697 電路圖

* [LinkIt 7697](https://www.robotkingdom.com.tw/product/linkit-7697/)
* LinkIt 7697 NANO Breakout
* 超音波測距感測器

**超音波測距感測器**是**類比訊號**輸出， 可以接「D0 \~ D13」的 LinkIt 7697 NANO Breakout訊號端上。 本範例連接到「**D5**」、「**D6**」 。

{% hint style="info" %}
超音波測距感測器是由發射器、接收器以及控制電路所組成，若待測物體距離太遠，或者發射器、接收器其中一個被遮蔽，皆會導致量測距離結果錯誤。

\
另外還有一點需要注意的部分，如果您用到使用I2C腳位的模組來顯示此超音波的數值，例如I2C 1602液晶顯示模組，必須避免使用D8、D9腳位來讀取超音波的數值，因為D8(I2C1\_CLK)、D9(I2C1\_DATA)就是7697的I2C腳位，同時使用會發生數值無法正常顯示在顯示模組上。
{% endhint %}

![](https://1275793585-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LaZQFBYOS3O0ksiEmR1%2F-MFFJHi_sQeG0o7DnMvE%2F-MFFJNPfq7gGzRU-eg_b%2F%E8%B6%85%E9%9F%B3%E6%B3%A2%E6%B8%AC%E8%B7%9D%E6%84%9F%E6%B8%AC%E5%99%A81.jpg?alt=media\&token=632dc7e9-455f-4219-bafb-5302903dd80b)

### BlocklyDuino 積木畫布

每0.5秒鐘會讀取一次超音波測距感測器所測得的距離。

![](https://1275793585-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LaZQFBYOS3O0ksiEmR1%2F-MFFJHi_sQeG0o7DnMvE%2F-MFFJSbfQGMVKpPauJXO%2F%E8%B6%85%E9%9F%B3%E6%B3%A2%E6%B8%AC%E8%B7%9D%E6%84%9F%E6%B8%AC%E5%99%A82.png?alt=media\&token=dd78e1ff-9602-47da-af05-0c7bee4e8022)

![](https://1275793585-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LaZQFBYOS3O0ksiEmR1%2F-LoyhZ7TGT0i8ZxuGcbY%2F-LoyhbqgnsItmCzL1U7U%2Flinkit7697_ultrasonic_03.png?generation=1568715214326542\&alt=media)

### Arduino 程式

```c
#include <Ultrasonic.h>

Ultrasonic ultrasonic_5_6(5, 6);

void setup()
{

  Serial.begin(9600);

}


void loop()
{
  Serial.println(ultrasonic_5_6.convert(ultrasonic_5_6.timing(), Ultrasonic::CM));
  delay(500);
}
```

## micro:bit 專案說明

使用「micro:bit搭配科易KEYES micro:bit 感測器擴充板 V2」連接「超音波測距感應器」，每1秒讀取超音波測距感應器所測到的距離。

此**超音波測距感應器**包含於「[**洞洞么教學材料包**](https://www.robotkingdom.com.tw/product/rk-education-kit-001/)」內。

### micro:bit電路圖

* [BBC micro:bit 微控制板  ](https://www.robotkingdom.com.tw/product/bbc-microbit-1/)
* [科易KEYES micro:bit 感測器擴充板 V2  ](https://www.robotkingdom.com.tw/product/keyes-microbit-sensor-breakout-v2/)
* 超音波測距感應器

**超音波測距感應器**是**類比訊號**輸入，可以接「0、1、2、3、4、10」的 micro:bit訊號端上，建議使用的是0、1、2腳位因為3、4、10腳位有使用到LED控制腳位所以當顯示LED時會不穩定。本範例連接到「P0、P1」。

{% hint style="info" %}
超音波測距感測器是由發射器、接收器以及控制電路所組成，若待測物體距離太遠，或者發射器、接收器其中一個被遮蔽，皆會導致量測距離結果錯誤。
{% endhint %}

![](https://1275793585-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LaZQFBYOS3O0ksiEmR1%2F-M-NPDCEukCn6jSqH20q%2F-M-NQlB9Q0l1eRsta70d%2F01.JPG?alt=media\&token=18b3fe5b-0596-4c07-9fd8-3c6a8682e86c)

### Microsoft MakeCode積木畫布

在使用超音波測距感應器之前，需要擴展超音波測距感應器的指令庫。打開makecode程式設計平臺，滾動至指令區最底部，依次點擊進階----擴展，並使用以下網址安裝套件。

超音波測距感應器套件安裝網址：[https://github.com/lioujj/pxt-sensors](https://github.com/lioujj/pxt-sensors)

![新增擴展套件位置](https://1275793585-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LaZQFBYOS3O0ksiEmR1%2F-M-NPDCEukCn6jSqH20q%2F-M-NQuHXdoQ08tQUPSy3%2F02.jpg?alt=media\&token=9906afc0-a9cb-47f8-bb43-2ad4947a8f39)

![使用網址安裝sensors的套件](https://1275793585-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LaZQFBYOS3O0ksiEmR1%2F-M-NPDCEukCn6jSqH20q%2F-M-NR-Nt_yGcl_B-4utR%2F03.jpg?alt=media\&token=3c2e1838-3729-480b-b77b-5f2b1cc2fcf2)

![安裝完成後即可在指令區看到感應器選項裡面及有超音波測距感應器的套件](https://1275793585-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LaZQFBYOS3O0ksiEmR1%2F-M-NPDCEukCn6jSqH20q%2F-M-NR30I9i43dj2epODW%2F04.jpg?alt=media\&token=cac06c1a-ede9-4d50-9472-c360dfaad867)

每1秒鐘會讀取一次超音波測距感測器所測得的距離，並可透過micro:bit顯示指示燈看到超音波測距感測器所測得的距離（小數點四捨五入後顯示）。

![](https://1275793585-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LaZQFBYOS3O0ksiEmR1%2F-M-NR5XoeZuI9o0h2SaM%2F-M-NTPPZmB6UOzNtEPvv%2F05.JPG?alt=media\&token=a5971685-4a15-42d7-ba4d-beab91ec1563)

### JavaScript 程式

```javascript
basic.forever(function () {
    basic.showNumber(Math.round(sensors.sensor_ping(
    DigitalPin.P1,
    DigitalPin.P0,
    sensors.PingUnit.Centimeters
    )))
    basic.pause(1000)
})
```

## Raspberry Pi Pico 專案說明

使用「Raspberry Pi Pico」連接「超音波測距感測器模組」, 每0.5秒讀取超音波測距感測器所測到的距離。此**超音波測距感測器模組**包含於「[洞洞么教學材料包](https://robotkingdom.com.tw/product/rk-education-kit-001/)」內。

### 超音波測距感測器模組電路圖

* [Raspberry Pi Pico](https://robotkingdom.com.tw/product/raspberry-pi-pico/)[  ](https://www.robotkingdom.com.tw/product/bbc-microbit-1/)
* [Raspberry Pi Pico擴充板](https://robotkingdom.com.tw/product/pipico-education-kit-001/)[  ](https://www.robotkingdom.com.tw/product/keyes-microbit-sensor-breakout-v2/)
* 超音波測距感測器模組

> **超音波測距感測器模組**是**類比訊號輸出**， 可以接「D0 \~ D28」的Raspberry Pi Pico擴充板訊號端上。 本範例連接到「D8」、「D9」。

{% hint style="info" %}
超音波測距感測器是由發射器、接收器以及控制電路所組成，若待測物體距離太遠，或者發射器、接收器其中一個被遮蔽，皆會導致量測距離結果錯誤。
{% endhint %}

<figure><img src="https://1275793585-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LaZQFBYOS3O0ksiEmR1%2Fuploads%2FcfEZpq8AjtE5IK6OMfpg%2Fimage.png?alt=media&#x26;token=8b5a64c5-d933-4d5b-a59f-8b4f0d2dd273" alt=""><figcaption></figcaption></figure>

### Arduino IDE程式

> 每0.5秒鐘會讀取一次超音波測距感測器所測得的距離。

Arduino程式(Ultrasonic.ino)如下:

```arduino
#include <Ultrasonic.h>

Ultrasonic ultrasonic_9_10(9, 10);

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  Serial.println(ultrasonic_9_10.convert(ultrasonic_9_10.timing(), Ultrasonic::CM));
  delay(500);
}
```

### 程式執行結果

<figure><img src="https://1275793585-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LaZQFBYOS3O0ksiEmR1%2Fuploads%2FCz5DBmgD0sgbdWzCAtCE%2Fimage.png?alt=media&#x26;token=8f9a126e-4f99-4578-8e57-0d0a21f5faf2" alt=""><figcaption></figcaption></figure>
