کنترل روشنایی LED RGB و ربات با PWM و با رزبری پای

مقدمه

سلام امیدوارم حالتون خوب باشه و تا اینجا از آموزش های ما استفاده های خوبی کرده باشید 😉 

امروز با هم به آموزش کنترل روشنایی LED RGB و ربات با PWM و با رزبری پای می پردازیم.

 

وسایل مورد نیاز برای راه اندازی:

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد برد رزبری پای

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد برد برد

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد کابل LAN

[icon name=”check-circle” class=”” unprefixed_class=””] کابل عدد POWER

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد مقاومت 3.3کیلو اهم

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد LED

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد LED RGB

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد micro sd

 

[icon name=”star-half-o” class=”” unprefixed_class=””]  برای راه اندازی برنامه برد رزبری به لینک مراجعه کنید.

 

شمای فنی برد رزبری پای:

کنترل روشنایی LED RGB و ربات با PWM و با رزبری پای

 

[icon name=”star-half-o” class=”” unprefixed_class=””] توجه داشته باشید که برد رزبری را پایه اش را به سمت پایین نگه داشته و خواندن پایه ها از سمت راست به چپ می باشد

 

کنترل روشنایی LED RGB و ربات با PWM و با رزبری پای (2)

 

در شکل بالا با نحوه متصل کردن پایه ها با رزبری پای آشنا شده ایم حالا نوبت به توضیح تک به تک اتصالات در جدول زیر میرسیم.

 

جدول اتصالات:

[su_table responsive=”yes”]

یایه های رزبری

پایه های متصل به برد

17 مثبت LED
GROUND متصل به مقاومت ومنفی LED

[/su_table]

 

کدهای دستور راه اندازی:

 

[icon name=”circle-o” class=”” unprefixed_class=””] import RPi.GPIO as GPIO

این دستور برای اضافه کردن کتابخانه RPi است و ما GPIO  را برای نام گذاری گذاشته ایم

مانند کد زیر:

import RPi.GPIO as GPIO

[icon name=”circle-o” class=”” unprefixed_class=””] led_pin = 17

در این دستور ما پایه  17را به عنوان خروجی  رزبری به led  متصل کرده ایم

مانند کد زیر:

led_pin = 17

[icon name=”circle-o” class=”” unprefixed_class=””] (GPIO.setmode(GPIO.BCM

در این دستور ما کتابخانه مورد نظر بردمان را وارد کرده ایم

مانند کد زیر:

GPIO.setmode(GPIO.BCM)

[icon name=”circle-o” class=”” unprefixed_class=””] (GPIO.setup(led_pin, GPIO.OUT

در این خط ما توابع مورد نظرمان را معرفی کرده ایم

مانند کد زیر:

GPIO.setup(led_pin, GPIO.OUT)

[icon name=”circle-o” class=”” unprefixed_class=””] (pwm_led = GPIO.PWM(led_pin, 500

در این خط ما پین انتخاب کرده را به شکل pwm  پیکر بندی کرده ایم و فرکانس 500 هرتز را برایش در نظر می گیریم

مانند کد زیر:

pwm_led = GPIO.PWM(led_pin, 500)

[icon name=”circle-o” class=”” unprefixed_class=””] (pwm_led.start(100

در این خط ما دیوتی سابکل مدولاسیون هنگام شروع برابر 100 قرار داده ایم

مانند کد زیر:

pwm_led.start(100)

[icon name=”circle-o” class=”” unprefixed_class=””] while True:

یک حلقه بی نهایت می باشد

مانند کد زیر:

while True:

[icon name=”circle-o” class=”” unprefixed_class=””] (“: (duty_s = input(“Enter brightness(0 to 100

در این خط یک مقدار بین 0 تا 100 از کاربر دریافت می کند تا دیوتی سایکل مدولاسیون را تغییر دهد

مانند کد زیر:

duty_s = input("Enter brightness (0 to 100):")

[icon name=”circle-o” class=”” unprefixed_class=””] (duty = int(duty_s

دیوتی سایکل را مساوی عدد دیوتی سایکل قرار داده ایم

مانند کد زیر:

duty = int(duty_s)

[icon name=”circle-o” class=”” unprefixed_class=””] (pwm_led.ChangeDutyCycle(duty

تغییرات دیوتی سایکل led  را نشان می دهد

مانند کد زیر:

pwm_led.ChangeDutyCycle(duty)
[vc_row][vc_column][vc_message message_box_color=”pink” icon_fontawesome=”fa fa-cloud-download”]برای دانلود کامل برنامه و فایل های پروژه به صورت رایگان به پایین صفحه مراجعه کنید.[/vc_message][/vc_column][/vc_row]
#این دستور برای اضافه کردن کتابخانه RPi است و ما GPIO  را برای نام گذاری گذاشته ایم
import RPi.GPIO as GPIO
#در این دستور ما پایه  17را به عنوان خروجی  رزبری به led  متصل کرده ایم
led_pin = 17
#در این دستور ما کتابخانه مورد نظر بردمان را وارد کرده ایم
GPIO.setmode(GPIO.BCM)
# در این خط ما توابع مورد نظرمان را معرفی کرده ایم
GPIO.setup(led_pin, GPIO.OUT)
#در این خط ما پین انتخاب کرده را به شکل pwm  پیکر بندی کرده ایم و فرکانس 500 هرتز
#را برایش در نظر می گیریم
pwm_led = GPIO.PWM(led_pin, 500)
# در این خط ما دیوتی سابکل مدولاسیون هنگام شروع برابر 100 قرار داده ایم
pwm_led.start(100)
#یک حلقه بی نهایت می باشد
while True:
	#در این خط یک مقدار بین 0 تا 100 از کاربر دریافت می کند تا دیوتی سایکل مدولاسیون را تغییر دهد
	duty_s = input("Enter brightness (0 to 100):")
	# دیوتی سایکل را مساوی عدد دیوتی سایکل قرار داده ایم
	duty = int(duty_s)
	# تغییرات دیوتی سایکل led  را نشان می دهد
	pwm_led.ChangeDutyCycle(duty)

 

کنترل روشنایی LED RGB و ربات با PWM و با رزبری پای (2)

 

[hot_posts]

 

پروژه راه اندازی روشنایی LED با pwm به کمک رزبری پای:

 

وسایل مورد نیازکنترل روشنایی LED RGB و ربات رزبری پای:

[icon name=”check-circle” class=”” unprefixed_class=””] یک برد رزبری پای

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد برد برد

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد کابل LAN

[icon name=”check-circle” class=”” unprefixed_class=””] کابل POWER

[icon name=”check-circle” class=”” unprefixed_class=””] سه عدد مقاومت 3.3کیلو اهم

[icon name=”check-circle” class=”” unprefixed_class=””] یک عدد LED RGB

 

[icon name=”star-half-o” class=”” unprefixed_class=””] توجه داشته باشید که برد رزبری را پایه اش را به سمت پایین نگه داشته و خواندن پایه ها از سمت راست به چپ می باشد

[icon name=”star-half-o” class=”” unprefixed_class=””] توجه داشته باشید که led استفاده شده در این پروژه آند مشترک است(5v)

[icon name=”star-half-o” class=”” unprefixed_class=””] توجه داشته باشید که برای اتصال پایه های پروژه به رزبری پای باید از شمای فنی برد رزبری پای در بالای صفحه کمک بگیرید.

 

 

در تصویر بالا با نحوه متصل کردن پایه های پروژه به برد رزبری پای آشنا می شویم و در جدول پایین به توضیح خط به خط اتصالات می پردازیم.

 

جدول اتصالات:

[su_table responsive=”yes”]

پایه های رزبری پایه های متصل به برد
17 متصل به مقاومت و  LED
27 متصل به مقاومت و  LED
22 متصل به مقاومت و   LED
پایه مشترکLED 5V

[/su_table]

 

حالا با  دستورات راه اندازی پروژه آشنا می شویم:

 

[icon name=”star-half-o” class=”” unprefixed_class=””] در این خط توجه داشته باشید که حرف اول کتابخانه ما با حروف کوچک نوشته شده است.

 

[icon name=”circle-o” class=”” unprefixed_class=””] *from tkinter import

این خط برای اضافه کردن کل کتابخانه takinter است

مانند کد زیر:

from tkinter import*

[icon name=”circle-o” class=”” unprefixed_class=””] import RPi.GPIO as GPIO

اضافه کردن کتابخانهRpiونام گذاری (GPIO)

مانند کد زیر:

import RPi.GPIO as GPIO

[icon name=”circle-o” class=”” unprefixed_class=””] import time

اضافه کردن کتابخانه زمان

مانند کد زیر:

import time

[icon name=”circle-o” class=”” unprefixed_class=””] (GPIO.setmode(GPIO.BCM

در این دستور ما کتابخانه مورد نظرمان را وارد کرده ایم

مانند کد زیر:

GPIO.setmode(GPIO.BCM)

[icon name=”circle-o” class=”” unprefixed_class=””] (GPIO.setup(17, GPIO.OUT

این خط برای توابع ما می باشد که پایه 17 را خروجی قرار داده ایم

مانند کد زیر:

GPIO.setup(17, GPIO.OUT)

[icon name=”circle-o” class=”” unprefixed_class=””] (pwmRed = GPIO.PWM(17, 200

این خط pwm رنگ led قرمز ما است که خروجی و زمان pwm رامعیین می کند

مانند کد زیر:

pwmRed = GPIO.PWM(17, 200)

[icon name=”circle-o” class=”” unprefixed_class=””] (pwmRed.start(0

استارت شروع pwm رنگ قرمز led را از صفر شروع می کند

مانند کد زیر:

pwmRed.start(0)

[icon name=”circle-o” class=”” unprefixed_class=””] :class App

نام کلاسی که توابع را در آن نوشته ایم

مانند کد زیر:

class App:

[icon name=”circle-o” class=”” unprefixed_class=””] :(def __init__(self, master

در این خط ما توابعی را تعریف می کنیم

مانند کد زیر:

def __init__(self, master):

[icon name=”circle-o” class=”” unprefixed_class=””] (frame = Frame(master

در این خط ما یک محیط گرافیکی به نام frame ایجاد کرده ایم که مساوی محیط گرافیکی master قرار داده ایم

مانند کد زیر:

frame = Frame(master)

[icon name=”circle-o” class=”” unprefixed_class=””] ()frame.pack

یک پنل گرافیکی برای ما ایجاد می کند

مانند کد زیر:

frame.pack()

[icon name=”circle-o” class=”” unprefixed_class=””] (Label(frame, text=’Red’).grid(row=0, column=0

برای آن که تابع به روزرسانی مربوط به مقدار دیوتی سایکل می باشد از این تابع استفاده می کنیم  برای led قرمز رنگ

مانند کد زیر:

Label(frame, text='Red').grid(row=0, column=0)

[icon name=”circle-o” class=”” unprefixed_class=””] (scaleRed = Scale(frame, from_=100, to=0, orient=HORIZONTAL, command=self.updateRed

برای آن که تابع به روزرسانی مربوط به مقدار دیوتی سایکل می باشد از این تابع استفاده می کنیم led قرمز رنگ

مانند کد زیر:

scaleRed = Scale(frame, from_=100, to=0, orient=HORIZONTAL, command=self.updateRed)

[icon name=”circle-o” class=”” unprefixed_class=””] (scaleRed.grid(row=0, column=1

این دستور مشخص می کند که سطر و ستونمان در چه موقعیت می باشد

مانند کد زیر:

scaleRed.grid(row=0, column=1)

[icon name=”circle-o” class=”” unprefixed_class=””] :(def updateRed(self, duty

تابع به روزرسانی led قرمز رنگ

مانند کد زیر:

def updateRed(self, duty):

[icon name=”circle-o” class=”” unprefixed_class=””] ((pwmRed.ChangeDutyCycle(float(duty

تغییرات دیوتی سایکل led  قرمز را نشان می دهد

مانند کد زیر:

pwmRed.ChangeDutyCycle(float(duty))

[icon name=”circle-o” class=”” unprefixed_class=””] ()root = Tk

در این خط ما تابع هایی که در Tk  نوشته ایم مساوی root  قرار داده ایم که تابع ها

در root  ریخته می شود

مانند کد زیر:

root = Tk()

[icon name=”circle-o” class=”” unprefixed_class=””] (‘(root.wm_title(‘RGB LED with PWM (S.H

در این خط ما اسم جدول محیط گرافیکیمان را می نویسیم

مانند کد زیر:

root.wm_title('RGB LED with PWM (S.H)')

[icon name=”circle-o” class=”” unprefixed_class=””] (app = App(root

در این خط ما app را مساوی کلاسی که معرفی کرده ایم قرار داده ایم

مانند کد زیر:

app = App(root)

[icon name=”circle-o” class=”” unprefixed_class=””] (“root.geometry(“200×150+0+0

در این قسمت ما شکل و اندازه جدول محیط گرافیکی را تعریف کرده ایم

[icon name=”star-half-o” class=”” unprefixed_class=””] توجه داشته باشید که در قسمت geometry در پرانتز بعد از عدد 200 ما حرف ایکس را گذاشته ایم

مانند کد زیر:

root.geometry("200x150+0+0")

[icon name=”circle-o” class=”” unprefixed_class=””] ()root.mainloop

تابعی را برایمان فراخوانی می کند

مانند کد زیر:

root.mainloop()

 

کنترل روشنایی LED RGB و ربات با PWM و با رزبری پای (3)

 

کنترل روشنایی LED RGB و ربات با PWM و با رزبری پای (4)

 

[vc_row][vc_column][vc_message message_box_color=”pink” icon_fontawesome=”fa fa-cloud-download”]برای دانلود کامل برنامه و فایل های پروژه به صورت رایگان به پایین صفحه مراجعه کنید.[/vc_message][/vc_column][/vc_row]
#این خط برای اضافه کردن کل کتابخانه است
from tkinter import*
#اضافه کردن کتابخانه آر پی آی ونام گذاری(جی پی آی او)
import RPi.GPIO as GPIO
#اضافه کردن کتابخانه زمان
import time
#در این دستور ما کتابخانه مورد نظر بردمان را وارد کرده ایم
GPIO.setmode(GPIO.BCM)
#این خط جز توابع ما است
GPIO.setup(17, GPIO.OUT)
GPIO.setup(27, GPIO.OUT)
GPIO.setup(22, GPIO.OUT)
#این خطپی دبلیو ام رنگ ال ای دی  قرمز ما استکه خروجی و زمان پی دبلیو ام را معیین می کنیم
pwmRed = GPIO.PWM(17, 200)
#استارت شروع پی دبلیو ام رنگ قرمزال ای دی از صفر است
pwmRed.start(0)
pwmGreen = GPIO.PWM(27, 200)
pwmGreen.start(0)
pwmBlue = GPIO.PWM(22, 200)
pwmBlue.start(0)
#نام کلاس که توابع را در آن نوشته ایم
class App:
    #در این خط ما توابعی را تعریف می نماییم
    def __init__(self, master):
        #در این خط ما یک محیط گرافیکی به نام فریم ایجاد کرده ایم که مساوی محیط گرافیکی مستر  قرار داده ایم
        frame = Frame(master)
        #یک پنل گرافیکی برای ما ایجاد می کند
        frame.pack()
        #برای آن که محیط گرافیکی ال ای دی  قرمز ما که پی دبلیو ام برای آن تعریف کرده ایم بتوانیم تغییرش بدهیم
        Label(frame, text='Red').grid(row=0, column=0)
        Label(frame, text='Blue').grid(row=1, column=0)
        Label(frame, text='Green').grid(row=2, column=0)
        Label(frame, text='Raspberry PI Persian Reference').grid(row=5, column=1)
        #برای آن که تابع به روزرسانی مربوط به مقدار دیوتی سایکل می باشد از این تابع استفاده می کنیمledقرمز رنگ
        scaleRed = Scale(frame, from_=100, to=0, orient=HORIZONTAL, command=self.updateRed)
        #مشخص کردن سطر وستون سایکل led قزمز رنگ می باشد
        scaleRed.grid(row=0, column=1)
        scaleGreen = Scale(frame, from_=100, to=0, orient=HORIZONTAL, command=self.updateGreen)
        #مشخص کردن سطر وستون سایکلال ای دی سبز رنگ می باشد
        scaleGreen.grid(row=1, column=1)
        scaleBlue = Scale(frame, from_=100, to=0, orient=HORIZONTAL, command=self.updateBlue)
        #مشخص کردن سطر وستون سایکل ال ای دی آبی رنگ می باشد
        scaleBlue.grid(row=2, column=1)
        #تابع بروز رسانی ال ای دی قرمز رنگ
    def updateRed(self, duty):
        #تغیرات دیوتی سایکل ال ای دی قرمز را نشان می دهد
        pwmRed.ChangeDutyCycle(float(duty))
    def updateGreen(self, duty):
        #تغییرات دیوتی سایکل ال ای دی سبز رنگ را نشان می دهد
        pwmGreen.ChangeDutyCycle(float(duty))
    def updateBlue(self, duty):
        #تغییرات دیوتی سایکل ال ای دی آبی رنگ را نشان می دهد
        pwmBlue.ChangeDutyCycle(float(duty))

root = Tk()
root.wm_title('RGB LED with PWM (S.H)')
app = App(root)
root.geometry("200x150+0+0")
root.mainloop()

 

جمع بندی:

 

در این آموزش چگونه کنترل روشنایی LED RGB و ربات رزبری پای را یاد گرفتیم.

از جمله کاربرد های آن تغییر رنگ چراغ LED ماشین توسط کنترل

درست کردن چراغ راهنمایی و رانندگی و چراغ تزئینی

 

موفق پیروز باشید

امیدوارم از مطلب لذت برده باشید حتما سر به اینستاگرام و کانال ما بزنید

[wp_ulike]
اگر می‌خواهید از آخرین و محبوب‌ترین مقالات ما در ایمیل خود مطلع شوید، همین الان ایمیل و شماره موبایل خود را در کادر زیر وارد کنید:
تعداد علاقه مندانی که تاکنون عضو خبرنامه ما شده اند: 0 نفر
دیدگاه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *