بهانه‌ای برای ورود به دنیای امبدد سیستم‌ها (V)

سلامدر قسمت چهارم با کلاس های LED , Button از کتابخانه gpiozero آشنا شدیم و همچنین با کمک این کتابخانه برای رزبری پای دکمه Shutdown درست کردیم.در این قسمت با کلاس های بیشتر از همین کتابخونه آشنا میشیم.رزبری پای مدل 4BPWMLEDکلاس LED رو یادتونه؟ کلاس PWMLED همون کلاس LED هست که شما میتونید روشنایی هر LED رو هم تنظیم کنید. طریقه کار کردش ایجاد یک پالس PWM هست که با تغییر پهنای پالس میتونید سطح ولتاژ میانگین رو کم و زیاد کنید.اتصال LED به رزبری پایاول کلاس pwmled رو فراخوانی میکنیمfrom gpiozero import PWMLEDو بعد روی پایه ای که میخواهیم یک شی تعریف میکنیمled = PWMLED(17)و با استفاده از پراپرتی value میتونیم روشنایی led رو کم و زیاد کنیم. value یک عدد بین 0 تا 1 را میگیرد که 0 به معنای خاموش و 1 به معنای حداکثر روشنایی است.from gpiozero import PWMLED from time import sleep led = PWMLED(17) while True: led.value = 0 #off sleep(1) led.value = 0.5 # half brightness sleep(1) led.value = 1 # full brightness sleep(1)LightSensorاول یکم درمورد light sensor حرف بزنیم. سنسور روشنایی یا به اصطلاح برقیا LDR، یک المان دو پایه مثل LED هست با این تفاوت که دقیقا برعکس led هست. در واقع LDR زمانی که نور بهش نرسه مقاومت بی نهایت داره و زمانی که در معرض نور قرار بگیره مقاومت تقریبا صفر داره. (یعنی مقاومت با افزایش میزان روشنایی کاهش پیدا میکنه، پس میتونیم مقاومت رو برای معیاری از روشنایی مدل کنیم)یک نمونه LDRبه دو طریق میشه از LDR استفاده کرد. 1) دیجیتال 2)آنالوگ در قسمت دیجیتال دو حالت خاموش و روشن داریم. (LDR مثل کلید عمل میکنه)مدارمدار LDRدر مدار فوق یک پایه LDR به VCC (پتانسیل بالا) وصل شده و پایه دوم به GPIO18 وصل شده. همچنین یک خازن (نسبتا ظرفیت کم در حد نانوفاراد) برای نویز گیری بین پایه زمین و پایه دوم LDR قرار گرفته. (اگر از خازن پلاریته دار استفاده می کنید به پلاریته دقت کنید. البته با 5 ولت خازن نمیترکه ولی خب!)بریم سراغ کد ^_^from gpiozero import LightSensor sensor = LightSensor(18) while True: sensor.wait_for_light() print(&quotIt's light! :)&quot) sensor.wait_for_dark() print(&quotIt's dark :(&quot)اول که کلاس LightSensor رو از کتابخونه فراخونی کردیم. و تعریف کردیم که آبجکت sensor یک لایت سنسور هست که روی پایه GPIO18 وصله.تو حلقه از تو تابع wait_for_light و wait_for_dark استفاده کردیم که به ترتیب برای روشنایی و تاریکی صبر می کنند. با در این حین برای ما توی ترمینال چاپ میکنند که الان تاریکه یا روشن!میتونید با LDR یک LED رو کنترل کنیدfrom gpiozero import LightSensor, LED sensor = LightSensor(18) led = LED(16) sensor.when_dark = led.on sensor.when_light = led.offدیگه فکر کنم با کد های بالا آشنا هستید و سعی میکنم کمتر توضیحشون بدم. کد بالا زمانی که نوری به LDR نمیرسه LED رو روشن میکنه و برعکس.و قسمت آنالوگ، توی این قسمت در اصل میزان ولتاژ LDR توسط رزبری پای خونده میشه (ولتاژ هم که طبق قانون اهم رابطه مستقیم داره با مقاومت) و متناسب با مقداری که خونده شده میتونید از اون عدد استفاده کنید. مثلا با کتابخونه LEDPWM که توی همین آموزش دیدیم میزان روشنایی یک LED رو کنترل کنید.مدار همون مدار قبله ولی کد به صورت زیر هست:from gpiozero import LightSensor, PWMLED sensor = LightSensor(18) led = PWMLED(16) led.source = sensorتوی خط اخر مشاهده می کنید که سورس آبجکت led همون ابجکت sensor که در واقع LDR هست. قرار داده شده و میزان روشنایی LED با توجه به میزان نوری که به LDR (مقاومت) میشه تغییر میکنه.امیدوارم که آموزش ها تونسته باشه کمی بیشتر شمارو با این برد دوست داشتنی آشنا کنه و در قسمت های بعدی بیشتر با مباحث الکترونیکی آشنا خواهیم شد. منتظر قسمت ششم باشید.ممنون که وقت گذاشتید و با ما همراه بودید.