آموزش قسمت دوم رسبری پای(بخشgpio و وقفه ها به زبان سی و پایتون)
به نام خدا و با سلام خدمت دوستان
در این مطلب قصد دارم اموزش استارت پایتون در رسبری و واحد gpio رسبری و نصب ابزار مورد نیاز و اولیه پایتون و gpio را خدمت دوستان عرض کنم.
در مرحله اول کد های زیر را به ترتیب وارد کنید و اینتر بزنید تا عملیات نصب انجام بشه…
توجه : در حین نصب اگر سوالی پرسید y را بزنید و سپس اینتر کنید.
Step 1: Install Python development tools
1 2 3 4 |
sudo apt-get update sudo apt-get install python-dev python-pip sudo pip install --upgrade distribute sudo pip install ipython |
Step 2: Install GPIO library
1 |
sudo pip install --upgrade RPi.GPIO |
1 |
sudo apt-get autoclean |
توجه: پایه مثبت LED را با یک مقاومت ۱۰۰ تا ۳۳۰ اهم به GPIO16 متصل کنید و پایه منفی LED را به GND متصل کنید :
روی عکس کلیک کنید تا به صورت با کیفیت نمایش داده شود.
کد هایی که زبان پایتون برای چشمک زدن led متصل به GPIO16 شده نوشته شده است.
1 2 3 4 5 6 7 8 9 10 11 |
import RPi.GPIO as GPIO from time import sleep GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(16, GPIO.OUT) while 1: GPIO.output(16,1) sleep(0.5) GPIO.output(16,0) sleep(0.3 |
توضیحات کلی بخش gpio به زبان پایتون:
کد زیر، پایه ۱۶ رو به عنوان خروجی تنظیم میکنه:
1 |
GPIO.setup(16, GPIO.OUT) |
کد های زیر پایه ۱۶ را یک میکنند(هر سه کد عملکرد یکسانی دارند)
1 2 3 |
GPIO.output(16, 1) GPIO.output(16, GPIO.HIGH) GPIO.output(16, True) |
کدهای زیر پایه ۱۶ رو به صفر می کنند(هر سه کد عملکرد یکسانی دارند)
1 2 3 |
GPIO.output(16, 0) GPIO.output(16, GPIO.LOW) GPIO.output(16, False) |
کد زیر پایه ۱۶ را به صورت ورودی تعریف می کند و همچنین پول آپ یا پول داون را مشخص می کند:
1 |
GPIO.setup(16, GPIO.IN,pull_up_down=GPIO.PUD_UP) |
و با استفاده از کد زیر میتوانید مقدار (صفر یا یک بودن یا فشرده شدن کلید) پایه ۱۶ را بخوانید:
1 |
GPIO.input(16) |
برنامه زیر هم کلید رو که با پایه های gpio18 متصل هست رو با if میخونه و متناسب با اون led رو که به پایه gpio16 متصل هست رو روشن و خاموش میکنه :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import RPi.GPIO as GPIO from time import sleep GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.IN,pull_up_down=GPIO.PUD_UP) GPIO.setup(16, GPIO.OUT) while 1: if GPIO.input(18): GPIO.output(16,1) print(‘button pressed’) else: GPIO.output(16,0) Print(‘button not pressed’) |
کد زیر هم وقفه های خارجی رو به دو صورت سخت افزاری و منتظر ماندن در وایل رو انجام میده
داخل کد گفتم که کلید ها و led باید به کدوم پایه ها متصل بشن فقط برا led ها مقاومت استفاده کنید حتما( ۱۰۰ تا ۳۰۰ اهم خوبه)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
import RPi.GPIO as GPIO from time import sleep GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM) GPIO.setup((20,16),GPIO.OUT) #ledha be GPIO20 VA GPIO16 vasl shode GPIO.setup(18,GPIO.IN,pull_up_down=GPIO.PUD_DOWN) #klid be GPIO18 vasl shode GPIO.setup(12,GPIO.IN,pull_up_down=GPIO.PUD_UP) #klid be GPIO12 vasl shode #GPIO.cleanup() i=0 def routine(void): n=0 for n in range(5): GPIO.output(16,1) sleep(.1) GPIO.output(16,0) sleep(.1) global i i+=1 print('tedad vghfeha %d'%i) GPIO.add_event_detect(12,GPIO.FALLING,callback= routine,bouncetime=2000) #وقفه خارجي while 1: GPIO.wait_for_edge(18,GPIO.RISING) GPIO.output(20,not GPIO.input(18)) print('switch GPIO18 Pressed') sleep(.2) GPIO.wait_for_edge(18,GPIO.FALLING) GPIO.output(20,not GPIO.input(18)) print('switch GPIO18 Released') |
راه اندازی توضیحات کلی بخش gpio به زبان C و ++C:
برای اینکه در رسبری پای به زبان سی کد بنویسید ابتدا باید کتابخونه اون رو نصب کنید که کتابخونه های متفاوتی وجود دارن که ما اینجا از کتابخونه ی wiringpi استفاده می کنیم
برای نصب کتابخونه مراحل زیر رو طی کنید :
در مرحله اول رسبری پای رو آپدیت و آپگریت کنید به اخرین ورژن که با دو خط کد زیر را به ترتیب تایپ کنید و اینتر کنید (اگر سوالی پرسید y رو بزنید و اینتر کنید).
1 2 |
sudo apt-get update sudo apt-get upgrade |
سپس باید git رو نصب کنید که برای نصبش کد های زیر رو به ترتیب تایپ کنید و اینتر بزنید :
1 |
sudo apt-get install git-core |
پس از اینکه نصب شد کد های زیر را به ترتیب تایپ و اینتر کنید :
1 2 3 4 5 6 |
cd git clone git://git.drogon.net/wiringPi cd ~/wiringPi git pull origin cd ~/wiringPi ./build |
برای اینکه تست کنید که کتابخونه با موفقیت نصب شده کد های زیر را به ترتیب تایپ و اینتر کنید
1 2 |
gpio -v gpio readall |
کد اول ورژن و یه سری توضیحات رو میگه
کد دوم هم تمامی پایه های gpio رو لیست میکنه که به صورت زیر هستش :
به شماره پایه ها و این دو ستون دقت کنید
پس از نصب ما می توانیم پروژه ای به عنوان مثال چشمک ایجاد و کامپایل کنیم که برای نام گذاری پایه ها از مد زیر استفاده می کنیم :
1 |
wiringPiSetup(void) |
کد زیر را در ترمینال تایپ میکنیم و اینتر میزنیم تا یک فایل جدید باز شود
1 |
sudo nano gpio_blink_c.c |
در فایل باز شده کد زیر را مینویسم :
یه راه جالب بهتون بگم که برا تایپ کردم کد ها اذیت نشید اینکه تلگرام در نسخه ویندوز رو لبتابتون نصب کنید و در رسبری تلگرام تحت وب رو با مرور گر برای شماره موبایلتون ایجاد کنید و یه کانال مثلا به اسم rasp ftp درست کنید و حالا این کد هارو در ویندوز و لبتاب تو کانال بفرستید و از اون طرف تو تلگرام تحت وب رسبری پای کد هارو در کانال کپی کنید و در ترمینال پیست و اجرا کنید
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include <stdio.h> #include <wiringPi.h> void delay_f(int d) { long dly; for(dly=0;dly<d*140000;dly++){} } int main(void) { wiringPiSetup(); pinMode(27,OUTPUT);//GPIO16 IS LED PIN printf("MicroDroidPrj.ir\n"); while(1) { digitalWrite(27,HIGH); printf("LED is ON\n"); delay_f(500); digitalWrite(27,LOW); printf("LED is OFF\n"); delay_f(800); printf("perss ctrl+z to exit\n"); } } |
حال پس از این که کد زیر را کپی کردیم و در فایل باز شده پیست کردیم(با روش تلگرامی که در بالا گفتم می توانید،ابتدا ctrl+x را میزنیم و سپس y را زده و در نهایت اینتر میزنیم سپس باید کد را کامپایل و بعد اجرا کنیم :
برای کامپایل کد،کد زیر را در ترمینال تایپ کنید و اینتر کنید :
1 |
gcc -o gpio_blink_c gpio_blink_c.c -l wiringPi |
و برای اجرای کد،کد زیر را در ترمینال تایپ کنید و اینتر بزنید :
1 |
sudo ./ gpio_blink_c |
مشاهده می کنید که led مثل شده به gpio16 شروع به چشمک زدن خواهد کرد…
موفق و سربلند باشید…