22.馬達轉速測定器
請用避障模組,在旋轉部位貼黑色膠布
#include <Wire.h> //載入I2C介面函式庫
#include <LiquidCrystal_I2C.h> //載入I2C液晶控制函式庫
LiquidCrystal_I2C lcd(0x27,16,2); // 若LCD 無法啟用,請將0X3F 改為0X27
int a; //以下宣告全域變數
unsigned long t1,t2,dt;
float rpm;
void setup() {
Serial.begin(115200); //啟用序列埠介面,可以從序列埠視窗抓到數據
pinMode(8,INPUT);
lcd.init(); //LCD初始化
lcd.backlight(); //LCD 開啟背光
lcd.clear(); // LCD清除畫面
}
void loop() {
do{ //進入亮區等待
a=digitalRead(8); //讀取避障模組的讀數
}while(a==0);
t1=micros(); //進入暗區(膠布)立刻記錄當下時間
do{ //進入暗區等待通過黑色膠布區)
a=digitalRead(8); //讀取避障模組的讀數
}while(a==1);
do{ //進入亮區等待
a=digitalRead(8); //讀取避障模組的讀數
}while(a==0);
t2=micros(); //進入暗區(膠布)立刻記錄當下時間
dt=t2-t1; //計算迴轉一圈的時間差(微秒)
rpm=60000000/dt; //計算轉速( 圈/分),並存成變數rpm
Serial.print("dt="); //在序列埠監控視窗顯示
Serial.print(dt);
Serial.print(" ; rpm=");
Serial.println(rpm);
lcd.clear();
lcd.setCursor(0,0); //設定LCD游標至第0行,第0列的位置
lcd.print("dt="); //LCD在現在的游標開始顯示dt=
lcd.print(dt); //LCD在現在的游標顯示變數dt的值
lcd.setCursor(0,1); //設定LCD游標至第0行,第1列的位置
lcd.print("rpm="); //LCD在現在的游標開始顯示 rpm=
lcd.print(rpm,0); //LCD在現在的游標顯示變數rpm的值
delay(500); //每0.5秒測量一次(太快眼睛無法讀取銀幕讀數)
}