با رتبه بندی از 10 اهم تا 1 MOhm)؛

  • 2 مقاومت 4.7 کیلو اهم (از همان مجموعه)؛
  • دارت spochni (به عنوان مثال، محور خوب است)؛
  • کامپیوتر با آردوینو IDE.
  • 1 شرحرابط I2C

    پروتکل ارتباطی سریال IIC (همچنین I2C - مدارهای یکپارچه شده نیز نامیده می شود) از دو خط ارتباطی دو طرفه برای انتقال داده استفاده می کند که گذرگاه داده سریال نامیده می شود. SDA (داده های سریال)آن لاستیک ضربه خورده است SCL (ساعت سریال). همچنین دو خط برای زندگی وجود دارد. باس های SDA و SCL از طریق مقاومت ها به سمت گذرگاه زندگی کشیده می شوند.

    من دوست دارم یکی داشته باشم دستگاه سیمی (Master)این انتقال داده ها را آغاز می کند و سیگنال های همگام سازی را تولید می کند. نیز اندازه گیری می کند مدیریت دستگاه (Slave)، که داده ها را به رهبر منتقل می کند. پوسته دستگاه به یک آدرس منحصر به فرد اختصاص داده می شود و به دنبال آن دستگاه به آدرس جدید هدایت می شود. آدرس دستگاه در گذرنامه (دیتاشیت) مشخص شده است. بسته به تعداد سیم، حداکثر 127 دستگاه را می توان به یک باس I2C متصل کرد. سپس ربات ها را می توان به اتوبوس متصل کرد. Vaughn از داغترین اتصال پشتیبانی می کند.

    بیایید نگاهی گذرا به نمودار تبادل پروتکل I2C بیندازیم. تعدادی گزینه وجود دارد، بیایید به یکی از گزینه های گسترده تر نگاه کنیم. با یک تحلیلگر منطقی، متصل به اتوبوس های SCL و SDA، سرعت خود را افزایش دهید.

    استاد مبادله را آغاز می کند. برای این منظور، VIN شروع به تولید پالس های ساعت می کند و آنها را در امتداد خط SCL در یک بسته 9 عددی ارسال می کند. در همان زمان، خط داده SDA نمایش داده می شود آدرس ها را اضافه می کنمبنابراین لازم است پیوندهایی نصب شوند که با 7 پالس کلاک اول کلاک می شوند (از محدوده آدرس ها: 2 7 = 128 منهای آدرس صفر). نبرد تهاجمی شهرک - تسه کد تراکنش(بخوان یا بنویس) و یک بیت دیگر - بیت تایید(ACK) برای تأیید اینکه دستگاه درخواست را دریافت کرده است. در صورت عدم دریافت تایید، تبادل به پایان می رسد. یا استاد همچنان خودش را مجبور می کند که دوباره بپرسد.

    این مورد در زیر نشان داده شده است. برای مثال در فاز اول باید دستگاه را از روی لاستیک کار کرد. مشاهده می شود که استاد در تلاش است از دستگاه با آدرس 0x27 ارتباط برقرار کند، اما تایید (NAK) را رد نمی کند. مبادله به پایان می رسد.


    حال به باس I2C دستگاه ها وصل شده و عملیات را تکرار می کنیم. وضعیت تغییر کرده است. اولین بسته با آدرس یک تأییدیه (ACK) را به عنوان وارد شده دریافت کرد. مبادله ادامه یافت. اطلاعات نیز با استفاده از پیام های 9 بیتی منتقل می شود، اما اکنون 8 بیت طول می کشد احترامو 1 بیت - بیت تایید otrimannya ما داده های بایت پوست را انجام می دهیم. اگر در هر زمانی اتصالات قطع شد و تایید نرسید، Master انتقال را پین می کند.

    2 پیاده سازی I2Cدر آردوینو

    Arduino vikorist برای ربات های دارای رابط I2C، دو پورت. به عنوان مثال، آردوینو UNO و آردوینو نانو پورت آنالوگ A4 از SDA و پورت آنالوگ A5 از SCL پشتیبانی می کنند.


    برای سایر مدل های برد، نوع اتصالات به شرح زیر است:

    3 کتابخانه "سیم"برای روبات z IIC

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

    تابعوظیفه
    شروع (آدرس) راه اندازی کتابخانه و اتصال به گذرگاه I2C. اگر آدرسی مشخص نشده باشد، دستگاه باید توسط ارائه دهنده پذیرفته شود. آدرس دهی 7 بیتی استفاده می شود.
    درخواست از() Vikorist توسط یک دستگاه سیمی برای تامین تعداد زیادی بایت از داده ها استفاده می شود.
    شروع انتقال (آدرس) شروع انتقال داده ها به دستگاه تعیین شده در پشت آدرس آهنگ؛
    endTransmission() اجرای انتقال داده به برده؛
    نوشتن() ثبت داده های وارد شده در درخواست؛
    در دسترس() تعداد بایت های اطلاعات موجود را به عنوان ورودی می چرخاند.
    خواندن() خواندن یک بایت از استاد به استاد یا از استاد به برده منتقل می شود.
    onReceive() عملکردی را نشان می دهد که وقتی راننده دستگاه ارسال از Master را رد می کند buta را فرا می خواند.
    بنا به درخواست() عملکردی را نشان می‌دهد که زمانی فراخوانی می‌شود که دستگاه سیمی انتقال از Slave را رد کند.

    4 من اتصالات I2C را نصب خواهم کردبه آردوینو

    بیایید ببینیم اتوبوس I2C با آردوینو چگونه کار می کند.

    بیایید فوراً یک نمودار، مانند یک نمودار کوچک، جمع آوری کنیم. بر اساس روشنایی LED، یک پتانسیومتر دیجیتال 64 موقعیت AD5171 (توضیحات فنی Div.) وجود دارد که به باس I2C متصل است. آدرس هایی که به پتانسیومتر مراجعه می کنیم 0x2c هستند (44 برای سیستم دهم).


    5 کنترل دستگاهاز طریق اتوبوس IIC

    بیایید به نمودارهای تبادل اطلاعات با پتانسیومتر دیجیتال AD5171 که در توضیحات فنی ارائه شده است نگاه کنیم:


    برای مشاهده نمودار ثبت داده ها در ثبت اینجا را کلیک کنید RDAC. این رجیستر برای سرویس پشتیبانی پتانسیومتر استفاده می شود.

    طرحی از کتابخانه "Wire": فایل_پتانسیومتر دیجیتال سیم Zrazki. علاقه مند به پازل آردوینو.

    #عبارتند از // شامل بایت کتابخانه "Wire" val = 0; // مقادیر به پتانسیومتر منتقل می شود void setup() ( Wire.begin(); // به عنوان Master به گذرگاه I2C متصل می شود } حلقه خالی() ( Wire.beginTransmission(44); // برقراری ارتباط از دستگاه با آدرس I2C "44" (0x2C) Wire.write(byte(0x00)); // دستور نوشتن رجیستر RDAC را صادر می کند Wire.write(val); // موقعیت پتانسیومتر 64 موقعیت را تنظیم کنید Wire.endTransmission(); // انتقال کامل I2C val++; // افزایش val توسط 1 if (val == 63) ( // پس از رسیدن به حداکثر مقدار پتانسیومتر val = 0; // reset val ) delay(500); }

    هنگامی که روشن می شود، خواهید دید که چگونه روشنایی LED به طور دوره ای افزایش می یابد و سپس خاموش می شود. در این حالت پتانسیومتر از طریق گذرگاه I2C به آردوینو اضافی متصل می شود.

    من یک محموله از چین دریافت کردم که حاوی یک ریز مدار Atmel EEPROM بود. من می خواهم به آردوینو وصل شوم. اما او اصلاً نمی خواهد کتابخانه آماده را خراب کند، بلکه می خواهد خودش شروع به ساختن کند. این مقاله کوتاه و خسته کننده است و می توان آن را در سه بخش تقسیم کرد:

    • تئوری رابط I2C.
    • EEPROM، توضیحات ریز مدارهای من (AT24C256) و اتصالات.
    • نوشتن یک کتابخانه قبل از کار از حافظه.

    بخشی از اولین، I2C و کتابخانه "Wire".

    پروتکل تبادل اطلاعات متوالی IIC(همچنین عناوین I2C- مدارهای یکپارچه، اتصال بین ریز مدار). در اوایل دهه 1980 توسط فیلیپس Semiconductors به ​​عنوان یک گذرگاه داخلی 8 بیتی ساده برای سیستم الکترونیکی که آن را کنترل می کند، توسعه یافت. پس چگونه است که حق vikoristannya yogo هزینه سکه Atmel داروسازی یوگو نامیده می شود TWI, Ale که حس آن در حال تغییر است.

    این چطوری کار میکنه؟

    برای انتقال از دو خط انتقال دو طرفه استفاده می شود. S.D.A.(Serial Data) گذرگاه داده سریال SCL(ساعت سریال) زمان بندی اتوبوس. دو اتوبوس توسط مقاومت هایی به سمت اتوبوس حیات مثبت کشیده می شوند. انتقال/دریافت سیگنال ها در خط 0، تک کار می کند خود را پشت قاب مقاومت های کششی نصب می کند.

    شما یک دستگاه سیمی می خواهید ( استاد) که انتقال داده را آغاز می کند و سیگنال های همگام سازی و کنترل دستگاه را تولید می کند ( برده) که داده ها را به رهبر منتقل می کند. پوسته دستگاه به یک آدرس منحصر به فرد اختصاص داده می شود و به دنبال آن دستگاه به آدرس جدید هدایت می شود. مشخص شده است که Leader میکروکنترلر ما است و Leader حافظه ما است. دستگاه سیم شروع به فشار دادن روی لاستیک می کند SCLبه صفر با خلوص آواز، و تایر S.D.A.تعدادی نوار را در آهنگ فشار دهید یا رها کنید و Single یا Nulik را ارسال کنید. انتقال داده ها با سیگنال START شروع می شود، سپس 8 بیت داده ارسال می شود و بیت 9 ارسال می شود. S.D.A.به منهای . انتقال با سیگنال STOP به پایان می رسد .

    کتابخانه "سیم".

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

    Wire.begin (آدرس)برای مقداردهی اولیه و اتصال به گذرگاه به عنوان دستگاه Master یا Master یک بار کلیک می کند. آدرس هیچ کار به عنوان یک دستگاه اصلی متصل است.

    Wire.beginTransmission (آدرس) انتقال را به دستگاه های I2C با آدرس مشخص شده شروع می کند.

    Wire.endTransmission() به انتقال داده ها به led اشاره دارد. تابع مقادیر بایت را می چرخاند:

    • 0 - موفقیت
    • 1 داده برای پر کردن بافر انتقال بسیار طولانی است.
    • 2 - NACK در ساعت ارسال آدرس دریافت شد.
    • 3 - NACK در هر ساعت انتقال داده دریافت می شود.
    • 4- سایر فواید.

    Wire.write()داده های ضبط شده از دستگاه ارسال شده به دستگاه به دستگاه سیمی ارسال می شود یا در بایت ها برای انتقال از Master به دستگاه قرار می گیرد. در واقع داده ها را در بافر می نویسد. اندازه بافر 32 بایت a (منهای 2 بایت به آدرس، در واقع 30 بایت)، و بافر به تابع منتقل می شود. Wire.endTransmission().

    • Wire.write (مقدار)- ارزش: مقدار انتقال، یک بایت.
    • Wire.write (رشته)-رشته: ترتیب انتقال، توالی بایت.
    • Wire.write (داده، طول)-داده ها: آرایه ای از داده هایی که باید منتقل شوند، بایت ها. طول: تعداد بایت هایی برای انتقال.

    Wire.read()یک بایت را می خواند، که تعداد ارسال ها از دستگاه هدایت شده به اصلی یا هر تعداد ارسال از دستگاه سیمی به دستگاه سیمی است. به این معنی که بایت می چرخد: بایت دریافتی.

    اینها کارکردهای اصلی یک کتابخانه هستند و ما در طول مسیر به موارد دیگر نگاه خواهیم کرد))

    بخشی از یک دوست، EEPROM.

    EEPROM حافظه فقط خواندنی قابل برنامه ریزی با قابلیت پاک کردن الکتریکی) - PZP (EEPROM) را که یکی از انواع حافظه های غیر فرار (مانند PROM و EPROM) دوباره برنامه ریزی شده است، به صورت الکتریکی پاک می کند. یک حافظه از این نوع می تواند توسط داده ها تا یک میلیون بار پاک و فراموش شود.

    یک ماژول آماده EEPROM با میکرو مدار AT24C256 از Atmel با حجم 32 کیلوبایت برای من ارسال شد. برای شناخت این شگفتی فرصت مطالعه داریم برگه دادهخیلی خسته کننده و انگلیسی بنابراین می توانم نتیجه آماده عذابم را ببینم.

    مشخصات:

    • ولتاژ پایین و عمر استاندارد. VCC = 1.7 ولت تا 5.5 ولت.
    • مجموع فرکانس همگام سازی 400 کیلوهرتز (1.7 ولت) و 1 مگاهرتز (2.5 ولت، 2.7 ولت، 5.0 ولت).
    • سرزندگی: 1,000,000 چرخه ضبط.
    • سازمان های داخلی: 32768 صفحه x 8 بیت.

    visnovki:

    • W.P.- از رکورد محافظت کنید. اگر به GND متصل شوید، می توانید داده ها را روی پازل ضبط کنید.
    • A0…A2- لطفا آدرس ضمیمه را بپرسید.
    • Vcc- غذا به علاوه
    • GND- غذا منهای
    آدرس های حافظه:

    سه پایه توسط A0..A2 تنظیم شده است. اگر پایه به Gnd فشار داده شود، آنگاه مقدار بیت 0 است، اگر تا Vcc باشد، آنگاه 1 است. ریزمدار ویکورسیتی است. آدرس هشت بیتی، بیت باقیمانده انتخاب عملیات را نشان می دهد. اگر مقدار بیت زیاد باشد، عملیات خواندن شروع می شود و اگر مقدار آن کم باشد (صفر)، عملیات نوشتن آغاز می شود.

    اگر هر سه پین ​​روی GND فشار داده شوند و بخواهیم در حافظه بنویسیم، آدرس‌های دستگاه مانند 10100000 به نظر می‌رسند (کتابخانه "Wire" از آدرس‌های 7 بیتی استفاده می‌کند، ما همه چیز را در یک بیت سمت راست جمع می‌کنیم 0101000 0 0x50).

    ضبط ادای احترام به معما:

    برای ضبط از ابتدا به حافظه برمی گردیم با ضبط بیت در آدرس. سپس دو آدرس 8 بیتی اضافه می شود (بنابراین ما آدرس 0x8000 داریم)، ​​سپس یک بایت داده و یک سیگنال STOP. پس از این، EEPROM قبل از چرخه نوشتن هماهنگ داخلی tWR (زمان چرخه نوشتن 5 میلی ثانیه) وارد حافظه غیر فرار می شود. تمام سیگنال های ورودی
    برای یک چرخه ضبط ساعتی روشن شد و EEPROM صحیح نیست تا زمانی که ضبط کامل شود.

    ما بیشتر حفاری می کنیم و در برگه اطلاعات متوجه می شویم که حافظه ریز مدارها به صورت سازماندهی شده است 512 کنار هم 64 بایت سپس می توانیم تا 64 بایت اطلاعات در هر دستور بنویسیم. که برای آن تمام 64 بایت اطلاعات و تنها پس از آن سیگنال STOP را ارسال می کنیم.

    خواندن ادای احترام:

    با خواندن این داده ها، خوشحال خواهید شد. حافظه از سه گزینه خواندن پشتیبانی می کند:

    • آدرس دقیق را بخوانید؛
    • آدرس ویپادکوف را بخوانید.
    • خواندن مداوم؛

    حافظه آدرس باقی مانده رکورد را به خاطر می آورد و عمر آن را تغییر نمی دهد، بنابراین می توانیم بایت باقی مانده را بدون درج آدرس بخوانیم.

    باید آدرس را از اول بخوانیم یک دستور برای نوشتن ارسال کنیدو آن را به آدرسی که می خواهید بخوانید ارسال کنید( فراموش نکنید که آدرس ها از دو قسمت 8 بیتی تشکیل شده اند). سپس دستوری برای خواندن ارسال کنید و بایت خوانده شده را حذف کنید و همه چیز را با دستور STOP تمام کنید.

    خواندن بعدی می تواند از آدرس جریان یا از آدرس خروجی کامل شود و تا زمانی که میکروکنترلر سیگنال STOP را پیدا نکند ادامه خواهد داشت. با تغییر آدرس، حافظه پاک می شود و آدرس دهی از بین می رود.

    خوب، وقت آن رسیده است که تلاش کنید و یادداشت کنید:
    #عبارتند از // شامل کتابخانه #define EEPROM_ADDRESS 0x53 // تنظیم آدرس حافظه آدرس کلمه = 0; // آدرس های Cudi بایت ثبت می شوند data_send = 170; // Data void setup() ( Wire.begin(); // I2C Serial.begin(9600) را راه اندازی می کند؛ Serial.print ("نوشتن بایت در حافظه EEPROM...")؛ Serial.println (داده_ارسال)؛ سیم. startTransmission(EEPROM_ADDRESS) // شروع به ارسال Wire.write(address & 0xFF) می کند (//Data_send); بررسی وضعیت انتقال (وضعیت == 0)Serial.println ("Ok") , Wire.beginTransmission(EEPROM_ADDRESS);// برای خواندن داده ها از آدرس باز. (وضعیت == 0)Serial.println("OK"); // توقف انتقال Wire.requestFrom(EEPROM_ADDRESS, (بایت)1); // ارسال یک فرمان برای خواندن یک بایت داده بایت داده = 0; if (Wire.available ()) // بررسی کنید چه داده هایی باید خوانده شوند (data = Wire.read(); // read data) Serial.println (data, DEC); ) void loop() ()

    Wire.requestFrom(آدرس، مقدار) — Vikory توسط استاد برای نوشتن بایت ها از دستگاه سرامیکی استفاده می شود. این بایت ها را می توان با استفاده از متدهای available() و read() حذف کرد. اندازه بافر همان 32 بایت است.

    • آدرس : من یک آدرس 7 بیتی اضافه می کنم که از آن بایت ها دریافت می شود.
    • مقدار: تعداد بایت هایی که باید واکشی شوند.

    Wire.available()— تعداد بایت های موجود برای استخراج را با استفاده از read() می چرخاند.

    خوب، در اینجا یک نمونه از ورودی در حافظه ردیف "Hello Word" آورده شده است:

    #عبارتند از #define EEPROM_ADDRESS آدرس کلمه 0x53 = 0; char data_send = "Hello Word"; void setup() ( Wire.begin(); // Serial.begin(9600); Serial.print("Write byte to memory EEPROM..."); Serial.println (data_send); Wire.beginTransmission(EEPROM_ADDRESS); Wire.write(آدرس >> 8) Wire.write(data_send) // توقف انتقال Wire.requestFrom(EEPROM_ADDRESS, (byte)10);<10 ;i++) { if (Wire.available()) { data = Wire.read(); } Serial.write (data); } } void loop() { }

    سازماندهی حافظه:

    بنابراین معلوم نیست در اسناد تاریخی چه چیزی در این مورد نوشته شده است. من عملاً سعی می کنم از اینجا بروم. برگه داده می گوید که حافظه ریز مدارها به صورت سازماندهی شده است 512 کنار هم 64 بایت این یعنی چی؟ اگر بخواهیم بیش از 64 بایت در هر فریم بنویسیم، بگوییم پشت آدرس 0x40 (آدرس های طرف مقابل)، زمانی که آدرس از طرف دیگر فراتر می رود. دکتر میکرو مدار داخلی لطفا با آدرس در صفحه اول تماس بگیرید. و بایت های درخواست ها در صفحه اول ثبت می شوند و داده هایی که در آنجا ثبت شده اند حذف می شوند.

    برای خواندن چنین مرزهایی، دیتاشیت فقط می گوید که وقتی به آدرس پایان رسیدید، به طور خودکار به ابتدا (آدرس 0x00) منتقل می شوید.

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

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

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

    امروزه تعداد زیادی کتابخانه ایجاد شده است که به راحتی می توان آنها را در اینترنت پیدا کرد و به آنها دسترسی داشت. مهم است که اکثر کتابخانه ها تحت مجوز رایگان توزیع شوند، بنابراین نیازی به جستجو برای نسخه های "دزدان دریایی" نیست. Golovne، tse navchitisya.

    کتابخانه های استاندارد آردوینو

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

    لیست کتابخانه های موجود (همگی با توزیع آردوینو IDE ارائه شده اند):

    • EEPROM
    • اترنت / اترنت 2
    • فیرمتا
    • کریستال مایع
    • سروو
    • نرم افزار سریال
    • استپر

    مجموعه کتابخانه ها در یک آرشیو

    اگر زمان کافی برای تجزیه و تحلیل دقیق سایت‌های ناشناس ندارید و می‌خواهید همه چیزهایی را که برای کار با دستگاه‌های فعلی آردوینو نیاز دارید در یک آرشیو جمع‌آوری کنید، ما فهرستی از ۴۰ مورد از محبوب‌ترین کتابخانه‌ها را آماده کرده‌ایم. فقط آن را (پوشه کتابخانه ها) از پوشه آردوینو باز کنید.

    کتابخانه های صفحه نمایش، نشانگرها و نمایشگرها

    کتابخانه I2C

    این کتابخانه برای استفاده در دستگاه های جانبی با استفاده از پروتکل I2C در نظر گرفته شده است.

    باسن ویکورستان:

    #ifndef I2C_MASTER_H

    #define I2C_MASTER_H

    void I2C_init (void) - ایجاد یک شی، تنظیم شده به فرکانس صحیح برای اتوبوس.

    uint8_t I2C_start () - اتصال با یک دستگاه جدید برقرار شد.

    uint8_t I2C_write() - نوشتن داده ها در دستگاه پخش.

    uint8_t I2C_read_ack() - بایت را از دستگاه می خواند، بایت بعدی را می نویسد.

    کتابخانه LiquidCrystal

    کتابخانه استاندارد در Arduino IDE نصب شده است. برای استفاده با نمایشگرهای LCD کریستالی کمیاب طراحی شده است.

    باسن ویکورستان:

    #عبارتند از . همچنین برای اینکه نگران نوشتن نباشید، می توانید از طریق منوی Sketch – Import Library – LiquidCrystal متصل شوید.

    سازنده کلاس LiquidCristal (…) است. آرگومان ها rs، rw، en، do ... d7 هستند. 3 سیگنال اول RS، RW و Enable هستند. نمادهای d تعداد گذرگاه های داده را نشان می دهد که نمایشگر به آنها متصل است.

    void start (cols, rows) – روشی که رابط نمایش را مقداردهی اولیه می کند. آرگومان ها تعداد کاراکترهای یک ردیف (شکل ها) و تعداد ردیف ها (ردیف ها) هستند. این روش ممکن است ابتدا مورد سوال قرار گیرد.

    void createChar(num، data) - روش مورد نیاز برای ایجاد نمادهای koristuvach.

    کتابخانه UTFT

    کتابخانه استاندارد، لازم برای روبات های آردوینو با صفحه نمایش TFT در انواع مختلف. همه نمایش های پشتیبانی شده در یک سند همراه با کتابخانه ارائه می شوند.

    باسن ویکورستان:

    #عبارتند از

    UTFT(); - ایجاد یک کپی UTFT.

    textRus(char*st، int x، int y); - روشی که به شما امکان می دهد یک ردیف را از نشانگر نمایش دهید. به عنوان مثال، char * dht = "دما، C";

    textRus (string st, int x, int y); - نمایش ردیف از تنظیمات در پارامتر. به عنوان مثال، g.textRus("دما، C"، 0، 20);

    کتابخانه LedControl

    به شما امکان می دهد از نمایشگرهای هفت بخش استفاده کنید و مجموعه ای از LED ها را در یک ماتریس ترکیب کنید.

    باسن ویکورستان:

    #عبارتند از

    LedControl lc1 = LedControl();

    - برای مقداردهی اولیه کتابخانه مورد نیاز است. لازم است چهار آرگومان ترکیب شود - تعداد پین هایی که نمایشگر به آنها متصل است (3 آرگومان اول) و تعداد تراشه های متصل.

    writeArduinoOn7Segment () - تمام اعداد از 0 تا 15 را روی نمایشگر نمایش می دهد توابع Vikorist ()setChar برای کاراکترهای a، d و setRow() برای ایجاد یک طرح برای کاراکترهای از دست رفته.

    LedControl.shutdown() – خاموش کردن تصویر.

    setIntensity() – کنترل روشنایی.

    کتابخانه هایی برای روبات ها با تاریخ و ساعت آردوینو

    کتابخانه RTClib

    کتابخانه ای برای کار با ساعت واقعی که تعامل با آردوینو را آسان تر می کند.

    باسن ویکورستان:

    #عبارتند از

    RTC_DS1307 RTC; - لرزش سنسور (در این مورد DS1307).

    rtc.adjust(DateTime(Date, Time)); - تنظیم زمان و تقویم

    dayOfTheWeek () - روز هفته را نمایش می دهد. استدلال: 0 تا 6، 0 - هفته.

    کتابخانه Timelib

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

    باسن ویکورستان:

    #عبارتند از

    زمان()؛ - ایجاد یک کپی

    setTime(t); - روی ساعت تنظیم شده است. استدلال t - سال، زمان، ثانیه، روز، ماه و روز.

    timeStatus(); - مشخص کنید چه ساعتی تنظیم شده است.

    تنظیم زمان (تنظیم)؛ - وقت آن است که آن را درست کنیم.

    کتابخانه Ds1307

    کتابخانه برای تعامل دستی DS1307 با آردوینو با کتابخانه Wire.

    باسن ویکورستان:

    #عبارتند از

    کلاس DS1307RTC - ایجاد شی DS1307.

    SetTime() – زمان را تنظیم کنید.

    get() – RTC را می خواند، تاریخ استخراج شده را در قالب POSIX می چرخاند.

    تنظیم (time_t t) - تاریخ ثبت از RTC

    کتابخانه DS 3231

    به تاریخ و ساعت ماژول ds3231 اختصاص داده شده است.

    #include "ds3231.h"

    ساعت DS3231 (SDA، SCL)؛ – ایجاد شی DS3231، اتصال به خط ساعت و خط داده.

    getTime(); - تاریخ سالگرد را بخوانید.

    setDate (تاریخ، دوشنبه، سال)؛ - تاریخ تاسیس

    کتابخانه های سیستم آردوینو

    کتابخانه EEPROM

    کتابخانه های استاندارد برای کار با حافظه غیر انرژی (ضبط داده ها، خواندن) استفاده می شود.

    باسن ویکورستان:

    #عبارتند از

    EEPROM.read(); - ایجاد شی، خواندن بایت در آدرس از حافظه غیر فرار.

    EEPROM.write (آدرس، مقدار) - یک بایت در حافظه غیر فرار می نویسد.

    EEPROM.put () - ضبط یک سری اعداد از یک کمای شناور.

    EEPROM.get () - خواندن ردیف های اعداد شناور.

    مجموعه نرم افزار کتابخانه

    کتابخانه ای که به شما امکان می دهد رابط های بعدی را از هر پین دیجیتالی پیاده سازی کنید. همچنین به شما امکان می دهد تعدادی پورت بعدی را باز کنید که با سرعت 115200 باود کار می کنند.

    #عبارتند از

    SoftwareSerial mySerial (RX، TX) - شی ایجاد، آرگومان ها - اصول اولیه اتصالات RX و TX.

    Serial.begin(); – برای اتصال آردوینو و کامپیوتر روی پورت سیالیت نصب می کند.

    mySerial.overflow() – سرریز بافر ورودی.

    ریاضی کتابخانه

    شامل تعداد زیادی توابع ریاضی برای کار با اعداد شناور است.

    باسن ویکورستان:

    #عبارتند از

    ریاضی()؛ - ایجاد یک کپی از ریاضی.

    Serial.print("cos num = "); - کسینوس یک عدد را بچرخانید.

    Serial.println(fmod(double__x، double__y)); - چرخش مدول اعداد.

    زمانبندی کتابخانه

    طراحی شده برای روبات های دارای Arduino Due، که به شما امکان می دهد در حالت چند وظیفه ای کار کنید. در حال حاضر این یک کتابخانه آزمایشی است.

    باسن ویکورستان:

    #عبارتند از

    برنامه ریز؛ - ایجاد یک کپی

    Scheduler.startLoop() – به شما امکان می دهد تابعی را اضافه کنید که فوراً از loop() خارج می شود.

    yield() - به شما امکان می دهد پردازش را به وظایف دیگر منتقل کنید.

    کتابخانه های سروو موتورها و موتورها

    سرویس کتابخانه

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

    باسن ویکورستان:

    #عبارتند از

    سروو میسروو; - ایجاد یک شی برای سروموتور.

    myservo.attach(); - تعداد خروجی که سروموتور به آن متصل است.

    myservo.write(180, 30, true); - چرخش 180 درجه، سرعت 30، چرخش کامل.

    پله کتابخانه

    برای درمان موتورهای تک قطبی و دوقطبی خون ضروری است.

    #عبارتند از

    const int stepPerRevolution = ; - تعداد دفعاتی که طول می کشد تا موتور بچرخد.

    Stepper myStepper = Stepper(steps, pin1, pin2) – نمونه ای از یک کلاس را از تعداد مشخص شده مراحل و رئوس که موتور به آن متصل است ایجاد می کند.

    کتابخانه های حسگر آردوینو

    کتابخانه DHT

    #عبارتند از< DHT.h>

    DHT dht (DHTPIN، DHT11)؛ - سنسور را مقدار دهی اولیه می کند (در مورد DHT11).

    dht.begin(); - راه اندازی سنسور

    float t = dht.readTemperature(); - خواندن مقدار دمای جریان بر حسب درجه سانتیگراد.

    کتابخانه دالاس دما

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

    #عبارتند از

    DallasTemperature dallasSensors(&oneWire); - انتقال شی oneWire به ربات حسگر.

    در رجیستر قرار دهید

    printTemperature (SensorAddress); – برای بدست آوردن مقدار دمای فعلی اعمال می شود.

    کتابخانه اولتراسونیک

    ربات آردوینو توسط حسگر ارتعاش اولتراسونیک HC-SR04 محافظت می شود.

    #عبارتند از

    اولتراسونیک اولتراسونیک (تیگ، اکو) – شیء را بی‌حس کنید، آرگومان‌ها – تماس Trig و Echo contact.

    dist = ultrasonic.distanceRead(); - فاصله تعیین شده تا جسم است. استدلال - سانتی متر (CM) چی اینچ (INC).

    زمان () - خواندن مقدار ضربه در خروجی اکو، تبدیل آن به سیستم اعداد مورد نیاز.

    کتابخانه ADXL345

    طراحی شده برای استفاده با شتاب سنج ADXL345.

    باسن ویکورستان:

    #عبارتند از

    ADXL345_ADDRESS - شی ایجاد شده به آدرس آن اختصاص داده شده است.

    ADXL345_REG_DEVID - شناسایی دستگاه.

    ADXL345_REG_OFSX - محور X سرکوب شده.

    ADXL345_REG_BW_RATE – پشتیبانی از سرعت انتقال داده.

    کتابخانه BME280

    مناسب برای کار با سنسور دما، رطوبت و گیره BME280.

    باسن ویکورستان:

    #عبارتند از

    BME280_ADDRESS - شی BME280 ایجاد شده است که به آدرس آن اختصاص داده شده است.

    start(uint8_t addr = BME280_ADDRESS)؛ - سنسور ربات کاب.

    getTemperature - وسواس در دمای واقعی.

    getPressure - وسواس با یک رذیله جادویی.

    کتابخانه BMP280

    برای ربات های دارای سنسور فشار اتمسفر BMP280 مورد نیاز است.

    باسن ویکورستان:

    #عبارتند از

    BMP280_CHIPID - ایجاد یک نمونه، درج آدرس.

    getTemperature (float * temp); - حفظ دمای شدید

    getPressure(float *pressure); - برش دادن مقدار گیره.

    کتابخانه BMP085

    برای ربات های دارای سنسور گیره BMP085 مورد نیاز است.

    باسن ویکورستان:

    #عبارتند از

    Adafruit_BMP085 bmp; - ایجاد کپی BMP085.

    dps.init(MODE_ULTRA_HIGHRES، 25000، true); - معاون Vymiryuvannya، استدلال 25000 - ارتفاع بالاتر از سطح دریا (در این مورد 250 متر بالاتر از سطح دریا).

    dps.getPressure(&Pressure); - معاون تعیین شده است.

    کتابخانه اثر انگشت

    باید از اسکنر انگشت استفاده کنید.

    لب به لبویکیریستانیا:

    #عبارتند از

    انگشت Adafruit_Fingerprint = Adafruit_Fingerprint(&mySerial); - مبهوت شی Finger. قبل از اتصال هر ماژول، پارامتر برای عملیات با UART به سایت ارسال می شود.

    finger.begin(); - مقداردهی اولیه ماژول نوک انگشت.

    Func_sensor_communication(); - روی ماژول حسگر انگشت کلیک کنید.

    کتابخانه های ارتباطی

    سیم کتابخانه

    برای کار با رابط I2C دو سیمی مورد نیاز است.

    باسن ویکورستان:

    #عبارتند از

    Wire.begin () - مقداردهی اولیه کتابخانه، متصل به گذرگاه I2C.

    Wire.requestFrom() – Master را با بایت های دستگاه سخت افزاری پر می کند.

    Wire.beginTransmission() – آغاز انتقال به دستگاه.

    کتابخانه از راه دور

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

    باسن ویکورستان:

    #عبارتند از

    IRrecv irecv(RECV_PIN); - پین، قبل از هر گونه اتصال ІЧ پذیرفته می شود.

    SetPinAndButton (int ir1، int ir2، int pin) - به شما اجازه می دهد تا زمانی که مقادیر ir1، ir2 درخواست می شود، خروجی را پیکربندی کنید.

    کتابخانه GSM

    برای اتصال از طریق کارت GSM با شبکه GSM/GRPS مورد نیاز است. با این کمک، می توانید عملیاتی را انجام دهید که شامل استفاده از تلفن GSM، رسیدگی به تماس های صوتی و اتصال به اینترنت از طریق GRPS است.

    باسن ویکورستان:

    #عبارتند از

    GSM GSMAccess – نمونه ای از کلاس را مقداردهی اولیه می کند.

    gprs.powerOn() – افزایش عمر.

    GPRS - راه اندازی اتصال به اینترنت.

    GSM - اتصال مودم رادیویی.

    کتابخانه RFID

    برای اتصال آردوینو و ماژول RFID مورد نیاز است.

    باسن ویکورستان:

    #عبارتند از

    RFID rfid (SS_PIN، RST_PIN)؛ - ایجاد یک نمونه rfid، آرگومان ها - پین ها، به هر ماژول اتصال.

    rfid.init(); - راه اندازی ماژول RFID.

    کتابخانه MFRC 522

    برای اتصال آردوینو و ماژول MFRC522 مورد نیاز است.

    باسن ویکورستان:

    #عبارتند از

    MFRC522 mfrc522 (SS_PIN، RST_PIN)؛ - یک نمونه ایجاد شده از MFRC522، آرگومان ها خروجی ای را که ماژول به آن متصل است را نشان می دهد.

    mfrc522.PCD_Init(); - راه اندازی MFRC522.

    کتابخانه اترشیلد

    نسخه جدید https://github.com/jcw/ethercard

    برای اتصال آردوینو به شبکه محلی یا اینترنت لازم است. کتابخانه دیگر پشتیبانی نمی شود، نسخه جدید Ethercard. همچنین یک کتابخانه استاندارد اترنت وجود دارد.

    باسن ویکورستان:

    #include "EtherShield.h"

    #عبارتند از

    EtherShield es = EtherShield(); - تهیه یک صفحه وب

    ether.begin(sizeof Ethernet::buffer, mymac,); - شروع کار، آرگومان ها - آدرس های مک و شماره پورتی که خروجی CS به آن متصل است.

    کتابخانه Nrf24l01

    برای ربات های دارای ماژول رادیویی RF24 مورد نیاز است.

    باسن ویکورستان:

    #include "RF24.h"

    RF24 - سازنده یک نمونه جدید از درایور ایجاد می کند. قبل از انتخاب ماژول، باید یک نمونه ایجاد کنید و یک پین را قبل از اتصالات چیپ مشخص کنید (_cepin: فعال کردن پین ماژول، cspin: پین ماژول را انتخاب کنید).

    شروع – آغاز یک تراشه روباتیک.

    setChannel – کانال ارتباطی RF.

    setPayloadSize – تنظیم اندازه انتقال ثابت.

    getPayloadSize - انتخاب یک اندازه ثابت.

    کتابخانه TinyGPS

    خواندن اطلاعیه های GPGGA و GPRMC ضروری است. به شما کمک می کند اطلاعات مربوط به موقعیت، تاریخ، ساعت، ارتفاع و سایر پارامترها را بخوانید.

    باسن ویکورستان:

    #عبارتند از

    TinyGPS GPS; - ایجاد یک نمونه TinyGPS.

    encode() - ارسال داده های متوالی به شی، یک کاراکتر در یک زمان.

    gps.stats() – روش آمار. نشان می دهد که آیا داده های صحیح حذف شده اند یا خیر.

    کتابخانه ها در آردوینو IDE

    در میان تنوع کتابخانه ها، می توان 3 گروه اصلی را مشاهده کرد:

    • اینها کتابخانه هایی هستند که در ابتدا در هسته آردوینو IDE نصب می شوند. آنها نیازی به دانلود یا نصب اضافی ندارند، آنها بلافاصله پس از شروع فرآیند توسعه برای دانلود از برنامه در دسترس هستند.
    • کتابخانه‌های اضافی، کتابخانه‌هایی هستند که باید به‌طور مستقل خریداری شوند. این نوع کتابخانه شامل مجموعه ای از حسگرها، حسگرها و سایر اجزاء برای تسهیل کار آردوینو می باشد.
    • کتابخانه های تاخیری – به عنوان نوار کناری کتابخانه اضافی نصب می شوند که مستقیماً با آن کار نمی کند.

    ساده ترین راه برای کار با کتابخانه ها در آردوینو، بهره برداری از قابلیت های وسط آردوینو IDE است. بیایید در این مورد در آمار رسمی صحبت کنیم.

    صفحه نمایش ال سی دی- مهمان مکرر پروژه های آردوینو. اما در مدارهای تاشو ممکن است به دلیل نیاز به اتصال صفحه نمایش که کنتاکت های زیادی دارد، با کمبود پورت های آردوینو مشکل داشته باشیم. راه برون رفت از این وضعیت می تواند باشد I2C/IICآداپتوری که یک صفحه نمایش استاندارد آردوینو 1602 را با 4 پین اضافی به بردهای Uno، Nano یا Mega متصل می کند. این مقاله نشان می دهد که چگونه می توانید یک صفحه نمایش LCD را با رابط I2C وصل کنید، چگونه می توانید به کتابخانه ها دسترسی داشته باشید، یک مثال کوتاه بنویسید و به برنامه های معمولی نگاه کنید.

    صفحه نمایش کریستال مایع LCD 1602این اولین انتخاب برای نمایش ردیف هایی از نمادها در پروژه های مختلف است. این ارزان است، با تغییرات مختلف با رنگ های مختلف نور پس زمینه، می توانید به راحتی کتابخانه های آماده برای طرح آردوینو ایجاد کنید. اما بزرگترین ایراد این صفحه نمایش این است که نمایشگر دارای 16 عنصر دیجیتال است که حداقل 6 عدد از آنها وجود دارد. اگر هیچ مخاطبی وجود ندارد، باید یک برد آردوینو مگا بخرید یا از مخاطبین محافظت کنید، از جمله برای اتصال صفحه نمایش از طریق i2c.

    شرح مختصری از پین های LCD 1602

    بیایید نگاهی دقیق تر به فناوری LCD1602 بیندازیم:

    پوست درخت انگور معنای خاص خود را دارد:

    1. GND زمینی؛
    2. Kharchuvannya 5;
    3. تنظیم کنتراست مانیتور؛
    4. تیم، داده ها؛
    5. ضبط و خواندن داده ها؛
    6. فعال کردن؛

    7-14. خطوط داده؛

    1. پشتیبانی به علاوه؛
    2. منهای نورپردازی

    مشخصات نمایشگر:

    • نوع نمایش نمادین - امکان معرفی نمادها.
    • نور پس زمینه LED؛
    • کنترلر HD44780;
    • ولتاژ زنده 5 ولت؛
    • قالب بندی کاراکترهای 16x2؛
    • محدوده دمای عملیاتی: -20 ° C تا +70 ° C، محدوده دمای ذخیره سازی: -30 ° C تا +80 ° C.
    • بگذارید 180 درجه را نگاه کنم.

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

    طرح استاندارد برای اتصال مستقیم مانیتور به میکروکنترلر آردوینو بدون I2C به این صورت است.

    به دلیل تعداد زیاد کنتاکت هایی که به هم متصل هستند، ممکن است فضای کافی برای دریافت عناصر مورد نیاز وجود نداشته باشد. سوئیچ I2C تعداد دارت ها را به 4 و تعداد پین های اشغال شده را به 2 تغییر می دهد.

    صفحه نمایش LCD و شیلد برای آردوینو از کجا بخریم

    صفحه نمایش LCD 1602 (و نسخه 2004) بسیار محبوب است، بنابراین می توانید آن را هم در فروشگاه های آنلاین داخلی و هم در بازارهای خارجی به راحتی پیدا کنید. بیایید نگاهی به گزینه های موجود بیندازیم:

    ماژول LCD1602+I2C با صفحه آبی، همراه با آردوینو یک صفحه نمایش LCD1602 ساده (نور پس زمینه سبز) ارزانتر از 80 روبل صفحه نمایش LCD2004 بزرگ با I2C HD44780 برای آردوینو (نور پس زمینه آبی و سبز)
    نمایشگر 1602 با آداپتور IIC و چراغ های آبی نسخه دیگری از LCD1602 با ماژول I2C لحیم شده ماژول آداپتور پورت IIC/I2C/TWI/SPI برای صفحه نمایش 1602، مناسب برای آردوینو
    نمایش با سوئیچ های RGB! LCD 16×2 + صفحه کلید + Buzzer Shield برای آردوینو شیلد برای آردوینو با دکمه ها و صفحه نمایش LCD1602 LCD 1602 صفحه نمایش LCD برای چاپگر سه بعدی (کنترل کننده هوشمند برای RAMPS 1.4، Text LCD 20×4)، ماژول کارت خوان SD و MicroSD

    شرح پروتکل I2C

    ابتدا، اجازه دهید به طور خلاصه در مورد اتصال صفحه نمایش به آردوینو از طریق آداپتور i2c صحبت کنیم.

    I2C/IIC(Inter-Integrated Circuit) پروتکلی است که در ابتدا برای اتصال مدارهای مجتمع در وسط یک دستگاه الکترونیکی ایجاد شد. این طرح متعلق به شرکت فیلیپس است. پروتکل i2c مبتنی بر یک گذرگاه 8 بیتی vicorstan است که برای اتصال بلوک‌های الکترونیکی که آن را کنترل می‌کنند، و سیستم آدرس‌دهی که می‌تواند در امتداد سیم‌های مشابه با و ساختمان‌های بیرونی متصل شود، مورد نیاز است. ما به سادگی داده ها را به یک یا دستگاه دیگر ارائه می دهیم و شناسه عنصر مورد نیاز را به بسته های داده اضافه می کنیم.

    ساده ترین مدار I2C می تواند یک دستگاه سیمی (معمولاً یک میکروکنترلر آردوینو) و بسیاری از دستگاه ها (مثلاً یک صفحه نمایش LCD) را در خود جای دهد. هر دستگاه دارای یک آدرس در محدوده 7 تا 127 است. لازم نیست دو دستگاه با آدرس یکسان در یک مدار باشند.

    برد آردوینو از i2c در سطح سخت افزاری پشتیبانی می کند. برای اتصال دستگاه ها با استفاده از این پروتکل می توانید از پین های A4 و A5 استفاده کنید.

    در ربات I2C می توانید چندین مزیت را مشاهده کنید:

    • کار به حداقل 2 خط نیاز دارد - SDA (خط داده) و SCL (خط همگام).
    • اتصال تعداد زیادی دستگاه سیمی
    • تغییر ساعت ناآرامی
    • برای کنترل کل مجموعه دستگاه ها فقط یک میکروکنترلر مورد نیاز است.
    • هر تعداد ریز مداری که به یک باس متصل باشد فقط با یک ظرفیت مرزی احاطه شده است.
    • سطح بالایی از صرفه جویی در داده ها از طریق یک فیلتر خاص، پاشش های تولید شده در مدارها را سرکوب می کند.
    • یک روش ساده برای تشخیص عیوب رخ داده و رفع عیوب.
    • گذرگاه قبلاً در خود آردوینو ادغام شده است، بنابراین نیازی به گسترش بیشتر رابط اتوبوس نیست.

    ندولیکی:

    • بایاس اصلی در خط 400 pF است.
    • برنامه ریزی کنترلر I2C بسیار مهم است، زیرا تعدادی دستگاه مختلف در اتوبوس وجود دارد.
    • با تعداد زیادی دستگاه، محلی سازی خرابی دشوار می شود، زیرا یکی از آنها به طور ملایم یک عامل سطح پایین را نصب می کند.

    ماژول i2c برای LCD 1602 آردوینو

    بهترین و ساده ترین راه برای نصب نمایشگر i2c در آردوینو، خرید یک صفحه نمایش آماده با پروتکل داخلی است. اما چنین صفحه نمایش هایی نمی توانند بوی بد را تحمل کنند، ارزان نیست. و محور صفحه نمایش های استاندارد مختلف قبلاً استحکام زیادی ایجاد کرده است. بنابراین، امروزه در دسترس ترین و محبوب ترین گزینه خرید و جایگزینی یک ماژول I2C مجاور - یک آداپتور است که به نظر می رسد:

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


    برای اتصال به پرداخت آردوینو، از خروجی i2c استفاده کنید. در صورت لزوم، منبع خارجی را برای روشنایی وصل می کنیم. با کمک یک مقاومت تریم داخلی، می توانیم تنظیمات کنتراست J را تنظیم کنیم

    در بازار می توانید ماژول های LCD 1602 را با آداپتورهای لحیم کاری پیدا کنید، نصب آنها تا حد امکان ساده شده است. اگر همان آداپتور را خریداری کردید، باید از قبل آن را به ماژول لحیم کنید.

    اتصال صفحه نمایش RK به آردوینو از طریق I2C

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

    اگر از آداپتور مخصوص i2c استفاده می کنید، ابتدا باید آن را به ماژول صفحه لحیم کنید. مهم است که در آنجا رحم کنید، می توانید با چنین طرحی درگیر شوید.


    یک مانیتور RCD با پشتیبانی از i2c قبل از پرداخت هزینه چهار دارت اضافی متصل می شود - دو دارت برای داده، دو دارت مادام العمر.

    • اتصال GND به GND روی برد متصل است.
    • VCC در 5 ولت است.
    • SCL به پایه A5 متصل است.
    • SDA به پین ​​A متصل است.

    همین! شبکه های طولانی سفر که در آن گم شدن آسان است. در این صورت به سادگی می توانیم تمام پیچیدگی اجرای پروتکل i2C را به کتابخانه ها بسپاریم.

    کتابخانه هایی برای روبات ها با صفحه نمایش LCD i2c

    برای برقراری ارتباط بین آردوینو و LCD 1602 از طریق گذرگاه I2C، حداقل به دو کتابخانه نیاز دارید:

    • کتابخانه Wire.h برای کار با I2C قبلاً در برنامه استاندارد Arduino IDE گنجانده شده است.
    • کتابخانه LiquidCrystal_I2C.h که شامل طیف گسترده ای از دستورات برای کنترل مانیتور از طریق گذرگاه I2C است، به شما امکان می دهد طرح ساده تر و کوتاه تری ایجاد کنید. علاوه بر این لازم است کتابخانه را نصب کنید پس از اتصال صفحه نمایش، باید کتابخانه LiquidCrystal_I2C.h را نصب کنید.

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

    #عبارتند از #عبارتند از // اتصالات کتابخانه //#include // اتصال یک کتابخانه جایگزین LiquidCrystal_I2C lcd(0x27,16,2); // آدرس I2C (عریض ترین مقدار) را مشخص کنید، و پارامترهای صفحه نمایش را مشخص کنید (برای LCD 1602 - 2 ردیف 16 کاراکتری هر کدام //LiquidCrystal_PCF8574 lcd(0x27)؛ // گزینه ای برای راه اندازی void کتابخانه PCF8574 ( lcd. init ( // راه اندازی صفحه نمایش lcd.backlight( // وصل کنید صفحه نمایش lcd.setCursor(0,0). .setCursor(0,1) // مکان نما را روی سر یک ردیف دیگر قرار دهید lcd.print("ArduinoMaster" // تایپ متن در یک ردیف دیگر ) void loop ( ) ;

    شرح عملکردها و روش های کتابخانه LiquidCrystal_I2C:

    • home() و clear() – اولین تابع به شما امکان می دهد مکان نما را به بالای صفحه بچرخانید، در حالی که همه چیزهایی را که قبلاً روی مانیتور بود نمایش می دهد.
    • Write(ch) – به شما امکان می دهد یک کاراکتر ch را روی صفحه بنویسید.
    • مکان نما() و noCursor() - نشانگر/پنهان کردن مکان نما بر روی صفحه نمایش.
    • blink() و noBlink() – مکان نما چشمک می زند/چشمک نمی زند (اگر نمایش آن قبلاً فعال بوده باشد).
    • display() و noDisplay() – به شما امکان می دهد صفحه نمایش را متصل یا روشن کنید.
    • scrollDisplayLeft() و scrollDisplayRight() - صفحه را با یک علامت چپ دست/راست اسکرول می کند.
    • autoscroll() و noAutoscroll() – به شما امکان می دهد حالت اسکرول خودکار را روشن/خاموش کنید. برای کدام حالت پوسته، نماد جدیدی در همان مکانی که قبلاً روی صفحه نوشته شده بود ثبت می شود.
    • leftToRight() و rightToLeft() – درج مستقیم متن نمایش داده شده – از چپ به راست یا راست به چپ.
    • createChar(ch، bitmap) – یک کاراکتر با کد ch (0 – 7) ایجاد می کند، با استفاده از آرایه ای از بیت مپ های بیت مپ برای ایجاد نقاط سیاه و سفید.

    کتابخانه جایگزین برای روبات ها با صفحه نمایش i2c

    در برخی موارد، هنگامی که کتابخانه اختصاص داده شده با دستگاه های مجهز به کنترل کننده های PCF8574 آسیب دیده است، ممکن است خطاهایی رخ دهد. جایگزینی برای این گزینه کتابخانه LiquidCrystal_PCF8574.h است. او در حال گسترش LiquidCrystal_I2C است، که دلیل مشکلی برای پیروزمندان نیست.

    مشکل در اتصال صفحه نمایش ال سی دی i2c

    اگر پس از کلیک بر روی یک طرح، پیام مورد نظر را روی صفحه نمایش مشاهده نکردید، روی این اقدامات کلیک کنید.

    اول از همه، می توانید کنتراست مانیتور را افزایش یا تغییر دهید. اغلب کاراکترها از طریق حالت های کنتراست و نور قابل مشاهده نیستند.

    اگر کمکی نکرد، بررسی کنید که کنتاکت ها به درستی وصل شده باشند و منبع تغذیه زنده وصل شده باشد. اگر از آداپتور i2c سازگار استفاده کرده اید، نقطه لحیم کاری کنتاکت ها را دوباره بررسی کنید.

    یکی دیگر از دلایل رایج برای از دست دادن متن روی صفحه نمایش ممکن است آدرس های i2c نادرست باشد. سعی کنید در طرح ها آدرس دستگاه را با 0x27 0x20 یا 0x3F به خاطر بسپارید. توزیع کنندگان مختلف ممکن است آدرس های متفاوتی برای پرداخت داشته باشند. اگر این کمکی نکرد، می‌توانید طرح اسکنر i2c را اجرا کنید، که به تمام اتصالات دستگاه نگاه می‌کند و آدرس‌های آنها را با استفاده از روش brute-force تعیین می‌کند. طرحی از یک اسکنر i2c.

    اگر صفحه نمایش هنوز کار نمی کند، سعی کنید آداپتور را لحیم کنید و ال سی دی را مانند همیشه وصل کنید.

    ویسنووک

    در این مقاله به منبع تغذیه اصلی صفحه نمایش ال سی دی در پروژه های تاشو آردوینو، در صورتی که نیاز به صرفه جویی در هزینه اضافی روی برد داشته باشیم، پرداختیم. یک آداپتور ساده و ارزان i2c به شما امکان می دهد یک صفحه نمایش LCD 1602 را تنها با استفاده از 2 پین آنالوگ متصل کنید. در موقعیت های بیشتر، شما می توانید حتی مهم تر باشید. هزینه در دسترس بودن - نیاز به استفاده از ماژول اضافی - مبدل و کتابخانه. به نظر ما قیمت انعطاف پذیری اصلا بالا نیست و توصیه می کنیم در پروژه ها از این انعطاف پذیری بهره ببرید.

    شرح کتابخانه Wire

    این کتابخانه به شما امکان می دهد با دستگاه های I2C/TWI ارتباط برقرار کنید. در بردهای آردوینو با طرح R3 (طراحی 1.0)، SDA (خط داده) و SCL (خط ساعت) روی پین های پایه AREF قرار دارند. Arduino Due دارای دو رابط I2C/TWI است: SDA1 و SCL1 روی پایه AREF و خطوط اضافی روی پایه‌های 20 و 21 قرار دارند.

    جدول زیر عدم نصب TWI بر روی بردهای مختلف آردوینو را نشان می دهد.

    با شروع آردوینو 1.0، این کتابخانه توابع Stream را معرفی می کند، بنابراین با دیگر کتابخانه های خواندن/نوشتن عالی کار می کند. از این طریق، send() و receive() با read() و write() جایگزین می شوند.

    توجه داشته باشید

    نسخه های 7 و 8 بیتی آدرس I2C را پیدا کنید. 7 بیت دستگاه را شناسایی می کند و بیت 8 نشان می دهد که آیا دستگاه در حال نوشتن یا خواندن است. کتابخانه Wire شامل آدرس های 7 بیتی است. اگر توضیح فنی یا نمونه ای از کدی دارید که آدرس های 8 بیتی را طراحی می کند، باید بیت پایین را بیرون بیاورید (برای از بین بردن مقدار یک بیت سمت راست)، آدرس را از 0 به 127 کاهش دهید. آدرس‌های 0 تا 7 ویکوریزه نشده‌اند، قطعات رزرو شده‌اند، اولین آدرسی که می‌توان انتخاب کرد 8 است. لطفاً توجه داشته باشید که هنگام اتصال پین‌های SDA/SCL، مقاومت‌ها باید بالا بیایند. گزارش به تعجب در لب به لب. روی برد MEGA 2560 مقاومت هایی وجود دارد که باید روی پایه های 20 و 21 کشیده شوند.

    شرح روش ها

    Wire.begin()

    شرح

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

    نحو

    Wire.begin (آدرس)

    مولفه های

    آدرس: آدرس 7 بیتی اختصاص داده شده به دستگاه (لازم نیست). اگر وظایفی وجود نداشته باشد، برد به عنوان اصلی به اتوبوس متصل می شود.

    معنی آن چیزی که می چرخد

    لب به لب

    لبه های دستگاه سرامیکی در روش های onReceive() و onRequest() شگفت انگیز است. لب به لب برای دستگاه های سیمی با روش های دیگر متفاوت است. .

    Wire.requestFrom()

    شرح

    Vikory توسط استاد برای نوشتن بایت از دستگاه سرامیکی استفاده می شود. این بایت ها را می توان با استفاده از متدهای available() و read() حذف کرد.

    اگر این آرگومان درست باشد، requestFrom()، پس از روشن شدن، یک اعلان STOP صادر می کند و گذرگاه I2C را فراخوانی می کند.

    اگر این آرگومان نادرست باشد، درخواستFrom() یک اعلان RESTART بعد از درخواست صادر می کند. لاستیک کار نمی کند، که مانع از قرار گرفتن یک دستگاه دیگر بین اتصالات می شود. این به یک دستگاه سیمی اجازه می دهد تا تعدادی ورودی برق را تا زمانی که باس را کنترل کند ارسال کند.

    نحو

    Wire.requestFrom(آدرس، مقدار)

    Wire.requestFrom (آدرس، مقدار، توقف)

    مولفه های

    • آدرس: یک آدرس 7 بیتی اضافه می کنم که از آن بایت ها دریافت می شود.
    • مقدار: تعداد بایت برای واکشی.
    • توقف: بولی. true پس از درخواست، اعلان STOP را مجبور می کند. false اعلان RESTART را پس از درخواست مجبور می کند و اتصالات فعال را ذخیره می کند.
    معنی آن چیزی که می چرخد

    بایت: تعداد بایت های چرخش شده با توجه به دستگاه مشخص شده.

    لب به لب

    Wire.beginTransmission()

    شرح

    انتقال را به دستگاه های I2C با آدرس مشخص شده شروع می کند. پس از اینکه توالی بایت های انتقال با استفاده از تابع write() مشخص شد، انتقال با استفاده از فراخوانی endTransmission تکمیل می شود.

    نحو

    Wire.beginTransmission (آدرس)

    مولفه های

    آدرس: من یک آدرس 7 بیتی اضافه می کنم زیرا برای انتقال داده ها ضروری است.

    معنی آن چیزی که می چرخد

    لب به لب

    Wire.endTransmission()

    شرح

    انتقال را به دستگاهی که با استفاده از متد ()beceTransmission چاپ شده است، تکمیل می کند و بایت هایی را که با استفاده از متد write() به دستگاه ارسال می شود، انتقال می دهد.

    برای استفاده با اکثر دستگاه‌های I2C، با شروع Arduino 1.0.1، requestFrom() یک آرگومان را به یک نوع داده Boolean می‌برد که رفتار آن را تغییر می‌دهد.

    اگر این آرگومان درست باشد، requestFrom()، پس از ارسال، یک اعلان STOP صادر می کند و گذرگاه I2C را آزاد می کند.

    اگر این آرگومان نادرست باشد، درخواستFrom() یک اعلان RESTART پس از ارسال صادر می کند. لاستیک کار نمی کند، که مانع از قرار گرفتن یک دستگاه دیگر بین اتصالات می شود. این به یک دستگاه سیمی اجازه می دهد تا تعدادی چرخ دنده را در حین کنترل اتوبوس ارسال کند.

    در تئوری، این استدلال قدیمی تر از حقیقت است.

    نحو

    Wire.endTransmission()

    Wire.endTransmission (توقف)

    مولفه های

    توقف: بولی. نیروهای واقعی اعلان STOP پس از ارسال. اعلان RESTART پس از انتقال، صرفه جویی در اتصال فعال.

    معنی آن چیزی که می چرخد

    بایت، که حالت انتقال را نشان می دهد:

    • 0: موفقیت؛
    • 1: داده های بیشتری برای پر کردن بافر انتقال مورد نیاز است.
    • 2: NACK در ساعت ارسال آدرس دریافت شد.
    • 3: NACK در ساعت انتقال داده دریافت شد.
    • 4: عفو رشتا.
    لب به لب

    مثال متد write() را تماشا کنید.

    Wire.write()

    شرح

    داده‌ها را از دستگاه مشخص شده در دستگاه ورودی می‌نویسد، یا بایت‌ها را برای انتقال از Master به دستگاه مشخص شده تنظیم می‌کند (بین فراخوان‌های beginTransmission() و endTransmission()).

    نحو

    Wire.write (مقدار)

    Wire.write (رشته)

    Wire.write (داده، طول)

    مولفه های

    • مقدار: مقدار انتقال، یک بایت.
    • رشته: ترتیب انتقال، توالی بایت.
    • داده: آرایه ای از داده های انتقال، بایت.
    • طول: تعداد بایت هایی برای انتقال.
    معنی آن چیزی که می چرخد

    byte: write() تعداد بایت های نوشته شده را می چرخاند، اگرچه خواندن برخی از آنها دشوار نیست.

    باسن #شامل بایت val = 0; void setup() ( Wire.begin(); // اتصال به گذرگاه i2c ) void loop() ( Wire.beginTransmission(44)؛ // انتقال به دستگاه #44 (0x2c) // آدرس دستگاه برای وظایف در توضیحات فنی Write(val) ( val = 0; / / شروع روی لپه) تاخیر (500);

    Wire.available()

    شرح

    تعدادی بایت را که می توان با استفاده از read() بازیابی کرد، می چرخاند. این متد باید در دستگاه سیمی پس از فراخوانی()requestFrom یا در دستگاه Slave در وسط فراخوانی onReceive() فراخوانی شود.

    نحو

    Wire.available()

    مولفه های

    معنی آن چیزی که می چرخد

    تعداد بایت های موجود برای خواندن

    لب به لب

    قبل از متد read() butt را تماشا کنید.

    Wire.read()

    شرح

    بایتی را می خواند که از دستگاه ارسال شده برای میزبان پس از فراخوانی requestFrom() یا بایتی که از دستگاه ارسال شده به دستگاه ارسال شده ارسال می شود.

    نحو

    مولفه های

    معنی آن چیزی که می چرخد

    بایت: کرم بایت پذیرش.

    باسن #شامل بایت val = 0; void setup() ( Wire.begin(); // به گذرگاه i2c متصل شوید (آدرس های Master الزامی نیست) Serial.begin(9600)؛ // راه اندازی پورت سریال برای خروجی) void loop() ( Wire .requestFrom( 2, 6);// 6 بایت را از دستگاه مشخص شده #2 عرضه می کند در حالی که(Wire.available()) // کمتر از دستگاه درخواستی می تواند ارسال شود (char c = Wire.read(); // قبول بایت به عنوان یک کاراکتر سریال .print (c // wrap the symbol ) delay(500);

    Wire.setClock()

    شرح

    فرکانس ساعت ارتباط در گذرگاه I2C را تغییر می دهد. دستگاه های I2C دارای حداقل فرکانس ساعت کاری نیستند که معمولاً 100 کیلوهرتز است.

    نحو

    Wire.setClock (ساعت فرکانس)

    مولفه های

    clockFrequency: مقدار فرکانس (بر حسب هرتز) سیگنال ساعت. مقادیر پذیرفته شده 100000 (حالت استاندارد) و 400000 (حالت سوئدی) است. هر پردازنده همچنین از 10000 (حالت کم سرعت)، 1000000 (حالت به علاوه سرعت بالا) و 3400000 (حالت پرسرعت) پشتیبانی می کند. برای اطمینان از پشتیبانی از حالت مورد نیاز، به مستندات یک پردازنده خاص بروید.

    معنی آن چیزی که می چرخد

    Wire.onReceive()

    شرح

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

    نحو

    Wire.onReceive (هندلر)

    مولفه های

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

    void myHandler (int numBytes)

    معنی آن چیزی که می چرخد

    لب به لب

    #عبارتند از void setup() ( Wire.begin(8)؛ // به گذرگاه i2c با آدرس #8 متصل شوید. ) void loop() ( delay(100); ) // تابعی که بلافاصله با دریافت داده از master خارج می شود // این تابع به عنوان پردازشگر داده ثبت می شود، watch setup() void receiveEvent(int howMany) ( while (1< Wire.available()) // пройтись по всем до последнего { char c = Wire.read(); // принять байт как символ Serial.print(c); // напечатать символ } int x = Wire.read(); // принять байт как целое число Serial.println(x); // напечатать число }

    Wire.onRequest()

    شرح

    تابعی را ثبت می کند که زمانی که Master درخواست داده از دستگاه مشخص شده می دهد، فراخوانی می شود.

    نحو

    Wire.onRequest (هندلر)

    مولفه های

    handler: تابعی که باید فراخوانی شود، پارامترها را نمی پذیرد و چیزی را نمی چرخاند، بنابراین:

    void myHandler()

    معنی آن چیزی که می چرخد

    لب به لب

    کد برای برد آردوینو که به عنوان یک دستگاه کار می کند:

    #عبارتند از void setup() ( Wire.begin(8)؛ // اتصال به گذرگاه i2c با آدرس #8 Wire.onRequest(requestEvent)؛ // ثبت پردازنده درخواست ) void loop() ( delay(100); ) // تابع، به محض اینکه استاد // داده های پرس و جو // این تابع به عنوان یک نظرسنجی ثبت شد، به setup() void requestEvent() مراجعه کنید ( Wire.write("hello"); // ارسال اعلان ها)