زنگ

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

در این مقاله به نحوه انجام این کار خواهیم پرداخت ساعت دقیقمبتنی بر تراشه ساعت بلادرنگ آردوینو یا میکروکنترلر AVR DS1307. زمان بر روی صفحه نمایش LCD نمایش داده می شود.

آنچه لازم است

  • کامپیوتر با Arduino IDE نصب شده؛
  • تراشه DS1307 یا ماژول RTC بر اساس آن؛
  • لوازم جانبی از لیست عناصر

می توانید جایگزین کنید برد آردوینوبه کنترلر Atmel، اما مطمئن شوید که پین ​​های ورودی و خروجی کافی دارد و دارای پیاده سازی سخت افزاری رابط I2C است. من از ATMega168A-PU استفاده می کنم. اگر از یک میکروکنترلر جداگانه استفاده می کنید، به یک برنامه نویس مانند AVR MKII ISP نیاز خواهید داشت.

فرض بر این است که خواننده با breadboarding، برنامه نویسی با Arduino IDE آشنا بوده و تا حدودی با زبان برنامه نویسی C آشنایی دارد.هر دو برنامه زیر نیاز به توضیح بیشتری ندارند.

مقدمه

میکروکنترلرها چگونه زمان و تاریخ را ردیابی می کنند؟ یک میکروکنترلر معمولی دارای یک عملکرد تایمر است که با اعمال ولتاژ تغذیه از صفر شروع می شود و سپس شروع به شمارش می کند. در دنیای آردوینو، می‌توانیم از تابع millis() استفاده کنیم تا بفهمیم چند میلی‌ثانیه از اعمال ولتاژ تغذیه گذشته است. وقتی پاور را بردارید و دوباره اعمال کنید، از اول شروع به شمارش می‌کند. وقتی صحبت از کار با ساعت و تاریخ به میان می آید، این خیلی راحت نیست.

اینجاست که استفاده از تراشه RTC (ساعت واقعی، ساعت واقعی) راحت خواهد بود. این ریزمدار، با باتری 3 ولت یا منبع تغذیه دیگر، زمان و تاریخ را پیگیری می کند. ساعت/تقویم اطلاعاتی در مورد ثانیه ها، دقیقه ها، ساعت ها، روز هفته، تاریخ، ماه و سال ارائه می دهد. تراشه با ماه های 30/31 روزه و سال های کبیسه به درستی کار می کند. ارتباط از طریق گذرگاه I2C است (گذرگاه I2C در این مقاله مورد بحث قرار نگرفته است).

اگر ولتاژ ریل برق اصلی Vcc کمتر از ولتاژ باتری Vbat باشد، RTC به طور خودکار از باتری پشتیبان به حالت کم مصرف می رود. باتری پشتیبان معمولا یک باتری مینیاتوری (به شکل "سکه"، "قرص") با ولتاژ 3 ولت است که بین پایه 3 و کیس متصل می شود. به این ترتیب، تراشه همچنان زمان و تاریخ را ردیابی می کند و هنگامی که مدار اصلی روشن می شود، میکروکنترلر زمان و تاریخ فعلی را دریافت می کند.

در این پروژه از DS1307 استفاده خواهیم کرد. در این آی سی، پایه 7 پایه SQW/OUT (خروجی موج مربع) است. می توانید از این پین برای چشمک زدن یک LED استفاده کنید و میکروکنترلر را برای گرفتن مهر زمان مطلع کنید. ما هر دو را انجام خواهیم داد. در ادامه نحوه عملکرد پین SQW/OUT توضیح داده شده است.

رجیستر کنترل DS1307 برای کنترل عملکرد پین SQW/OUT استفاده می شود.

بیت 7: کنترل خروجی (OUT) این بیت سطح خروجی پین SQW/OUT را هنگامی که خروجی موج مربعی خاموش است کنترل می کند. اگر SQWE = 0، سطح منطقی در پایه SQW/OUT 1 است اگر OUT = 1 و 0 اگر OUT = 0 است. در ابتدا، این بیت به طور معمول 0 است. بیت 4: فعال کردن موج مربعی (SQWE) این بیت، زمانی که روی منطق 1، مولد خروجی را روشن می کند. فرکانس موج مربعی به مقادیر بیت های RS0 و RS1 بستگی دارد. هنگامی که فرکانس موج مربعی روی 1 هرتز تنظیم می شود، رجیسترهای ساعت در طول فروپاشی موج مربعی به روز می شوند. در ابتدا، این بیت معمولاً 0 است. بیت های 1 و 0: انتخاب فرکانس (RS) این بیت ها فرکانس خروجی موج مربعی را هنگامی که خروجی موج مربعی فعال است کنترل می کنند. جدول زیر فرکانس های موج مربعی را که می توان با استفاده از این بیت ها انتخاب کرد فهرست می کند. در ابتدا، این بیت ها معمولا 1 هستند.

این جدولبا فرکانس به شما کمک می کند:

انتخاب فرکانس موج مربعی DS1307
فرکانس پالسبیت 7بیت 6بیت 5بیت 4بیت 3بیت 2بیت 1بیت 0
1 هرتز0 0 0 1 0 0 0 0
4.096 کیلوهرتز0 0 0 1 0 0 0 1
8.192 کیلوهرتز0 0 0 1 0 0 1 0
32.768 کیلوهرتز0 0 0 1 0 0 1 1

اگر یک LED و یک مقاومت را به پایه 7 وصل کرده اید و می خواهید LED با فرکانس 1 هرتز چشمک بزند، باید 0b00010000 را در رجیستر کنترل بنویسید. اگر به پالس های 4.096 کیلوهرتز نیاز دارید، باید 0b000100001 بنویسید. در این حالت، برای دیدن پالس ها به یک اسیلوسکوپ نیاز دارید، زیرا LED آنقدر سریع چشمک می زند که به نظر می رسد همیشه روشن است. ما از پالس هایی با فرکانس 1 هرتز استفاده خواهیم کرد.

سخت افزار

در ذیل نشان داده شده است طرح ساختاریآنچه ما نیاز داریم.

نیاز داریم:

  • کانکتور ISP (در برنامه نویسی سیستم، برنامه نویسی در مدار) برای سیستم عامل میکروکنترلر؛
  • دکمه های تنظیم زمان و تاریخ؛
  • میکروکنترلر برای ارتباط با RTC از طریق گذرگاه I2C.
  • نمایشگر برای نمایش تاریخ و زمان

نمودار شماتیک:


لیست آیتم ها

در زیر اسکرین شات از Eagle است:


نرم افزار

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

ابتدا زمان و تاریخ را در RTC می نویسیم که همان تنظیم زمان در ساعت است.

ما از دو دکمه استفاده می کنیم. یکی برای افزایش ساعت، دقیقه، تاریخ، ماه، سال و روز هفته و دومی برای انتخاب بین آنها. این برنامه وضعیت هیچ سنسور مهمی را نمی‌خواند، بنابراین از وقفه‌ها برای بررسی فشار دادن دکمه استفاده می‌کنیم و جهش تماس را کنترل می‌کنیم.

کد زیر مقادیر را تنظیم می کند و آنها را در RTC می نویسد:

#عبارتند از // تعریف پین های LCD #define RS 9 #define E 10 #define D4 8 #define D5 7 #define D6 6 #define D7 5 LiquidCrystal lcd(RS, E, D4, D5, D6, D7); // وقفه 0 پایه 4 میکروکنترلر است (پاین دیجیتال آردوینو 2) int btnSet = 0; // وقفه 1 پایه 5 میکروکنترلر است (پاین دیجیتال آردوینو 3) int btnSel = 1; // پرچم های وقفه volatile int togBtnSet = false; volatile int togBtnSel = false; volatile int counterVal = 0; // متغیرهایی برای ردیابی جایی که در "menu" ما فرار int menuCounter = 0; // آرایه مقادیر volatile int menuValues; // 0=ساعت، 1=دقیقه، 2=روز ماه، 3=ماه، 4=سال، 5=روز هفته // عناوین منو char* menuTitles = ( "Set ساعت. ", "Set minutes. ", "Set date. ", "Set month. ", "Set Year. ", "Set day (1=mon)." ); // آرایه روزهای هفته char* days = ( "NA"، "Mon", "Tue"، "Wed"، "Thu", "Fre"، "Sat", "Sun" ); void setup() ( // اعلام وقفه ها، اجرای توابع افزایش ارزش/nextItem // در لبه افزایشی در btnXXX attachInterrupt(btnSet، افزایش ارزش، RISING)؛ attachInterrupt(btnSel، nextItem، RISING)؛ Wire.begin(); lcd.begin( 16،2)؛ showWelcome(); ) // تابع وقفه void growthValue() ( // متغیرهای ثابت بدون علامت long lastInterruptTime = 0؛ // ایجاد مهر زمانی بدون علامت طولانی interruptTime = millis()؛ // اگر برچسب زمانی - lastInterruptTime بیشتر است، بیش از 200 if (interruptTime - lastInterruptTime > 200) (togBtnSet = true؛ // افزایش counterVal با 1 counterVal++; ) // تنظیم lastInterruptTime بر روی مهر زمان // بنابراین ما بدانیم که بیشتر از این پیش رفته ایم lastInterruptTime = InterruptTime; // برای آیتم منوی بعدی void nextItem() (استاتیک بدون علامت long lastInterruptTime = 0؛ بدون علامت طولانی interruptTime = millis(); if (interruptTime - lastInterruptTime > 200) (togBtnSel = true؛ // شمارنده منوی افزایشی بنابراین به آیتم منوی بعدی menuCounter++; اگر (menuCounter > 6) menuCounter = 0; // قرار دادن counterVal در عنصر آرایه شمارنده منو menuValues ​​= counterVal; // Reset counterVal، اکنون برای آیتم منوی بعدی از 0 شروع می کنیم counterVal = 0; ) lastInterruptTime = interruptTime; / / و عنوان را روی صفحه نمایش به روز کنید. void checkCurrentMenuItem() ( if (togBtnSel) ( togBtnSel = false; lcd. setCursor(0,0); lcd. print(menuTitles); ) ) // تابعی برای بررسی اینکه آیا دکمه افزایش مقدار فشار داده شده است یا خیر، // و به روز رسانی متغیر در مرتبط عنصر آرایه, // plus مقدار جدید را به صفحه نمایش می دهد. void checkAndUpdateValue() (// بررسی کنید که آیا وقفه فعال شده است = دکمه فشار داده شده اگر (togBtnSet) (// به روز رسانی مقدار عنصر آرایه با counterVal menuValues ​​= counterVal؛ // پاک کردن پرچم وقفه togBtnSet = false؛ lcd.setCursor(7,1) ; // چاپ مقدار جدید lcd.print(menuValues); lcd.print(" "); ) ) // پیام خوش آمد گویی کوتاه، اکنون می دانیم که همه چیز خوب است void showWelcome() ( lcd.setCursor(2,0); lcd .print("Hello world."); lcd.setCursor(3,1); lcd.print("من زنده هستم."); delay(500); lcd.clear(); ) // نوشتن داده در RTC void writeRTC() ( Wire.beginTransmission(0x68)؛ Wire.write(0)؛ // آدرس شروع Wire.write(0x00)؛ // ثانیه Wire.write(decToBCD(menuValues))؛ // تبدیل دقیقه به BCD - کد و نوشتن Wire.write(decToBCD(menuValues))؛ // تبدیل ساعت ها به کد BCD و نوشتن Wire.write(decToBCD(menuValues))؛ // تبدیل روز هفته به کد BCD و نوشتن Wire.write(decToBCD ( menuValues))؛ // تبدیل روز ماه به BCD-co d و نوشتن Wire.write(decToBCD(menuValues)); // تبدیل ماه به کد BCD و نوشتن Wire.write(decToBCD(menuValues)); // تبدیل سال به کد BCD و نوشتن Wire.write(0b00010000); // فعال کردن موج مربعی 1 هرتز در پایه 7 Wire.endTransmission(); // بستن انتقال ) // زمان نمایش // برای اینکه ببینید آیا RTC در حال اجرا است، باید برنامه دیگری را با نام void showTime() تماشا کنید ( lcd.setCursor(0,0); lcd.print(" "); lcd.print( menuValues)؛ lcd.print(":"); // ساعت lcd.print(menuValues); lcd.print(":"); lcd.print("00"); // دقیقه lcd.setCursor(3،1 ). .print( "."); // month lcd.print(menuValues)؛ lcd.print(" "); // year // تابع writeRTC نوشتنRTC(); ) void loop() ( if (menuCounter< 6) { checkCurrentMenuItem(); checkAndUpdateValue(); } else { showTime(); } }

این برنامه با یک پیام خوشامدگویی کوتاه شروع می شود. این پیام به ما می گوید که برق روشن است، LCD کار می کند و برنامه شروع شده است. از آنجایی که این طرح فقط نحوه نوشتن داده از آردوینو به RTC DS1307 را نشان می‌دهد، فاقد عملکرد کمکی است (بررسی اینکه آیا مقادیر در محدوده مجاز هستند یا نه، حلقه زدن هنگام فشار دادن دکمه افزایش مقدار، یعنی بازنشانی به 0، زمانی که مقدار، برای مثال، دقیقه از 60 و غیره بیشتر شود)

// شامل فایل های هدر #include #عبارتند از // تعریف پین های LCD #define RS 9 #define E 10 #define D4 8 #define D5 7 #define D6 6 #define D7 5 LiquidCrystal lcd(RS, E, D4, D5, D6, D7); // پینی که پالس هایی را از RTC volatile int clockPin = 0 دریافت می کند. // متغیرهای زمان و تاریخ بایت ثانیه; دقیقه بایت؛ بایت ساعت؛ بایت روز؛ تاریخ بایت؛ بایت ماه؛ بایت سال؛ // آرایه روزهای هفته char* days = ( "NA"، "Mon", "Tue"، "Wed"، "Thu", "Fre"، "Sat", "Sun" ); // تابعی که فقط هنگام راه اندازی void setup() اجرا می شود (pinMode(clockPin, INPUT); pinMode(clockPin, LOW); Wire.begin(); lcd.begin(16,2); showWelcome(); ) // پیام خوش آمد گویی کوتاه، اکنون می دانیم که همه چیز خوب است void showWelcome() ( lcd.setCursor(2,0); lcd.print("Hello world."); "m alive."); delay(500); lcd.clear(); ) byte bcdToDec(byte val) ( return ((val/16*10) + (val%16)); ) // این همه انجام می شود حلقه زمان void() ( // اگر پین clockPin بالا باشد if (digitalRead(clockPin)) (// شروع انتقال I2C، آدرس 0x68 Wire.beginTransmission(0x68)؛ // شروع در آدرس 0 Wire.write(0) ؛ / / بستن انتقال Wire.endTransmission(); // شروع به خواندن 7 داده باینری از 0x68 Wire.requestFrom(0x68, 7)؛ second = bcdToDec(Wire.read()؛ minute = bcdToDec(Wire.read()) ؛ ساعت = bcdToDec(Wire.read())؛ روز = bcdToDec(Wire.read()؛ تاریخ = bcdToDec(Wire.read())؛ ماه = bcdToDec(Wire.read())؛ سال = bcdToDec(Wir e.read()); // قالب بندی و نمایش زمان lcd.setCursor(4,0); اگر (ساعت< 10) lcd.print("0"); lcd.print(hour); lcd.print(":"); if (minute < 10) lcd.print("0"); lcd.print(minute); lcd.print(":"); if (second < 10) lcd.print("0"); lcd.print(second); lcd.setCursor(2,1); // Форматирование и отображение даты lcd.print(days); lcd.print(" "); if (date < 10) lcd.print("0"); lcd.print(date); lcd.print("."); if (month < 10) lcd.print("0"); lcd.print(month); lcd.print("."); lcd.print(year); } }

نتیجه

در این مقاله نگاهی به تراشه DS1307 از Maxim Integrated انداختیم و دو برنامه دمو نوشتیم، یکی برای تنظیم ساعت و تاریخ و دیگری برای خواندن ساعت و تاریخ. برای آزمایش فشار دادن دکمه ها، از وقفه هایی استفاده کردیم که در آن از تأثیر پرش تماس نیز خلاص شدیم.

عکس و فیلم

تنظیم زمان

زمان خواندن

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

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

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

بیایید نگاهی دقیق تر به پین ​​های LCD1602 بیندازیم:

هر یک از نتایج هدف خود را دارد:

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

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

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

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

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

نمودار سیم کشی برد LCD به آردوینو بدون i2C

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

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

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

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

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

شرح پروتکل I2C

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

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

بیشترین مدار ساده I2C می تواند شامل یک Master (اغلب یک میکروکنترلر آردوینو) و چندین Slave (به عنوان مثال، یک صفحه نمایش LCD) باشد. هر دستگاه دارای یک آدرس در محدوده 7 تا 127 است. نباید دو دستگاه با آدرس یکسان در یک طرح وجود داشته باشد.

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

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

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

ایرادات:

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

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

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

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


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

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

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

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

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


یک مانیتور LCD مجهز به i2c با استفاده از چهار سیم - دو سیم برای داده و دو سیم برای برق - به برد متصل می شود.

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

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

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

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

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

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

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

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

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

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

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

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

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

ابتدا می توانید کنتراست مانیتور را کم یا زیاد کنید. اغلب کاراکترها به دلیل کنتراست و حالت نور پس زمینه به سادگی قابل مشاهده نیستند.

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

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

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

نتیجه

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

ماژول ساعت واقعی DS1307
ماژول کوچک RTC I2C ساعت 24C32 حافظه DS1307

یک ماژول کوچک که عملکردهای یک ساعت بی‌درنگ را انجام می‌دهد. ساخته شده بر اساس تراشه DS1307ZN +. شمارش مداوم زمان به دلیل منبع تغذیه مستقل از باتری نصب شده در ماژول رخ می دهد. این ماژول همچنین دارای یک حافظه EEPROM 32 کیلوبایتی است که در صورت خاموش شدن انواع برق، اطلاعات را حفظ می کند. حافظه و ساعت توسط یک گذرگاه رابط مشترک I2C به هم متصل می شوند. سیگنال های باس I2C به مخاطبین ماژول خروجی می شوند. هنگامی که یک منبع تغذیه خارجی وصل می شود، باتری از طریق یک مدار شارژ اولیه شارژ می شود. این برد دارای مکانی برای نصب سنسور دمای دیجیتال DS18B20 است. در بسته گنجانده نشده است.
استفاده از این دستگاه در هنگام اندازه گیری فواصل زمانی بیش از یک هفته با دستگاه های مبتنی بر میکروکنترلر اتفاق می افتد. استفاده از منابع خود MC برای این منظور غیرقابل توجیه و اغلب غیرممکن است. تامین برق بدون وقفه برای مدت طولانی گران است؛ به دلیل مصرف جریان قابل توجه، نصب باتری برای تغذیه MK غیرممکن است. اینجاست که ماژول ساعت بیدرنگ DS1307 به کمک می آید.
همچنین، ماژول ساعت بیدرنگ DS1307 به لطف حافظه اختصاصی خود، به شما امکان می دهد تا داده های رویدادهایی را که چندین بار در روز رخ می دهند، مانند اندازه گیری دما، ضبط کنید. سپس گزارش رویداد از حافظه ماژول خوانده می شود. این ویژگی ها استفاده از ماژول را به عنوان بخشی از یک ایستگاه هواشناسی خودکار خودکار یا برای تحقیقات آب و هوا در مکان های صعب العبور: غارها، بالای صخره ها ممکن می سازد. ثبت پارامترهای تانسور سازه های معماری مانند تکیه گاه پل و غیره امکان پذیر می شود. هنگام تجهیز دستگاه به ارتباط رادیویی کافی است آن را در منطقه مورد مطالعه نصب کنید.

مشخصات

ولتاژ تغذیه 5 ولت
ابعاد 27 × 28 × 8.4 میلی متر

نمودار سیم کشی

این دستگاه با استفاده از سیگنال های SCL و SDA با الکترونیک دستگاه ارتباط برقرار می کند. تراشه IC2 - ساعت واقعی. خازن های C1 و C2 نویز را در خط تغذیه VCC کاهش می دهند. مقاومت های R2 و R3 سطح مناسبی را برای سیگنال های SCL و SDA فراهم می کنند. پایه 7 IC2 سیگنال SQ را دریافت می کند که از پالس های مستطیلی 1 هرتز تشکیل شده است. برای آزمایش عملکرد MS IC2 استفاده می شود. اجزای R4، R5، R6، VD1 شارژ مجدد باتری BAT1 را فراهم می کنند. برای ذخیره سازی داده ها، ماژول ساعت بیدرنگ DS1307 حاوی یک تراشه IC1 - حافظه غیر فرار است. US1 - سنسور دما. سیگنال های ماژول و خط برق به کانکتورهای JP1 و P1 خروجی می شوند.

اتوبوس اطلاعات

I2C یک رابط سریال استاندارد از طریق دو خط سیگنال SCL، SDA و زمین است. خطوط رابط یک گذرگاه را تشکیل می دهند. چندین تراشه را می توان به خطوط رابط I2C متصل کرد، نه فقط تراشه های ماژول. برای شناسایی تراشه در گذرگاه، یعنی نوشتن داده ها به MS مورد نیاز و تعیین اینکه داده ها از کدام MS می آیند. هر تراشه یک آدرس منحصر به فرد برای اتوبوس مسیریابی دارد. DS1307 دارای آدرس 0x68 است. در کارخانه نوشته شده است. تراشه حافظه دارای آدرس 0x50 است. AT نرم افزارآردوینو گنجانده شده است کتابخانه نرم افزار، ارائه پشتیبانی از I2C.

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

DS1307 مصرف انرژی پایینی دارد، از طریق رابط I2C با دستگاه های دیگر ارتباط برقرار می کند، دارای حافظه 56 بایتی است. دارای ساعت و تقویم تا 2100 است. تراشه ساعت بی‌درنگ اطلاعاتی درباره لحظه حال را در اختیار سایر دستگاه‌ها قرار می‌دهد: ثانیه، دقیقه، ساعت، روز هفته، تاریخ. تعداد روزهای هر ماه به طور خودکار در نظر گرفته می شود. یک تابع جبران برای یک سال کبیسه وجود دارد. یک پرچم برای تعیین اینکه آیا ساعت در حالت 24 ساعته یا 12 ساعته کار می کند وجود دارد. برای کار در حالت 12 ساعته، ریز مدار دارای بیتی است که از آنجا اطلاعات برای انتقال در مورد دوره زمانی خوانده می شود: قبل یا بعد از ناهار.

تراشه حافظه غیر فرار

ترسیم ماژول ساعت واقعی DS1307 از کنار باتری با نصب سنسور دما U1.

باتری

یک باتری دیسکی لیتیومی CR2032 در هولدر پشت برد نصب شده است. این توسط بسیاری از تولید کنندگان تولید می شود، به عنوان مثال، یک تولید شده توسط GP ولتاژ 3.6 ولت و جریان تخلیه 210 میلی آمپر ساعت را ارائه می دهد. باتری در حین روشن شدن شارژ می شود، این حالت عملکرد باتری لیتیومی است که در آن با آن مواجه می شویم. مادربردکامپیوتر.

شارژ باتری

نرم افزار

برای اینکه ماژول به عنوان بخشی از آردوینو کار کند، یک کتابخانه قدیمی از وب سایت Adafruit به نام RTCLib کاملا مناسب است. این طرح DS1307.pde نام دارد. یک نسخه به روز شده وجود دارد. شما باید آرشیو را دانلود کنید، آن را باز کنید، نام آن را تغییر دهید و کتابخانه را در فهرست کتابخانه آردوینو خود کپی کنید.

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

برای این کار از طرح ها استفاده کنید
SetRTC زمان را با توجه به زمان مشخص شده در طرح بر حسب ساعت تنظیم می کند.
GetRTC زمان را نمایش می دهد.
هر دو طرح به کتابخانه Wire نیاز دارند و یک آدرس I2C را تعریف می کنند. برای تنظیم آدرس ساعت در گذرگاه I2C، از این اسکنر I2C استفاده کنید.

ارتباط با آردوینو مگا.

SCL و SDA را به پین ​​های 21 و 20 مربوطه در آردوینو مگا 2560 وصل کنید. برق را وصل کنید.

ارتباط با آردوینو Uno


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

بنابراین، ساعت واقعی. این چیز مفید اکثر کارهای مفید مربوط به زمان را حل می کند. مدیریت آبیاری را در ساعت 5 صبح در کشور فرض کنید. یا روشن و خاموش کردن چراغ ها در داخل یک لحظه خاص. با تاریخ، می توانید گرمایش را در هر خانه ای شروع کنید. موضوع بسیار جالب و مفید است. و به طور خاص تر؟ ما ساعت واقعی DS1302 را برای پلتفرم محبوب آردوینو در نظر خواهیم گرفت.

از این مقاله یاد خواهید گرفت:

روز بخیر، خوانندگان عزیز بلوک kip-world! چطور هستید؟ در نظرات بنویسید آیا به رباتیک علاقه دارید؟ این موضوع برای شما چه معنایی دارد؟

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

من فقط تصور می کنم که آنها باید چقدر الگوریتم های پیچیده ای را در "مغز" خود داشته باشند.

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

تماشای فیلم های "من یک ربات هستم"، " هوش مصنوعی"،" جنگ ستارگان.

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

چرا ما این را توسعه نمی دهیم:

یا این:

بازتاب هایم را با صدای بلند تمام کردم. بیایید در مورد اتصال تایمر ساعت واقعی DS1302 به آردوینو صحبت کنیم.

ساعت واقعی DS1302

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

برای تغذیه، این بردها می توانند از باتری خود استفاده کنند یا مستقیماً از برد آردوینو تغذیه شوند.

جدول پینوت:

نمودار سیم کشی با آردوینو UNO:


روش برنامه نویسی آردوینو برای کار با DS1302

حتماً کتابخانه فعلی را از منابع معتبر دانلود کنید.

این کتابخانه به شما امکان می دهد پارامترهای بلادرنگ را بخوانید و بنویسید. توضیحات کوچکدر زیر ارائه می دهم:

#عبارتند از // شامل کتابخانه.
arduino_RTC یک شی ( NAME [, OUT_RST [, OUT_CLK [, OUT_DAT ]]] ); // یک شی بسازید.

عملکرد شروع()؛// راه اندازی ماژول RTC.

عملکرد مدت زمان معینی( SEC[، MIN[، HOUR[، DAY[، MONTH[، YEAR[، DAY]]]]]] ); // زمان را تنظیم کن.

عملکرد زمان رسیدن([خط] ); // وقت خواندن.

عملکرد زمان چشمک زدن (پارامتر [فرکانس] ); // باعث می شود که تابع gettime با پارامتر زمان مشخص شده "چک بزند".

عملکرد عادت زنانه (دقایق ); // حداقل دوره دسترسی ماژول را بر حسب دقیقه مشخص می کند.

متغیر ثانیه// ثانیه ها را از 0 تا 59 برمی گرداند.

متغیر دقایق// دقیقه از 0 تا 59 را برمی گرداند.

متغیر ساعت ها// ساعت برگرداندن از 1 تا 12.

متغیر ساعت ها// ساعت ها را از 0 تا 23 برمی گرداند.

متغیر ظهر// ساعت 0 یا 1 ظهر (0 صبح، 1 بعد از ظهر) برمی‌گردد.

متغیر روز// روز ماه را از 1 تا 31 برمی گرداند.

متغیر روز هفته// روز هفته را از 0 تا 6 برمی گرداند (0 یکشنبه است، 6 شنبه است).

متغیر ماه// ماه را از 1 تا 12 برمی گرداند.

متغیر سال// سال را از 0 تا 99 برمی گرداند.

ما یک برنامه ساده می نویسیم. تنظیم زمان فعلی در ماژول RTC (DS1302):

آردوینو

#عبارتند از زمان iarduino_RTC (RTC_DS1302,6,7,8); void setup() ( delay(300); Serial.begin(9600); time.begin(); time.settime(0,51,21,27,10,15,2); // 0 ثانیه، 51 دقیقه، سه شنبه 21، 27 اکتبر 2015 ) void loop()( if(millis()%1000==0)( // اگر 1 ثانیه گذشته باشد Serial.println(time.gettime("d-m-Y, H:i: s, D" ))؛ // نمایش تاخیر زمانی (1)؛ // مکث به مدت 1 میلی ثانیه به طوری که زمان چندین بار در 1 میلی ثانیه نمایش داده نشود) ))

#عبارتند از

iarduino_RTCtime(RTC_DS1302 , 6 , 7 , 8 );

void setup()(

تاخیر(300) ;

سریال. شروع (9600) ;

زمان. start();

زمان. زمان تنظیم (0 , 51 , 21 , 27 , 10 , 15 , 2 ) ; // 0 ثانیه، 51 دقیقه، 9 شب، سه شنبه، 27 اکتبر 2015

حلقه خالی()(

اگر (میلی () % 1000 == 0 ) ( // اگر 1 ثانیه گذشته باشد

سریال. println (time. gettime ("d-m-Y، H:i:s، D") ); // زمان خروجی

تاخیر (1); // 1 میلی ثانیه مکث کنید تا زمان چندین بار در 1 میلی ثانیه نمایش داده نشود

خواندن زمان فعلیاز ماژول RTC (DS1302) و خروجی به "پورت سریال":

#عبارتند از زمان iarduino_RTC (RTC_DS1302,6,7,8); void setup() ( delay(300); Serial.begin(9600); time.begin(); ) void loop()( if(millis()%1000==0)( // اگر 1 ثانیه از سریال گذشته باشد. println (time.gettime("d-m-Y، H:i:s، D")؛ // نمایش تاخیر زمانی (1)؛ // مکث به مدت 1 میلی ثانیه، به طوری که زمان چندین بار در 1 میلی ثانیه نمایش داده نشود) )

ماژول ساعت واقعی DS1307
ماژول کوچک RTC I2C ساعت 24C32 حافظه DS1307

یک ماژول کوچک که عملکردهای یک ساعت بی‌درنگ را انجام می‌دهد. ساخته شده بر اساس تراشه DS1307ZN +. شمارش مداوم زمان به دلیل منبع تغذیه مستقل از باتری نصب شده در ماژول رخ می دهد. این ماژول همچنین دارای یک حافظه EEPROM 32 کیلوبایتی است که در صورت خاموش شدن انواع برق، اطلاعات را حفظ می کند. حافظه و ساعت توسط یک گذرگاه رابط مشترک I2C به هم متصل می شوند. سیگنال های باس I2C به مخاطبین ماژول خروجی می شوند. هنگامی که یک منبع تغذیه خارجی وصل می شود، باتری از طریق یک مدار شارژ اولیه شارژ می شود. این برد دارای مکانی برای نصب سنسور دمای دیجیتال DS18B20 است. در بسته گنجانده نشده است.
استفاده از این دستگاه در هنگام اندازه گیری فواصل زمانی بیش از یک هفته با دستگاه های مبتنی بر میکروکنترلر اتفاق می افتد. استفاده از منابع خود MC برای این منظور غیرقابل توجیه و اغلب غیرممکن است. تامین برق بدون وقفه برای مدت طولانی گران است؛ به دلیل مصرف جریان قابل توجه، نصب باتری برای تغذیه MK غیرممکن است. اینجاست که ماژول ساعت بیدرنگ DS1307 به کمک می آید.
همچنین، ماژول ساعت بیدرنگ DS1307 به لطف حافظه اختصاصی خود، به شما امکان می دهد تا داده های رویدادهایی را که چندین بار در روز رخ می دهند، مانند اندازه گیری دما، ضبط کنید. سپس گزارش رویداد از حافظه ماژول خوانده می شود. این ویژگی ها استفاده از ماژول را به عنوان بخشی از یک ایستگاه هواشناسی خودکار خودکار یا برای تحقیقات آب و هوا در مکان های صعب العبور: غارها، بالای صخره ها ممکن می سازد. ثبت پارامترهای تانسور سازه های معماری مانند تکیه گاه پل و غیره امکان پذیر می شود. هنگام تجهیز دستگاه به ارتباط رادیویی کافی است آن را در منطقه مورد مطالعه نصب کنید.

مشخصات

ولتاژ تغذیه 5 ولت
ابعاد 27 × 28 × 8.4 میلی متر

نمودار سیم کشی

این دستگاه با استفاده از سیگنال های SCL و SDA با الکترونیک دستگاه ارتباط برقرار می کند. تراشه IC2 - ساعت واقعی. خازن های C1 و C2 نویز را در خط تغذیه VCC کاهش می دهند. مقاومت های R2 و R3 سطح مناسبی را برای سیگنال های SCL و SDA فراهم می کنند. پایه 7 IC2 سیگنال SQ را دریافت می کند که از پالس های مستطیلی 1 هرتز تشکیل شده است. برای آزمایش عملکرد MS IC2 استفاده می شود. اجزای R4، R5، R6، VD1 شارژ مجدد باتری BAT1 را فراهم می کنند. برای ذخیره سازی داده ها، ماژول ساعت بیدرنگ DS1307 حاوی یک تراشه IC1 - حافظه غیر فرار است. US1 - سنسور دما. سیگنال های ماژول و خط برق به کانکتورهای JP1 و P1 خروجی می شوند.

اتوبوس اطلاعات

I2C یک رابط سریال استاندارد از طریق دو خط سیگنال SCL، SDA و زمین است. خطوط رابط یک گذرگاه را تشکیل می دهند. چندین تراشه را می توان به خطوط رابط I2C متصل کرد، نه فقط تراشه های ماژول. برای شناسایی تراشه در گذرگاه، یعنی نوشتن داده ها به MS مورد نیاز و تعیین اینکه داده ها از کدام MS می آیند. هر تراشه یک آدرس منحصر به فرد برای اتوبوس مسیریابی دارد. DS1307 دارای آدرس 0x68 است. در کارخانه نوشته شده است. تراشه حافظه دارای آدرس 0x50 است. نرم افزار آردوینو شامل یک کتابخانه نرم افزاری است که از I2C پشتیبانی می کند.

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

DS1307 مصرف انرژی پایینی دارد، از طریق رابط I2C با دستگاه های دیگر ارتباط برقرار می کند، دارای حافظه 56 بایتی است. دارای ساعت و تقویم تا 2100 است. تراشه ساعت بی‌درنگ اطلاعاتی درباره لحظه حال را در اختیار سایر دستگاه‌ها قرار می‌دهد: ثانیه، دقیقه، ساعت، روز هفته، تاریخ. تعداد روزهای هر ماه به طور خودکار در نظر گرفته می شود. یک تابع جبران برای یک سال کبیسه وجود دارد. یک پرچم برای تعیین اینکه آیا ساعت در حالت 24 ساعته یا 12 ساعته کار می کند وجود دارد. برای کار در حالت 12 ساعته، ریز مدار دارای بیتی است که از آنجا اطلاعات برای انتقال در مورد دوره زمانی خوانده می شود: قبل یا بعد از ناهار.

تراشه حافظه غیر فرار

ترسیم ماژول ساعت واقعی DS1307 از کنار باتری با نصب سنسور دما U1.

باتری

یک باتری دیسکی لیتیومی CR2032 در هولدر پشت برد نصب شده است. این توسط بسیاری از تولید کنندگان تولید می شود، به عنوان مثال، یک تولید شده توسط GP ولتاژ 3.6 ولت و جریان تخلیه 210 میلی آمپر ساعت را ارائه می دهد. باتری در هنگام روشن شدن مجدد شارژ می شود، این حالت عملکرد یک باتری لیتیومی است که در مادربرد کامپیوتر با آن مواجه می شویم.

شارژ باتری

نرم افزار

برای اینکه ماژول به عنوان بخشی از آردوینو کار کند، یک کتابخانه قدیمی از وب سایت Adafruit به نام RTCLib کاملا مناسب است. این طرح DS1307.pde نام دارد. یک نسخه به روز شده وجود دارد. شما باید آرشیو را دانلود کنید، آن را باز کنید، نام آن را تغییر دهید و کتابخانه را در فهرست کتابخانه آردوینو خود کپی کنید.

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

برای این کار از طرح ها استفاده کنید
SetRTC زمان را با توجه به زمان مشخص شده در طرح بر حسب ساعت تنظیم می کند.
GetRTC زمان را نمایش می دهد.
هر دو طرح به کتابخانه Wire نیاز دارند و یک آدرس I2C را تعریف می کنند. برای تنظیم آدرس ساعت در گذرگاه I2C، از این اسکنر I2C استفاده کنید.

ارتباط با آردوینو مگا.

SCL و SDA را به پین ​​های 21 و 20 مربوطه در آردوینو مگا 2560 وصل کنید. برق را وصل کنید.

ارتباط با آردوینو Uno


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

زنگ

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