زبان برنامه نویسی پایتون Python به سرعت در حال رشد میباشد و جامعه کاربری فعال بسیار زیادی دارد. شابد برای تازه کارها وارد شدن به این حوزه کمی ترسناک به نظر آید. پس از بررسیهای چند ماهه و نظر سنجی بین اسپارکرها به این نتیجه رسیدیم که آموزشهای پروژه محور روند یادگیری را افزایش داده و منجر به یادگیری در لحظه و عدم فراموشی کدها خواهد شد. برای شروع پایتون Python فقط به برد رزبری پای Raspberry pi نیاز دارید. در این آموزش به بخش دوم برنامه نویسی پایتون با رزبری پای میپردازیم. در ادامه با مرجع تخصصی رزبری پای به زبان فارسی، دیجی اسپارک همراه باشید.
شروع پایتون
در بخش اول برنامه نویسی پایتون Python با رزبری پای به دو روش دسترسی به محیط پایتون در رزبین اشاره شد. برای اینکار از منو Raspbian، وارد ترمینال شده و با دستور sudo idle وارد محیط برنامه نویسی پایتون میشویم. در این بخش میخواهیم توسط دستورات کدنویسی پایتون سرو موتور در چند چهت مختلف زاویه بگیرد. در ابتدا کدنویسی در محیط پایتون را تحلیل خواهیم کرد.
اتصالات
سرو موتور از سه پایه pwm، vcc و gnd تشکیل شده است. جهت راه اندازی سرو موتور بایستی از پایه های PWM رزبری پای استفاده نماییم.
کدنویسی Servo در محیط Python
پیش از شروع به کدنویسی باید دستورات مورد نیاز را بدانیم. در ادامه دستورات مورد نیاز را معرفی خواهم کرد.
-
import GPIO
همانطورکه در بخش ۱ گفته شد، جهت فراخوانی کتابخانه و ماژول از import استفاده میکنیم. در این آموزش از ماژول GPIO استفاده میشود و نحوه ی فراخوانی آن به صورت زیر است:
import RPi.GPIO as GPIO
-
import time
پایتون یک ماژول کاربردی به نام time را معرفی کرده است، که این ماژول امکان کنترل زمان در موقعیت های مختلف را برای ما فراهم میکند و به صورت زیر فراخوانی میشود:
import time
-
GPIO.setmode
توسط این دستور پین gpio و نوع اتصال آن مشخص شود. در این قسمت از شماره پین های Board استفاده میکنیم. نحوهی فراخوانی به صورت زیر است:
GPIO.setmode(GPIO.BOARD)
-
GPIO.setmode
توسط این دستور پین مورد نظر را به عنوان خروجی تنظیم میکنیم:
GPIO.setup(13, GPIO.OUT)
-
PWM
جهت کنترل سرو موتور توسط رزبری پای به ماژول PWM در RPI.GPIO نیاز خواهیم داشت. در ابتدا یک نمونه PWM مرتبط با پایه GPIO تغریف میکنیم. برای اینکار کافیست مقدار PWM را در یک متغیر ذخیره نمایید:
P = GPIO.PWM(13, 50)
برای تعریف ماژول PWM بایستی پایه PWM و فرکانس آن مشخص گردد. فرکانس خروجی سرو موتور برابر با ۵۰ پالس در هر ثانیه و یا همان ۵۰Hz است که در تابع مشخص شده است.
-
start
در این قسمت از برنامه نویسی پایتون Python میتوانید دیوتی سایکل Duty Cycle برای PWM تعریف کنید. به عبارت دیگر دیوتی سایکل یک مدت زمان را در یک دوره یا یک بازه منظم توصیف میکند. به عنوان مثال اگر یک پالس با طول مشخص بخواهیم میتوانیم از طریق فرمول، آن را محاسبه کنیم. برای اینکار میدانیم سرو مدت زمان سیکل آن ۲۰ میلی ثانیه است. سپس با طول ۰٫۵ ، ۱٫۵ و ۲٫۵ دیوتی سایکل را محاسبه خواهیم کرد. دیوتی سایکل از تقسیم طول بر دوره بدست میآید:
p.start(2.5)
-
(p.ChangeDutyCycle(dc
جهت تغییر دیوتی سایکل از دستور change استفاده میکنیم:
p.ChangeDutyCycle(2.5)
-
p.stop
جهت متوقف کردن پالس سرو موتور در برنامه نویسی پایتون Python از دستور زیر استفاده میکنیم:
p.stop()
-
time.sleep
یکی از توابع ماژول time، دستور time sleep است که بر حسب ثانیه secs میباشد:
time.sleep(1)
-
GPIO.cleanup
از این دستور جهت غیر فعال کردن پایه GPIO به کار برده شده در برنامه استفاده میشود:
GPIO.cleanup()
دستور Try Except
تابع Try به شما امکان تست کدها را میدهد و توسط آن میتوانید خطاهای احتمالی در طول اجرای پروژه را برطرف نمایید. به این صورت که دستوری در تابع try اجرا میگردد و اگر در زمان اجرا خطاهایی وجود داشته باشد، دستورات دوم یعنی Except اجرا میگردد. در این بخش بازه زمانی دیوتی سایکل در چرخه Try تست میگردد و در صورت خطا دستورات Except اجرا شده و سرو موتور از حرکت باز میایستد.
دستور while true
توسط این دستور تا زمانیکه دستورات یک شرط صحیح باشد، در این تابع اجرا میگردد.
کدنویسی به زبان پایتون Python
پس از معرفی دستورات مورد نیاز نوبت به نوشتن کدها رسیده است. جهت برنامه نویسی پایتون Python همانند زیر عمل کنید.
- وارد محیط پایتون شده و ctrl + N را بزنید تا پنجره جدید باز گردد.
- حال کدها را به ترتیب زیر وارد کنید.
- از منو FILE برنامه نوشته شده را SAVE کنیدو یا از CTRL + S استفاده کنید.
import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BOARD) GPIO.setup(13, GPIO.OUT) p = GPIO.PWM(13, 50) p.start(2.5) try: while True: p.ChangeDutyCycle(2.5) time.sleep(1) p.ChangeDutyCycle(12.5) time.sleep(1) except KeyboardInterrupt: p.stop() GPIO.cleanup()
اجرای پروژه پایتون
- از منو برنامه را ذخیره کنید و یا از کلید رابط CTRL + S استفاده کنید.
- RUN را انتخاب و یا CTRL + F5 را بزنید.
- سرو موتور Servo Motor در زاویه ۰ تا ۱۸۰ حرکت خواهد کرد.
وسایل مورد نیاز
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
پروژه و دریافت بن ارسال رایگان
برای دریافت بن خرید از دانشجو کیت، کاربران بایستی با استفاده از وسایل این آموزش، پروژه را اجرا کرده و یا حتی مدار جدیدی تعریف کنید. سپس از اجرای کار فیلم گرفته و در شبکههای اجتماعی از جمله آپارات و اینستگرام، با هشتگهای دیجی_اسپارک دانشجوکیت digispark daneshjookit منتشر کنند. سپس از طریق بخش نظرات در ادامه همین آموزش، جهت دریافت بن خرید ارسال رایگان به ارزش ۱۲۰۰۰ تومان از دانشجو کیت، لینک را زیر همین پست ارسال کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
سلام و خسته نباشید
از اینکه پایتون پروژه ای شروع شده خیلی خوشحالم
لطفا پروژه موتورهای مختلف با پایتون را هم در نظر بگیرید.
با سلام
از توجه شما ممنونم.
در ادامه آموزش ها به راه اندازی موتور خواهیم پرداخت.
با سلام
تفاوت gpio.bcm و gpio.board در چیه؟
با سلام
برای GPIO.BOARD شماره پین رزبری پای را وارد و برای GPIO.BCM شماره GPIO پایه را وارد میکنیم.
سلام یک رزبری پای قابلیت کنترل چند سروو موتور را دارد
با سلام
رزبری پای دارای ۴ پایه PWM GPIO است.
ممنون مهندس
سپاس از همراهی شما