実際、LEDに基づいて、夜間に入り口付近のランプを自動的にオンにするために周囲光を測定するような、非常に優れた周囲光センサーを構築することができます。
この投稿には「驚くほど近い」という題名が付けられているかもしれません-注意深く調べると動作原理がかなり早く明らかになるという事実にもかかわらず、おそらく誰もがLEDの使用を知っているわけではありません。
私はここでメソッドを見ました:
www.arduino.cc/playground/Learning/LEDSensor 、すぐにチェック-それは動作します!
これがArduino / Freeduinoにしがみつく方法です:

考え方は簡単です。逆電圧がLEDに印加されると(ピン2 == 1、ピン3 == 0)、これはマイクロコントローラーのレッグの寄生容量を充電します。 ここで2番目のレッグを入力に切り替え、プルアップ抵抗をオフにすることを忘れないでください。照明に依存するフォトダイオードの逆電流によって静電容量が放電され、しばらくするとレッグがログに切り替わります。 0.浮遊容量は確かに小さいですが、LEDの逆電流は小さく、マイクロコントローラーは非常に高速です! :)したがって、放電時間を安全に測定できます。
このアプローチを示すソースコードは次のとおりです。
--- LED_Sensor.pde ---
void setup(){
Serial.begin(9600);
}
ボイドループ()
{
long int j;
//逆電圧を印加します-これにより出力容量が充電されます2
pinMode(2、OUTPUT);
pinMode(3、OUTPUT);
digitalWrite(2、HIGH);
digitalWrite(3、LOW);
pinMode(2、INPUT); // 2番目の出力を入力に切り替えます
digitalWrite(2、LOW); //そして、プルアップ抵抗をオフにします
//キャパシティが論理的に放電するのにかかる時間をカウントします。 0
for(j = 0; j <128000; j ++){
if(digitalRead(2)== 0)break;
}
Serial.println(j、DEC); //カウンタ値をCOMポートに出力します
遅延(100); // COMポートバッファがオーバーフローしないように一時停止します
}
---
この方法のもう1つの利点は、意図した目的のために同じLEDを使用する必要がないことです。