به نام خدا
در این پست ، قصد راه اندازی سنسور فتوسل یا سنسور نور رو با آردوینو دارم click for more. در واقع این سنسور یه مقاومت هست که اگه نور بهش برسه ، مقاومتش کم و درنتیجه ولتاژ خروجی بیشتر میشه و اگه بهش نور نرسه ، مقاومتش زیاد و درنتیجه ولتاژ خروجی کم میشه.
خب حالا قصد داریم این سنسور رو با آردوینو (arduino) راه بندازیم.
وسایل لازم :
- آردوینو uno – یک عدد — خرید از فروشگاه
- سنسور نوری – یک عدد — خرید از فروشگاه
- مقاومت ۱۰ کیلو و چند تا سیم
شماتیک پروژه فتوسل :
همونطور که می بینید اومده یه مقاومت ۱۰ کیلو اهمی (ثابت) رو با فتوسل سری کرده و از پایه مشترک بینشون به پین آنالوگ آردوینو داده. منطق این کار همون منطق تقسیم ولتاژ هست….
وقتی مقاومت فتوسل (با تغییر نور ) تغییر می کنه طبق قانون تقسیم ولتاژ ، ولتاژی که روی پایه وسط (مشترک بین مقاومت و فتوسل) می افته هم تغییر می کنه که چون این تغییر به صورت پیوسته هست این پایه وسط رو به پین آنالوگ آردوینو (پین شماره ۰ ) وصل می کنیم.
نمونه کد :
int sensor; int val; void setup() { pinMode(sensor, INPUT); Serial.begin(9600); } void loop() { sensor = analogRead(A0); val = map(sensor, 0, 1023, 0, 100); Serial.println(val); delay(400); }
معرفی متغییر ها و شروع حلقه ی محدود setup
int sensor; int val; void setup() {
ورودی قرار دادن متغییر sensor ، مشخص کردن رنج کاری سریال مانیتور برای تبادل اطلاعات و پایان حلقه ی setup
pinMode(sensor, INPUT); Serial.begin(9600); }
شروع حلقه ی نامحدود loop ، و خواندن مقدار ولتاژ اعمال شده روی پین A0 آردوینو (arduino) و ریختن آن درون متغییر sensor
void loop() { sensor = analogRead(A0);
تناسب بندی بین مقادیر سنسور بین ۰ تا ۱۰۰ ، نمایش آن روی سریال مانیتور و پایان حلقه ی loop
val = map(sensor, 0, 1023, 0, 100); Serial.println(val); delay(400); }
همونطور که می بینید مقدار دیفالت سنسور روی سریال مانیتور نمایش داده میشه. بعد دستتون رو روی سنسور بزارین… روی فتوسل (روی قسمت بالایی) و داده نشون داده شده از مقدار قبلی کمتر میشه کرد. حالا دستتون رو بردارین. داده افزایش پیدا میکنه . جایی که شما دارید تست می کنید می تونه اعداد تو رنج های کاملا متفاوتی بده بر حسب نور محیطی تون.
سلام، امکان اجرای کد برای مقدار خاصی از نور وجود داره؟ یعنی سنسور مقدار روشنایی رو بهمون میده؟
میخوام وقتی نور از یه مقداری بیشتر شد(صبح شد) یک موتور شروع به کار کردن کنه و پرده اتاق رو کنار بزنه و اگر از مقداری کمتر شد(شب شد) پرده رو ببنده(موتور برعکس کار کنه)
با سلام و تشکر از شما
برای این منظور بایستی از آموزش ساخت مدار فرمان با نور و ماژول فتوسل LDR پکیچ ۳۷ سنسور آردوینو استفاده کنید.
سلام،اگه ممکنه بخش اخر که مربوط به val هست رو بیشتر توضیح بدین که دستور map کارش چیه و چرا از اعداد ۰ و ۱۰۲۳ استفاده شده؟
با سلام
در این برنامه از تابع ریاضی نگاشت برای برنامه نویسی استفاده شده است. در ابتدا اسم متغیر، سپس حد بالای بالا و پایین برای فتوسل و سپس حد بالا و حد پایین زمان نوشته شده است. پیشنهاد میشود از جدیدترین آموزش راه اندازی فتوسل استفاده کنید.
سلام و خسته نباشید
امکانش هست جوری برنامه نویسی کنیم که وقتی نور به ی حدی کم شد رله اول فعال بشه و اگه خیلی تاریکتر شد رله دوم فعال بشه؟
به عنوان مثال برای چراغ اتوماتیک خودرو که اگه بعد از ظهر شد نور کوچیک و اگه شب شد چراغ های اصلی روشن بشه؟؟؟
با سلام
بله دیتای سنسور را از سریال مانیتور بخوانید. این دیتا بین عدد ۰ تا ۱۰۲۴ متغیر است. عدد ۱۰۲۴ بالاترین حد و ۰ پایین تر است. عدد مورد نظر را با قرار گرفتن مانع در مقابل سنسور از سریال مانیتور بخوانید. سپس در کدها توسط تابع شرطی if else شرط نویسی کنید. در صورتیکه عدد خوانده شده مثلا ۵۰۰ بود، رله اول فعال شود و در صورتیکه بیشتر از ۵۰۰ شد، رله غیرفعال باشد.