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

آموزش جامع آردوینو جلسه ۴

به نام خدا

آموزش جامع آردوینو جلسه ۴ : سلام خدمت شما دوستان گل ، تو این مطلب از آموزش آردوینو که جلسه ۴ امش هستش ، میخوام به مبحث آموزش ارتباط سریال در آردوینو بپردازم و پروژه آردوینو هم براتون میزارم تا بیشتر و بهتر یاد بگیرید ، مشکلی سوالی چیزی هم بود حتما در نظرات مطرح کنید.
آموزش جامع آردوینو جلسه 4

خوب اگه برید سایت arduino.cc میبینید که تو قسمت ارتباطاتش ۲ تا پروتکل ارتباطی به نام های Serial و Stream وجود داره که تو این مطلب انشاالله میخوام درباره پروتکل Serial (سریال blush) در آردوینو ( آردینو crazy) صحبت کنم و مختون رو بخورم buba

آموزش پروتکل سریال در آردوینو

برا ارتباط آردوینو با کامپیوتر یا با چیزای دیگه (که مثلا از آردوینو به کامپوتر اطلاعات بفرستیم و بلعکس، اطلاعات دریافت کنیم) میایم و از پروتکل سریال استفاده میکنیم.
توابع پروتکل سریال در آردوینو : این پروتکول Serial تابع مابع زیاد داره(۲۰ تا wacko ) ممکنه مطلب یکم طولانی بشه…. laugh …. لذا کمربنداتون رو ببنید و از رو صندلی بلند نشید تا مطلب رو نخوندید rtfm

if(Serial)
available
begin
end
find

findUntil
flush
parseFloat
parseInt
peek

print
println
read
readBytes
readBytesUntil

readString
readStringUntil
setTimeout
write
serialEvent

توجه های مهم و غیر مهم ^_^
توجه ۰ : همه ی برد های آردوینو حداقل یه پایه ارتباط سریال دارن.
توجه ۱(مهم) : RX (این پایه اطلاعات رو دریافت میکنه) و TX (این پایه اطلاعات رو ارسال میکنه) پایه های ارتباط سریال هستن که معمولا پایه های ۰ و ۱ برد های آردینو هستن.
توجه ۲(مهم) : اگه از این پایه های ۰ و ۱ آردینو (TX , RX) به عنوان پایه های ارتباط سریال استفاده کنید دیگه نمیتونید از این پایه ها به عنوان پایه های ورودی خروجی استفاده کنی.......یا باید در نقش ورودی خرودی باشن یا در نقش پایه های ارتباط سریال ، وسلام ..... rtfm
توجه ۳ : برد های آردوینو سری Mega و Due سه تا پایه ارتباط سریال داره(۳ جفت پایه ارتباط سریال داره pardon) .... البته اینو گفتم که گفته باشم ، چیز زیاد مهمی نیست چون ما با برد ARDUINO UNO کار مکنیم. shout

  • Serial1 : پایه ۱۹(RX) و پایه ۱۸(TX)
  • Serial2 : پایه ۱۷(RX) و پایه ۱۶(TX)
  • Serial3 : پایه ۱۵(RX) و پایه ۱۴(TX)

توجه ۴ : برای ارتباط کامپیوتر با آردوینو نیاز به یه مبدل USB TO SERIAL داریم ، ....این مبدل ها یه سرشون USB داره که معلومه که باس به کامپیوتر وصل بشه و یه سرشون ۲ تا پایه TX و RX داره که به پایه های RX و TX برد آردوینو وصل میشه تا عمل تبادل اطلاعات صورت بگیره. (پایه RX کامپیوتر یا همون مبدل به پایه TX آردوینو و پایه TX کامپیوتر به پایه RX آردوینو.....اگه دلیلش رو نفهمیدید بگین تا بگم victory .....ولی ۲۰ ثانیه فکر کنید علتش رو میفهمید. good )

Serial.begin
Serial.begin : این تابع میشه گفت برا تنظیم سرعت انتقال داه هستش که توی آردوینو و اون یکی چیزی که میخوایم باهاش ارتباط برقرار کنیم(مثلا کامپیوتر) باید این سرعت یکسان باشه تا عمل تبادل اطلاعات مثل آدم صورت بگیره smile

speed : سرعت انتقال داده (baud)
config : تعیین تعداد بیت های data و parity و stop
از قیافش معلومه که : خوب همون طور که میبینید تابع Serial.begin رو به دو صورت میشه نوشت که تو تابع اولی فقط سرعت انتقال داده (baud) رو تعیین میکنیم و تو اون یکی علامه بر speed یه چیزی هستش به نام config که اینم باس تنظیم کنیم.
نظر من : بهتره تو شروع کار از همین تابع اولی استفاده کنید ، بعدا که یکم راه افتادید برید و از تابع دومی استفاده کنید.

توجه ۱ : هر بار که یه بسته اطلاعاتی ارسال میشه ، این بسته شامل تعداد ۰ و ۱ هستش که یه سری از اینا اطلاعات ما هستن(data) ، یه سری رو بهشون میگن بیت stop که طرف با دیدن اینا بفهمه که بسته اطلاعاتی ما بیت هاش ارسال شد و این بیت های stop هم نشان از پایان کار اون بسته اطلاعاتی هستش(بهترین حالت گفتنم بود این  cry) و parity (بیت توازن) هم برا اینه که بفهمیم اطلاعات درست تبادل شده ، که توضیحش نمیدم و اگه خواستید میتونید لینک های زیر رو ببینید diablo  :  parity یا بیت توازن چیست ؟ : مطلب۱ ، مطلب۲ ، مطلب۳
توجه ۲ : خوب حالا توسط پارامتر config میایم و تعداد این ۳ مورد رو تعیین میکنیم(که باس این قسمت تو هر دو طرف ، هم آردوینو و هم کامپیوتر مثلا یکسان باشه)
تو تابع دومی config رو تعیین میکنیم ولی تو تابع اولی config یه مقدار پیش فرضی داره و دیگه نیاز به تعیینش نیست.

baud rate(نرخ انتقال داده) : سرعت انتقال اطلاعات در ۱ ثانیه
انواع baud rate موجود : ۳۰۰ , ۶۰۰ , ۱۲۰۰ , ۲۴۰۰ , ۴۸۰۰ , ۹۶۰۰ , ۱۴۴۰۰ , ۱۹۲۰۰ , ۲۸۸۰۰ , ۳۸۴۰۰ , ۵۷۶۰۰ , ۱۱۵۲۰۰
نرخ عرفش ۹۶۰۰ هستش که یعنی تبادل اطلاعات ۹۶۰۰ بیت بر ثانیه
فرق بیت با بایت : هر ۸ تا بیت برابر ۱ بایت هستش ؛ هر بیت یا ۰ هستش یا ۱

مقادیر config : مقادیری که میشه به config انتساب داد به صورت زیر هستش :
N = none ___ E = even ___  O = odd
x الی y یعنی تعداد بیت های دیتا ، مثلا ۵N1 ِیعنی تعداد بیت ها دیتا ۶ تا است.
در کد های زیر N,E,O یعنی نوع parity که N یعنی parity نداریم ، E یعنی parity فرد است و O یعنی parity زوج است.
ولی این که چطور میشه فهمید تعداد بیت های STOP چند تاس (۱ دونه یا ۲ تا) رو من نمیدونم ، اگه کسی میدونه بگه ، آموزشی چیزی تو این باره ندیدم که بخوایم این جا بگم تو سایت خود آردوینو هم چیزی در این باره نگفته بود. cry
ارتباط کامپیوتر با آردوینو

  • SERIAL_5N1 :
  • SERIAL_6N1 :
  • SERIAL_7N1 :
  • SERIAL_8N1 : data=8bit , stop=1bit , parity=0bit  ( default )
  • SERIAL_5N2 :
  • SERIAL_6N2 :
  • SERIAL_7N2 :
  • SERIAL_8N2 :
  • SERIAL_5E1 :
  • SERIAL_6E1 :
  • SERIAL_7E1 :
  • SERIAL_8E1 :
  • SERIAL_5E2 :
  • SERIAL_6E2 :
  • SERIAL_7E2 :
  • SERIAL_8E2 :
  • SERIAL_5O1 :
  • SERIAL_6O1 :
  • SERIAL_7O1 :
  • SERIAL_8O1 :
  • SERIAL_5O2 :
  • SERIAL_6O2 :
  • SERIAL_7O2 :
  • SERIAL_8O2 :

خب حالا اگه بخوایم از برد های سری مگا آردوینو استفاده کنیم همون طور که میدونید این برد 3 تا ارتباط سریال داره با نام های سریال1، سریال2 و سریال3 در حالی که برد های بر مبنای atmega328 دارای یه دونه سریال هستن و اون در پایه های 0 و 1 هستش.، خب میگفتم: برای برد های سری مگا از کدهای زیر استفاده میکنیم.

Serial.available
Serial.available : اگه دیتایی برای خوندن موجود باشه این تابع اعلام میکنه ، و این قابلیت رو داره تا ۶۴ بایت اطلاعات اطلاعات آماده دریافت در بافر دریافت سریال ذخیره کنه.

خروجی تابع بالا تعداد بایت های آماده خوندن هستش ، مثلا میتونیم تو پروژهامون از این تابع به صورت زیر استفاده کنیم:

که دستور شرطی بالا وقتی اجرا میشه که دیتایی از طرف فرستنده اطلاعات به سمت گیرنده اطلاعات ارسال شده باشه.
کاربرد این تابع ۱ : مثلا اگه یه برنامه بنویسید که گیرنده اطلاعات رو از فرستنده دریافت کنه و نمایش بده ، اگه از این تابع استفاده نکنیم این گیرنده هی دیتا نشون میده رو نمایشگر(فضای خالی یا همون space نشون میده) ، که باعث هنگ کردن یا رفتن به یه حلقه بینهایت ارسال و دریافت و نمایش اطلاعات میشه ، ولی اگه از این تابع استفاده کنیم تنها زمانی دیتا دریافت میشه و نمایش داده میشه که دیتایی ارسال شده باشه از طرف فرستنده.
کاربرد این تابع ۲ : دریافت اطلاعات تنها زمانی که اطلاعات ارسال میشه(به نقل از arduinoworld ) >>>توضیح خوبی هستش گفتم بزارم بهتره smile
توجه : این تابع در قسمت گیرنده اطلاعات استفاده میشه.

یه مثالکی از دو تابع گفته شده بالا

Serial.end
Serial.end : این تابع برا پایان دادن به کار ارتباط سریال هستش ، و دیگه پایه های ۰ و ۱ آردوینو(TX , RX) در نقش ارتباط سریال نیستند و در نقش ورودی/خروجی هستند ؛ برای روشن کردن دوباره ارتباط سریال(بعد از خاموش کردن ارتباط سریال با این تابع) باس دوباره تابع Serial.begin رو فراخونی کنید. rtfm

خب تابع بالا برا میکروها و برد های آردوینو یی بود که فقط یه پورت سریال دارن، حالا مثلا در بردهای سی مگا که 3 تا پورت سریال دارن برا بستن هر کدوم باید چیکار کنیم؟ بله از کدهای زیر استفاده میکنیم. laugh

Serial.print
Serial.print : این تابع کارش ارسال اطلاع هستش که به فرم زیر هستش

data : معلومه دیگه ، اطلاعاتمون که قراره ارسال بشه.
format : نوع داده یا تعداد اعشار اعداد اعشاری رو تعیین میکنیم.

تابع اولی : که در زیر انواع اطلاعاتی رو که میشه بهش داد رو میبینید ، تنها نکته ای که وجود داره اینه که ، اعداد اعشاری رو با دو رقم اعشار ارسال میکنه و بقیه ارقام اعشار رو در نظر نمیگیره ، و در ارسال متن رشته ابی(چند تا کلمه ، حرف و یا عدد و...) ، ارسال عدد صحیح ، ارسال کاراکتر چیز خاصی برا گفتن وجود نداره. blum
منظور از <<< یعنی کد سمت چپ جوابش میشه کد سمت راست crazy

تابع دومی : تو این تابع دومی باید ۲ تا مقدار data و format رو به تابع بدیم.(نه بابا...از کجا فهمیدی laugh )

توجه ۱ : همون طور که میبینید میشه فرمت ارسال دیتا رو هم توسط قسمت format تعیین کرد که انواع BIT (باینری) ، OCT (اکتال) ، DEC (دسیمال یا همون ده دهی) و HEX (هگزا) رو مشاهده میکنید و اگه دیتامون یه عدد اعشاری باشه ، format تعداد ارقام اعشار رو برا ارسال تعیین میکنه.
توجه ۲ : اگه از bin , hex , oct , dec چیزی نمیدونید مطالب زیر رو ببینید(اگه مطالب خوب نبودن باس خودتون آستین رو بدین بالا و تو گوگل سرچ کنید)
باینری، اوکتال، دسیمال و هگزادسیمال : مطلب ۱ ، مطلب ۲ ، مطلب ۳ , مطلب ۴

توجه ۳ (مهم نیست) : میتونیم متنی رو ارسال کنیم که داخل حافظه flash برمون قرار داره ، باید به صورت زیر عمل کنیم :

Serial.println
Serial.println : خوب این تابع و هم بگم و مطلب رو تموم کنم و بقیش رو بزارم جلسه بعد ، داغوش شدم بابا laugh ....میرم موقع استراحت pes2013 بازی کنم هی از بازی خارج میشه و حال آدمو میگیره bomb .....بگذریم از این حرف های بیهوده و بریم سر اصل مطلب buba
این تابع تقریبا همون تابع Serial.print هستش فقط با این تفاوت که وقتی دیتا رو ارسال کرد دستور رفتن به خط بعد("n\") رو هم ارسال میکنه(به طور خودکار) و همانند تابع Serial.print به دو صورت میشه نوشتش(بسته به نیازتون باس انتخاب کنید که از کدومش باید استفاده کنی)

یه ـــمـــثـــالـــ برا نمایش تفاوت بین تابع Serial.print با Serial.println

پروژه بالا(کد های بالا) رو در زیر توضیح میدم :
خطوط ۵ تا ۱۱ اطلاعاشون رو نشون میدن و چون تابع هاشون از نوع Serial.println هستش لذا نیاز نیست دستور رفتن به خط بعدی رو ارسال کنیم.(این تابع بعد از نمایش دیتا به طور خودکار دستور رفتن به خط بعدی رو ارسال میکنه)
تو خط ۱۳ اومدیدم و کد زیر رو نوشتیم که یعنی رفتن به ۲ سطر بعدی (بره ۲ خط بعدی) و به هر تعداد که کد n\ رو داخل اون  " " بنویسیم به همون تعداد میره خط بعد ، چون در کد زیر ۲ بار نوشتیمش لذا میره ۲ خط بعدی ، و اگه مثلا ۵ تا میزاشتیم میرفت ۵ خط میرفت جلو.

اما خطوط ۱۵ تا ۲۷ چون از نوع Serial.print هستن بعد از نمایش دیتا دستور رفتن به خط بعد رو ارسال نمیکنن و ما باس خودمون این کار انجام بدید و اگه توجه کنید بعد از هر بار نمایش دیتا توی این خطوط دستور زیر رو قرار دادیم که این دستور باعث رفتن به خط بعدی(سطر بعدی) میشه.
اگه توجه کنید بین خط ۲۱ و ۲۲ نگفتم بره خط بعد ؛ جواب پروژه رو ببینید ، مقدار این دو تا تابع پشت سر هم و به صورت ۴E1 نمایش داده شده

تو خطوط ۳۱ تا ۳۸ هم اگه توجه کنید هر جا که به تابع Serial.println رسیدیم ، این تابع بعد از نمایش اطلاعات دستور رفتن به خط بعد رو صادر کرده.

اینم از جواب پروژه بالا(کد های بالا) >>> فعلا کاری نداشته باشید جواب رو چطور ابردم ، تو جلسات بعدی کامل توضیح میدم.
آموزش ارتباط سریال در آردوینو

توجه مهم : بعضا دیده شده که پروژه ها تو پروتئوس مثل آدم کار نمیکنن و دقیقا همون جوابی رو که میخوایم رو بهمون نمیدن که این مشکل از پروتئوس هستش و نه از پروژه ما....همین الان همین مشکل برخودم و در عمل تست کردم و فهمیدم که مشکل از پروتئوس هستش. bb  ، البته دفه ی اولم نیست که همچین مشکلی با پروتئوس پیدا میکنم ، کلا تو شبیه سازی ماژول ها , lcd های گرافیکی و قطعات جدید مثل همین آردوینو زیاد خوب عمل نمیکنه. dash  و باس عملی تست کنیم.

خب خدا رحم کنه ، ۴ تا تابع رو گفتم شد ۲۱۳۰ خط(تعداد خطوط این مطلب) shock ، حالا بقیه توابع رو بخوام بگم چقدر میشه ، انشاالله که با حوصله میشینیم و بقیش رو مینویسیم….. mail
اگه جایی چیزی رو نگفتم جا انداختم کم گفتم و… لطفا بهم بگید. pardon
امیدوارم از این مطلب ناچیز خوشتون اومده باشه >>>> اگه اومد تعجیل در فرج آقا و شادی روح شهدا و امام شهدا  ۳ صلوات بفرستید.(هزینه استفاده از این مطلب) heart
در ضمن با نظرات و انتقاداتون در بهتر شدن مطالب و روحیه دادن به ما برا ادامه کار به ما کمک کنید.
فعلا یا علی تا مطلب بعد bye  

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

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

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

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

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

  1. Avatar

    مهمان

    سعید

    سلام
    این توابعی که گفتید پر کاربرد ترین ها بودند؟ no

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

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

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

      سلام – حدود 10 – 20 تا تابع هستش که تو 2-4 جلسه فک کنم توضیحشون دادم. ( ادامه توابع تو جلسات بعدی باید باشه )

  2. Avatar

    مهمان

    صدرا

    آقا دمت گرم
    خیلی خیلی خیلی خیلی ….ممنون

  3. Avatar

    مهمان

    صدرا

    ببخشید منطورم اینه که یعنی الام مثلا وقتی داریم از تابع Serial.read استفاده میکنیم در واقع داریم از ارتباط سریال استفاده میکنیم در حالیکه هیچ استفاده از پایه rx , tx نمیکنم . چه جوری این اتفاق میفته.
    و یک چیزه دیگم لین که فرق uart ,usart, spi , serial چیه با هم؟
    خیلی خیلی خیلی ممنون

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

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

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

      تازه دوهزارم افتاد – منظورت اینه که وقتی آردوینو رو به pc وصل میکنیم چطور بدون استفاده از پایه های rx-tx تبادل داده بین میکرو و کامپیوتر از طریق Serial انجام میشه؟ خب شما شماتیک برد آردوینو رو ببینید این 2 پایه به pc وصل هستش – لذا وقتی برد آردوینو رو به pc وصل میکنید این پایه ها هم به pc وصل میشن و لذا دیگه لازم نی کاربر کاری انجام بده

      فرق uart ,usart, spi , serial چیه با هم؟

      چیزی که فهمیدم رو میگم – ممکنه درست نباشه :
      usart شامل دو پروتکول uart و usrt هستش – تا جایی که یادمه – که ما ا uart استفاده میکنیم – برا ارتباط های چند گانه usrt مناسبه تا جایی که خاطرمه.
      serial که همون پروتکول uart هستش که تو آردوینو اومدن برا uart یه کتابخونه نوشتن و من و شما از توابعش استفاده میکنیم تا راحت تر uart رو راه اندازی کنیم و دیتا رد و بدل کنیم.
      spi هم یه پروتکول هستش – که به کمکش میتونی با چندین دستگاه در ارتباط باشی – بعضی سنسور/نمایشگر و… از این پروتکول استفاده میکنن.

  4. Avatar

    مهمان

    صدرا

    سلام سال نو مبارک
    آقا ممنون بابت آموزش ها یک سوال داشتم؟
    الان مگه توی ارتباط سریال نباید از دو تا پایه ی rx و tx استفاده کنیم ؟ یعنی مگه نباید از یکی از این دو پایه سیم بیرون بیاوریم تا ارتباط برقرار بشه ؟
    ممنون میشم اگر توضیح بدید.

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

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

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

      سلام – عید شما هم مبارک – دقیقا متوجه منظورتون نشدم – خب بخوای داده ارسال کنی باید از پایه tx و بخوای دیتا دریافت کنی باید از پایه rx استفاده کنی دیگه.

  5. Avatar

    مهمان

    صدرا

    سلام مهندس
    خدا قوت. خیلی استفاده کردم. سپاسگذارم.
    الهی بری بهشت!.

  6. Avatar

    مهمان

    Matarata

    سلام و درود فراوان و تشکر ویژه بابت مطالب نابی که میذارید.

  7. Avatar

    مهمان

    سالار

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

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

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

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

      سلام
      با سیم – RS485
      بی سیم : ماژول های سری NRF سریال ( تو دراز مدت تست نکردم که خوبن یا بد ) – تعریف زیگبی رو هم شنیدم ولی کار نکردم.

  8. Avatar

    مهمان

    صادق

    سلام و خدا قوت – برد های mega و due چهار پورت سریال داره . پورت serial0 رو شما در نظر نگرفتید احتمالا yes

  9. Avatar

    مهمان

    Ali

    ببخشید چطور میشه طول بافرو تغییر داد خاهش میکنم یه توضیح جامع بهم بدین کارم گیره

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

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

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

      اینو سرچ کنید :
      How to Increase the Arduino Serial Buffer Size

      • Avatar

        مهمان

        Ali

        من اینو پیدا کردم نمیدونم ج میده یا ن ولی اگه ج بده بنظرم ارزششو داره بذاری تو مطلبت.
        #define SERIAL_BUFFER_SIZE 256
        گفته این خط کدو بریزی تو اسکچت بافر کار تغییر سایز میده!

  10. Avatar

    مهمان

    یونس

    سلام خسته نباشید. . توضیحات شما تقریبا جامع وکامله و این اولین سایتیه که من با علاقه دنبالش میکنم
    من کار با اردوینو را یه ماهی میشه که شروع کردم . البته رشته من مکانیکه ولی بخاطر علاقه زیادی که به الکترونیک دارم تصمیم گرفتم یاد بگیرم.
    میخاستم بدونم با چه دستور یا تابعی من میتونم تعداد دفعات صفر و یک شدن یه کلید را بشمارم واگر دوثانیه گذشت و من کلید را فشار ندادم انگاه برنامه خاتمه پیدا کنه و تعداد دفعات صفر و یک شده کلید را با serial.print چاپ کنه. ممنون میشم به این سوالم جواب بدید.

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

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

      مهدی دمرچیلو

      سلام
      تو نت آموزش c++ رو سرچ کنید و یاد بگیرید این زبونو

  11. Avatar

    مهمان

    amir

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

  12. Avatar

    مهمان

    دانیال

    سلام
    این اموزش کلا چند جلسه هستش؟؟؟

  13. Avatar

    مهمان

    ariyana

    چرا وقتی میخوایم بیام تو گروه میگه وجود نداره!?
    گروهو پاک کردین?
    cry

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

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

      مهدی دمرچیلو

      نه هستش هنوز

  14. Avatar

    مهمان

    سهراب

    چجوری بفرستم؟

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

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

      مهدی دمرچیلو

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

  15. Avatar

    مهمان

    سهراب

    serial was not declared in this scope

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

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

      مهدی دمرچیلو

      کدتو زیپ کن بفرست

  16. Avatar

    مهمان

    سهراب

    سلام،یه سوال:من ارتباط سریال را فعال میکنم ولی وقتی کامپایل میکنم،ارور میده،مشکلش چی میتونه باشه؟ممنون

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

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

      مهدی دمرچیلو

      سلام-متن خطا رو بفرست حداقل.

  17. Avatar

    مهمان

    سین

    سلام با تشکر از زحماتتون
    برای ارسال و دریافت متن فارسی باید چیکار کرد؟

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

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

      مهدی دمرچیلو

      سلام
      از طریق سریال؟ نمیدونم.

  18. Avatar

    مهمان

    arina

    عالی ،واقعا این سایت خیلی برام مفید بوده امیدوارم همینطور که کمکمون میکنی بهت کمک بشه
    good good

  19. Avatar

    مهمان

    علیرضا

    سلام من دارم با esp 8266 کار میکنم یه سری پروتکل http رد و بدل میکنم با سرور منتهی پاسخی که سرور میده حدود ۱۷۰ بایت میشه که تابع Serial.available() فقط تا ۶۴ بیت رو ذخیره میکنه و میتونم باهاش کار کنم چی کار کنم؟؟
    واقعا ضروریه و داره کلافم میکنه cry dash help

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

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

      مهدی دمرچیلو

      سلام -معمولا همراه دیتای اصلی یه سری چیز میز اضافه هم ارسال میشه ولی این که میگی فقط ۶۴ تا ذخیره میشه مربوطه به بافر سریال که شما احتمالا میخوای یجا اطلاعاتو بخونی و اونجا سرریز میشه اطلاعات – استفاده از توابع آماده سریال آردوینو – این مشکلاتو هم داره – ولی خب شما تابع available رو در نظر بگیر – هر موقع غیر ۰ شد – سریع برو اطلاعاتو تک بایت تک بایت بخون.
      راستی تاخیر خوندن دیتا از سرور برا شما چقدره؟ برا من ۶-۸ ثانیه طول میکشه – مدل ESP8266 12E

      • Avatar

        مهمان

        علیرضا

        در ابتدا به خاطر پاسخ سریعت واقعا ممنون خیلی دمت گرم ok
        آقا شما خودت استادی ولی من از دیشب رفتم تو سایتای خارجی گشتم گفته بودن از توی کتابخونه میشه مقدارشو تغییر داد
        حالا من اومدم یه سافت ویر سریال تعریف کردم از اونور رفتم تو کتابخونه ای که برای softwaresariel.h بود بافرشو ۲۵۶ گذاشتم مث بنز نتیجه داد bb ok bye

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

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

          مهدی دمرچیلو

          خو منم گفتم مشکل از بافره دیگه unknw

      • Avatar

        مهمان

        علیرضا

        تاخیر خوندن از سرور برا من کمتر از یک ثانیس

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

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

          مهدی دمرچیلو

          به ایمیلی که ثبت کردی یه پیام میفرستم.

  20. Avatar

    مهمان

    هونام سنگ

    سلام.سایتتون خیلی خوبه ممنونم ازتون give_rose

  21. Avatar

    مهمان

    سارا

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

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

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

      مهدی دمرچیلو

      سلام – تو بحث خوندن با میکرو اگه مشکلی رخ داد بررسی کنید وگرنه همچین حالتی هم برا من رخ داده تا جایی که یادمه – فایل رو وقتی با کامپیتور نگاه میکنن مشکل داره انگار ولی با میکرو باهاش کار میکنم نه.
      حالا در کل باید بررسی کنید که چه دیتا هایی میریزید تو فایل
      مثلا اول یه فایل ایجاد کنید و یه متن نمونه داخلش قرار بدید – ببینید چیز اضافه ای داخل فایل قرار میگیره یا نه – اگه نه برید سراغ دیتای اصلیتون – حالا یا مشکل از کتابخونه هستش یا مدلش همینطوره ^^_^ یا شما سوتی دادید – که اینو با تست و بررسی تک تک دیتا هایی که میریزید تو داخل رم – بررسی کنید این موضوع رو.

  22. Avatar

    مهمان

    hotoii

    قسمت سوم نیست

  23. Avatar

    مهمان

    هستی

    سلام
    اید توضیح درسته یا توضیح شما؟
    اسنو تو ی سایت دیگه دیدم
    در مقدار های نسبت داده شده به config ؛ O مخفف کلمه odd به معنای بیت توازن زوج ، E مخفف کلمه ی Even به معنای بیت توزان فرد و N مخفف کلمه None به معنای عدم استفاده از بیت توازن می‌باشد. عدد۱ تعداد stop بیت می‌باشد و عدد ۸ تعداد بیت داده می‌باشد.

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

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

      مهدی دمرچیلو

      سلام
      منم همنو گفتم تو مطلب دیگه
      SERIAL_8N1 : data=8bit , stop=1bit , parity=0bit ( default )

  24. Avatar

    مهمان

    اصغر

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

  25. Avatar

    مهمان

    مهدی

    فرق و رابطه اینا رو میشه توضیح بدید؟
    usart
    uart
    ارتباط سریال
    spi
    i2c

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

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

      مهدی دمرچیلو

      Universal Synchronous and Asynchronous serial Receiver and Transmitter (USART)
      الان میرو آرم سری ال پی سی که من کار میکنم فقط آسنکرون رو دارن و مد سنکرون رو ندارن – البته این مد سنکرون هم کاربرداش خاصه و من ندیدم تا حالا – مثلا برا بحث ارتباط چند تایی میتونه مفید باشه – که من تا الان ندیدم جایی استفاده بشه – معمولا از پروتکولهای دیگه استفاده میشه – حالا اگه از کلمه مخفف شده بالا حرف اس رو حذف کنیم میشه
      UART
      ===========
      SPI – I2C
      این دو هم دو روش ارتباطی مجزا از هم هستن – حالا این که کی و کجا باید از کدوم استفاده کنیم رو دقیقا خودم نمیدونم و دارم شروع میکنم دربارشون مطالعه کنم اگه عمری باشه

  26. Avatar

    مهمان

    فری

    سلام اقا مهدی یه راهنمایی کنید ماژول فرستنده و گیرنده مادون قرمز دارای ارتباط سریالو برد اردینو پایه ۰و ۱ همون ارتباط سریاله rxd.txd هست پس در واقع پایه ماژول معادون قرمز میشه همونrxd.txd به ۰و۱ پایه اردینو متصلش کرد؟
    و تو تغییرات کد
    [LEFT]ُSoftwareSerial ir(0,1);
    void setup()
    {
    ir.begin(9600);
    }[/LEFT]
    این دستور میذارم درست درنمیاد میشه تو این مرحله بگید تو تعریف دستور باید چکار کنم با تشکر

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

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

      مهدی دمرچیلو

      سلام
      لینک سنسورت رو بده – لینکی از یه فروشگاه تا ببینمش.

  27. Avatar

    مهمان

    علی

    سلام و خسته نباشید ماژول فرستنده و گیرنده مادون قرمز دارای ارتباط سریال چهار تا پایه داره که دوتاش تغذیه هستش دو تای دیگه میمونه rxd.txd دو پایه دیگه میشه به پایه ۰و ۱ اردینو اتصال داد؟

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

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

      مهدی دمرچیلو

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

      • Avatar

        مهمان

        علی

        خوب چنین ماژولی تو سایت افتاب رایانه هستش و ارتباط سریال ttl

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

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

          مهدی دمرچیلو

          لینک بده ببینم دقیقا کدوم رو میگی.

  28. Avatar

    مهمان

    فرزین

    سلام اقا مهدی گل یه سوال تو این بحث پایه اردینو rx , میشه سیگنال معادون قرمز بصورت صفر و یک ,ورود داد و توسط NRF24L01 انتقال دیتا داد و در سوی دیگر دریافت کرد

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

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

      مهدی دمرچیلو

      سلام – فرستنده مادون قرمز نیاز به گیرنده مادون قرمز داره – nrf هم همینطور
      بعد مادون قرمز ارسال دریافت دیتاش یه فرمت خاص خودشو داره – وگرنه با ۰ و ۱ کردن هم میشه مثل ربات مسیر یاب میشه اون وقت laugh

      • Avatar

        مهمان

        فرزین

        منظورم اینه که مثلا توسط ماژول گیرنده معادون قرمز سیگنال معادون قرمز دریا فت کرد و به rx داد و توسط NRF24L01 انتقال داد انطرف تر دوباره با NRF24L01 دریافت کرد و پایه tx همون اطلاعاتو به ماژول فرستنده معدون قرمز تحویل داد عملی هستش؟

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

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

          مهدی دمرچیلو

          بله، چرا عملی نباشه.

  29. Avatar

    مهمان

    سعید

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

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

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

      مهدی دمرچیلو

      اطلاعاتی چیزی بخوای به کامیوتر بفرستی – یا به یه دستگاه دیگه بفرستی – یا میکرو –
      یا ماژولی اطلاعاتش رو بخونی – بعضی ماژول ها اطلاعات رو به صورت uart به ما میدن –
      بخوای فاصله 100 متر به بالا با سیم – بین دو تا چیز ارتباط برقرار کنی – البته مدل 458 باید استفاده کنی و نه 232

      • Avatar

        مهمان

        سعید

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

  30. Avatar

    مهمان

    محمد

    سلام و خدا قوت
    فقط میشه گفت ممنون

  31. Avatar

    مهمان

    مریم

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

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

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

      مهدی دمرچیلو

      سلام
      به این میگن نرخ انتقال داده – انگلیسیش میشه buad rate مخففش میشه BR – کارش تعیین سرعت ارسال اطلاعات هستش – واحدت بیت بر ثانیه هستش یعنی در هر ثانیه چه تعداد بیت ارسال کنه – 9600 یعنی تا 9600 تا بیت میتونه در یه ثانیه ارسال کنه – هر کدوم از این BR یه مقدار خطا دارن که جداول مربوطه رو نگاه کنی میبینی که در ازای فرکانس میکرو و BR خاصی مقدار خطا 0 هستش و این بهترین گزینه برا کار با UART هستش – هر چند که شاید شما تا 1 سال هم متوجه خطای UART نشین!!!!

  32. Avatar

    مهمان

    کیمیاگر

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

  33. Avatar

    مهمان

    نیما

    آقا یک سوال ما با دستور serial.print()
    اطلاعات رو از فرستنده به گیرنده فرستادیم حالا سمت گیرنده چه کدی باید نویسیم که به اون اطلاعات دسترسی داشته باشیم؟

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

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

      مهدی دمرچیلو

      تو مطلب گفتم که!
      read
      readBytes
      readBytesUntil

  34. Avatar

    مهمان

    mohammad

    سلام واقعا ازت ممنونم

  35. Avatar

    مهمان

    Armen Soleimanian

    Serial.println(1.23456, 4); // “1.2346” should be
    Serial.println(1.23456, 4); // “1.2345”

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

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

      مهدی دمرچیلو

      1.23456 —-4—-> ~= 1.2346
      عدد به سمت بالا گرد شده است.

  36. Avatar

    مهمان

    آرمان مردانی

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

  37. Avatar

    مهمان

    کوزت

    ینی لذت بخش ترین صلوات های عمرم بود این سه تا صلوات آخر مطلب…. حال کردم ها … ممنون

  38. Avatar

    مهمان

    مصطفی

    عالی بود ممنون

  39. Avatar

    مهمان

    نازنین زهرا

    بازهم مطالبتون خیلی عالی بود دستتون درد نکنه

  40. Avatar

    مهمان

    سماد

    عالی هستید.عالی.
    اجرتون با خدا

  41. Avatar

    مهمان

    مهدیار313

    آقا سلام…اینطور که من در بخش ابتدایی این جلسه فهمیدمSERIAL_7N1 یعنی تعداد بیتای stop یکی…parity صفر و data هم ۷ تاست…یعنی اولین رقم از سمت چپ تعداد بیتهای data…حرف وسط نوع parity و عدد بعدی هم تعداد بیت های stop رو مشخص می کنن…ایشالا چرت و پرت نگفته باشم

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

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

      مهدی دمرچیلو

      سلام
      منون بابت راهنمایی give_rose
      به نظر میاد همین طوری که گفتی باشه ok

      • Avatar

        مهمان

        شاکری

        درسته و یه نکته دیگه اینکه مثلا SERIAL_7E1 ، دارای 7 بیت دیتا و یک بیت پاریته و یک بیت توقف است

  42. Avatar

    مهمان

    حسین

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

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

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

      مهدی دمرچیلو

      سلام
      والا حقیقتا وقت و وصله ندارم
      میتونید تو ورد کپی کنید و هنگام ذخیره کردن با فرمت pdf ذخیره کنید
      آموزش های بیشتر تو نت هستش
      اگه pdf کردی اینجا هم بزار تا بقیه هم استفاده کنن و به مطالب اضافه بشه این pdf ها

  43. Avatar

    مهمان

    مملی

    عالی بودزجگ

  44. Avatar

    مهمان

    مملی

    عالی آقا عالی

  45. Avatar

    مهمان

    ali

    سلام سایتتون خیلی خوبه خیلی ممنون
    من متوجه نشدم چرا rx به tx وصل میشه ممنون میشم توضیح بدین

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

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

      مهدی دمرچیلو

      سلام
      rx: پایه دریافت اطلاعات
      tx:پایه ارسال اطلاعات
      (تو قطعه ارسال کننده اطلاعات باید)پایه tx اش رو به پایه rx(تو قطعه دریافت کننده اطلاعات) وصل کرد
      ok?

  46. Avatar

    مهمان

    علیرضا قربانی

    سلام
    جناب مهندس آردوینو مگا ، ۴جفت ارتباط سریال داره.
    اگه به متن سایت خود آردوینو هم توجه کنین نوشته The Arduino Mega Has Three Additional Serial Ports یعنی علاوه بر اون پروت سریالی که بر روی تمام آردویونو ها قرار داره ، سه پورت سریال دیگه هم اضافه داره که جمعا میشه ۴ تا
    خوشحال میشم به سایت ما هم سری بزنید.شرکت ما هم در زمینه آردیونو و رسپبری فعالیت میکنه

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

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

      مهدی دمرچیلو

      سلام
      بله حرف شما درسته
      اون جا نوشته ۳ پورت سریال اضافه داره
      که من به این موضوع دقت نکردم laugh
      ممنون از شما good

  47. Avatar

    مهمان

    hosein

    سلام
    آقا یه نکته که مگا ۴تا جفت سریال داره پایه ۰ و ۱

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

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

      مهدی دمرچیلو

      سلام
      متن سایت آردوینو
      The Arduino Mega has three additional serial ports: Serial1 on pins 19 (RX) and 18 (TX), Serial2 on pins 17 (RX) and 16 (TX), Serial3 on pins 15 (RX) and 14 (TX).

      اینم لینک متن بالا
      https://www.arduino.cc/en/Reference/Serial

  48. Avatar

    مهمان

    mahdi

    salam
    sepas az amuzesh
    agr besurate pdf ya word basheh behtareh?

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

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

      مهدی دمرچیلو

      سلام
      خواهش
      چطوری pdf کنم؟؟؟
      برا کد های پروژه مشکلی پیش نمیاد؟؟؟؟
      فک کنم تو مرور گر گوکل کروم اگه ctrl+p رو بزنی فایل pdf رو میتونی ازش بگیری
      تو ته مطلب قسمت اشتراک گزاری یه گزینه هست برا pdf کردن مطلب
      ذخره هم کنی این صفحه رو فک کنم بتونی آفلاین بخونی
      good

  49. Avatar

    مهمان

    mbta

    خیلی دوست داشتم آردوینو را دنبال کنم ولی منبع اموزشی ترتیبی نداشتم . اگر همین طور ادامه بدهید ممنون می شوم . و دیگر موضوعات سایت arm و …. که دیگه ادامه ندادید را نیز ادامه بدهید . با تشکر