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秒測量一次(太快眼睛無法讀取銀幕讀數)

}