查看更多
查看更多
查看更多
查看更多
查看更多
查看更多
查看更多
深夜摸黑起床找開關?擔心貴重快遞被順走?想讓風扇自動感知你的存在?一塊僅需幾元的光電開關模塊,搭配簡單的動手能力,就能將這些構想變?yōu)楝F(xiàn)實!
光電開關的核心原理是利用光束檢測物體的存在或位置。它由一個發(fā)射端和一個接收端組成(對射式),或集發(fā)射/接收于一體(反射式)。當光束被物體遮擋或反射回接收端時,內部電路觸發(fā),產生一個電信號變化(通常是高低電平翻轉)。這個信號就像開關被按下一樣,能被微控制器(如Arduino、ESP8266)或簡單的電路輕松識別,從而控制各種設備。
常見的DIY光電開關主要有三種類型:
低成本光電開關模塊(特別是漫反射式)因其易用性和低廉價格(通常在3-10元人民幣),成為了電子DIY入門和實現(xiàn)智能感應功能的首選元件!
// 定義引腳
const int photoSensorPin = 2; // 假設OUT接在D2
const int ledPin = 13; // 使用板載LED或外接LED到D13
void setup() {
pinMode(photoSensorPin, INPUT); // 設置傳感器引腳為輸入
pinMode(ledPin, OUTPUT); // 設置LED引腳為輸出
Serial.begin(9600); // 初始化串口,用于調試輸出
}
void loop() {
int sensorState = digitalRead(photoSensorPin); // 讀取傳感器狀態(tài)
// 不同模塊邏輯可能不同,實驗確定:
// * 若無遮擋為高電平(HIGH),遮擋為低電平(LOW):if (sensorState == LOW) { ... }
// * 若無遮擋為低電平,遮擋為高電平:if (sensorState == HIGH) { ... }
// 這里假設模塊是無遮擋時輸出高電平,遮擋時輸出低電平(常見)
if (sensorState == LOW) {
digitalWrite(ledPin, HIGH); // 遮擋時點亮LED
Serial.println("物體檢測到!");
} else {
digitalWrite(ledPin, LOW); // 無遮擋時熄滅LED
Serial.println("無物體");
}
delay(100); // 短暫延時,減少頻繁檢測
}
if條件(使用!sensorState或互換HIGH/LOW判斷)。