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

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

200

به نام خدا | سلام خدمت شما داشای گلم | عرضم به حظورون که توی این مطلب از سری مطالب آموزش آردوینو میخوام به آموزش SPI در آردوینو بپردازم و همین طور آموزش SPI مجازی رو بگم و همین طور راه اندازی IC 74HC595 رو با آردوینو و همچنین! راه اندازی IC 74hC165 با آردوینو رو به صورت خرکی(بی تربیت، این چه کلمات چیزی هستش که میگی laugh ) هم بگم.
و این مطلب رو هم قرار بود خیلی وقت پیش میزاشتم که قسمت نشد و الان میزارم به دو دلیل : ۱) برا مطلب آموزش نوشتن کتابخونه برا nrf24l01 باید توابع Spi رو قبلش گفت و نمیشه نگفت و پیچوند cry 2) درخواست یکی از دوستان heart 3) گفتیم یه مطلبی درباره آردوینو گزاشته باشیم sarcastic
آموزش جامع آردوینو جلسه ۱۴ SPI AND Virtual SPI

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


SPI چیست : در جواب باید بگم که یه روش ارتباط بین دو چیز هستش، مثل usart، برا توضیح بیشتر برید تو نت سرچ کنید، حال توضیح دادن ندارم laugh
فرق Virtual SPI با SPI : اولی با کدنویسی و تعیین چند تا پایه از میکرو(هر پایه ای از میکرو که دوست داشتین) قابل اجرا هستش و دومی به صورت سخت افزاری داخل میکرو ها قرار داره و در این حالت حتما باید از پایه های خاصی از میکرو استفاده کنید.(عکس زیر)، برا توضیح بیشتر تو نت بسرچید  sarcastic

پایه های SPI در آردوینو

عکس زیر رو ببینید کافیه. diablo
پایه های SPI در آردوینو uno

Virtual SPI in Arduino

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

shiftOut
shiftOut : این تابع کارش تبدیل اطلاعات سریال به موازی هستش، و تنها کاربری که من از این تابع تا الان دیدم فقط تو آی سی ۷۴HC595 (و چیزای مشابه این) هستش، که یه IC 8 bit هستش.(اگه مدل های دیگه ای خواستین مثلا مدل ۱۶ بیتش رو، میتونید تو گوگل جمله مقابل رو بسرچید : "Serial to Parallel 16bit" البته میتونید ۲ تا از این آی سی ۵۹۵ رو بزارید کنار هم تا بشه ۱۶ بیت و...)
این آی سی ۷۴hc595 رو من قبلا ۲ تا مطلب دربارش گزاشتیم میتونید برید بخونید، ظرر نداره :
آموزش جامع کار با آی سی شیفت ریجستر ۷۴hc595
پروژه AVR آی سی شیفت ریجستر ۷۴hc595

فرم کلی این تابع به صورت زیر هستش :

البته اگه دو مطلب بالا رو بخونید نحوه کار این تابع رو متوجه میشید ولی در زیر یه کوچولو توضیح میدم diablo:
value : اطلاعاتی که قراره در خروجی نمایش داده بشه.
bitOrder : تو این قسمت باید MSBFIRST(اول بیت پر ارزش) یا LSBFIRST(اول بیت کم ارزش) رو بنویسیم که نحوه ارسال دیتا هستش. mosking
clockPin : اینم که از اسمش معلومه(پایه کلاک :-D) و به پایه SH_CP آی سی ۷۴hc595 وصل میشه.
dataPin : تعیین این که در خروجی بیت ۰ ارسال بشه یا ۱ ، این پایه باس به پایه DS آی سی ۷۴hc595 وصل بشه.

توجه ۱ : آی سی ۵۹۵ یه پایه داره به نام ST_CP که کارش نمایش دیتا هستش, دیتایی رو که بهش ارسال شده رو تعیین میکنه که در خروجی نمایش داده بشن یا نه, که جایی در تابع بالا نداره و ما باس خودمون تو پروژه ازش استفاده کنیم.
توجه ۲ : این پیاده پیاده سازی نرم افزاری spi هستش و پیاده سازی سخت افزاری spi رو هم بعدا میگم.(که پیاده سازی سخت افزاری سرعتش بیشتره ولی تنها روی پایه های خاصی کار میکنه)
جوک : بعد این همه مطلب؛ احتمالا خسته شدید، میخوام یه داستان تعریف کنم، یه مدتی بود یه سری از بچه ها میگفتن پیاده سازی نرم افزاری spi رو بگو....منم پیش خودم میگفتم پیاده سازی نرم افزاری دیگه چه سیغه(سیقه) ایه blush  ، توضیح موضیح هم بهمون نمیدادن که یعنی چی ، الان فهمیدم که اگه با کد نویسی spi رو را اندازی کنی بهش میگن " پیاده سازی سخت افزاری spi " ؛  rofl مردونه اگه همون موقع میگفتم منظور از نرم افزاری همون کد نویسی هستش کارشون رو راه مینداختم ولی dash ....کلمات غلمبه سلمبه به ما گفتن و ما هم ۲ هزاریمون که چیزه، تقصیر من چیه، تا جالا همچین چیزی رو نشنیده بودم و اطلاعاتی دربارش نداشتم. laugh .... خوب دیگه بسه...میدونم که خستگیتون در رفت bomb ....بریم سراغ ادامه مطلب. mail
توجه ۳ : حواستون باشه پایه هایی که تعریف میکنید و  در تابع بالا قرار میدید(پایه clockPin و dataPin) حتما باس خروجی تعریفشون کنید rtfm (که نحوه ورودی/خروجی کردن رو در جلسات اولیه گفتم)

راه اندازی آی سی ۷۴hc595 با آردوینو

در زیر ۲ تا پروژه میزارم که تقریبا شبیه هم هستن ولی .... بهتره ۲ تاش رو تجزیه و تحلیل کنید.

پروژه آردوینو ۱

 

پروژه اردوینو ۲

همون پروژه ۱ هستش فقط یکم تغییرش دادم.
شماتیک پروژه
پروژه اردوینو
کد های پروژه

دانلود پروژه آردوینو ۲

shiftout
خب این تابع هم دریافت اطلاعات سری هستش، و تابع قبل ارسال اطلاعات به صورت سری، اگه بخواین یه مقاله ای چیزی بنویسید این موضوع خوبی میشه که بخواین یه برد درست کنید برا spi مجازی، یا بهتره بگیم یه ماژول درست کنید(وقتی امروزه به یه pcb و یه مقاومت میگن ماژول، پس اینم ماژوله دیگه :-D) و این جوری میتونید یه ارتباط سریال دوطرفه درست کنید، با یه قطعه، با یه ماژول(امیدوارم منظورم رو گرفته باشید)
خب یه پروژه میزارم برا راه اندازی IC 74HC165 با این تابع، حالا بیا نحوه کار این IC رو بگو، کی حال داره، اصلا مهم نیست برا ما نحوه کار این IC، برا ما نحوه استفاده از این تابع مهم هستش.
توضیح پارامتر های این تابع : 

dataPin : پایه دیتا که به میکرو وصل میشه و قراره دیتای روی این پایه رو بخونیم.
clockPin : پایه کلاک.
bitOrder :  این قسمت باید MSBFIRST(اول بیت پر ارزش) یا LSBFIRST(اول بیت کم ارزش) رو قراربدیم که شیوه ذخیره کردن بیت ها در متغییر مربوطه هستش.
خروجی این تابع : این تابع هم یه مقدار صحیح بر میگردونه که ما میریزیمش داخل متغییر incoming

مثال های دیگه از این قسمت : 

  1. shiftIn Example 2.1
  2. ​Expanding the ATtiny85's IO Capacity with Shift Registers
  3. SN74HC165N

 

پروژه راه اندازه ۷۴HC165 با آردوینو

عکس پروژه
پروژه راه اندازه 74HC165

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

 

دانلود پروژه راه اندازی IC 74HC165

SPI in Arduino

توضیح توابع Spi در آردوینو

اینم کتابخونه مربوط به SPI که توابعی که در زیر توضیح میدم و ما ازشون استفاده میکنیم در این کتابخونه توضیح داده شده است، و باید در اول تموم پروژه هایی که میخوایم از SPI استفاده کنیم فراخونی کنیم این تابع رو و در اول کدهای پروژمون قرارش بدیم.

خروجی کردن پایه SS، که این پایه برا انتخاب تراشه( ای که قراره باهاش تبادل داده داشته باشیم) هستش، و باید یه پایه ا پایه های آردوینو رو به SS انتصاب بدید، تا با ۰ و ۱ کردن این پایه بتونیم قطعه های مختلفی رو انتخاب کنیم و بهشون دیتا بدیم یا ازشون دیتا بگیریم(در کل باهاشون تبادل داده داشته باشیم.)، میتونیم مثلا ۱۰ تا پایه SS تعریف کنیم و خروجیش کنیم و با ۱۰ تا قطعه از طریق SPI تبادل داده داشته باشیم.(در ادامه بازم توضیح میدم اینو فعلا زیاد گیر ندید/سخت نگیرید)

مقدار دهی اولیه به SPI به وسیله تنظیمات(روش کردن/فعال کردن  SPI) :

  • (تنظیم ریجستر ها و خارج شدن پایه های ۱۱-۱۲-۱۳ از حالت ورودی/خروجی شون و تبدیل شدن به پایه های SPI)
  • خروجی کردن پایه های SCK, MOSI, SS
  • صفر کردن پایه های SCK, MOSI و یک کردن پایه SS (این پایه برا انتخاب قطعه مورد نظر برای تبادل داده هستش، که اگه صفر اش کنیم قطعه مورد نظر انتخاب میشه، لذا ۱ اش میکنیم فعلا تا کاربر خودش این کار رو انجام بده و قطعه مورد نظرش رو انتخاب کنه تا تبادل داده شروع بشه، این پایه SS پایه خاصی رو ی میکرو نیست، و از اکثر پایه ها بردمون میتونیم به عنوان پایه SS استفاده کنیم، و به تعداد پایه های بردمون میتونیم به همون تعداد با شراشه های دیگه ارتباط برقرار کنیم، مثلا اگه ۱۰ تا پایه داریم، میتونیم با ۱۰ تا قطعه دیگه از طریق SPI ارتباط برقرار کنیم....بعدا توضیح میدم، فعلا همین مقدمه کافیه ^_^)

 

پایان دادن به SPI و بازگشت پایه های ۱۱-۱۲-۱۳ به حالت اولیه خودشون یعنی همون نقش ورودی و خروجی

SpeedMaximum : حداکثر سرعت تبادل داده، برای میکروهایی با فرکانس ۲۰MHz حداکثر سرعت میتواند ۲۰۰۰۰۰۰۰ باشد.(یعنی حداکثر سرعت spi در تبادل داده میتونه برابر فرکانس میکرو باشه)
توجه۱ : این سرعتی که اینجا قرار میدید، فرکانس کاری Spi هستش که باس در فرستنده و گیرنده حتما حتما برابر باشه، و این پارامتر باید فرکانس برد آردوینو تقسیم بر یه ضریبی باشه، که در توضیح تابع setClockDivider، توضیح میدم این موضوع رو و این که شما هر مقداری نمیتونید داخل این تابع قرار بدید.
توجه۲ : تو بحث توابع، وقتی تابعی رو ازش استفاده میکنی، به متغییر هایی که بهش میدی میگم پارامتر و تو تعریف تابع و یا اعلان تابع، متغییر هایش(اون متغییر های داخل پرانتز، جلوی نام تابع مد نظرم هستش) رو میگن آرگومان، فک کنم درست میگم، حالا یتونید تو نت هم بسرچید، اگه اشتب کردم بگید.
dataOrder : نحوه ارسال داده، اول بیت پرارزش(MSBFIRST) یا اول بیت کم ارزش(LSBFIRST)، هممون رو حالت پر ارزش بزارید بهتره.
dataMode : تعیین مد، یکی از ۴ مرود زیر رو میتویند انتخاب کنید :
 SPI_MODE0، SPI_MODE1، SPI_MODE2، SPI_MODE3
توجه : ۳ تا تابع دیگه هستش که تقریبا کاری مثل کار تابع بالا میکنن، تابع بالا همزمان ۳ تا کار میکنه(تنظیم سرعت، نحوه ارسال دیتا و مد دیتا رو تنظیم میکنه) ولی دو تابع زیر هم هر کدوم یه کاری انجام میدن که از اسمشو نو توضیحاتی که من در بالا دادم کارشون و پارامتر هاشون معلومه.

خب میخوام پاراکتر های سه تابع بالا رو بگم : dataMode و dataOrder رو که در بالا توضیح دادم تا حدودی.^_^
divider : خب این جا ما میایم و فرکانس spi رو تعیین میکنیم که یه قانون کوچیک داره که باس رعایت کنید، در بردهای آردوینو بر مبنای AVR باید فرکانس میکرو رو بر یکی از اعداد ۲،۴،۸،۱۶،۳۲،۶۴ و یا ۱۲۸ تقسیم کنید، و مقدار حاصل رو تو این پارامتر قرار بدید، که حالت پیشفرض فرکانس ۴MHz (که ظریب تقسیم فرکانسیش میشه ۴ البته اگه فرکانس برد ۱۶MHz باشه)
در برد های آردوینو DUE : ضریب تقسیم فرکانسی از ۱ تا ۲۵۵ میتونه باشه(بر خلاف برد های AVR که ضریب تقسیم فرکانسی ۱-۲-۴-۸-۱۶-۳۲-۶۴-۱۲۸ رو داشتند.)، مقدار پیشفرض ۲۱ هستش که همون تنظیم کردن Spi بر روی ۴MHz هستش.
خب حالا به جای divider باس از مقادیر زیر استفاده کرد.(برای برد های آردوینو بر مبنای Avr)
SPI_CLOCK_DIV2
SPI_CLOCK_DIV4
SPI_CLOCK_DIV8
SPI_CLOCK_DIV16
SPI_CLOCK_DIV32
SPI_CLOCK_DIV64
SPI_CLOCK_DIV128

شروع تبادل اطلاعات، اون پارامتر mySettings همون تابعی هستش که در بالا تعریف کردیم، اون تابع بالایی رو در این جا قرار میدیم تا این تبادل اتطلاعات با این تنظیمات شروع بشه.
توجه : بعد از فراخونی تابع بالا باید Slave مورد نظر رو انتخاب کرد(همون پایه SS که فک کنم مخفف Slave Select باشه...فک کنم) که برا انتخاب Slave  مورد نظر، باید پایه SLAVE اون قطعه رو (مقدارش رو) ۰ کنید (با ۰ فعال و با ۱ غیر فعال میشه.)

پایان دادن به تبادل اطلاعات.
توجه : قبل از فراخونی این تابع، پاید پایه Slave قطعه ای که باهاش تبادل اطلاعات میکردید رو ۱ کنید(غیر فعال کنید)

خب این چند تا تابع برای ارسال و دریافت داده به فرم ۸بیتی(۱بایتی) و یا ۱۶بیتی(۲بایتی) هستند.
val : متغییری که قراره ارسال بشه.(۸بیتی باید باشه)
val16 : متغییری که قراره ارسال بشه(۱۶ بیتی باس باشه)
buffer و size : آرایه ای به نام buffer که به طول size قراره از دیتاهای داخل خونه اش ارسال بشه.
توجه : هر ۳ تابع دیتای دریافتی رو برمیگردونن؛

  • برا دریافت داده از طریق تابع اولی : باید یه متغییر ۸ بیتی براش تعریف کرد.
  • تابع دومی : یه متغیر ۱۶بیتی برا دریافت دیتای این تابع باس تعریف کرد.
  • تابع آخری: باس یه آرایه برا دریافت دیتای این تابع تعریف کرد.

فک کنم درست گفتم، اگه اشتب کردم بگید تا تصحیح کنم.

مثال ها و پروژه هایی از Spi

فعلا لینک زیر رو ببینید تا بعدا سر وقت مثال هایی خودم قرار بدم.
SPI transaction example

چیزایی که تو این مطلب نگفتم(بعدا یادم بندازید تکمیل کنم مطلب رو) : 

  1. مثالی از Spi
  2. توضیح متون داخل صفحه SPI library
  3. توضیح تابع usingInterrupt
  4. توضیح کامل ارتباط spi با چند دستگاه(البته عکس زیر رو هم ببینید متوجه میشید و در بالا هم توضیحاتی کم و بیش دادم، تو عکس زیر، اولی برا ارتباط با یه تراشه دیگه هستش و عکس مورد زیریش برا بیش از یکی)

ارتباط spi با چند دستگاه

این مطلب، قسمت SPI (و نه Virual SPI، البته اینم مهمه جای خودش ولی…) خیلی مهمه، چون در آینده که بخوام نوشتن کتابخونه رو آموزش بدم این مورد نیازه، و این که بخوای کد های کتابخونه ها رو بررسی کنی بازم این مورد نیازه و اگه بخوای یه IC رو راه اندازی کنی بازم این مورد نیازه، اگه بخوای پول دربیاری این مورد نیازه، اگه بخوای یه کتابخونه برا یه قطعه ای بنویسی که بر اساس نیاز مشتری تهیه باید بشه باید اینو یاد بگیری، اگه میخوای بری بهشت باید اینو یاد بگیری  sarcastic، از شوخی بگذریم اگ بخواین حرفه ای کار کنید باید برنامه نویسیتون رو قوی کنید و این پروتکول های ارتباطی، ADC، TIMER و… روخوب یاد بگیرید و فریب این همه کتابخونه آماده آردوینو رو هم نخورید.، چون با اینا شاید برا کارای ساده خوب باشه اما تو کارای حرفه ای عین خر تو گل sarcastic گیر میکنید و چیزی هم بلد نیستید و فقط بلیدید کتاب خونه آماده دانلود کنید و….(یکی بیاد به خودم بگه اینا رو laugh )
با توجه به این که در شرایط ناجوری این مطلب نوشته شده sarcastic ، اگه جایی اشتباه، کم، زیاد و… هستش بگید تا درست/تکمیل و… کنم.
خب اینم مطلبم تموم شد، اگه مفید بود براوتون، یه دعای کنید ما رو.(البته دعای خوب اااا، و نه دعای بد، یه دفه وسط نماز دعا نکنی کشتی داخل هواپیما، بیوفته پایین و بخوره تو ملاج من laugh  عجب دعایی شد sarcastic )
فعلا یا علی تا مطلب بعد(البته اگه زنده بودیم). bye

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

    مهمان

    حسین

    سلام.ممنون از سایت خوبتون.
    من میخوام با esp32 همزمان rfid , sd راه بندازم ولی نمیشه با اینکه ss های متفاوت دادم.
    میشه کمکم کنید واقعا کارم گیره؟؟؟؟؟؟؟؟؟

  2. mehrdad

    مهمان

    mehrdad

    خیلی ممنون بابت اطلاعاتتون
    من دارم یه برد beaglebone به dac5535b متصل میکنم با پروتکل spi
    ممنون میشم با هم در ارتباط باشیم

  3. اقا علی گل

    مهمان

    اقا علی گل

    سلام!
    من از nrf24l01 استفاده می کنم ،اما، من از پین های دیجیتال SPI از پین 9-10-11-12-13 استفاده می کنم،
    من امیدوار بودم که بتونم CE، CSN، MOSI، MISO، SCLK را به خروجی های آنالوگ تبدیل کنم مثلا (A4-A0).
    من از طریق کتابخانه ها نتونستم کارمو راه بندازم ولی اینارو تو نت پیدا کردم:
    Pin 14 = Analog in 0
    Pin 15 = Analog in 1
    Pin 16 = Analog in 2
    Pin 17 = Analog in 3
    Pin 18 = Analog in 4
    Pin 19 = Analog in 5
    اما، همانطور که می ترسیدم، به سادگی تغییر اعداد به عدد پین آنالوگ کار نمی کند. (14-15-16-17-18)
    آیا حتی می تونم از پین های آنالوگ برای SPI استفاده کرد؟ (من می دونم که پین های آنالوگ می توانند به عنوان ورودی و خروجی دیجیتال استفاده شوند.)
    چه چیز دیگری باید آن را تغییر دهم تا آن را کار کنم؟ wink hi

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

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

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

      سلام –
      1-از SPI سخت افزای پیدا کن.
      2-پایه های sPI رو از شماتیک بردت پیدا کن موقعیتشو.

      • اقا علی گل

        مهمان

        اقا علی گل

        یعنی راهی هست که به غیر از پین 9-10-11-12-13 استفاده کرد من تازه کار هستم میشه بیشتر توضیح بدید
        با کتابخونه های spi هم کارم راه نیوفتاد
        spiسخت افزاری که همه جا میگن پین 9-10-11-12-13 هست wink good
        میشه پایه های انالوگ تبدیل کنم به spi در اردوینو اخه تو طراحیم به مشکل خوردم خواستم از پایه های انالوگ استفاده کنم به عنوان spi
        فقط و فقط برای استفاده { nrf24l01}

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

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

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

          برا UNO و MEGA با هم فرق دارن.

        • اقا علی گل

          مهمان

          اقا علی گل

          سلام از این که پیگیر هستم ناراحت نشید اخه جز شما کجا برم
          خوب اصل مطلب اینه که برای اردوینوuno خواستم استفاده کنم
          راهی هست پایه انالوگ بشهspi

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

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

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

            من اگه بلد باشم جواب میدم در حد توانم – چرا جواب ندم – جایی هم ببینم ملت دنبال کد آماده هستن جواب نمیدم.

            تو هر میکرویی پایه هایی برای SPI تعبیه شده – از پایه های دیگه بخوای برا نقش SPI استفاده کنی باید بری سمت استفاده از کتابخونه “SPI مجازی”
            حالا این SPI رو چیکار داری؟ چی میخوای راه بندازی دقیقا؟ چون الان برا آردوینو برا هر قطعه ای کتابخونه های زیادی به صورت آماده موجود هستش.

      • اقا علی گل

        مهمان

        اقا علی گل

        واقعا راهی نیست

      • اقا علی گل

        مهمان

        اقا علی گل

        برا uno

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

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

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

          سرچ کردم این عکس خوب بود : – پایه های 10 تا 13 برا SPI هستش همون طور که میبینی
          https://www.theengineeringprojects.com/wp-content/uploads/2018/06/Introduction-to-Arduino-UNO.png
          تو نظر اولت گفتی :

          من امیدوار بودم که بتونم CE، CSN، MOSI، MISO، SCLK را به خروجی های آنالوگ تبدیل کنم مثلا (A4-A0).

          یعنی چی؟ پایه های دیجیتال رو میخوای به عنوان خروجی آنالوگ استفاده کنی؟ خب با تایمر میشه این کارو کرد – با PWM
          اگه هم مشکل راه اندازی NRF رو داری که پایه های sPI آردوینو UNO رو عکسشو در بالا گزاشتم برات.

      • اقا علی گل

        مهمان

        اقا علی گل

        والا من فقط گفتم پایه های انالوگ رو میخام به عنوان spi استفاده کنم چون از خود پایهای اصلی spi میخام pwm بگیرم کد اماده نخواستم فقط گفتم راهی هست یا نه اگر هست بفرمایید

      • اقا علی گل

        مهمان

        اقا علی گل

        بابا دیگه اینقدراهم اماتور نیستیم بلدم حتی کد بنویسم نه که تجربم کمه گفتم از اینجا راهی بیابم پیشاپیش یا پساپس تشکر wink bye hi

  4. وحید

    مهمان

    وحید

    سلام مهندس خسته نباشی
    یه پروژه دارم که باید ماژول RFID (RC522) و NRF رو به اردوینو وصل کنم ، با هم کار نمیکنن ولی جدا جدا که وصل میکنم کار میکنن.
    پایه های CS هر کدوم رو هم جدا انتخاب کردم ممنون میشم راهنمایی کنید .
    توی سایت های مختلف فارسی و انگلیسی مطالبی نوشته ولی هیچ کدوم کار نمیکنن ، اگر ممکنه یه اموزش در این مورد بزاری ممنون میشم.

  5. جواد

    مهمان

    جواد

    سلام، در مورد مودهای SPI یه توضیحی میدید !!
    تشکر

  6. نسترن

    مهمان

    نسترن

    سلام با این برنامه که شما نوشتی ardunio میتونه به صورت slave هم عمل کنه؟
    ممنون میشم جواب بدید.

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

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

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

      سلام
      نمیدونم-چیزی خاطرم نی.

  7. نسترن

    مهمان

    نسترن

    سلام مثل همیشه این سایت کارمو راه انداخت. تشکر فقط فکر میکنم این تابع SPISettings(speedMaximum, dataOrder, dataMode) باید اینطوری باشه (SPISettings mySettings(speedMaximum, dataOrder, dataMode

  8. hanie

    مهمان

    hanie

    سلام. خسته نباشید. ممنونم از سایت خوب و مطالب عالی و کاملتون good
    میخواستم خواهش کنم که خودتون یه مثال از این مبحث spi بذارین. این مثالی که مال سایت آردوینو هستش فقط کد ها رو نوشته وشماتیک پروژه رو نذاشته و نمیدونم کجا و چجوری اجرا میشه unknw ممنون میشم راهنمایی کنین smile

  9. بهزاد

    مهمان

    بهزاد

    سلام استاد. وقتی ۲تا ماژول داریم که هردو ارتباط spi باشن و بخوایم به یه اردوینو وصلشون کنیم راه حل چیه؟
    ایا باید یکی رو بصورت spi مجازی تعریف کنیم؟

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

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

      مهدی دمرچیلو

      سذام.نه
      تو spi یه پایه ای به نام ss هستش که فک کنم مخففslave select هستش…..به کمک این پابه میتونیم ۱۲۸ تا دستگاه از طریق spi به میکرو وصل کنیم……چیزی که من یادم بود اینه

  10. پدرام

    مهمان

    پدرام

    سلام، آیا میشه برای کدویژن هم spi مجازی درست کرد؟ خیلی کارم گیر کرده

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

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

      مهدی دمرچیلو

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

  11. حسین

    مهمان

    حسین

    سلام این دستورو چجوری بنویسم (if(400>gas>200 ؟
    اشباست این ؟ کمک کن

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

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

      مهدی دمرچیلو

      سلام
      در مورد عملگرهای && و || تحقیق کن تو زبان c
      خب شما باید به صورت زیر بنویسید :
      if( gas>200 && gas<400)
      یعنی اگه از 200 بزرگتر بود و اگه از 400 کوچکتر بود اون وقت…

  12. حسین

    مهمان

    حسین

    مرسی خیلی خوبی تو خییییییر ببینی

  13. حسین

    مهمان

    حسین

    سلام خیلی ممنون از سایت عالیتون چند روزیه که آشنا شدم کلی دعاتون کردم …..خب بسه تعریف …..???
    یه سوال اینکه کتابخونه های جدیدی که تعریف میشه رو(مثلا کتابخونه ی ps در مورد ارتباط دسته بازی و ……) از کجا و چجوری پیدا کنیم و هم چنین آموزشش ممنون میشم که سایتی یا کتابی یا ….رو تعریف کنین چون تو خود سایت آردوینو چنین کتاخونه و توابعی رو ندیدم خواهش میکنم راهنمایییییییییی???

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

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

      مهدی دمرچیلو

      سلام
      والا من دسته بازی – کیبورد و موس کامپیوتر رو به آردوینو وصل کردم ولی موبایل ندارم که از پروژه فیلم بگیرم و بزارم تو سایت! فعلا درگیر موبایلم!

      • حسین

        مهمان

        حسین

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

  14. fateme

    مهمان

    fateme

    سلام دستتون درد نکنه که انقدر خوب و روان توضیح می دین
    ببخشید یه سوال :
    من میخوام با دو تا آردوینو uno و به وسیله ی دوتا ماژول nrf اطلاعات رد و بدل کنم
    چند ماهه دارم تلاش میکنم اما هنوز نتیجه نگرفتم
    تو نت خیلی گشتم یه مثال ساده پیدا کنم که مثلا کلمه ی hello رو بفرستم یا حتی یه led رو روشن کنم اما ندیدم
    خواهشم اینه که اگه شما تجربه کار با این ماژول رو دارین یه برنامه ساده در حد همین hello تو ایتتون بذارین
    یه سوال دیگه: من کتابخانه ی nrf رو دانلود کردم رفتم تو قسمت example هاش و ساده ترین مثالش که عنوانش getting start هست رو مطالعه کردم از قسمت loop اش چیزی نفهمیدم متاسفانه… میشه اگه میشه برام تویحش بدین؟ بعد تو این مثال اولش نوشته <include <spi.h# ولی دیه بقیه دستوراتی که راجب ارتباط spi شما تویح دادین توش نبود . حتی spi.begin هم ننوشته توش. من خیلی گیج شدم نمیدونم کی باید از اینا استفاده کنم کی نباید
    ببخشید طولانی شد.. شما امید آخرم هستین واقعا نمیدونم باید از کی کمک بخوام….
    تشکر

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

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

      مهدی دمرچیلو

      سلام
      یه کتابخونه برا این Nrf24l01 نوشتم که با دو تا آردوینو میتونی یه چت روم راه بندازی( فایل رو دانلود کن و پروژه داینامیک رو استفاده کن،) – فایل کتابخونه و … تو لینک زیر گزاشتم
      http://www.eca.ir/forum2/index.php?topic=119342.0

      • fateme

        مهمان

        fateme

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

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

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

          مهدی دمرچیلو

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

          • fateme

            مهمان

            fateme

            حتما اگر جواب بگیرم میفرستم

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

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

            مهدی دمرچیلو

            ممنون

          • fateme

            مهمان

            fateme

            سلام من هنوز موفق نشدم پروژه رو راه اندازی کنم تو قسمت سریال مانیتورهر چیزی که تایپ میکنم مشخصات بسته رو مینویسه اما دیتایی ردوبدل نمیشه و فقط پیغام data lose رو میده.
            لطفا راهنماییم کنید خیلی ممنون میشم

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

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

            مهدی دمرچیلو

            سلام
            کدوم پروژه؟
            تو مطلب مربوطه سوالتون رو مطرح کنید لطفا

          • fateme

            مهمان

            fateme

            اینجا مطرح کردم ممنون
            http://www.eca.ir/forum2/index.php?topic=118399.30

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

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

            مهدی دمرچیلو

            جواب دادم

          • fateme

            مهمان

            fateme

            راستی من سوالاتم رو تو تاپیکی که برای نظرات گذاشتین مطرح میکنم
            یعنی اینجا http://www.eca.ir/forum2/index.php?topic=118399.0
            ممنون میشم اگر براتون مقدور بود پاسخ بدین

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

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

            مهدی دمرچیلو

            حواب دادم، فقط قبلش خبرم کنید چون ممکنه سالی یه بار هم اون جا نیام(و ممکنه هر ساعت بیام اونجا laugh )

          • fateme

            مهمان

            fateme

            باشه ممنون

  15. مهندس

    مهمان

    مهندس

    مهندس دمت گرم خیلی مطالب جالبی گذاشتی،اللرین آقرمسه مهندس

    مشاهده پاسخ ها (1)
    • حسینی

      مهمان

      حسینی

      مثل همیشه عالی، خدا خیرت بده مهندس

  16. saman

    مهمان

    saman

    اقا کارت درسته واقعا دستت درد نکنه

  17. علیرضا

    مهمان

    علیرضا

    مرسی مهندس آموزشات عالیه
    ادامه بده

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

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

      مهدی دمرچیلو

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

      • حسین

        مهمان

        حسین

        سلام
        کابخانه های keyad , password , glcd , رو بگی عالیه

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

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

          مهدی دمرچیلو

          یه اشتباه بزرگی که به نظرم الکترونیکی ها میکنن اینه که رو ابردن به سمت استفاده از کتابخونه های آماده – حتی برا ساده ترین چیز ها negative