Read_Analog_Signal_simple.ino (讀取電壓,傳送到電腦 )
此程式從開發板上的 第0號 類比(Analog)輸入口 讀取電壓值,傳回電腦呈現。
特性: 取樣速率約1080筆/秒 。
電腦序列埠監控視窗或序列繪圖家的 鮑率(baud) 需與程式中的設定一致 ( 此程式預設值115200 )。
程式編碼與說明如下。
/* 本程式從 Arduino開發板 第0號 類比(Analog)輸入口 讀取電壓值,傳回電腦呈現。。
* 特性: 取樣速率約1000筆/秒 。
* 使用電腦序列埠監控視窗或序列繪圖家時,其 鮑率(baud) 設定需與程式中的設定一致 ( 此程式預設值115200 )。
* 複製以下的所有文字,貼到Arduino程式編輯視窗中即可使用。此程式範例內容歡迎所有人免費使用。更新日期:2019/06/20 by SD Tzeng
*/
//開發粄功能設定:
void setup() {
Serial.begin(115200); //設定 序列埠 鮑率 Serial Port begin (為提高傳輸效率,此值較一般設定值9600高出許多)
while (!Serial) { ;} //當 序列埠(Serial) 未就位時,等待(執行空白)
}
//不斷重複執行迴圈:
void loop() {
float voltage = 5.0 * analogRead(A0)/1023; //將 第0號類比輸入口 (A0) 的讀值(0-1023)換算成電壓值voltage (0V-5V)
Serial.println(voltage,4); //將 電壓值(voltage) 傳送到序列埠(Serial Port) 暫存器(buffer),4位精度
delay(0.1); //稍微延遲,等待訊號傳送,增進穩定性
Serial.flush(); // 等待序列埠暫存器中的數據傳送至電腦完畢
}
Sonar_Distance.ino ( 觸發 超音波感測器HC-SR04,將回音訊號換算成距離,傳送到電腦 )
特性: 測距精度(雜訊)約0.5公分,取樣速率(距離20公分時)約400筆/秒 (距離越遠,取樣速率越慢)。
電腦序列埠監控視窗或序列繪圖家的 鮑率(baud) 需與程式中的設定一致 ( 此程式預設值115200 )。
程式編碼與說明如下。
/* 本程式為 Arduino開發板 連接 超音波測距感測頭(HC-SR04) 作為距離感測用。(HC-SR04最短測距盲區約3公分,最遠約5公尺)
* 預設HC-SR04的觸發接收(Trig)接開發板Pin 12,回音輸出(Echo)接開發板Pin 11。可自行依需要調整。
* 測距精度(雜訊)約0.5公分,取樣速率約400筆/秒 (距離20公分時)。
* 為顧及取樣率與實驗應用的實用性,程式目前設定偵測距離範圍 5 - 250 公分。
* 超過250公分 以及距離小於5公分時,距離回傳為5公分(此設為警報距離distancealarm),且板上LED燈亮起。
* 使用電腦序列埠監控視窗或序列繪圖家時,其 鮑率(baud) 設定需與程式中的設定一致 ( 此程式預設值115200 )。
* 複製以下的所有文字,貼到Arduino程式編輯視窗中即可使用。此程式範例內容歡迎所有人免費使用。更新日期:2019/06/20 by SD Tzeng
*/
//定義:
int trigPin = 12; //定義 觸發輸出腳位 Trig Pin
int echoPin = 11; //定義 回音接收腳位 Echo Pin
double duration, distance; //定義 變數格式為 雙精度(double)浮點數
double distancelimit = 250.0; //定義 最遠測量距離限制 250公分 (避免太遠回音訊號不佳&等候回音過久)
double distancealarm = 5.0; //定義 警報距離。距離小於5公分(盲區)時 發出LED警示 (內建LED訊號LED_BUILTIN=pin 13)
double timeout = distancelimit/0.017; //設定 超過最遠測量距離時的時間(等候回音時間上限)[ 假設聲波速率為 340 m/s ]
//開發粄功能設定:
void setup() {
Serial.begin(115200); //設定 序列埠 鮑率 Serial Port begin (為提高傳輸效率,此值較一般設定值9600高出許多)
pinMode(trigPin, OUTPUT); //設定 觸發輸出腳位(trigPin)的功能為 輸出(OUTPUT)
pinMode(echoPin, INPUT); //設定 回音接收腳位(echoPin)的功能為 輸入(INPUT)
pinMode(LED_BUILTIN, OUTPUT); //設定 內建LED (LED_BUILTIN = pin 13 腳位) 的功能為 輸出(OUTPUT)
}
//不斷重複執行迴圈:
void loop()
{
//於 觸發輸出腳位 Trig Pin 產生觸發脈衝(建議大於 10微秒)
digitalWrite(trigPin, LOW); //觸發腳位trigPin 先降回低電位,持續 4微秒 (us)
delayMicroseconds(8);
digitalWrite(trigPin, HIGH); //觸發腳位trigPin 變成高電位,持續 12微秒 (us)
delayMicroseconds(12);
digitalWrite(trigPin, LOW); //觸發腳位trigPin 再降回低電位,完成脈衝,使HC-SR04產生聲音脈衝出去
/******************************/
duration = pulseIn(echoPin, HIGH, timeout);
// 於回音接收腳位(Echo Pin) 收到高電位(High) 的時間 (微秒 us)。等待超過 timeout時間上限 則跳出,回傳0
distance = duration*0.0170; // 將聲音 "來回" 時間(us) 換算成距離 (cm) [ 假設聲波速率為 340 m/s ]
if(distance <= distancealarm){ distance = distancealarm; } //若距離小於警告最小距離(或超過timeout)時,距離回傳為 警報距離
if(distance < distancelimit){ //若距離在 測量距離範圍 時,回傳距離數值
// Serial.print("Distance : ");
Serial.print(distance); //將 distance 傳送到序列埠(Serial Port) 暫存器(buffer)
// Serial.print("cm");
Serial.println(); //將 '換行' 傳送到序列埠(Serial Port) 暫存器(buffer)
Serial.flush(); // 等待序列埠暫存器中的數據傳送至電腦完畢
}
if(distance <= distancealarm){ //若距離小於 警報距離 時,內建LED亮起
digitalWrite(LED_BUILTIN, HIGH);
}
else{ //否則 內建LED變暗
digitalWrite(LED_BUILTIN, LOW);
}
}