نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
آزادی حجاز از دست نااهلان
مهدی دمیرچیلو

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

به نام خدا : تو این مطلب از آموزش آردوینو میخوام به راه اندازی 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 جلسه۱
 

کد های پروژه :

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

گروه پرسش و پاسخ الکترونیکی در سروش
مهدی دمیرچیلو
ارسال دیدگاه
122

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

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

3) برای گزاشتن کدهاتون از این سایت استفاده کنید ( طبیعتا لینک کدتون رو باید برای من بفرستید! ) : debian

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

  1. Avatar

    مهمان

    علی

    سلام درمورد openNextFile یکم بیشتر توضیح بده میشه بدون اینکه اسم فایلو بدونیم یه فایل باهاش باز کنیم

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

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

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

      سلام – لینک منبع این تابع از سایت آردوینو : FileOpenNextFile

  2. Avatar

    مهمان

    علیرضا

    سلام من یه برنامه نوشتم وقتی کامپایل میکنم تو اطلاعات پایین نرم افزار آردوینو Sketch uses رو 30 کیلوبایت میزنه ولی وقتی فایل هگز رو چک میکنم 90 کیلوبایت هست؟چرا این اختلاف هست؟مگه همون اطلاعاتی که نرم افزار میده حجم نهایی برنامه نیست؟

  3. Avatar

    مهمان

    احمد

    سلام
    برای پروژه ام نیاز دارم فایلایی که پایه های tx و rx میخونن رو روی sd ذخیره کنم
    از چه تابعی باید استفاده کنم
    ممنون از مطالب خوب و کمکتون

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

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

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

      سلام – مطلب serial/uart رو بخون و این مطلب – توش لیست توابع مرود نیاز گفته شده و توضیح داده شده.

  4. Avatar

    مهمان

    ناشناس

    سلام تعداد زیادی آرایه 400 تایی دارم که حجمش زیاد شده تو آردوینو(631KB)…میتونم این آرایه ها رو روی رم بریزم و هر و ازشون استفاده کنم؟؟؟؟؟؟لازم دارم هر وقت که آرایه موردنظرمو خواستم اطلاعاتشو بهم بده

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

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

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

      سلام – بله میشه – ولی خب سرعت خوندن نوشتن تو این حافظه رو هم لحاظ کنید.

      • Avatar

        مهمان

        علیرضا

        سلام چطور میشه یک آرایه حاوی اعداد رو از رم خوند؟چون این توابع کاراکتر رو ارسال و دریافت میکنن

  5. Avatar

    مهمان

    Alirezark

    سلام وقتتون بخیر، وقتی داخل sd cardاطلاعات عددی رو توی فایل txt در چند خط ذخیره کردیم با چه دستوری میشه به صورت خط به خط اعداد ذخیره شده رو خوند؟

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

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

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

      سلام – خب این بحث خط به خط – به صوت دیداری هستش و برا نمایش هستش – ولی در واقعیت و چیزی که میکرو باهاش طرفه – همچین خبری نیست و برای دستور رفتن به خط بعدی 1-2 کاراکتر قرار داره!
      شما اول این مطلب رو بخونید : اسکی (ASCII) چیست؟ خداییش دست نویسندش درد نکنه – مطلب خوبی نوشته – همیشه بکار من اومده و میاد.
      خب این عکس رو ببین، که 4 خط هستش و در هر خط یه حرف از حروف انگلیسی رو نوشتم ( در حالت عادی این کاراکتر های رفتن به خط بعدی نمایش داده نمیشه، ولی خب من برا توضیح این بحث، فعالش کردم تا نمایش داده بشه ) :


      نحوه واقعی ذخیره شدن اطلاعات

      ( در نرم افزار ++Notepad به این مسیر برو تا قابلیت نمایش کاراکترهای مخفی رو فعال کنی : view > show symbol > show all characters )

      خب میبینید که در آخر هر خط، برای رفتن به خط از دو کاراکتر CR و LF استفاده کرده ( این دو اسم کاراکتر هستند )، که طبق لینک بالا، کاراکتر CR کد اسکیش 13 و کاراکتر LF کد اسکیش 10 هستش – که ایندو در زبان C به تریب به صورت r/ و n/ تعریف شده اند.
      یعنی شما دیتایی در رم ذخیره میکنید و میخواید به خط بعدی برید باید این دو رو اضافه کنید – بعد موقع خوندن برا این که از جابجا شدن خطوط مطلع بشید باید بررسی کنید که جفت دیتایی که میخونید برابر این دو مقدار فوق شدن یا نه – اگه شدن که یعنی رفتید به خط بعد – مثلا میخوای دیتای خط سوم رو بخونی – لذا از خونه 0 شروع میکنی – تا زمانی که دوبار کاراکتر های پشت سر هم CR و LF دریافت نکردی به خوندن ادامه میدی – سر شناسایی جفت کاراکتر CR و LF در بار دوم – متوجه میشی که به خط سوم رسیدی – بعد میای دیتا رو میخونی و ذخیره میکنی تا زمانی که به جفت کاراکتر CR و LF و یا پایان دیتا برسی.

      توجه : این که در پایان خط برای رفتن به خط بعدی از کاراکترهای CR و LF استفاده میشه مخصوص ویندوز هستش – برا لینوکس و … نمیدونم چطوری هستش.

      • Avatar

        مهمان

        Alirezark

        خب حالا مثلا اگه نخوام از فرمت txt.استفاده کنم برای ذخیره اعداد در sd میشه از فرمت دیگه ای (مثلا اکسل)برای ذخیره اعداد استفاده کرد که موقع خوندن راحتتر بتونم تک تک اعداد رو بخونم؟

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

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

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

          فایل اکسل با فرمت csv، هم همون txt هستش diablo laugh
          شما میتونی دیتاتو به فرمت txt (به روش زیر ) ذخیره کنی – و تو pc به فرمت csv تغییرش بدی و با اکسل ببینی و بعدا به فرمت های دیگه اکسل تبدیلش کنی به راحتی – کد زیر رو تست کن و نتیجه رو ببین.
          Time [s], Decoded Protocol Result
          0.000019720000000,SYNC
          0.000020360000000,PID IN
          0.000021040000000,Address=0x05 Endpoint=0x02
          0.000021960000000,CRC OK 0x1F
          0.000022400000000,EOP
          0.000023040000000,SYNC
          0.000023680000000,PID NAK
          0.000024360000000,EOP
          0.000033120000000,SYNC
          0.000033760000000,PID IN

          • Avatar

            مهمان

            Alirezark

            شما فرمتی سراغ ندارید که ذخیره کردن و خوندن اعداد از اون به صورت تک به تک ممکن باشه، یا اینکه کدی که باهاش میشه روی همون txt این کارو انجام داد میتونید بهم بگید؟

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

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

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

            نه.

            همون فرمت txt خوبه دیگه – هر رکورد در یه خط – برا رکورد مثلا 123 باید حدود 123 تا کاراکتر “خط بعد” رو پیدا کنی – بعدش دیتای مد نظر شروع میشه و تا کاراکتر “خط بعد” ندیدی به خوندن دیتا ادامه میدی.

          • Avatar

            مهمان

            Alirezark

            وقتی با seek مکان نما رو به جایی میبریم آیا تابع read تو مکان seek مینویسه؟ اگر جواب نه هست، با کدوم تابع تو مکان seek میشه نوشت؟

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

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

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

            توضیحات تابع seek کاملا واضع هستش که! – از seek و سپس از read استفاده میکنیم ( تابع read برای خوندنه و نه نوشتن! )

  6. Avatar

    مهمان

    m.v

    سلام: سوالی داشتم که چرا اردینو uno با هر نوع از ماژولهای sim800-simm900-د بعد از مدتی حدود دو هفته برای دریافت sms هنگ می کند و تا اردینو ریست نشود . مجددا فعال نمیشود.با تشکر

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

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

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

      سلام- از تایمر واچ داگ استفاده کن تا این مشکلات وجود نیاد – بحث هنگ کردن همیشه هستش – تو میکرو های مختلف کم و زیاده – باید مدار ایزوله بشه و نکات مربوط به نویز رو تا حد ممکن رعایت کرد.

    • Avatar

      مهمان

      Master

      آردوینو uno برای کار های طولانی ساخته نشده کدتو باید بدی به میکرو براش مدار بزنی ببین هنگ میکن یا نه باید اصول مقابله با نویز رو بدونی راستی تایمر واچ داگ یادت نره

  7. Avatar

    مهمان

    یزدخواستی

    سلام ولی مطابق مستندات sim808 امکان اتصال مستقیم sd به sim808 وجود دارد. من شماتیک و دستورات at آن را در یک مثال ساده می خواهم

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

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

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

      سلام مجدد – یا امام زاده قلقلی – چه جالب – نمیدونستم جدا
      اینو سرچ کن : connect sd to sim808
      این یه نمونه مطلب در این باره :
      https://www.elementzonline.com/blog/interfacing-microsd-card-with-sim808-gsm-gps-arduino-shield
      برا بحث at commnd ها هم فایل با نام زیر رو سرچ کن و دانلود کن :
      SIM800 Series_AT Command Manual_V1.09
      اما برا بحث تهیه مطلب این مورد اینکار حداقل 1 روز ازم وقت میگیره و من فعلا وقتشو ندارم – خود شما میتونید موارد فوق که در بالا گفتم رو سرچ کنید و براحتی کارتونو راه بندازید.

  8. Avatar

    مهمان

    یزدخواستی

    با سلام لطفا طریق ارتباط sd card به sim808 را توضیح دهید با تشکر

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

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

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

      سلام-خب شما ارتباط میکرو و SD و
      میکرو 808 رو بلد باشید حله دیگه
      میکرو از SD میخونه میده به 808 و بلعکس! مطلب نمیخواد.

  9. Avatar

    مهمان

    Sorena

    سلام
    می‌بخشید، اطلاع ندارید این امکان هست که به صورت فارسی چیزی را در SD ذخیره کنیم و از روش بخونیم؟؟
    میخواهم متناسب با یک سری ورودی که برای میکرو میاد
    در sd در یه فایل txt، فارسی بنویسم بعد بشه sd را بردارم
    در لپ تاب اطلاعاتش را ببینم
    خیلی خیلی ممنون

  10. Avatar

    مهمان

    مرتضی

    سلام خسته نباشین
    بشدت نیاز به راهنماییتون دارم تورو خدا کمکم کنین sad
    کد زیر یه رله رو به وسیله ی ماژول بلوتوث روشن و خاموش میکنه و باید وقتی که رله روشن و خاموش میشه تایم و تاریخ این اتفاق رو در کارت SD ذخیره کنه ! الان تایم و تاریخ رو به وسیله ی ماژول DS1307 میگیرم و نشون هم میدم فقط نمیتونم تو کارت SD ذخیره اش کنم
    توی کد اونجایی که (*******) این رو گذاشتم مشکلم هست که بجای ستاره باید چی بنویسم ؟
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #define DS1307_ADDRESS 0x68
    File myFile;
    int relay = 13;
    void setup() {
    Wire.begin();
    pinMode(13, OUTPUT);
    Serial.begin(9600);
    pinMode(10, OUTPUT);
    }
    void loop() {
    if (Serial.available() > 0) {
    int dat = Serial.read() – ‘0’;
    if(dat == 0 || dat == 1){
    Serial.println(dat);
    digitalWrite(relay, dat);
    delay(100);
    printDate();
    delay(1000);
    myFile = SD.open(“test.txt”, FILE_WRITE);
    if (myFile) {
    myFile.print(***********);
    myFile.close();
    Serial.println(“Done.”);
    }
    else
    Serial.println(“Error Opening”);
    }}
    }
    byte bcdToDec(byte val) {
    // Convert binary coded decimal to normal decimal numbers
    return ( (val/16*10) + (val%16) );
    }
    void printDate(){
    // Reset the register pointer
    Wire.beginTransmission(DS1307_ADDRESS);
    byte zero = 0x00;
    Wire.write(zero);
    Wire.endTransmission();
    Wire.requestFrom(DS1307_ADDRESS, 7);
    int second = bcdToDec(Wire.read());
    int minute = bcdToDec(Wire.read());
    int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
    int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday – Saturday
    int monthDay = bcdToDec(Wire.read());
    int month = bcdToDec(Wire.read());
    int year = bcdToDec(Wire.read());
    //print the date EG 3/1/11 23:59:59
    Serial.print(monthDay);
    Serial.print(“/”);
    Serial.print(month);
    Serial.print(“/”);
    Serial.print(year);
    Serial.print(” “);
    Serial.print(hour);
    Serial.print(“:”);
    Serial.print(minute);
    Serial.print(“:”);
    Serial.println(second);
    }

  11. Avatar

    مهمان

    مرتضی

    سلام خسته نباشین
    ببخشید اگه بخوام ساعت و تاریخ رو در کارت حافظه ذخیره کنم از چه mode در کارت حافظه باید استفاده کنم ؟

  12. Avatar

    مهمان

    وحید

    سلام من قبلا در محیط B4R برنامه برای اردوینو مینوشتم
    اونجا یه دستور داشتیم که یه طول از کاراکتر ها را بر میگردوند میخواستم ببینم توی اردوینو اینجور دستوری داریم
    مثلا داخل فایل user.txt ده تا خط بود اون دستور میومد مثلا از کارکتر 0 تا 10 را توی یه متغیر میریخت

  13. Avatar

    مهمان

    علی

    سلام آقا مهدی
    من این کتابخونه ها رو تو پروژه ام استفاده کردم ولی وقتی کتابخونه SD.h رو اضافه میکنم تمام برنامه هام قاطی پاتی اجرا میشن و کلاً روند اجرای برنامه به کلی مختل میشه… به نظر شما چرا؟
    #include
    #include
    #include
    #include
    //#include
    #include
    #include

  14. Avatar

    مهمان

    وحید

    داداش دمت گرم ، یه شماره کارت بده یه مبلغ ناچیزی رو به عنوان تشکر اموزشی که گذاشتی برات بفرستم ، فقط خواهشا نفرستی غزه و لبنان ???

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

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

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

      !!!

  15. Avatar

    مهمان

    shahin

    سلام جناب مهدس
    خسته نباشین
    مهندس متن پروژه شما کامل و بدون نقص توی حافظه رایت میشه ولی همینکه یه حلقه for براش مینویسم تا اطلاعات را از حافظه eeprom بخونه و توی حافظه رایت کنه، برای خوندن فایل از طریق آردوینو که ارور میده و وقتی هم با رم ریدر روی لپتاپ بالا میارمش میگه که باید مموری فرمت بشه…
    جسارتاً فکر میکنید دلیلش چیه؟ راستی چند تا مموری عوض کردم فکر میکنم مشکل از مموری نباشه

  16. Avatar

    مهمان

    Cozmo

    سلام
    من آخرین نظر رو خوندم ولی هنوز متوجه نشدم چیکار کنم
    میخام هرروز یه فایل جدید به تاریخ همون روز درست کنه و داده های هرروز رو تو همون فایل سیو کنه
    در طول یک سال میشه 365 فایل

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

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

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

      سلام
      توابع این کتابخونه رو تو مطلب توضیح دادم – تابع ایجاد فایل با نام دلخواه
      برا فهمیدن تاریخ و زمان هم از ماژول ds3231 میتونی استفاده کنی.

  17. Avatar

    مهمان

    رضا

    سلام hi
    آیا میشه یک فایل HEX رو بریزیم داخل sd card و بعد وقتی sd card رو به برد وصل کردیم اون فایل موقتا بیاد جای برنامه و با فشردن کلید از اون برنامه خارج بشه؟؟؟
    اگر میشه لطفا آمو زشش رو بذارین یا یک سایتی که آموزشش رو داره معرفی کنین.
    ممنون

  18. Avatar

    مهمان

    *o*

    سلام.
    خیلی خیلی ممنون از مطلب تون
    فقط من لینک دانلود کتابخونه رو ندیدم یا لینکش نیست؟

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

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

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

      سلام-از خود آردوینو دانلود کن.

  19. Avatar

    مهمان

    سعیده کلانتری

    سلام
    ممنون از آموزش
    من یه مشکلی دارم، sd 12 , sd 4 گیگابایت که میذارم بعد از فرمت، ایراد fat16, fat32 میگیره. مشکل از نوع sd که استفاده می کنم هست؟
    میشه لطفا راهنمایی کنید از چه نوع sd کمک بگیرم؟

  20. Avatar

    مهمان

    علی

    سلام آقای دمیرچبو این کتابخونه روی میکرو atmega8 کار میکنه؟
    یا همون arduino NG منظورمه
    چون وقتی من با این مدل کامپایل میکنم ارور میده
    شما یه امتحان میکنی

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

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

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

      سلام-نمیدونم – کار نکردم.

  21. Avatar

    مهمان

    Master

    این کتابخونه رو یاد بگیرین………
    تبریک میگم شما 30 درصد cmd ویندوز رو هم یاد گرفتین

    • Avatar

      مهمان

      Master

      البته 30 که نه حدود 5 درصد

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

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

        مهدی دمرچیلو

        CMD ویندوز؟ چه ربطی به مطلب داره – متوجه نشدم

        • Avatar

          مهمان

          Master

          نه ربطی نداره ولی کلمات کلیدی همین رو تو پنجره cmd هم بنویسی عمل میکنه
          مثلا mkdir
          یا rmdir
          یا rename
          این دستوراتش شبیه cmd هست wink

  22. Avatar

    مهمان

    سیداحمدموسوی

    سلام مهندس متشکرم بابت مطالب مفیدتون لطفا جملات رو با ابهام و ایهام ننویسید برای مثال جمله ی زیر
    : چه شما از پایه ۱۰ استفاده کنید و چه نکنید باس این پایه رو خروجی تعریف کنید تا تابع SD بتونه کار کنه.
    منظور کدوم پایه؟ خوده پایه ی شماره ی ۱۰ خروجی تعریف بشه یا اون پایه ای که بطور دلخواه در تابع به عنوان پایه ی cs معرفیش کردیم.

  23. Avatar

    مهمان

    جواد

    سلام
    اگه بخوام این مازول رو به اردوینو pro mini وصل کنم
    کدوم پایه ها باید به پایه های ماژول متصل بشن؟
    ممنونم اگه جواب بدبد

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

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

      مهدی دمرچیلو

      سلام
      ببین میکرو مرکزی هردوشون یکی هستش یا نه.
      بعد شماتیک هر دو برد رو ببین – ببین هر پایه کجا قرار داره.
      اگه میکرو هردو یکی باشه، مشکلی وجود نداره.

      • Avatar

        مهمان

        جواد

        سلام
        ممنونم از پاسختون و راهنمایی
        شما از چه مداری استفاده کردید؟

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

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

          مهدی دمرچیلو

          سلام-معمولا از uno استفاده میکنم.

  24. Avatar

    مهمان

    پویا

    سلام و خسته نباشید
    ببخشید من می خوام چند تا متغیر را روی کارت حافظه ذخیره کنم و وقتی احتیاج داشتم از روی کارت بخونم و به جای متغییر های قبلی بزارم
    بهتر بگم مثلا x را داخل کارت ۱۲۳ ذخیره کنم بعدش وقتی به یه جایی رسید بره این ۱۲۳ را از داخل کارت بخونه و بیاد جای عددی که توی متغیر x هست جای گذاری کنه باید چیکار کنم ؟
    و داستی ممنون از سایت خوبت

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

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

      مهدی دمرچیلو

      سلام
      فک کنم مطلبو یا نخوندی یا درست نخوندی – درسته؟
      خب برا بحث نوشتن که تابع print هستش – برا بحث خوندن – اول و آخر هر عدد که ذخیره کردی یه کاراکتر خاص میزاری – و موقع خوندن هر موقع کاراکتر خاص1 رو خوندی میفهمی که متغییر شروع شده و هر وقت به کاراکتر خاص 2 رسیدی میفهمی که به پایان متغییر رسیدی – مثلا این طوری :
      123#*
      که خب وقتی به * رسیدی یعنی عدد شروع شده و بعد بایت بایت دیتا رو میخونی و وقتی به # رسیدی خوندنو متوقف میکنی – و بعد اون 3 تا بایت دیتا رو به عدد تبدیل میکنی.

      • Avatar

        مهمان

        پویا

        ممنون چرا مطلبتون را خوندم ولی می خواستم ببینم راه هست که الکی انقدر کد نخوام و یه تابع باشه که اینکارا بکنه ممنون که پاسخ دادین

  25. Avatar

    مهمان

    مصطفی

    با عرض سلام
    با سلام من میخوام پروژه ای کار کنم که شامل دو شیلد sd card باشه و کلیه فایلها و فولدرها از یک رم به روی رم دیگر کپی بشه .
    آیا انجام این کار با uno امکانپذیر هست ؟
    آیا امکان فرمت کردن مموری در آردوینو وجود دارد ؟
    با تشکر

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

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

      مهدی دمرچیلو

      سلام
      با هر میکرویی میشه – بحث سر کتابخونس که این امکانات رو داره یا نه-که به نظرم کتابخونه sd آردوینو از کامل ترین هاس –

  26. Avatar

    مهمان

    محمدصادق

    سلام. من میخام اطلاعات که داخل فایل تکس نوشتم روی نمایشگر بهم نشون بده و همزمان ادیت کنم . این دستور Serial.write(myFile.read اطلاعات رو برای نمایش میفرسته رو پورت سریال

  27. Avatar

    مهمان

    محمد حسين

    سلام سپاس از مطالب خوبی که می نویسید برای من که سایت شما یه مرجع بسیار عالی هستش
    من بیشتر عادت دارم تا خودم مشکلاتم رو حل کنم ولی این مشکلم رو حتی با مطالعه سایتهای خارجی نتونستم حل کنم
    من ماژول sd card رو با آردوینو مگا بستم اطلاعات کارت رو میتونم ببینم(مثال cardinfo) اما تو نوشتن دیتا مشکل دارم وهرکاری میکنم نمیشه یعنی برنامه بدون مشکل اجرا میشه ولی فایل رو با لپ تاپ باز میکنم هیچ تغییری تو دیتاش بوجود نیامده ، مشکل بعدی هم اینه که فایل رو میبندم ومجدد میخام باز کنم باز نمیشه
    ممنون میشم راهنمایی بفرمایید

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

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

      مهدی دمرچیلو

      سلام – یه قستمی رم داره – رمای بزرگ و قدیمی – که باعث میشه رم فقط خوندنی بشه – اینو حواست باشه
      مورد بعد این که نمیدونم! کتابخونه عوض کن – رم عوض کن ( یا همون رمو تو موبایل تست کن ) – ماژول رو عوض کن – همه چیزو باید تست کنی – منم مدار پیشم نیست – نمیدونم مشکل از کجاس متاسفانه.

  28. Avatar

    مهمان

    بهروز

    با سلام خدمت شما
    مهندس من یک پروژه دارم انجام میدم ک از lcd tft 2.4 استفاده کردم مشکلی ک دارم اینه نمیخوام از sdکارت ک روی lcd هست استفاده کنم و بجای اتصال پایه های spi به قسمت spi روی lcd اون ب یک sdreader خارجی متصل کردم ولی نمیدونم چرا نمیتونه sd ّبخونه و همش failمیشه
    ممنون میشم راهنمایی کنی که چکار کنم بسیار گیرم

  29. Avatar

    مهمان

    بهزاد

    عرض سلام و تشکر .
    یه سوال داشتم … اگه بخوام یه فایل غیر متنی مثلا یه اپلیکیشن اندروید که توی کارت حافظه ریختم رو با اردوینو بخونم و با ماژول وای فای بفرستمش برای یه وای فای دیگه … ایا به لحاظ تکنیکی به نظر شما با ایرادی موجه نمیشم و امکان پذیره؟
    اگه امکان پذیره ایا با همین دستور myfile=SD.open(“file mored nazar این کار رو بکنم و بعد این my file رو برای ارسال به وای فای تحویل بدم؟
    ممنون میشم راهنماییم کنید.

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

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

      مهدی دمرچیلو

      سلام – خب شما یه تست کن ببین میتونی این فایل رو با میکرو بخونی یا نه – بعد که از طریق وای فای فرستادی – همه رو بگیر و تو یه فایل بریز و با فرمت apk ذخیره کن.
      پس اول تست کن ببین میکرو میتونه چیزی بخونه یا نه
      بعد برو یه تست انجام بده – یه فایل اندریود رو به صورت txt تو pc نگاه کن و کدشو کپی کن و داخل یه txt دیگه با فرمت apk کپی کن – ببین میشه یا نه.
      احتمال میدم نشه – چون عکس و … تو این فایل apk هستش و … – ولی بازم تست کن.

  30. Avatar

    مهمان

    mehrdad

    سلام
    آیا میشه دوتا فایل صوتی رو با هم و به صورت همزمان پخش کرد

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

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

      مهدی دمرچیلو

      سلام
      بستگی به آی سی مد نظر داره – اگه فقط با یه میکرو خالی میخوای این کارو بکنی – آره میشه

  31. Avatar

    مهمان

    بهروز

    سلام مهندس من این پروژه رو بستم و هسچ مشکلی در ریختن یا همون نوشتن اطلاعات داخل sdcard ندارم مشکل اینجاست ک من اطلاعات ذخیره شده داخل مموری نمیتونم با اردوینو بخونم و حتما باید مموری داخل کامپیوتر قرار بدم و اونجا نگاه کنم
    ممنون میشم راهنمایی کنید

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

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

      مهدی دمرچیلو

      سلام
      من این مشکلو نداشتم حقیقتا – نمیدونم مشکل شما کجا هستش

      • Avatar

        مهمان

        بهروز

        سلام مجدد و تشکر برای پاسخ
        مهندس من ی لاگر درست کردم و ی سری اطلاعات داخل sd card ذخیر کردم حالا میخوام همون اطلاعات روی صفحه نمایش پروژم نشون بده ولی بلد نیستم و نمیدونم باید چکار کنم
        ممنون میشم راهنمایی بفرمایید

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

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

          مهدی دمرچیلو

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

  32. Avatar

    مهمان

    محمد

    سلام با تشکر از مطالب ارزندتون
    من میخوام مختصات دریافتی از gps رو تو رم ذخیره کنم
    خواستم ببینم باید چه کدی بزنم
    تشکر

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

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

      مهدی دمرچیلو

      سلام
      دریافت gps یا نوشتن در رم؟ اگه منظورت هستش که تو این مطلب نوشتم و آموزش دادم – اگه اولی منظورت هستش که مطلبش رو هنوز ننوشتم و تو سایت نزاشتم و کار هم نکردم ولی به زودی کار میکنم – حالا باید قطعشو بخرم که اونم معلوم نیست کی بخرم

  33. Avatar

    مهمان

    سعید چیت گر

    سلام و خدا قوت
    بنده از برد mega و صفحه ۳٫۹۵ اینچی ILI9488 استفاده میکنم طبق اطلاعات نوشته شده در پشت lcd پایه sd-ss روی پین ۱۰ قرار میگیره و تابع begin رو با ورودی ۱۰ و ۵۳ هم فراخوانی کردم ولی failed میده
    لطفا راهنمایی فرمایید

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

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

      مهدی دمرچیلو

      سلام – این نمایشگری که میگی نمیدونم چه مدلیه ولی اکثرا مشکل وقتی رخ میده که اتصالات اشتباه بااشه – در ضمن پایه های spi مگا با یونو فرق داره – برا بحث sd card

  34. Avatar

    مهمان

    SAROk

    با سلام
    آقای مهندس من می خوام یک فایل رو آماده کنم که در آن اعداد پشت سرهم نوشته شوند و آردینو بر اساس این اعداد مثلا وقتی رسید به عدد ۸، ۲۰میلی ثانیه بچرخد حالا من نمی دانم این اعداد را در چه نوع فایل با چه فرمتی و چگونه بنویسم خواهشا کمکم کنید
    باتشکر

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

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

      مهدی دمرچیلو

      سلام
      طبق مطلب ما کلا با فایل های txt کار داریم.

  35. Avatar

    مهمان

    SAROk

    باعرض سلام
    ممنوان از سلیت و آموزشهای خوبتون
    ببخشید چطور می توان مدت زمانی که تابع READ از یک کاراکتر به کاراکتر بعد می رود را تغییر داد.
    درضمن اگر اردینو در حال خواندن فایل خاموش شود، دوباره از اول شروع می کند یا از همونجا که خاموش شده شروع می کنه.؟با تشکر

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

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

      مهدی دمرچیلو

      سلام- از همون جا شروع نمیکنه.

  36. Avatar

    مهمان

    ali

    آقا مهدی من میخوام با این ماژول فایل صوتی WAV پخش کنم سرچ کردم یه کتابخونه Audio هست که فکر کنم فقط واسه برد های DUE هست و رو UNO کار نکرد. یه کتابخونه دیگه به اسم TMRpcm هست که به نظر میاد مشکلی نداشته باشه. تو توضیحاتش گفته فایل wav باید ۸ بیت با samplerate 16000 HZ و MONO باشه. همه اینا رو رعایت کردم اما فایل wav پخش نمیشه نمیدونم چرا!! SD card رو میشناسه اما وقتی با تابع “isRuning” چک میکنم ببینم آهنگ در حال خوندن هست یا نه، میبینم که آهنگ در حال پخش نیست. لیست فایل های موجود در SD هم نشون نمیده (یا کلا فایل ها رو نمیشناسه) اگه این ماژول رو داری میشه لطف کنی یه تست بزنی ببینی میتونی جواب بگیری یا نه؟؟

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

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

      مهدی دمرچیلو

      والا نمیدونم کدوم ماژولو میگی ولی با VS1053 یه MP3 PLAYER ساده ساختم و گزاشتم تو سایت

  37. Avatar

    مهمان

    ali

    دوستان من یه نکته ای رو بگم. من از این ماژول (البته مدل Micro SD) رو دارم. اگه دیدید رم رو نمیخونه و پیغام failed میده از رم بیشتر از ۲GB استفاده نکنید و سیستم فایل رو حتما FAT انتخاب کنید نه چیز دیگه (دلیل اینکه نباید SD بیشتراز ۲GB باشه هم همینه، چون سیستم فایل FAT حافظه های بیشتر از ۲GB رو ساپورت نمیکنه). منم شانسی به این موضوع رسیدم ۲-۳ روز با این ماژول ور رفتم نتونستم راه بندازم ۵ تا micro SD روش تست کردم تا اینکه اون ۲G جواب داد. فکر میکنم این موضوع در مورد ماژول WTV020-SD که میکرو اس دی میخوره هم صدق میکنه.

    • Avatar

      مهمان

      Master

      من که 4GB گذاشتم کار کرد فقط دستور mkdir کار نمیکنه

  38. Avatar

    مهمان

    پریسا

    سلام. مرسی بابت مطالب..
    من توی پروتئوس بستم مدارو.. اما همش پیام failed. میاد.. چیکارش کنم؟ sad

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

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

      مهدی دمرچیلو

      سلام
      نمیدونم – در عمل ببند مدارو.

      • Avatar

        مهمان

        پریسا

        نمیشه.. یه پروژه ست باید فایل پروتئوس تحویل بدیم sad

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

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

          مهدی دمرچیلو

          والا خودم هم پروتئوس رو گزاشتم کنار و کار نمیکنم چون بعضا همچین مشکلاتی رخ میده و اضیت میکنه – فقط در حد شماتیک کشیدن ازش استفاده میکنم که اونم کم کم دارم میرم سمت آلتیوم

          • Avatar

            مهمان

            پریسا

            ممنون.. بسیار سپاسگذارم..

  39. Avatar

    مهمان

    مهدی

    سلام. میشه دو دستگاه که پروتکل SPI رو پشتیبانی می کنن به یک اردو وصل کنیم.
    مثلا این ماژول رو باماژول بیسیسم nRF24L01 باهم وصل کنیم.
    ممنون

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

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

      مهدی دمرچیلو

      سلام – تا جایی که یادمه بله میشه.
      اتصال چند spi به میکروکنترلر

      • Avatar

        مهمان

        مهدی

        پول دانی ، پول آپی ، چیزی نمیاخاد ، یعنی مستقیم جواب میده؟

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

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

          مهدی دمرچیلو

          تا جایی که یادمه SPI مقاومت پول دان/آپ نمیخواد

      • Avatar

        مهمان

        علیرضا

        سلام
        ممکنه بفرمایین که مدار فوق رو ایا شما تست کردین یا نه؟
        چون من هر کار کردم جواب نداد. در انتها فهمیدم که ماژول فوق در خروجی هاش بافر سه حالته نداره!!!
        بنابراین هنگام پاسخ گویی slave قاطی میکنه

  40. Avatar

    مهمان

    امیر

    سلام .
    آیا میشه روی اردوینو due با این اس دی کارت ها سیستم عامل نصب کرد ؟
    اگه میشه لطفا آموزشش بدین
    با تشکر از اموزش های خوبتون

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

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

      مهدی دمرچیلو

      سلام – اطلاع ندارم – و اصلا due هم ندارم pardon

  41. Avatar

    مهمان

    مهدی

    سلام
    با تشکر از مطلب خوبتون
    تا چقد حافظه رو به اردوینو میتونیم وصل کنیم.
    اردومگا با uno برای اندازه رم فرق نمیکنه؟
    فرمت fat32 با ntfs چی؟
    باز هم خیلی ممنون.

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

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

      مهدی دمرچیلو

      سلام-من تا 8 تست کردم-نه-گوگل سرچ کنه، نوع تقسیم بندی حافظه هستش، چیزی که تو ذهن منه، اگه فرمت ntfs مناسب هارد های اکسترنال هستش برا انتقال های های یه تیکه و حجیم

  42. Avatar

    مهمان

    هادی فلاحی

    با سلام و درود بر شما
    ضمن تسلیت عاشورا و التماس دعا
    این پروژه رو مینویسم ولی متاسفانه همون اول قسمت تشخیص وصل بودن رو جندین بار تست کردم
    فقط
    false
    رو نشون میده
    واقعا دستتون درد نکنه خیلی مفصل توضیح ارئه فرمودید
    موفق و سربلند باشید
    لطفا راهمناییم بفرمایید خیلی برام ضروریه
    09145814680

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

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

      مهدی دمرچیلو

      سلام
      ماژولت باید مشکل داشته باشه اگه مدار رو صحبح بستی.
      در ضمن فاصله ماژول با مدار زیاد نباشه – در حد همون 4-5 سانت خوبه – بیشتر نشه

  43. Avatar

    مهمان

    paria

    خیلی عالی بود.ممنون از زحماتتون.
    اگر بخوام یک رشته خاص مثلا “a123456” رو در یک فایل تکست توی sd card سرچ کنیم از چه تابعی باید استفاده کنم؟

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

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

      مهدی دمرچیلو

      نمیدونم – تو کتابخونه نگاه کن – اگه نبود >>>> بیا اطلاعات رو بخون – هر جا به a رسیدی بیا بررسی کن که کاراکتر بعدی 1 هستش یا نه – اگه بود که…، اگه نبود دوباره از همون کاراکتر بیا بررسی کن که a هستش یا نه – خودت بشین تابعش رو بنویس – کاری نداره

  44. Avatar

    مهمان

    صادق

    سلام. اول یه خدا قوت جانانه و تشکر بابت این همه مطالب جالبی که بدونه هیچ چشم داشتی مینویسی . ان شاءالله خیرشو میبینی …
    بنده میخام بعد از اینکه اطلاعات رو از SD خوندم اطلاعاتش رو به وسیله I2C به یه آردینو دیگه ارسال کنم. اما شما تو مطالبت اشاره کردی که بعد از دریافت اطلاعات به پورت سریال میفرسته برا نمایش … میخاستم ببینم با پروتکل I2C میشه ارسال کنم به یه آردینو دیگه یا حتما باید با سریال بفرستم ؟؟؟
    در ضمن تو مثال تابع println خط سومش نوشتین print !!! smile

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

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

      مهدی دمرچیلو

      سلام
      تو پروژه ته مطلب، خط سوم به صورت زیر هستش و خبری از PRINT نیست – لطفا دقیقتر بگید.
      //CS - pin 10
      من یه پروژه انجام دادم و اطلاعات رو از طریق پنجره سریال ارسال کردم – شما از طریق I2C ارسال کنید – آموزش I2C هم فک کنم تو سایت باشه – ارسال دیتا از طریق I2C میشه خوبش هم میشه. smile

      • Avatar

        مهمان

        صادق

        خیلی ممنون. توی قسمتی که تابع println رو توضیح دادین، همونجا یه مثال کوچولو زدید . منظورم اون مثاله نه پروژه آخری که گذاشتین smile

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

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

          مهدی دمرچیلو

          good

  45. Avatar

    مهمان

    احسان

    سلام خسته نباشید
    من میخوام 4تا فایل صوتی را به صورت مجزا با فرمان خودم پخش کنم آیا این امکان وجود داره؟؟؟

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

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

      مهدی دمرچیلو

      سلام – امکان همه جور کاری تو الکترونیک وجود داره

  46. Avatar

    مهمان

    مرتضی

    سلام.
    خدا قوت …
    تو توضیحات کتابخانه آمده که از نوع های SD1/2/HC با فرمت FAT16/32 پشتیبانی می کنه.
    می خواستم ببینم شما از چه نوع کارتی با چه حافظه و فرمتی استفاده کردید. فرمت کردنش نکته خاصی داره؟
    من چند مدل امتحان کردم، نوع کارت رو درست تشخیص می ده، اما با اینکه فرمتش می کنم! می گه فرمتش FAT16/32 نیست.
    مرسی.

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

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

      مهدی دمرچیلو

      سلام
      والا رم گوشیمو … که ترنسلیت! مدل micro sd – hc هستش رو تست کردم
      با کامپیوتر میتونی رم رو فرمت کنی و نوع فرمت رو تعیین کنی—رو رم کلیک راست میکنی و گزینه فرمت و انتخاب نوع فرمت و…

      • Avatar

        مهمان

        مرتضی

        پس رم شما بالای ۴ گیگ هست و سرعت بالاست، از گوشی درآوردید فرمتش هم کردید یا بدون فرمت با آردوینو جواب گرفتید؟
        من ۲تا SD2 یک و دو گیگ رو تست کردم که به صورت پیشفرض فرمتشون FAT بود، توی ۸٫۱ هم FAT16 ندیدم، پس با FAT32 فرمت کردم و بازم مشکل باقی بود.
        یک SDHC 16 گیگ رو هم از روی یه گوشی درآوردم و فرمتش رو چک کردم، طبیعتا FAT32 بود، این رو هم که امتحان کردم نوعش رو درست تشخیص داد اما باز گفت فرمتش FAT16/32 نیست! البته این یکی رو نمی شد مجدد فرمت کنم! sad
        خلاصه عجیب توش موندم …!
        موقع فرمت یه َAllocation unit size داره ، شما روی کدوم گزینه تنظیم کردید؟ من چند گزینه اش رو امتحان کردم اما تفاوت نداشت. یا من بد فرمت می کنم که بعیده ، یا کارت حافظه نوعش ساپورت نمی شه … ! یا … !
        مرسی.

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

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

          مهدی دمرچیلو

          رم من ۸ گیگ هستش
          خب رم من نیاز به فرمت نداشت
          Allocation unit size >>>> تغییر نمیدم و فقط نوع فرمت رو تعیین میکنم.
          اگه شهر قدس هستی بیا تا رم ام رو بهت بدم یا پروژت رو بررسی کنم.

          • Avatar

            مهمان

            مرتضی

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

  47. Avatar

    مهمان

    محمد

    سلام
    ممنون
    بله در کتابخانه اش یک الگوریتمی برای این کار نوشته

  48. Avatar

    مهمان

    محمد

    سلام
    ممنون از آموزشات
    اگر بخواهیم اسم فایل های داخل مموری رو نمایش بدیم از چه دستوراتی باید استفاده بشه

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

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

      مهدی دمرچیلو

      سلام
      تو کتابخونه بگرد ببین تابعی برا این کار داره یا نه
      در ضمن ببین خروجی تابع openNextFile چی هستش
      و در ضمن پروژه های نمونه خود کتابخونه رو نگاه کن، فک کنم برنامه ای داشت که نام فایل ها رو نشون میداد .. فک کنم

  49. Avatar

    مهمان

    علی

    سلام
    مرسی مهدی جان واسه مطالب خوبت
    می خواستم بدونم مهدی جان این همین ماژولی هست که استفاده کردی؟
    http://eshop.eca.ir/%D9%85%D8%A7%DA%98%D9%88%D9%84-%D9%87%D8%A7%DB%8C-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C/2146-%D9%85%D8%A7%DA%98%D9%88%D9%84-%D8%B1%D8%A7%D9%87-%D8%A7%D9%86%D8%AF%D8%A7%D8%B2-mmcsd.html
    اگه اره این ماژول فقط واسه اردوینو هست یا میشه جدا هم استفاده کرد(یعنی تو پروژه های دیگه رو برد بورد ببندم)؟
    مرسی

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

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

      مهدی دمرچیلو

      سلام
      بله همینه
      برا همه نوع میکرو کاربرد داره

  50. Avatar

    مهمان

    محمد

    خیلی تشکر smile

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

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

      مهدی دمرچیلو

      yes

      • Avatar

        مهمان

        علی

        سلام آقا واقعا از آموزشات لذت بردم فقط می خواستم ببینیم چطوری می شه هر بار که آردوینو رو روشن می کنی یه فایل با یه اسم دیگه درست شه،برای دیتالاگر می خوام.

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

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

          مهدی دمرچیلو

          سلام
          از حافظه eeprom استفاده کنید.

          • Avatar

            مهمان

            علی

            درسته ولی وقتی می خواهم برای اسم فایلی که تو sd درست کنم،از متغیر استفاده کنم،نمی شه،یا دست کم من نمی دونم!

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

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

            مهدی دمرچیلو

            ببخشید تو نظر قبلی اون چیزی که گفتم منطقی نیست
            وقتی رم هستش دیگه چرا از حافظه خارجی استفاده کنیم.
            خب شما یه آرایه ای از نام ها تعریف کن و بررسی کن که فایلی با اون نام اگه موجود بود که هیچ وگرنه بیا فایلی با اون نام ایجاد کن.

          • Avatar

            مهمان

            علی

            جسارت نباشه ولی فکر می کنم شما منظور منو متوجه نشدید،من می خواهم هر وقت که میکرو روشن شد،یک فایل جدید رو ایجاد کنه،مثلا اول یک فایل‌ها نام ۱،بعد ۲ و همین طور تا یک حدی که بهش می دی، برای همین من اومدم از eeprom استفاده کردم،ولی وقتی خواستم تا متغیری رو که تعریف کردم به عنوان نام فایل با دستور open به sd بردم نشد،چون حتما اسم فایل باید تو ی “”باشه برای همین کامپایلر نظرم افزار آردوینو eror می ده.

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

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

            مهدی دمرچیلو

            فهمیدم داش
            خب EPROM لازم نیست، همون روشی که گفتم جواب میده.

1 2