• خونه
  • تماس با ما
  • همکاری با ما
  • حمایت مالی
آزادی حجاز
  • News
  • AVR
    • AVR Train
      • آموزش جامع AVR
      • آموزش صحیح و خوانا نوشتن کد
    • تابلو روان
    • موتور
      • موتور DC
      • موتور پله ای
      • سرو موتور
    • سنسور و ماژول
      • RFID
      • التراسونیک
      • شتاب سنج
      • رطوبت سنج
      • دماسنج
      • بلوتوث
      • اتصال AVR به کامپیوتر
      • اتصال رم به AVR
      • فرستنده گیرنده رادیویی
      • ساعت و تاریخ
      • جوی استیک
    • IC
      • IC حافظه
      • ADC
      • DS1307(ساعت)
      • BCD TO 7S
      • شیفت ریجستر
    • LCD
      • LCD گرافیکی
      • LCD کاراکتری
      • LCD رنگی
    • LED – 7S – Dot Matrix
      • LED
      • سون سگمنت(۷S)
      • دات ماتریس
    • ساعت
    • پروگرامر
    • اسیلوسکوپ
    • ولتاژ،جریان،مقاومت،فرکانس،خازن و…
      • ولت متر
      • اهم متر
    • امواج
    • کی پد(KEY PAD)
    • فوتوسل
  • ARM
    • ARM Projects
    • ARM Train
      • AT91
      • STM32
      • LPC1768
      • LPC2368
  • Arduino
    • Arduino Train
    • Arduino Projects
  • Raspberry
  • FPGA
  • PCB
    • آلتیوم
      • آموزش آلتیوم
      • پروژه آلتیوم
  • S.W
    • Codevision
    • Proteus
    • Serial Port
    • Android
    • Labview
  • Analog
  • etc
    • Components
    • Android
    • C/C++/Qt
    • OpenCV
    • QuadCopter
    • PC And Micro
    • Communication Protocols
دلیل پیشرفت سریع آلمان و ژاپن
آموزش الکترونیک ۱ آموزش سینماتیک روبات ها آموزش آردوینو در Proteus
آموزش الکترونیک ۲ آموزش رباتیک و ربات های سری آموزش Proteus - تحلیل مدار
آموزش مبانی الکترونیک آموزش میکروکنترلر STM32F1xx آموزش آردوینو - کنترل با شبکه
برنامه نویسی Raspberry Pi آموزش AVR و Codevision - مقدماتی آموزش برنامه نویسی آردوینو با متلب
کاربرد Raspberry Pi در صنعت آموزش AVR و Codevision - تکمیلی آموزش برنامه نویسی آردوینو - رباتیک
● تبلیغات دیجیتال هوشمند● آموزش های رایگان● استخدام در فرادرس
شما اینجائید:خانه » الکترونیک » پردازش تصویر » OpenCV » آموزش opencv کتابخانه highgui جلسه 1

آموزش opencv کتابخانه highgui جلسه 1

ارسال شده توسط:مهدی دمیرچیلو تاریخ ارسال: 2016/04/09 در OpenCV, الکترونیک, پردازش تصویر 7 نظر

به نام خدا : سلام، این دومین مطلب مربوط به opencv هستش تو مطلب قبلی یه سری منابع آموزشی معرفی کردم(معرفی منابع آموزش فارسی و انگلیسی opencv)، تو این مطلب از آموزش opencv میخوایم یه پروژه ساده opencv رو با هم ببینیم و یه عکس در opencv نمایش بدیم، و به بررسی توابع کتابخانه highgui هم میپردازیم.
آموزش opencv نمایش عکس جلسه 1

آموزش opencv کتابخانه highgui جلسه 1


داستان کربلا رفتن ما : وقتی رفتیم لب مرز از اونجا ماشین سوار شدیم(حالا دنگ و فنگش بماند برای بعد) و تو ماشین ما رفتیم ته ماشین نشستیم(4 نفر بودیم ما) این ماشین ها رو چی بهش میگن ون میگن چی میگن، 4 نفری کل اون ردیف آخر ماشین رو گرفته بودیم(نشسته بودیم^_^) تو ماشین 1 اصفحانی بود، ما هم دیدیم طرف داره یه چیزی میخوره^_^ هیچی یه نیم ساعتی رو مخش راه رفتیم و اضیتش کردیم تا آخر سر تمام آجیل هاش رو داد ما خوردیم^_^ (البته یه 2-3 تا خانم هم بودن- سن بالا- جای مادرمون – که خداییش خیلی آدمای خوبی بودن، با ما همکاری میکردن و این اصفحانی هه رو تحریک میکردن ^_^ این کیفی کردیم) یادمه رفیقم شروع کرد به خوندن زیادرت عاشورا – هیچی بنده خدا وسط کار صداش گرفت ^_^ لامسب صداش درنمیومد که، هیچی ما هم چیزی دستمون نبود و یه لیوان آب سرد دادیم بهش خورد ^_^ هیچی تا آخر کار با همون صداش خوند زیارت رو، صدای ماشین یه طرف و صدای این داش ما هم یه طرف، من که بقلش بودم فقط صداش رو میشنیدم^_^ بنده خدا صداش در نمیومد، آخر سر هم که 10 دقیقه مونده بود به محل مد نظر در نجف برسیم آنچنان گریه ای کردم که ملت انگشت به دهن …^_^ ، بعد رفتیم حرم امام علی و بعد زیارت دیگه شب شده بود و وقت خواب، رفتیم یه حسینیه ای پیدا کردیم(لامسب جمعیت این قدر زیاد بود که جا برا خواب پیدا نمیشد) رفتیم اونجا داخل حسینیه، سر بسته بود(حیاطش سقف داشت) بچه ها رفتن داخل اتاق و خوابیدن و برا من جا نشد که برم هیچی ما گرفتیم تو حیاط خابیدیم، یه مبل 2 نفره بود که وسطش خیس بود، دو نفری(با یه اصفحانیه….فک کنم اصفحانی بود، بچه باحالی بود، تا 3 شب باهاش صحبت میکردم) رو اون مبله گرفتیم خوابیدیم. دو نفر رو یه مبل دو نفره گرفتن خوابیدن^_^(خودتون فکرش رو بکنید)، چقدر با این بنده خدا من حرف زدم، میگفت من طلبه هستم(هم طلبه بود و هم یه رشته دیگه میخوند فک کنم) و میگفت من فکم قوی هستش و از این جور حرفا(چون بهش فک کنم گفته بودم مشکلی نداری با هم حرف بزنیم و صحبت کنیم طرف این حرفو زد) هیچی طرف ما رو نمیشناخت، این قدر باهاش صحبت کردیم که دیگه اخر سر بنده خدا کم ابرد^_^ ، یادمه براش داستان تعریف میکردم و وسط داستان گفتن من خوابم میبرد و بعد یه به حالت هوشیاری برمیگشتم بهمش میگفتم من داستان رو چی و چطور تعریف کردم و بعد اون میگفت اینا رو گفتی و منم گفتم درست گفتم(خودم کیف کردم که تو حالت نیمه هوشیاری داستان رو درست گفتم^_^) خب هیچی آقا از اونجا رفتیم و پیاده روی اربعین ما از اونجا شروع شد، از نجف پیاده رفتیم کربلا، 3 روز تو راه بودیم O_o ؛ متر به متر عراقی ها موکب زده بودن و از زائران استقبال میکردن(موکب شبیه ایستگاه صلواتی های سیار تو ایران هستش)…
خب دیگه داستان گفتن بسه بریم سر اصل مطلب… laugh

پروژه نمایش عکس در opencv

خب کد زیر حداقل کد مورد نیاز برای ایجاد یه عکس هستش.

1
2
3
4
5
6
7
8
#include <opencv2/highgui/highgui.hpp>
int main()
{
cv::Mat image= cv::imread("E:/MAHDE/AKS_MOVIE_SOUND/Aks/DMF.jpg");
cv::imshow("My Image",image);
cv::waitKey();
return 1;
}

خط 1 : فراخونی کتابخونه مورد نیاز برای نمایش عکس.
خط 5 : عکسی که میخوایم نمایش بدیم رو آدرسش رو به عنوان پارامتر به تابع imread میدیم و این عکس در متغییر image از نوع Mat ذخیره میشه.
خط 6 : نمایش عکس در یه پنجره با نام تعیین شده ی “My Image”
خط 8 : این قسمت باعث میشه پنجره نمایش عکس بسته نشه، پارامتری که ما بهش میدیم زمان بر حسب ms هستش، و اگه پارامتری بهش ندیم(عددی ندیم بهش) و یا 0 بدیم، به عنوان زمان “بی نهایت” تلقی میشه، مثلا اگه کد زیر رو بنویسیم، پنجره بعد از 3 ثانیه بسته میشه.(این تابع همون delay خودمون هستش که باعث میشه کامپایلر یه زمانی رو وایسه و بقیه کد های برنامه رو اجرا نکنه)

1
cv::waitKey(3000);

خط 9 : کامپایلر وقتی به این خط برسه برنامه رو میبنده.
توجه : اینا رو یادتون باشه چون تو مطلب بعدی تکرار نمیکنم.
مطالب مرتبط : Loading an image in OpenCV
 
 

آموزش کتابخانه highgui

لیست توابع این کتابخانه opencv به صورت زیر هستش.

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
CV_EXPORTS_W void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);
CV_EXPORTS_W void destroyWindow(const String& winname);
CV_EXPORTS_W void destroyAllWindows();
CV_EXPORTS_W int startWindowThread();
CV_EXPORTS_W int waitKey(int delay = 0);
CV_EXPORTS_W void imshow(const String& winname, InputArray mat);
CV_EXPORTS_W void resizeWindow(const String& winname, int width, int height);
CV_EXPORTS_W void moveWindow(const String& winname, int x, int y);
CV_EXPORTS_W void setWindowProperty(const String& winname, int prop_id, double prop_value);
CV_EXPORTS_W void setWindowTitle(const String& winname, const String& title);
CV_EXPORTS_W double getWindowProperty(const String& winname, int prop_id);
CV_EXPORTS void setMouseCallback(const String& winname, MouseCallback onMouse, void* userdata = 0);
CV_EXPORTS int getMouseWheelDelta(int flags);
CV_EXPORTS int createTrackbar(const String& trackbarname, const String& winname, int* value, int count, TrackbarCallback onChange = 0, void* userdata = 0);
CV_EXPORTS_W int getTrackbarPos(const String& trackbarname, const String& winname);
CV_EXPORTS_W void setTrackbarPos(const String& trackbarname, const String& winname, int pos);
CV_EXPORTS_W void setTrackbarMax(const String& trackbarname, const String& winname, int maxval);
CV_EXPORTS void imshow(const String& winname, const ogl::Texture2D& tex);
CV_EXPORTS void setOpenGlDrawCallback(const String& winname, OpenGlDrawCallback onOpenGlDraw, void* userdata = 0);
CV_EXPORTS void setOpenGlContext(const String& winname);
CV_EXPORTS void updateWindow(const String& winname);
CV_EXPORTS QtFont fontQt(const String& nameFont, int pointSize = -1, Scalar color = Scalar::all(0), int weight = QT_FONT_NORMAL, int style = QT_STYLE_NORMAL, int spacing = 0);
CV_EXPORTS void addText( const Mat& img, const String& text, Point org, const QtFont& font);
CV_EXPORTS void displayOverlay(const String& winname, const String& text, int delayms = 0);
CV_EXPORTS void displayStatusBar(const String& winname, const String& text, int delayms = 0);
CV_EXPORTS void saveWindowParameters(const String& windowName);
CV_EXPORTS void loadWindowParameters(const String& windowName);
CV_EXPORTS  int startLoop(int (*pt2Func)(int argc, char *argv[]), int argc, char* argv[]);
CV_EXPORTS  void stopLoop();
CV_EXPORTS int createButton( const String& bar_name, ButtonCallback on_change, void* userdata = 0, int type = QT_PUSH_BUTTON, bool initial_button_state = false);

 
خب دیگه بریم مورد به مورد توابع بالا رو توضیح بدیم و ببینیم چی هستن این همه تابع و کار هر کدومشون چی هستش.
 

1
CV_EXPORTS_W void namedWindow(const String& winname, int flags = WINDOW_AUTOSIZE);

1) تابع namedWindow برای ایجاد یه پنجره جدید هستش.
پارامتر اول : نام پنجره
پارامتر دوم : این برا تعیین حالت پنجره(اندازش) هستش، اون پارامتر آخر رو من دقیقا نحوه استفادش رو بلد نیستم چون ازش استفاده میکنم برنامه ارور میده، حالا بعدا اگه یادم بود میرم روش ه تحقیقی میکنم(فعلا نه وقتش رو دارم و نه حسش)

1
2
3
4
5
6
cv::namedWindow("Image1", cv::WINDOW_AUTOSIZE);
cv::namedWindow("Image2", cv::WINDOW_FREERATIO);
cv::namedWindow("Image3", cv::WINDOW_FULLSCREEN);
cv::namedWindow("Image4", cv::WINDOW_KEEPRATIO);
cv::namedWindow("Image5", cv::WINDOW_NORMAL);
cv::namedWindow("Image6", cv::WINDOW_OPENGL);

 
 

1
CV_EXPORTS_W void destroyWindow(const String& winname);

2) تابع destroyWindow برای نابود کردن یه پنجره هستش(که به کمک تابع namedWindow ساختیمش)
پارامتر اول : نام پنجره ای که قراره نابود بشه.

مثالی از دو تابع بالا
در این مثال یه پنجره ایجاد میکنیم و بعد از 2 ثانیه پنجره نابود میشه و فقط پنجره کنسول اپلیکیشن باز میمونه.

1
2
3
4
5
6
7
8
9
#include <opencv2/highgui/highgui.hpp>
int main()
{
cv::namedWindow("My Image2", 1);
cv::waitKey(2000);
cv::destroyWindow("My Image2");
cv::waitKey();
return 1;
}

 
 

1
CV_EXPORTS_W void destroyAllWindows();

3) تابع destroyAllWindows برای نابود کردن تمام پنجره های باز به کار میره.

مثالی از تابع destroyAllWindows
در برنامه زیر 6تا پنجره ساختیم و بعد 2 ثانیه تمام پنجره ها نابود(بسته) میشن و حتی پنجره کنسول اپلیکیشن

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <opencv2/highgui/highgui.hpp>
int main()
{
cv::namedWindow("Image1");
cv::namedWindow("Image2");
cv::namedWindow("Image3");
cv::namedWindow("Image4");
cv::namedWindow("Image5");
cv::namedWindow("Image6");
cv::waitKey(2000);
cv::destroyAllWindows();
cv::waitKey();
return 1;
}

 
 

1
CV_EXPORTS_W int waitKey(int delay = 0);

4) تابع waitKey برای ایجاد یه تاخیر زمانی هستش که در بالا به وفور ازش استفاده کردم و توضیح دادمش.
همون طور که یادتونه گفتم اگه 0 بدیم یا مقداری به تابع ندیم، تابع به مقدار بنهایت وای میسته(یه تاخیر زمانی بی نهایت)، چون همون طور که در تابع بالا میبینید پارامتر رو مقدار اولیه 0 دادن و لذا اگه شما مقدار 0 بدید و یا مقدار ندید هر دو مورد یکسان و یکی هستش.
 
 

1
CV_EXPORTS_W void imshow(const String& winname, InputArray mat);

5) تابع imshow برای نمایش یه عکس هستش که در اول برنامه یه مثال براش گزاشتم و توضیح هم دادم.
پارامتر اول : نام پنجره
پارامتر دوم : عکس ما(که قراره توسط این تابع نمایش داده بشه)
توجه : اگه قبل از این تابع پنجره ای ایجاد نشه(به کمک تابع namedWindow) این تابع خودش یه پنجره با مقدار CV_WINDOW_AUTOSIZE ایجاد میکنه.

مثالی از تابع imshow و namedWindow
خب گفتم اگه تابع namedWindow رو فراخونی نکنیم تابع imshow خودش یه پنجره با مقدار اولیه CV_WINDOW_AUTOSIZE ایجاد میکنه، ولی اگه نمیخواد این طور باشه باید قبل از تابع imshow بیاید و از تابع namedWindow استفاده کنید و پارامتر مد نظرتون رو تعیین کنید.
نکته مهم : نام پنجره در هر دو تابع باید حتما حتما یکسان باشه.
میتونید بعد از اجرای تابع برید و با پنجره ها ور برید و ویژگی هر کدوم رو ببینید، تو یکی عکس تغییر سایز پیدا نمیکنه، تو یکی پنجره تغییر سایز پیدا نمیکنه، تو یکی….
توجه : همون طور که قبلا گفتم نحوه کار دقیق WINDOW_OPENGL رو نمیدونم و بعدا میرم مطالعه میکنم(اگه یادم موندش^_^…حالا اگه کسی فهمید بگه)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <opencv2/highgui/highgui.hpp>
int main()
{
cv::Mat image= cv::imread("E:/MAHDE/AKS_MOVIE_SOUND/Aks/DMF.jpg");
cv::namedWindow("WINDOW_AUTOSIZE", cv::WINDOW_AUTOSIZE);
cv::imshow("WINDOW_AUTOSIZE",image);
cv::namedWindow("WINDOW_FREERATIO", cv::WINDOW_FREERATIO);
cv::imshow("WINDOW_FREERATIO",image);
cv::namedWindow("WINDOW_FULLSCREEN", cv::WINDOW_FULLSCREEN);
cv::imshow("WINDOW_FULLSCREEN",image);
cv::namedWindow("WINDOW_KEEPRATIO", cv::WINDOW_KEEPRATIO);
cv::imshow("WINDOW_KEEPRATIO",image);
cv::namedWindow("WINDOW_NORMAL", cv::WINDOW_NORMAL);
cv::imshow("WINDOW_NORMAL",image);
/*cv::namedWindow("WINDOW_OPENGL", cv::WINDOW_OPENGL);
cv::imshow("WINDOW_OPENGL",image);
cv::waitKey(2000);*/
cv::waitKey();
return 1;
}

 
 

1
CV_EXPORTS_W void resizeWindow(const String& winname, int width, int height);

6) تابع resizeWindow برای تغییر اندازه پنجره هستش(اندازه پنجره نمایش عکس رو تغییر میده و نه اندازخ عکس رو، دقت کنید)
پارامتر اول : نام پنجره(یا عکس، نام پنجره و عکس باید یکسان باشد)
پارامتر دوم : عرض عکس (اندازه افقی!)
پرامتر سوم : طول یا همون ارتفاع عکس (اندازه عمودی!)
 
توجه 1 : The specified window size is for the image area. Toolbars are not counted
توجه 2 : تمام پنجره های ایجاد شده با هر فلگی غیر از CV_WINDOW_AUTOSIZE رو میتونید تغییر سازش بدید.

مثالی از عملکرد تابع resizeWindow
در مثال زیر میبینید که اندازه پنجره نمایش عکس تغییر میکنه و نه اندازه عکس، چون ممکنه این شائبه براتون ایجاد بشه که این تابع عکس رو میبره و اندازه عکس رو تغییر میده و… این پروژه رو برای رفع این شائبه قرار میدم.
اول عکس نمایش داده میشه و بعد اندازه پنجره به 200 در 200 تغییر پیدا میکنه و بعد 2 ثانیه دوباره پنجره به اندازه اصلیش بر میگرده.
نکته آموزشی 1 : image.cols تعداد ستون های عکسی با نام image رو بر میگردونه.
نکته آموزشی 2 : image.rows تعداد سطر های عکسی با نام image رو بر میگردونه.

1
2
3
4
5
6
7
8
9
10
11
12
#include <opencv2/highgui/highgui.hpp>
int main()
{
cv::Mat image= cv::imread("E:/MAHDE/AKS_MOVIE_SOUND/Aks/DMF.jpg");
cv::imshow("my image",image);
cv::waitKey(2000);
cv::resizeWindow("my image", 200, 200);
cv::waitKey(2000);
cv::resizeWindow("my image", image.cols, image.rows);
cv::waitKey();
return 1;
}

 
خب دیگه همین قدر برای جلسه اول کافیه، بقیش بمونه برای جلسه بعدی، شاید حدودا در کل 3 جلسه برای این کتابخونه نیاز باشه، در جلسه آخر، فیلم آموزش هر 3 جلسه قرار داده میشه(هم برا اطمینان از صحت پروژه ها و کد هایی که در بالا براتون گزاشتم و هم یه توضیح به صورت فیلم.)
اگه مطلب براتون مفید بود لطفا هزینه اونو بپردازید : برا سلامتی امام خامنه ای(مد ظله العالی) و علمای واقعی اسلام (و نه این عمامه انگلیسی ها)  و مسئولین خدمت گزار به مردم و اسلام 3 تا صلوات بفرستید و دعاشون کنید و 1 فاتحه برا شادی روح شهدای مدافع حرم و سلامتی بروبچه های مدافع حرم و رزمندگان اسلام و در آخر دعا کنید ما هم آدم بشیم و  لیاقت شهادت پیدا کنیم.
(یا رو ماشین لامبورگینی مفتی به کسی بده این قدر هزینه براش تعیین نمیکنه که من برا این مطلب ناچیز کردم laugh )
فعلا یا علی

گروه پرسش و پاسخ الکترونیکی سروش

درباره مهدی دمیرچیلو

جنگ ما فتح قدس را در پی خواهد داشت (امام خمینی) >>>>>> اگر از صدام بگذریم، اگر مسأله قدس را فراموش کنیم، اگر از جنایت های امریکا بگذریم از آل سعود نخواهیم گذشت. ان‌شاالله اندوه دلمان را را در وقت مناسب با انتقام از امریکا و ال سعود برطرف خواهیم کرد و داغ و حسرت حلاوت این جنایت بزرگ را بر دلشان خواهیم گذاشت و با برپایی جشن پیروزی حق بر جنود کفر و نفاق و آزادی کعبه از دست نااهلان و نامحرمان به مسجد الحرام وارد خواهیم شد (امام خمینی)

مطالب مرتبط

  • » مقایسه آردوینو با avr

  • » تشخیص خواب آلودگی-پروژه رزبری پای با dlib library

  • » آموزش پروتکل i2c

  • » دربازکن هوشمند rfid با ماژول rdm6300 و آردوینو

  • » آموزش کتابخانه نویسی میکروکنترلر

  • » بازشناسی چهره انسان با رزبری پای face recognition_قسمت سوم

  • » بازشناسی چهره انسان با رزبری پای face recognition_قسمت دوم

  • » بازشناسی چهره انسان با رزبری پای face recognition_قسمت اول

  • » اصطلاحات مورد نیاز سفارش pcb قسمت 1

  • » آموزش lcd گرافیکی توشیبا در کدویژن قسمت 1

7 نظر

  1. mre
    2016/07/18 در 19:23

    سلام
    خدا قوت خیلی عالیه. اگه امکانش هست،ادامه بدید مباحثی مثل تشخیص صورت،چهره،آدم و …
    اگه امکانش هست،یه آموزش هم از تولید فایل exe با c++ هم بذارید تا بشه برنامه هایی که می نویسیم رو روی رسپری یا هر کامپیوتر دیگه اجرا کنیم.
    با تشکر فراوون

    پاسخ
    • مهدی دمرچیلو
      2016/07/30 در 21:41

      سلام
      قسمت دمت حرفت رو متوجه نشدم.

      پاسخ
  2. یاسر
    2016/12/10 در 01:11

    aliiiiii bod mohandes khoda qovat

    پاسخ
  3. ashkan
    2017/02/08 در 12:03

    سلام.ببخشید وقتی من می خوام برنامه ای رو که نوشتم رو run کنم.مینویسه که فایل PDB رو پیدا نمیکنه!! شما میدونید مشکلش کجاست؟؟کتابخونه های open cv فرقی نداره تو کدوم درایو نصب بشه؟؟؟؟

    پاسخ
  4. ashkan
    2017/02/08 در 12:09

    سلام.من وقتی یه برنامه رو می خوام run کنم مینویسه فایل PDB رو پیدا نمیکنه!!!شما میدونید مشکلش چیه؟؟

    پاسخ
  5. yaser
    2017/11/03 در 23:36

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

    پاسخ
  6. F
    2017/11/04 در 01:32

    سلام من یه سوال از حضورتون داشتم
    وقتی یه سون سگمنت رو بخوایم به میکرو وصل کنیم میآیم از آی سی 7447 استفاده میکنیم که پایه زیادی از میکرو اشغال نشه
    خب اعداد در مبنای دو 4 بیتی میشن
    حالا سوال من اینه که :
    4 بیت عدد به ای سی وارد میشن و 4 بیت بعدی به میکرو؟؟!!!!! هرچندعدد 8 بیتی که نیست 4 بیته
    یا عدد خودش 4 بیته و این 4 بیت وارد ای سی میشن و همین 4 بیت به میکرو وصل میشن؟؟؟؟
    آخه میخواد بدونم به چه علت وقتی دوتا سون سگمنت داریم فقط از یه پورت مثلا B استفاده میکنیم
    خودم فکر میکنم دومی درسته ولی استادمون یه چیز مث اولی گفته من الان هنگم

    پاسخ

یک نظر بدهید

برای صرف‌نظر کردن از پاسخ‌گویی اینجا را کلیک کنید.

آزادی قدس نزدیک است، ان شاء الله

آزادی قدس نزدیک است، ان شاء الله

مطلب ( پروژه ) بعدی …

فعلا دارم رو USB و میکرو LPC کار میکنم، 3 تا موضوع مطرح هستش ( که تو ذهنمه هر3شو برم ) :

1) میکرو در نقش Device ( فعلا محوریت کار من این مورد هستش )
2) میکرو در نقش Host
3) میکرو در نقش OTG

 

و باز 2 تا موضوع مطرح هستش، برا راه اندازی usb دو تا راه داریم ( که تو ذهنمه هر2شو برم ) :

1) استفاده از میکروکنترلر ( فعلا محوریت کار من این مورد هستش که از LPC1768 استفاده میکنم )
2) استفاده از آیسی های مختص اینکار.

 

فعلا کارم با دیتاشیت usb تموم شده، دارم کلاس های usb رو مطالعه میکنم، کلاس cdc رو ماستمالی کردیم و یه پروژه ازش منتشر کردیم، الان رو کلاس HID ریز شدم و دارم مطالعه میکنمش و پروژه ازش میزارم تو سایت.

 

جزئیات داستان رو در لینک زیر میتویند ببینید :

آموزش جامع پروتکول USB

پاسخ به سوالات …

سوالی داشتید در قسمت نظرت مطرح کنید؛ بلد باشم حتما جواب میدم ( اکثر مواقع آنلاین هستم و در کمتر از 1 ساعت جواب میدم )

😉

نظرات اخیر

  • مهرداد : پیدا کردم هر قطعه رو چطوری ببرم آیا میشه همه قطعات رو باهم از یک لا ...

  • حبیب رئیسی : سلام داداش عماد . من میخواستم یک منبع تغذیه ۳۰ ولت ۳۰ آمپر بسازم می ...

  • مهرداد : ممنون از پاسخت 1میخواستم طراحی من هر جای هست origin بره وسط طراحی آ ...

  • mohamamd : سلام . حرف نداری جوان انقلابی . دمت گرم ...

  • yazdani : سلام امکان دانلود برنامه برام فراهم نمیشه میشه راهنماییم کنید متشکر ...

جستجو

bigtheme
  1. پسورد فایل های سایت

    پسورد تمام فایل های سایت الکترونیک

  2. کانال ما در آپارات


ارائه دادن پروژه های سایت به استاد و یا فروختنشون مورد رضایت ما نیست و خلاف شرع و قانون می باشد / کپی کردن مطالب سایت ممنوعه /
  توسط بیگ تم