نمایش/عدم نمایش سایدبار
رفتن به بالای صفحه
أَللّهُمَّ ارْزُقْنی شَفاعَةَ الْحُسَیْنِ یَومَ الْوُرُودِ
مهدی دمیرچیلو

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

165

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

آموزش جامع آردوینو جلسه 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  و باس عملی تست کنیم.

خب خدا رحم کنه ، ۴ تا تابع رو گفتم شد 2130 واژه (تعداد خطوط این مطلب) shock ، حالا بقیه توابع رو بخوام بگم چقدر میشه ، انشاالله که با حوصله میشینیم و بقیش رو مینویسیم….. mail
اگه جایی چیزی رو نگفتم جا انداختم کم گفتم و… لطفا بهم بگید. pardon

 

امیدوارم از این مطلب ناچیز خوشتون اومده باشه >>>> اگه اومد تعجیل در فرج آقا و شادی روح شهدا و امام شهدا  ۳ صلوات بفرستید.(هزینه استفاده از این مطلب)

فعلا یا علی تا مطلب بعد

تعداد مطالب : 367 تا
جنگ ما فتح قدس را به همراه خواهد داشت. [ امام خمینی (ره) ]
بقیه جلسات : آموزش جامع آردوینو
ارسال دیدگاه
99
نظرات این مطلب بسته شده است.
  1. حسین

    مهمان

    حسین

    سلام
    ی مشکل ساده اما برای من بزرگ پیش اومده…تو رو خدا کمکم کنید …من به پایه انالوگ اردوینو due ، یه ولتاژ در حد پونصد میلی ولت میدم ولی دقت ADC خیلی پایینه و میخوام ولتاژ رفنرسشو (ازپایه Aref )بیارم پایین نمیشه …….ینی از دستور analog reference نمیشه ولتاژی پایین تر از ۳.۳ ولت داد . ینی وقتی external میکنمش خطا میده..چه کنم ؟ ولتاژ رفرنسی در حد 800 میلی ولت میخوام بشه….

  2. محمدصالح

    مهمان

    محمدصالح

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

  3. AMIRam

    مهمان

    AMIRam

    عزیزجان سلام
    میخوام ب وسیله پورت سریال اردویتو یه رله رو خاموش و روشن کنم ینی مثلا تو سریال مانیتورش نوشتم روشن روشن بشه خاموش زدم خاموش بشه

  4. محمد

    مهمان

    محمد

    دمتون گرم

  5. AMIRam

    مهمان

    AMIRam

    اقا سلام
    یه سوال داشتم
    میشه چنتا سنسور ب اردوینو وصل کنم حالا چ با خروجی انالوگ ک سنسورو ب پایه انالوگ وصل کنم چ دیجیتال ک ب پایه های دیجی تال وصل کنم و اطلاعات و داده هاشونو همه رو ب صورت هم زمان با ارتباط سریال به کامپیوتر ارسال کنم؟

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

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

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

      سلام / بله میشه.
      فقط باید به پروتکول ارتباطی سنسورها هم دقت کرد، مثلا جفت سنسورا uart باشن و شما از Uno استفاده کنید، uart کم میارید و باید میکروتونو تغییر بدید

  6. تاها

    مهمان

    تاها

    خدا شفا تون بده

  7. سعید

    مهمان

    سعید

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

    مشاهده پاسخ ها (2)
    • مهدی دمیرچیلو

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

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

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

      • تاها

        مهمان

        تاها

        برو باباااااااااااااااااااااااااااااااااااااااااااااا

  8. صدرا

    مهمان

    صدرا

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

  9. صدرا

    مهمان

    صدرا

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

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

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

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

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

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

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

  10. صدرا

    مهمان

    صدرا

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

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

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

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

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

  11. صدرا

    مهمان

    صدرا

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

  12. Matarata

    مهمان

    Matarata

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

  13. سالار

    مهمان

    سالار

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

    مشاهده پاسخ ها (1)
    • مهدی دمیرچیلو

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

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

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

  14. صادق

    مهمان

    صادق

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

  15. Ali

    مهمان

    Ali

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

    مشاهده پاسخ ها (2)
    • مهدی دمیرچیلو

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

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

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

      • Ali

        مهمان

        Ali

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

  16. یونس

    مهمان

    یونس

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  17. amir

    مهمان

    amir

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

    مشاهده پاسخ ها (1)
  18. دانیال

    مهمان

    دانیال

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

    مشاهده پاسخ ها (1)
  19. ariyana

    مهمان

    ariyana

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

      نه هستش هنوز

  20. سهراب

    مهمان

    سهراب

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  21. سهراب

    مهمان

    سهراب

    serial was not declared in this scope

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  22. سهراب

    مهمان

    سهراب

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  23. سین

    مهمان

    سین

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  24. arina

    مهمان

    arina

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

  25. علیرضا

    مهمان

    علیرضا

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

    مشاهده پاسخ ها (5)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

      • علیرضا

        مهمان

        علیرضا

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

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

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

          مهدی دمرچیلو

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

      • علیرضا

        مهمان

        علیرضا

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

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

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

          مهدی دمرچیلو

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

  26. هونام سنگ

    مهمان

    هونام سنگ

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

  27. سارا

    مهمان

    سارا

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  28. hotoii

    مهمان

    hotoii

    قسمت سوم نیست

    مشاهده پاسخ ها (1)
  29. هستی

    مهمان

    هستی

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  30. اصغر

    مهمان

    اصغر

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

  31. مهدی

    مهمان

    مهدی

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  32. فری

    مهمان

    فری

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  33. علی

    مهمان

    علی

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

    مشاهده پاسخ ها (3)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

      • علی

        مهمان

        علی

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

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

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

          مهدی دمرچیلو

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

  34. فرزین

    مهمان

    فرزین

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

    مشاهده پاسخ ها (3)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

      • فرزین

        مهمان

        فرزین

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

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

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

          مهدی دمرچیلو

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

  35. سعید

    مهمان

    سعید

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

    مشاهده پاسخ ها (2)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

      • سعید

        مهمان

        سعید

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

  36. محمد

    مهمان

    محمد

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

  37. مریم

    مهمان

    مریم

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  38. کیمیاگر

    مهمان

    کیمیاگر

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

  39. نیما

    مهمان

    نیما

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  40. mohammad

    مهمان

    mohammad

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

  41. Armen Soleimanian

    مهمان

    Armen Soleimanian

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  42. آرمان مردانی

    مهمان

    آرمان مردانی

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

  43. کوزت

    مهمان

    کوزت

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

  44. مصطفی

    مهمان

    مصطفی

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

  45. نازنین زهرا

    مهمان

    نازنین زهرا

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

  46. سماد

    مهمان

    سماد

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

  47. مهدیار313

    مهمان

    مهدیار313

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

    مشاهده پاسخ ها (2)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

      • شاکری

        مهمان

        شاکری

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

  48. حسین

    مهمان

    حسین

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  49. مملی

    مهمان

    مملی

    عالی بودزجگ

  50. مملی

    مهمان

    مملی

    عالی آقا عالی

  51. ali

    مهمان

    ali

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

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

    مهمان

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

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  53. hosein

    مهمان

    hosein

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

      سلام
      متن سایت آردوینو
      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

  54. mahdi

    مهمان

    mahdi

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

    مشاهده پاسخ ها (1)
    • مهدی دمرچیلو

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

      مهدی دمرچیلو

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

  55. mbta

    مهمان

    mbta

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