به نام خدای علی(ع) آفرین : تو این مطلب به ایجاد پروژه رزبری پای به زبان های C و ++C رو میگیم، و بعد gpio رزبری پای رو به زبان C آموزش میدیم و دو تا پروژه رزبری پای هم بعدش قرار دادیم. ( آموزش و پروژه gpio رزبری پای به زبان c )
ساخت پروژه رزبری پای به زبان C و ++C
برای ساخت یک پروژه C، ترمینال رو باز کنید و یه فایل با نام دلخواه و پسوند c. بسازید.
راستی(ترمینال یه فضایی مثل cmd در ویندوز هست.)
1 |
sudo nano test.c |
در فایل باز شده، با سینتکس زبان c بنویسید(مثلا)
1 2 3 4 5 |
#include <stdio.h> int main(void) { printf(“DMF313.ir\n”); } |
بعذش فایل رو ذخیره کنید Ctrl+x و سپس y و بعدش اینتر.
حالا باید برنامه رو کامپایل کنید. تو ترمینال تایپ کنید و بعدش اینتر بزنید:
1 |
gcc test.c –o test |
حالا اجراش کنید
1 |
sudo ./test |
برای ساخت یک پروژه ++C هم مشابه همین روند رو داریم
1 |
sudo nano testcpp.cpp |
متن پروژه
1 2 3 4 5 6 |
#include <iostream> Using namespace std; Int main() { cout << ”DMF313.ir” << endl; } |
توجه : خط دوم، فضای نام std رو باز میکنه تا بتونیم از تابع cout استفاده کنیم.می تونیم این خط رو پاک کنیم ولی قبل از دستور cout یه std:: بیاریم. به این ترتیب هر وقت که بخوایم از cout یا cin استفاده کنیم، باید یه std:: قبلش بیاریم. ولی با استفاده از خط دوم، دیگه نیازی نیست قبل هر کدوم یه std:: بذاریم.
توجه : endl در خط پنجم کد،کار اینتر رو میکنه و به خط بعدی میره. می تونید برای دریافت کارکردش یه بار پاکش کنید و نتیجه رو مقایسه کنید.(این”>>” روهم باید پاک کنید.)
یه نکته دیگه اینکه در ++C میشه از تمام توابع C استفاده کرد. ولی برعکسش نمیشه.
پس از ذخیره فایل، کامپایلش می کنیم:
1 |
g++ testcpp.cpp –o testcpp |
در انتها اجراش می کنیم
1 |
sudo ./test |
آموزش GPIO رسپری به زبان C
4تا کتابخونه شناخته شده به زبان C برای کنترل GPIO رسپری نوشته شده.
Native ، BCM2835 ، WiringPi ، pigpio از بین این چهارتا Native از همه بهینه تره ولی پیداش نکردم.از بینشون، WiringPi مثل نقل و نبات تو وب ریخته که ازش استفاده می کنیم.
برای نصب کتابخونه wiringpi از یکی از دو روش گفته شده در لینک زیر استفاده کنید
نصب کتابخونه wiring pi
گفتیم که از کتابخونه wiringPi استفاده خواهیم کرد. این کتابخونه برای نامگذاری پایه ها 4 تا مد داره.
1 2 3 4 |
wiringPiSetup(void) wiringPiSetupSys(void) wiringPiSetupGpio(void) wiringPiSetupphys(void) |
ما بدون دلیل از اولی استفاده می کنیم.خب حالا برای فهمیدن نام پایه ها ترمینال رو باز کنید و تایپ کنید :
1 |
Gpio –v |
این ورژن و مشخصات رسپری رو میده.
1 |
Gpio readall |
این یکی کد، جدولی شامل نحوه نامگذاری پایه ها رو میده. ما برای نامگذاری پایه ها در برنامه، طبق نامگذاری زیر ستون Name عمل می کنیم.
آموزش ها رو در قالب مثال میارم :
در مثال اول، می خوایم ال ای دی متصل به GPIO16 رو با زبان C و با استفاده از کتابخانه wiringPi روشن و خاموش کنیم.
یه فایل با نام دلخواه با پسوند c. و می سازیم(برای این کار، کد زیر رو در ترمینال رزبری پای کد زیر ور تایپ میکنیم وبعدش اینتر می زنیم.)
1 |
sudo nano gpio_c1.c |
در فایل باز شده، قطعه کد زیر رو بنویسید(به بزرگ و کوچک بودن حروف دقت کنید.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <stdio.h> #include <wiringPi.h> void dlay(int d) { long d1; for(d1=0;d1<d*140000;d1++){} } int main(void) { wiringPiSetup(); pinMode(27,OUTPUT); printf(“Pin Configured__DMF313.ir__\n”); while(1) { digitalWrite(27,HIGH); printf(“LED ON\n”); dlay(1000); digitalWrite(27,LOW); printf(“LED OFF\n"); dlay(1000); } } |
توجه : خط سوم تا پنجم، یه تابعی هست برای ایجاد تاخیر تقریبا یک ثانیه ای(در رزبری پای 3 که با سعی و خطا به دست آوردم.). این نحوه تاخیر در میکرو کنترلر ها کاربرد داره ولی در سیستم عامل ها، این تاخیر غیر استاندارد(تاخیر گاوی!!) هست. برای ایجاد تاخیر دقیق در سیستم عامل ها از زمان سیستم کمک می گیریم. که بعدا به خدمتش می رسیم. فعلا اینو قبول کنید تا بعد.
خط 10: مد پایه های GPIO رو مشخص می کنه.
خط 11: پایه با نام 27 (که در مد BCM پایتون همون GPIO16 هست) رو به عنوان خروجی تنظیم میکنه.
خط 12: هم یه پیامی چاپ می کنه که پایه تنظیم شد.
حالا فایل رو ذخیره کنید(Ctrl+x بعدش y و سپس اینتر)
موقع کامپایل کردن کد رسیده(تو ترمینال کد زیر روتایپ کنید)
1 |
gcc –o gpio_c1 gpio_c1.c –l wiringPi |
حالا اجراش کنید با
1 |
sudo ./gpio_c1 |
با Ctrl+z هم میتونید از برنامه بیاید بیرون.
پروژه رزبری پای روشن و خاموش کردن سه تا ال ای دی
دوباره روند تکراری : یه فایل با نام دلخواه با پسوند c. و می سازیم ( برای این کار،کد زیر رو در ترمینال رسپین کد زیر ور تایپ میکنیم و بعدش اینتر می زنیم. )
1 |
sudo nano gpio_c2.c |
در فایل باز شده، قطعه کد زیر رو بنویسید( به بزرگ و کوچک بودن حروف دقت کنید. )
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 |
#include <stdio.h> #include <wiringPi.h> void dlay(int d) { Long d1; For(d1=0;d1<d*140000;d1++){} } int main(void) { wiringPiSetup(); pinMode(27,OUTPUT); pinMode(28,OUTPUT); pinMode(29,OUTPUT); printf(“Pins Configured__DMF.ir__\n”); while(1) { digitalWrite(27,HIGH); digitalWrite(28,LOW); digitalWrite(29,HIGH); printf(“Plan A\n”); dlay(1000); digitalWrite(27,LOW); digitalWrite(28,HIGH); digitalWrite(29,LOW); printf(“Plan B\n”); dlay(1000); } } |
خب حالا فایل رو ذخیره کنید(Ctrl+x بعدش y بعدش اینتر)
و سپس کد رو کامپایل کنید :
1 |
gcc –o gpio_c2 gpio_c2.c –l wiringPi |
و در انتها هم اجرای برنامه
1 |
sudo ./gpio_c2 |
اونایی که دوست دارن در یک محیط برنامه نویسی کد بزنن و همونجا قابلیت ران کردن کدشون رو داشته باشن، میتونن از codeblocks استفاده کنن. برای نصب codeblocks روی رزبری پای، رزبری رو به اینترنت وصل کنید.(با کابل شبکه یا وای فای) برای اتصال رزبری پای به اینترنت، به لینک زیر مراجعه کنید :
نصب و راه اندازی VNC کنترل Raspberry Pi با کامپیوتر
سپس در ترمینال کد زیر رو تایپ کنید:
1 |
sudo apt-get install codeblocks |
هنگام نصب codeblocks اگر سوالی پرسید، y رو بزنید و بعدش اینتر. سپس رزبری پای رو ریست کنید.
پس از بالا اومدن سیستم، مسیر زیر رو دنبال کنید
در codeblocks مسیر زیر رو دنبال کنید
سپس مراحل زیر
و بعدش ok؛ بعدش دنبال کردن مسیر زیر و اعمال تغییرات
بعدش مراحل زیر
حالا تنظیمات codeblocks تموم شد.برای ساخت پروژه به زبان c مسیر زیر رو برید.
بعدش
و ادامه اش هم واضحه پروژه رو می سازید و کامپایل می کنید.
جهت هر چه مستحکم تر شدن مقام ولایت فقیه و تعجیل درظهور بابای خوبمون مهدی(عج) صلوات
مهمان
سلام اگر امکان داره انواع کتابخانه هایی رو که در زبان c استفاده میشه که با اون ها کارهای مختلفی انجام میشه رو توضیح بدید. ممنون
نویسنده این مطلب
سلام.
تعداد و نوع کتابخونه های موجود برای زبون c خیلی خیلی زیادن.
برای چه کارکردی نیاز به کتابخونه دارید؟
مهمان
سلام علیکم
خدا قوت ،مطالبتون در عین سادگی بسیار ارزشمند هستند ،شیوه بیان مطلبتون خیلی عالیه و همین به توجه به مباحث علمی روز
ممنون بابت این همه هنر
مهمان
سلام
خسته نباشید
موقع اجرا کد وقتی کنسول میاد بالا میزنه permision denied .مشکل از کجاس؟
تمام مراحل ذکر شده رو هم من انجام دادم
با تشکر
نویسنده این مطلب
سلام
یه sudo به اول دستورتون اضافه کنید.
اگر نشد،از ترمینال عکس بذارید.
مهمان
salam
man har kari kardam nashod
in error ro mide
gcc: error: –o: No such file or directory
gcc: error: gpio_c1: No such file or directory
gcc: error: –l: No such file or directory
gcc: error: wiringPi: No such file or directory
نویسنده این مطلب
سلام کتابخونه wiringpiرو نصب کردید؟
تو متن یه لینک گذاشتم.
۲.اگر نصب کردید،یه عکس از ترمینالتون بذارید
مهمان
سلام و خسته نباشید.
من یه رزبری ۳ دارم که روش زده uk. هر بار که رزبین میریزم روش با کوچکترین ناملایمتی کرش میکنه.
اگه ناکهان از برق بکشمش و یا یه چیزی روش نصب کنم که یکم سنگین باشه کرش میکنه و دیگه یالا نمیاد. من باید دوباره برنامه بریزم روش.
لطفا راهنمایی بفرمایید.ممنونم
نویسنده این مطلب
سلام احتمالا مشکل شما،از موارد زیر ناشی میشه:
۱.جریان منبع تغذیه کمه(یه ۲ امپری بذارید)
۲.مموریتون کلاس ۱۰ نیست ویا سرعتش کمه(از یه مموری دیگه استفاده کنید
مهمان
سلام من gpio رو با پایتون کامل انجام دادم
ولی اینجا برا مثال اول کد اجرا میشه LED ON و LED OFF نوشته میشه ولی خود ال ای دی خاموش و روشن نمیشه فک کنم مشکل از اینجا باشه :
http://s9.picofile.com/file/8276720192/photo_2016_11_29_13_47_07.jpg
من آخرین ورژن رزبین رو نصب کردم ولی ورژن gpio نوشته 2 واسه شما 2.32 هس اگه مشکلش همینجاس ، چطوری میتونم آپ گریدش کنم؟
نویسنده این مطلب
سلام
آموزش نصب کتابخونه wiringpi رو در متن قرار دادم.
فراموش کرده بودم!!!!!!!!!!۱
مهمان
ایول درست شد ….
منتظر آموزش های بیشتر با رزبری هستم <3