---
# System prepended metadata

title: 20221027 arduino

---

# 20221027 arduino
![](https://i.imgur.com/FAFynJ2.png)

## arduino 超音波 伺服馬達

```
//  trig => 13  output 發射
//  echo => 12  input 接收
#include <Servo.h>
Servo myservo;
unsigned long duration;
int pos = 0;
void setup() {
  pinMode(13, OUTPUT);
  pinMode(12, INPUT);
  myservo.attach(9);
  Serial.begin(9600);
}
void loop() {
  digitalWrite(13, HIGH);
  delay(1);  // 1ms
  digitalWrite(13, LOW);
  duration = (pulseIn(12, HIGH)/2)*0.034; //  音速轉換成cm
  // 
  myservo.write(duration);
  Serial.println(duration);
  delay(30);
}
```



# 流程圖練習
##  sequence-diagram 循序圖
https://plantuml.com/zh/sequence-diagram
## 1個馬達
```plantuml
autonumber
人->開關:開
arduino ->開關: 偵測 開關 關->開
arduino -> 馬達1:控制轉動 10度->160度
馬達1->假手:轉動 箱子打開 按到按鈕
假手->開關: 開關  開->關
arduino->開關:偵測開關 開->關
arduino -> 馬達1:控制轉動 160度->10度
馬達1->假手:轉動收回 箱子關閉
```
## 兩個馬達
```plantuml
autonumber
人->開關:開
arduino ->開關: 偵測 開關 關->開
arduino -> 馬達1:控制轉動 10度->160度
馬達1->箱子:轉動 箱子打開
arduino -> 馬達2:控制轉動 10度->160度
馬達2->假手: 轉動 伸出
假手->開關:關閉
arduino->開關:偵測開關 開->關
arduino -> 馬達2:控制轉動 160度->10度
馬達2->假手: 轉動 收回
arduino -> 馬達1:控制轉動 160度->10度
馬達1->箱子:轉動 箱子關閉
```


## useless box
```plantuml
autonumber
人->超音波: 遮蔽 -> 1189
arduino ->超音波: >500 (delay 300)
arduino-> 伺服馬達 :轉動 10->160
伺服馬達->超音波: 上面的東西推掉 
arduino ->超音波: 數值-> 300
arduino-> 伺服馬達 :轉動 160->10
```


### useless box => 超音波 伺服馬達
```
//  trig => 13  output 發射
//  echo => 12  input 接收
#include <Servo.h>
Servo myservo;
unsigned long duration;
int pos = 0;
void setup() {
  pinMode(13, OUTPUT);
  pinMode(12, INPUT);
  myservo.attach(9);
  Serial.begin(9600);
  myservo.write(10);
}
void loop() {
  digitalWrite(13, HIGH);
  delay(1);  // 1ms
  digitalWrite(13, LOW);
  duration = (pulseIn(12, HIGH)/2)*0.034; //  音速轉換成cm
  // 
  Serial.println(duration);
  if(duration > 1100){
    delay(3000);
    myservo.write(160);
    delay(3000);
  }
  if(duration < 300){
    myservo.write(10);
  }

  delay(30);
}
```
