21.光閘計時器
先把光二極體與10K電阻串聯,焊接在排針上
設計一個光閘圓環,使光電二極體與鐳射二極體的孔保持一直線
其中光電二極體的直徑是5mm,鐳射二極體的直徑是6mm
3D列印成型後,用快乾固定光二極體與鐳射二極體,並通電調整,保持"瞄準"的狀態
插上杜邦接頭,咖啡色是負極Gnd、分壓腳在橘色(中間)是S、紅色是正極Vcc
最後將線路與快乾固定,排針等分壓電路使用熱熔膠封裝避免脫落與彎折
程式碼內容
#include <Wire.h> //載入I2C介面函式庫
#include <LiquidCrystal_I2C.h> //載入I2C液晶控制函式庫
LiquidCrystal_I2C lcd(0x3f,16,2); // 若LCD 無法啟用,請將0X3F 改為0X27
int a,b,a0,b0,i=1; //宣告變數a b c d 為整數類型 (值域 -32767 ~ 32767)
unsigned long t1,t2;
float t ;
void setup() {
Serial.begin(9600); //啟用序列埠介面,可以從序列埠視窗抓到數據
lcd.init(); //LCD初始化
lcd.backlight(); //LCD 開啟背光
lcd.clear(); // LCD清除畫面
delay(200);
a0 = analogRead(A0)-50; //偵測第一光柵的背景值後減50
b0 = analogRead(A0)-50; //偵測第二光柵的背景值後減50
}
void loop() {
lcd.setCursor(0,1); //設定LCD游標至第0行,第1列的位置
lcd.print("Prepare...");
lcd.setCursor(13,1);
lcd.print(i);
t=0;
t1=0;
t2=0;
do{
a = analogRead(A0);
}while(a>a0); //若值>第一光閘的背景值時反覆讀取
t1=millis();
lcd.setCursor(0,1);
lcd.print("Start... ");
lcd.setCursor(13,1);
lcd.print(i);
do{
b = analogRead(A1);
}while(b>b0); //若值>第二光閘的背景值時反覆讀取
t2=millis();
t=(t2-t1)/1000.000;
lcd.setCursor(0,0);
lcd.print("Record=");
lcd.print(t,3);
lcd.print(" sec");
lcd.setCursor(0,1);
lcd.print("End.... ");
lcd.setCursor(13,1);
lcd.print(i);
i++;
delay(2000);
}