در این آموزش آردوینو UNO، ما قصد داریم از یک مقاومت وابسته به نور (LDR) برای ایجاد یک چراغ خواب ساده برای کودکان استفاده کنیم که وقتی هوا تاریک می شود به طور خودکار روشن می شود و وقتی روشن می شود خاموش می شود. مقاومت یک LDR بسته به میزان نوری که به سنسور برخورد می کند تغییر می کند. برای LDR می خواهیم از مقاومت استفاده کنیم که با افزایش نور تابیده شده روی دستگاه کاهش می یابد. با استفاده از یک مقاومت 4.7K این یک تقسیم کننده ولتاژ ساده را تشکیل می دهد که در آن ولتاژ در سراسر LDR بسته به نور تغییر می کند.
سپس می توانیم این را به یکی از ورودی های آنالوگ به دیجیتال در آردوینو وارد کنیم تا ولتاژ را اندازه گیری کنیم. سپس بررسی اینکه آیا مقدار بالاتر است یا کمتر از یک مقدار آستانه و روشن یا خاموش کردن یکی از خروجی ها، مسئله ساده ای است.
LDR مورد استفاده ما در اینجا موجود است
نمودار مدار در زیر نشان داده شده است. با افزایش نور، مقاومت LDR کاهش می یابد و در نتیجه ولتاژ دو طرف آن کاهش می یابد. بنابراین ولتاژ دو سر مقاومت افزایش می یابد، بنابراین ولتاژ داخل ADC آردوینو افزایش می یابد. با تاریک شدن هوا برعکس است.
در اینجا مداری است که روی یک تخته نان گذاشته شده است. 5 و 0 ولت از آردوینو گرفته شده است. ورودی به پین A0 می رود
در زیر طرح آردوینو آورده شده است. در این طرح، اگر مقدار ADC کمتر از یک مقدار خاص باشد، به سادگی LED داخلی را روشن می کنیم. برای ساختن نور شب، می توان یک led روشن تر (با مقاومت محدود کننده 220 اهم) به خروجی پایه 13 متصل کرد.
در کد متوجه خواهید شد که برخی از عبارات خروجی سریال وجود دارد که کامنت شده اند. اگر این موارد را حذف کنید، مقدار فعلی ولتاژ را که توسط ورودی ADC آردوینو خوانده می شود، روی مانیتور سریال خواهید دید. این مقدار بین 0 تا 1024 است. LDR را با دست خود بپوشانید و نوری به آن بتابانید تا اثر را ببینید.
مقدار کدی که LED روشن است را به مقدار مناسب تغییر دهید.
/* ** Nightlight LDR test program ** Created 06 Feb 2010 ** ** This example code is in the public domain. ** www.hobbytronics.co.uk */ int sensorPin = A0; // select the input pin for the ldr unsigned int sensorValue = 0; // variable to store the value coming from the ldr void setup(){ pinMode(13, OUTPUT); //Start Serial port Serial.begin(9600); // start serial for output - for testing } void loop() { // read the value from the ldr: sensorValue = analogRead(sensorPin); if(sensorValue<400) digitalWrite(13, HIGH); // set the LED on else digitalWrite(13, LOW); // set the LED on // For DEBUGGING - Print out our data, uncomment the lines below //Serial.print(sensorValue, DEC); // print the value (0 to 1024) //Serial.println(""); // print carriage return //delay(500); }
برای جزئیات بیشتر: Arduino UNO Tutorial 8 – NightLight
در ادامه، متن انگلیسی این مطلب را میتوانید مشاهده نمایید:
In this Arduino UNO tutorial, we are going to use a Light Dependent Resistor (LDR) to create a simple childrens bedroom nightlight which turns on automatically when it gets dark and turns off when it gets light. An LDR’s resistance changes depending upon the amount of light hitting the sensor. For the LDR we are going to use the resistance reduces as the light falling on the device increases. Used in conjunction with a 4.7K resistor this forms a simple voltage divider where the voltage across the LDR changes dependent upon the light.
We can then input this into one of the Analog to Digital inputs in the Arduino to measure the voltage. Then its a simple matter of checking whether the value is above or below a threshold value and to turn one of the outputs on or off.