نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
قدس خرمشهر دیگر می شود
مهدی دمیرچیلو

آموزش جامع اتصال SD CARD به آردوینو

181

به نام خدا : تو این مطلب از آموزش آردوینو میخوام به راه اندازی SD CARD با آردوینو بپردازم، و در پایان یه پروژه آردوینو هم میزارم براتون؛ مطلبی که توش نحوه اتصال رم به آردوینو رو یاد میگیرید، تو بحث اتصال رم به آردینو ما از پروتکول SPI استفاده میکنیم، و چون فعلا زیاد نیاز به دوستنش نیست این مطلب رو دارم الان میگم، مطلب جلسه بعد هم احتمالا آموزش SPI در آردوینو هستش، و مطلب بعدی SPI نرم افزاری(مجازی) در آردوینو هستش انشاالله، به نظرم کل مباحث SPI شاید ۲-۳ جلسه طول بگشه، البته خدا رو چه دیدی شاید مثل مطلب ارتباط سریال در آردوینو یه ۴-۵ جلسه ای طول کشید ^_^، ولی هر چند که بحث ارتباط سریال مطالبش طولانی شد ولی من به شخصه راضی هستش و فک کنم خوب گفتم و ماست مالی نکردم.^_^، این SPI  رو هم انشاالله میگم و خوب میگم و با پروژه های خوب آردوینو میگم ^_^ >>>> نمیدونم چرا دارم این مطلب رو میگم، چون قرار بود مطلب وقفه رو کامل کنم، شاید به این خاطر بوده که گفتم این پروژه عملی شاید براتون جذاب باشه و بهتون روحیه بده و از این حرفا !!!  چقدر حرف زدیم، بریم سر اصل مطلب o_O :

آموزش جامع اتصال SD CARD به آردوینو

آموزش جامع اتصال SD CARD به آردوینو

پروژه اتصال رم به آردوینو

اینم همینجا بگم که اگه ارتباط سریال رو مطالبش رو نخوندین این مطلب رو نخونین جان داش، چون تو پروژه های این مطلب برا انتقال اطلاعات به کامپیوتر از ارتباط سریال استفاده کردم، دیگه بریم سر اصل مطلب ^_^….
خوب همون طور که گفتم رم ها به کمک پروتکول SPI (که در مطالب بعد بهش میپردازم) با آردوینو ارتباط برقرار میکنن، تو این مطلب ما میخوایم تابع های مورد نیاز رو بگم و تک تک توضیح بدم و در نهایت یه پروژه کلف!(از نظر استفاده از تمام توابع) براتون قرار بدم؛ عرضم به حظورتون و ظهورتون که رم رو به پایه های ۱۰ تا ۱۳ برد آردوینو وصل میکنیم، و از پایه های دیگه نمیشه استفاده کردم، دلیلش هم تو جلسات بعدی ذکر میشه.o_o
این کتابخونه SD (برا راه اندازی رم هستش) حدودا یه ۲۰ تا تابع ناقابل داره که در زیر میبینید :
توجه ۱ : در زیر هرجا file  رو دیدید بدونید باید نامی که خودتون برا فایل نمونه تعریف کردین رو قرار بدین.(این نه اسم فایل ما هستش و نه آدرس ذخیره فایل، تقریبا میشه گفت نام مستعار  هستش، حالا زیاد گیر ندید در ادامه خودتون میفهمید داستان رو.)
توجه ۲ : برا اتصال رم باس دو تا چیز بخرید، یکی ماژولش رو، که رم رو بهش وصل میکنی و این ماژول رو به آردوینو، در زیر ۲ نمونه از این ماژول ها رو میبینید، که تو ایران اون سمت چپی فقط هستش(تا جایی که من میدونم، خودم هم همین رو دارم) و یه خشاب که میتونید از سایت هایی موجود خرید کنید.
پروژه اتصال رم به آردوینو
 
توجه ۳ : این کتابخونه زبون فارسی رو پشتیبانی نمیکنه.
توجه توجه توجه : بعد از توضیح هر تابع، یه قسمت میزارم  که در واقع پروژه ته مطلب رو تیکه تیکه درکنار هر تابع توضیح میدم.
 

فرق فولدر با دایرکتوری 

والا تو این مطلب ما ۳ تا اصتلاح داریم، فایل، فولدر و دایرکتوری
فایل رو که همتون میدونید چیه، مثلا یه فایل txt ، یه فایل آهنگ(مثلا با فرمت mp3)، به فایل عکس و….
تا جایی که من فهمیدم تو سیستم عامل doc(برا زمان شاه هستش) از دایرکتوری استفاده میشه و تو میندوز از فایل، مثل این که جفتشون تقریبا یه چیز هستش، یه محلی که چیز هایی داخلش قرار میگیره؛ حالا برا مطالعه بیشتر و اطمینان میتونید مطالب زیر رو بخونید :
تفاوت بین Folder و Directory در چیست ؟
تفاوت Folder با Directory ؟
What is the difference between a file and a directory?
 

اتصال SD CARD به آردوینو

پایه ها رو به ترتیب زیر وصل کنید :
GND : این پایه از SD CARD رو به GND برد آردوینو تون وصل کنید!!!
۳٫۳+ : اینو میتونید به ۳٫۳V برد آردوینو تون وصل کنید!!!!!
۵+ : اینو میتونید به پایه ۵V برد آردوینوتون وصل کنید.!!!!!!
توجه۱ : برا تغزیه ماژول SD CARD یا باید از ولتاژ ۳٫۳ ولت استفاده کنید و یا ۵ ولت.(نیاید از هر دوش استفاده کنید، فقط از یکیشون استفاده کنید rtfm )
توجه۲ : نیازی نیست هر دو GND ماژول SD CARD رو به GND بردتون وصل کنید، یکی از این GND ها رو به بردتون وصل کنید کافیه.
MISO : به پایه ۱۲ برد آردوینو وصل شود.
MOSI : به پایه ۱۱ برد آردوینو وصل شود.
CS : به پایه ۱۰ برد آردوینو وصل شود.
CLK یا SCK : به پایه ۱۳ برد آردوینو وصل شود.
 
در بردهای mega2560  اتصالات به این صورت باید باشه(با تشکر از کاربری که یاد آوری کرد و من زیر رو بهم داد)
CS —-> pin 53
MOSI —-> pin 51
MISO —-> pin 50
CLK or SCK —-> pin 52
 

توابع اتصال رم به آردوینو

begin : این تابع برا راه اندازی تابع SD هستش و به دو صورت زیر نوشته میشه؛ که به جای pin پایه ای از آردوینو که قراره به پایه SS) CS) رم وصل بشه رو تعیین میکنیم، تو حالت دیفالت این پایه به پایه ۱۰ آردوینو وصل هستش، که اگه بخوایم از حالت دیفالتش استفاده کنیم باس از تابع اولی استفاده کنیم، ولی به کمک تابع دومی میتونیم بگیم که این پایه SS  به یه پایه دیگه از آردوینو وصل بشه که به جای pin نام پایه مورد نظرمون رو قرار میدیم.
یه جورایی میشه گفت این تابع کارش اینه که ببینه رم وصل هستش به آردوینو یا نه.

توجه مهم : چه شما از پایه ۱۰ استفاده کنید و چه نکنید باس این پایه رو خروجی تعریف کنید تا تابع SD بتونه کار کنه.
تو پروژه ته مطلب این تابع رو به صورت زیر استفاده کردم(خطوط ۲۵-۳۲) :
اگه رم رو شناسایی نکنه پیغام Failed رو ارسال میکنه(به پورت سریال) و اگه شناسایی کنه پیغام Done رو ارسال میکنه و تابع SdCard رو اجرا میکنه(توی این تابع که من تعریف کردم؛ کد های پروژم رو قرار دادم؛ مثلا میخوایم یه سری اطلاعات بنویسم و بعد بخونم و نشون بدم، این کار ها رو من توی این تابع قرار دادم، که برا ترتمیزی پروژه این کار رو کردم)، لذا تا زمانی که رم شناسایی نشه کد های پروژه(تابع SdCard ) اجرا نمیشه.

 
 
Exists : بررسی این که فایل یا دایرکتوری مورد نظر در رم وجود داره یا نه؛ به جای filename نام فایل یا دایرکتوری تون رو قرار بدین؛ اگه موجود بود true وگرنه false رو برمیگردونه این تابع.(توجه کنید که این تابع هم برا فایل هستش و هم دایرکتوری، ولی مثلا برا عملیات پاک کردن دو تابع داریم، یکی برا فایل و یکی برا دایرکتوری)

تو پروژه ته مطلب این تابع رو به صورت زیر استفاده کردم(خطوط ۳۹-۵۰) :
که میام میبینم که آیا دایرکتوری DMF313 موجود هستش یا نه، اگه موجود بود پیغام “Dont Create Directory.” رو ارسال میکنم و اگه موجود نبود پیغام “The Directory is Not Exist, Plase Create it.” رو ارسال میکنم و میگم دایرکتوری رو ایجاد کن.

جای دیگه ای از پروژه هم از این تابع استفاده کردم که در زیر میبینید(۵۳-۶۰) و الان توضیحش رو هم میدم :
که میام بررسی میکنم ببینم فایل test1.txt موجود هستش در دایرکتوری DMF313 یا نه، اگه موجود بود میگم این فایل رو پاک کن(به کمک تابع remove که در قسمت مربوطه توضیحش میدم) و پیغام میفرستم به پورت سریال که “فایل پاک شد، لطفا فایل رو بساز و بازش کن” (که در ادامه کد ها کد این قسمت رو میبینید و به کمک تابع open این کار انجام میشه) ولی اگه فایل موجود نبود تو اون دایرکتوری میایم و پیغام میفرستیم که “فایل موجود نیست لطفا فایل رو بساز و باز کن”

 
 
mkdir : ایجاد یه دایرکتوری در رم؛ به جای DirectoryName نام دایرکتوری مورد نظر رو قرار بدید.(اگه فایل رو ایجاد کنه true برمیگردونه و گرنه false)

تو پروژه ته مطلب این تابع رو به صورت زیر استفاده کردم(خطوط ۴۶-۴۹) :
اگه ایجاد دایرکتوری با موفقیت انجام بشه پیغام “The Directory is Created.” رو ارسال میکنه و اگه به هر دلیلی موفق به این کار نشه پیغام “The Directory is Not Created.” رو ارسال میکنه.

 
 
rmdir : پاک کردن یه دایرکتوری، دایرکتوری که قراره پاک بشه باس خالی باشه، به جای DirectoryName نام دایرکتوری مورد نظر رو قرار بدید.(اگه پاک کنه true  و وگرنه false  رو برمیگردونه.)

با توجه به این که این تابع استفاده ازش یکم دردسر داره(چون دایرکتوری ایی رو که میخواد پاک کنه باس خالی باشه و پیزی توش نباشه، و لذا برای سادگی و سخت نشدن پروژه از این تابع استفاده نکردم تو پروژه ته مطلب، انشاالله اگه حوصله داشته باشم یه پروژه برا “پاک کردن همه چیز در رم” تو این مطلب میزارم و از این تابع استفاده مکینم، به کمک این تابع دایرکتوری ها رو پاک میکنم و به کمک تابع remove فایل ها رو پاک میکنم)
 
 
open : باز کردن یه فایل موجود در رم (sd card)؛ اگه فایل موجود نباشه یه فایل با همون نام میسازه و بازش میکنه، البته دایرکتوری که این فایل داخلش قرار داره باس از قبل وجود داشته باشه؛ اگه تابع کارش رو درست انجام نده، فایلی که اطلاعات این تابع درونش ذخیره میشه false میشه.

Mode : توسط این قسمت نحوه باز شدن فایل رو تعیین میکنیم، حالت فقط خواندنی(FILE_READ) و حالت فقط نوشتنی(FILE_WRITE) ، که حالت دیفالتش رو “حالت باز کردن فقط خوندنی” هستش، لذا از تابع اولی وقتی استفاده میشه که فقط خوندنی بخوای فایل رو باز کنی و از تابع دوم برا هر دو حالت کاربرد داره.
تو پروژه دو جا از این تابع استفاده کردم، یه باز فایل رو به صورت فقط نوشتنی باز کردم و دفعه بعد به صورت فقط خواندنی؛ چون دفه اول میخوام اطلاعات توی فایل بنویسم و دفه بعد اطلاعات رو بخونم.
خط ۶۷ :

خط ۸۵ :

سوال : این داستان myFile چیه؟
جواب : سوال خوبی و مهمی هستش؛ اگه کد های پروژه(خط ۹) رو ببینید اومدیم و کد زیر رو نوشتیم، به نظر مثل تعریف متغیر میاد، مثلا متغییر از نوع int یا float یا... تعریف میکردیم، بله میشه گفت اینم یه جور متغییر هستش، ول متغییر از نوع فایل!، مثلا تو کد های بالا(خط ۶۷ و ۸۵) اومدیم فایل رو باز کردیم، مقدارش به این متغییر myFile ریخته میشه، حالا اگه بخوایم اطلاعات فایل باز شده رو بخونیم، اگه بخوایم نام فایل رو بفهمیم، اگه بخوامی ببینیم اطلاعاتی تو فایل هستش و... از این متغییر myFile استفاده میکنیم.

 
 
remove : پاک کردن یه فایل؛ به جای filename نام فایلی که میخواین پاک کنید رو قرار بدین.(نام به صورت کامل و فرمت فایل هم باشه)؛ تابع اگه کارش رو درست انجام بده true و در غیر این صورت false رو برمیگردونه.

تو خط ۵۶ پروژه از این تابع استفاده کردیم :
که اومدیم بررسی کردیم که فایل موجود هستش یا نه(به کمک تابع exist) و بعد گفتیم اگه فایل موجود بود پاکش کن لطفا!

 
 
Available : بررسی تعداد بایت های(اطلاعت) موجود در فایلمون، این تابع تعداد بایت های موجود رو برمیگردونه.

تو خط ۹۰-۹۲ پروژه از این تابع استفاده کردم، ما قبلش فایلمون رو به صورت فقط خواندنی باز کردم،این جا به کمک این تابع میایم و میگیم تا زمانی که دیتا داریم؛ دیتا رو بخون(به کمک تابع read) و ارسال کن به پورت سریال برا نمایش دادن اطلاعات(توضیحات بیشتر این قسمت تو تابع read)

 
 
close : بستن فایل مورد نظر و مطلئن شدن از این که اطلاعات داخلش ذخیره شده است.(این تابع چیزی برنمیگردونه)

از این تابع تو خطوط ۷۶ و ۹۴ پروژه استفاده کردیم، دفه اول که فایل رو به صورت فقط نوشتنی باز کردیم، بعد از نوشتن اطلاعات درونش فایل رو میبندیم و مطمئن میشیم که اطلاعات ذخیره شده و بعد به صورت فقط خواندنی فایل رو باز میکنیم و بعد از اتمام کار فایل رو میبندیم.

 
 
print : نوشتن اطلاعات درون فایل(قبلش باس فایلمون رو باز کرده باشیم.)،این تابع تعداد بایت های ارسالی رو برمیگردونه؛ این تابع رو به دو صورت زیر میشه نوشتش :

Data معلومه که چیه(اطلاعات ما هستش که میخوایم داخل فایل بنویسیم)
اما Base  فرمت اطلاعات رو تعیین میکنه؛ که حالت دیفالتش دسیمال(۱۰ دهی) هستش، و تو این قسمت مقادیر زیر رو میتونید قرار بدید :
BIN : باینری(مبنای ۲)
DEC : دسیمال یا همون ۱۰ دهی(مبنای ۱۰)
OCT : اکتال (مبنای ۸)
HEX : هگزا دسیمال(مبنای ۱۶)
 
 
Println : این تابع هم مثل تابع بالا هستش، فقط تنها فرق اینه که وقتی اطلاعات رو ارسال کرد، دستور رفتن به خط بعدی رو هم ارسال میکنه و به ۳ صورت میشه نوشتش؛ که تو تابع اولی اگه چیزی به عنوان اطلاعات به تابع ندیم، تابع فقط دستور رفتن به خط بعد رو ارسال میکنه؛ این تابع تعداد بایت ارسالی رو برمیگردونه :

تو پروژه بعد این که فایل رو به صورت فقط نوشتی باز کردم میام و اطلاعات رو درون فایل میریزم(خط ۷۵)

 
 
Position : موقعیت مکان نما فعلی فایلی که باز شده رو بر میگردونه، مثلا وقتی میخوای با تابع read یه کاراکتری رو بخونیم میتونیم ببینیم موقعیت مکان نما فعلی در کجا هستش و اگه خواستیم با تابع seek موقعیت رو تغییر بدیم تا تابع read از اون موقعیت شروع به خوندن اطلاعات بکنه(مثلا ما ۶۴ کاراکتر در فالمون اطلاعات داره، ۶۵ تا کلمه انگلیسی داریم مثلا، حالا منظور از موقعیت مکان نما اینه که مثلا اگه موقعیت مکان نما تو کاراکتر ۳۵ باشه اگه تابع read رو فراخونی کنیم از کاراکتر ۳۵ شروع به خوندن اطلاعات میکنه.) >>>> بهتره متغییری که اطلاعات این تابع درونش ذخیره میشه رو از نوع unsigned long قرار بدید.

از این تابع تو پروژه استفاده نکردم؛ انشاالله بمونه برا یه پروژه دیگه.
 
 
seek : در تابع زیر position یه عدد هستش که این تابع موقعیت مکان نما رو میبره به position ، مثلا اگه بخوایم از مکان ۱۰(کاراکتر ۱۰) شروع به خوندن اطلاعات کنیم اول باس موقعیت مکان نما رو به کمک تابع seek به مکان مورد نظر ببریم و بعد تابع read رو فراخونی کنیم تا از اون مکان شروع به خوندن اطلاعت بکنه.
اگه تابع کارش رو به درستی انجام بده مقدار ۱ و گرنه مقدار ۰ رو برمیگردونه.( boolean)

از این تابع تو پروژه استفاده نکردم؛ انشاالله بمونه برا یه پروژه دیگه.
 
 
size : اندازه فایل مورد نظر ما رو بهمون میده(تعداد کاراکتر توی فایل)؛ البته قبلش باس فایل باز شده باشه.

از این تابع تو پروژه استفاده نکردم؛ انشاالله بمونه برا یه پروژه دیگه.
 
 
Read : خوندن یه کاراکتر از فایلی که قبلا باز شده، و بعد از خوندن اولین کاراکتر از فایل میره سراغ کاراکتر بعدی و…، در ضمن اگه کاراکتری پیدا نکنه عدد ۱- رو برمیگردونه.

همون طور که تو توضیحات تابع available گفتم، الان بریم سراغ توضیحات بیشتر(خطوط ۹۰-۹۲) :
این تابع read تک بایت تک بایت اطلاعات فایل myFile رو میخونه و میده به پورت سریال برا نمایش دادن، همون طور که در بالا گفتم این تابع بعد از خوندن اولین کاراکتر از فایل میره سراغ کاراکتر بعدی و… ؛ حالا همین طور که کاراکتر اول رو خوند و رفت سراغ کاراکتر دوم به طبع موقعیت مکان نما رو هم میبره به اون جا(کاراکتر دوم) و لذا تابع available هم تعداد کاراکتر موجود رو یکی کم میکنه(چون مکان نما رفته رو کاراکتر دوم و لذا تابع available از اینجا شروع به شمردن تعداد کاراکتر میکنه و….)

 
 
Peek : این تابع کارش خوندن یه کاراکتر از اطلاعات فایل باز شده هستش، فرقش با تابع READ در اینه که وقتی یه کاراکتر رو خوند به کاراکتر بعدی نمیره، یعنی اگه صد بار هم اجراش کنی کاراکتری رو میخونه که مکان نما اونجا قرار داره، ولی وقتی تابع READ کاراکتری رو که مکان نما در اون قرار داره بخونه میره سراغ کاراکتر بعدی، یعنی دفه اول که اجرا میشه کاراکتر اول رو میخونه و دفه بعد که اجرا میشه کاراکتر بعدی رو میخونه و…. ، اگه اطلاعاتی برا خوندن موجود نباشه این تابع  PEEK عدد ۱- رو برمیگردونه.

توجه : ۲ تابع PEEK و READ اطلاعات رو از جایی شروع میکنن به خوندن که مکان نما در اونجا قرار داره….حواستون باشه به این موضوع.
از این تابع تو پروژه استفاده نکردم؛ انشاالله بمونه برا یه پروژه دیگه.
 
 
Write : نوشتن اطلاعات درون فایل باز شده، این تابع تعداد بایت نوشته شده رو برمیگردونه، این تابع به ۲ صورت زیر میشه نوشت :

data : اطلاعاتی که قراره نمایش داده بشه(char)
Buf : یه آرایه از نوع char
Len : تعداد خونه های آرایه که قراره مقدارش نوشته بشه داخل فایل
توجه : فرق این تابه با print و println اینه که اونا یه رشته رو ارسال میکردن و این تابع یه کاراکتر رو ارسال میکنه.
از این تابع تو پروژه استفاده نکردم؛ انشاالله بمونه برا یه پروژه دیگه.
 
 
isDirectory : این تابع میگه که file داده شده یه دایرکتوری هستش یا نه.(boolean ، اگه دارکتوری باشه ۱ وگرنه تابع ۰ رو برمیگردونه)

از این تابع تو پروژه استفاده نکردم؛ انشاالله بمونه برا یه پروژه دیگه.
 
 
openNextFile : گزارش وجود یا عدم وجود فایل یا فولدر بعدی در دایرکتوری باز شده، این تابع فایل یا فولدر موجود رو بر میگردونه(char)

از این تابع تو پروژه استفاده نکردم؛ انشاالله بمونه برا یه پروژه دیگه.
 
 
rewindDirectory : این تابع موقعیت رو میبره با فایل اول دایرکتوری، تابع بالا اولین فایل دایرکتوری رو پیدا میکنه و در دفعه بعدی که اجرا میشه فایل بعدی دایرکتوری رو اعلام میکنه.

از این تابع تو پروژه استفاده نکردم؛ انشاالله بمونه برا یه پروژه دیگه.
 
 
Flush : والا اینو یکم شک دارم، کارش اطمینان از ذخیره شدن فایل ها هستش، ولی تابع close  هم این کار رو میکنه (البته این تابع فایل رو هم بعدش میببنده ولی تابع flush  نه)، به نظرم مثلا یه چا فایلی رو save  میکنیم ولی نمیبندیمش، اونجا فک کنم این تابع کاربرد داره که فایل ذخیره میشه ولی بسته نمیشه.(طبق گفته سایت آردوینو این تابع چیزی رو برنمیگردونه، حالا ما باس از جا بفهمیم که عملیات ذخیره سازی با موفقیت بوده یا نه رو خدا میدونه، به همین خاطره که میگم یکم مشکل دارم این تابع رو cry >>>> اگه کسی ok  شد به ما هم توضیح بده smile )

از این تابع تو پروژه استفاده نکردم؛ انشاالله بمونه برا یه پروژه دیگه.
 
 
name : نام فایل یا دایرکتوری رو برمیگردونه

از این تابع تو پروژه استفاده نکردم؛ انشاالله بمونه برا یه پروژه دیگه.
 
 

پروژه آردوینو (راه اندازی SD CARD با آردوینو، راه اندازی رم با آردوینو)

اینم از پروژه ای که رد بالا هی از صحبت میکردیم :
شماتیک پروژه :
در کد زیر؛ خطوط ۳-۶ نحوه اتصالات رو میبینید
فقط اینم بگم که اگه از ماژولی که من استفاه دمیکنم، شما هم استفاده میکنیم، غیر این ۴ تا پایه، باید پایه GND و ۳٫۳V ماژول رو هم به همین پایه ها تو برد آردوینو وصل کنید.
یه پروژه من تو سایت قبلا گزاشتم, همین راه اندازی رم با aVR ؛ که توش توضیحاتی دادم که بدک نیست؛ و نحوه شبیه سازی این پروژه رم با آردوینو رو هم تو پروتئوس میتونید یاد بگیرید که چیز خاصی نداره : آموزش اتصال SD CARD به میکرو کنترلر AVR جلسه۱
 

کد های پروژه :

 
خوب این مطلب هم به لطف خدا تموم شد، امیدوارم خوب توضیح داده باشم و شما داشای گلم خوب متوجه شده باشید، اگه جایی رو بد گفتم یا نگفتم یا غیره! لطفا بگین؛ اگه سوالی چیزی بود در خدمتیم، هزینه استفاده از مطالب فراموش نشه(۳ تا صلوات برا شادی روح شهدا و امام شهدا و سلامتی رهبر و علمای اسلام و هر کسی که به کشور خدمت میکنه + دعا برا ظهور آقا ،،،، راستی اینم بگم ؛ دادن هزینه مطلب دال بر ندید گرفتن حق کپی رایت نمیشه، عجب جمله ی کلفتی…..^_^)،
تو مطلب بعد اگه خواستم بزارم چند تا پروژه ساده با این میزارم.
زیاد مزاحمتون نمیشم فعلا یا علی.

انجمن های تخصصی برق و الکترونیک ECA
مهدی دمیرچیلو جنگ ما فتح قدس را به همراه خواهد داشت. [ امام خمینی (ره) ]
بقیه جلسات : ???
این مطلب هیچ طبقه بندی یی ندارد!
ارسال دیدگاه

1) نظرات غیر فارسی به صورت خودکار حذف میشوند ( حداقل 5 حرف فارسی وارد کنید ).

2) به موارد درخواست پروژه/کد آماده و سوالاتی که بلد نباشم پاسخ داده نمیشه.

3) پسورد فایل های سایت : www.dmf313.ir

  1. Avatar

    مهمان

    احمد

    سلام
    هر بار برنامه جدید را اپلود میکنم باید مموری را جدا کنم دوباره بگذارم تا مموری را بخواند این حالت عادی هست؟

  2. Avatar

    مهمان

    عباس

    سلام چندتا مموری امتحان کردم همش در سریال اروو میاید کسی میتواند کمک کند

  3. Avatar

    مهمان

    اران

    مثل همیشه بهترینارو میزاری

  4. Avatar

    مهمان

    مهدی

    با عرض سلام و خسته نباشید
    مرسی از سایت خوبتون.
    میتونیم از SSP به جای SPI استفاده کنیم و کارت SD رو بهش وصل کنیم؟ من روی یه پروژه کار میکنم پورت SPI میکرو مشغوله میخوام کارت حافظم رو به SSP وصل کنم امکانش هست؟ ممنون از راهنماییتون. wacko

  5. Avatar

    مهمان

    شبنم

    ببخشید میشه لطفا کتابخونه dfplayer برای پروتوس هم بزارید ممنون میشم!

    • مهدی دمیرچیلو

      نویسنده این مطلب

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

      مورچه چیه که کله پاچش چی باشه – برید عملی ببندید مدارشو – کتاب خونه پروژتئوسشو ندارم هر چند که پروتئوس هم کار نمیکنم.

1 2