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

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

اگر به دنبال راهنمایی کامل هستید تا بتوانید براساس آن، ماژول ساعت DS1307 با آردوینو را راه اندازی کنید، این مقاله بهترین فرصت برای شما است.

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

این ماژول انتخابی مناسب برای ساخت تایمر، ساعت و آلارم است. در ادامه با این ماژول بیشتر آشنا خواهید شد.

تراشه DS1307

در هسته مرکزی ماژول ساعت DS1307، تراشه بسیار دقیق و ارزان قیمت DS1307 که ساخت شرکت Maxim است، وجود دارد. این تراشه همه توابع زمانی را مدیریت می‌کند و یک واسط دو سیمه I2C را تشکیل می‌دهد که به‌راحتی می‌تواند به هر میکروکنترلری متصل شود.  

اجزای ماژول ساعت DS1307 که شامل چیپ DS1307 و کریستال اسیلاتور 32 هرتز می‌‎شود.

این تراشه قابلیت نگه‌داری ثانیه، دقیقه، ساعت، روز، تاریخ، ماه و سال را دارد. در پایان هر ماه، تاریخ به‌طور اتوماتیک برای ماه‌های کمتر از 31 روز تنظیم می‌شود. به عنوان مثال تاریخ برای سال کبیسه اصلاح می‌شود و تا سال 2100 معتبر خواهد بود. ساعت نیز در دو فرمت 12 ساعت و 24 ساعت با علامت AM و PM کار می‌کند.

یکی‌دیگر از مشخصه‌های قابل توجه این ماژول، وجود پایه SQW است. این پایه قابلیت برنامه‌‎ریزی دارد و خروجی آن، 4 موج مربعی با فرکانس‌های مختلف 32Hz, 8kHz, 4kHz ,1kHz است.

نکته:

تراشه DS1307 برای نگه‌داشتن زمان، یک کریستال 32kHz خارجی دارد. یکی از مشکلات این کریستال‌ها این است که تغییر دمای محیط می‌تواند باعث تغییر فرکانس آن‌ها شود. با وجود اینکه تغییر فرکانس کریستال‌ها ناچیز است، اما به مرور زمان افزایش پیدا می‌کند. تغییر فرکانس باعث می‌شود ساعت حدود 5 دقیقه یا حتی بیشتر در طول هر ماه عقب بیوفتد.

باطری پشتیبان

تراشه DS1307 دارای یک ورودی باطری است و زمانی‌که تغذیه اصلی مدار مختل شود، زمان را همچنان با دقت نگهداری می‌کند. مدار حسگر تغذیه داخلی، دائما وضعیت VCC را بررسی می‌کند تا در صورت آشکار سازی خطای تغذیه، به‌صورت اتوماتیک به تغذیه پشتیبان تغییر وضعیت دهد. به این ترتیب، دیگر لازم نیست نگران قطع شدن برق باشید، زیرا MCU شما همچنان می‌تواند زمان را حفظ کند.

جا باطری CR2032

در قسمت پایین برد، یک جا باطری برای باطری دکمه‌ای لیتیومی 20 میلیمتری با ولتاژ 3V قرار دارد. هر باطری CR2032 می‌تواند در این جا باتری قرار بگیرد.

نکته:

فرض کنید شما از یک باطری CR2032 کاملا شارژ شده با ظرفیت 47mAh استفاده می‌کنید و تراشه حداقل 300nA مصرف می‌کند. با این توصیفات، این باطری می‌تواند برای حداقل 17.87 سال ماژول را بدون اینکه نیاز به تغذیه 5V خارجی باشد، روشن نگه دارد.

47mAh/300nA = 156666.67 hours = 6527.78 days = 17.87 years

حافظه روی برد 24C32 EEPROM

ماژول ساعت DS1307 دارای یک حافظه 32 بایتی 24C32 EEPROM از شرکت Atmel است و سیکل‌های خواندن و نوشتن نامحدود دارد. از این حافظه می‌توان برای ذخیره کردن تنظیمات و هر چیز دیگری استفاده کرد.

حافظه 24C32 EEPROM در ماژول ساعت DS1307

24C32 EEPROM از واسط I2C برای تبادل اطلاعات و از باس I2C به عنوان تراشه DS1307 برای به اشتراک گذاشتن اطلاعات استفاده می‌کند.

نکته:

حافظه 24C32 EEPROM دارای آدرس سخت افزاری I2C است و مقدار آن 0x50HEX تنظیم شده است.


نمونه کد برای خواندن یا نوشتن حافظه 24C32 EEPROM را می‌‎توانید در انتهای مقاله مشاهده کنید.

مشخصه پنهان – سنسور دما DS18B20

ماژول ساعت DS1307 دارای ویژگی‌ منحصر به فردی است که اغلب اوقات نادیده گرفته می‌شود. این ویژگی پنهان و منحصر به فرد، امکان نصب سنسور دمای DS18B20 بر روی آن است. دقیقا در گوشه سمت راست برد که سه عدد حفره به ‌نام U1 در نزدیکی جا باطری وجود دارد، محل نصب سنسور دما DS18B20 است.

محل لحیم کاری سنسور دما DS18B20 بر روی ماژول ساعت DS1307

با نصب DS18B20 بر روی ماژول ساعت، می‌توانید از پایه DS دما خوانده شده را دریافت کنید. این داده را نیز می‌توانید در کدها برای جبران‌سازی دما در گذر زمان به‌کار ببرید.

برای لحیم کردن ماژول DS18B20 نیز مطابق چاپ راهنما عمل کنید. ممکن است به یک مقاومت 4.7K بین VCC و DS نیز نیاز داشته باشید.

اگر می‌خواهید با این سنسور و نحوه راه اندازی آن بیشتر آشنا شوید، حتما به مقاله زیر سری بزنید.

آموزش راه اندازی سنسور دما DS18B20 با آردوینو

معرفی سنسور دما DS18B20 و آموزش راه اندازی آن با آردوینو

پایه‌های ماژول ساعت DS1307

ماژول ساعت DS1307 به‌طور کلی دارای 7 پایه است. پایه‌‌های ارتباطی این ماژول به شکل زیر هستند:

پایه‌های ماژول ساعت DS1307

SQW پایه‌های خروجی 4 موج مربعی با فرکانس‌های 1، 4، 8 و 32 هرتز است که قابل برنامه نویسی هستند.

DS این پایه در صورتی‌که سنسور دما DS18B20 ، در گوشه راست برد نزدیک جاباطری بر روی ماژول نصب شده باشد، برای خواندن دما در نظر گرفته می‌شود.

SCL پایه ورودی کلاک برای واسط I2C است و از آن برای سنکرون کردن انتقال داده بر روی واسط سریال استفاده می‌شود.

SDA پایه ورودی و خروجی داده برای واسط سریال I2C است.

VCC پایه تغذیه ماژول است و ولتاژ آن می‌تواند بین 3.3V تا 5.5V باشد.

GND پایه زمین مدار است.

BAT این پایه، برای سلول لیتیم 3V یا هر منبع تغذیه‌ای که می‌تواند در صورت مختل شدن تغذیه اصلی، زمان را با دقت نگه دارد، پایه ورودی تغذیه پشتیبان به حساب می‌آید.

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

اکنون زمان راه اندازی ماژول ساعت DS1307 با آردوینو فرا رسیده است. در صورت نیاز قطعات لازم را از لینک‌های زیر فراهم کنید:

اتصال این ماژول به آردوینو آسان است. برای آغاز این کار، پایه VCC را به خروجی 5V آردوینو و پایه GND را به زمین متصل کنید.

پس از انجام این اتصالات، تنها پایه‌هایی باقی می‌مانند که برای ارتباط I2C مورد استفاده قرار می‌گیرند. نکته‎ای که در اینجا باید به آن توجه داشته باشید، این است که هر برد آردوینو پایه‌های I2C متفاوتی دارد که اتصالات باید با توجه به آن‌ها انجام شود. بر روی بردهای آردوینو ورژن R3، پایه‌های SDA (خط داده) و SCL (خط کلاک) بر روی پین هدر، نزدیک به پایه AREF قرار دارند. این پایه‌ها با نام‌های A5 (SCL) و A4 (SDA) نیز شناخته می‌شوند.

اگر از برد آردوینو Mega استفاده می‌کنید، این پایه‌ها متفاوت خواهند بود. در این برد باید از پایه‌های دیجیتال 20 (SDA) و 21 (SCL) استفاده کنید. برای درک بهتر این پایه‌ها، نگاهی به جدول زیر بیندازید:

SDASCL 
A4A5Arduino Uno
A4A5Arduino Nano
2021Arduino Mega
23Leonardo/Micro


به کمک تصویر زیر می‌توانید سیم کشی‌های لازم را به‌درستی انجام دهید:

نحوه سیم‌کشی ماژول ساعت DS1307  به آردوینو

نتیجه نهایی اتصال ماژول ساعت به آردوینو

نصب کتابخانه RTClib

نوشتن کد، بخش دیگری از راه اندازی ماژول ساعت DS1307 با آردوینو است. ارتباط با این ماژول کمی دشوار است، زیرا نیازمند انجام کار‌‎های متعددی است. اما خوشبختانه کتابخانه RTClib با هدف از بین بردن تمام پیچیدگی‌های کار نوشته شده است تا شما بتوانید با دستورات ساده، داده‌های RTC را بخوانید. این کتابخانه را می‌توانید با کلیک بر روی لینک زیر دانلود کنید:

Title of the document دانلود کتابخانه RTClib


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

Sketch > Include Library > Manage Libraries…

کمی صبر کنید تا library manager، کتابخانه‌ها را دانلود و لیست کتابخانه‌های نصب شده را به‌روز کند.

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

پس از نمایش کامل کتابخانه‌ها، کلمه rtclib را جستجو کنید. کتابخانه  RTClib نوشته شرکت Adafruit را از بین کتابخانه‌های موجود پیدا و سپس آن را نصب کنید.

جستجو کلمه RTClib در library manager و نصب کتابخانه RTClib

کد آردوینو – خواندن تاریخ و زمان با ماژول ساعت DS1307

کدهای زیر به‌طور کامل نحوه تنظیم تاریخ و زمان بر روی ماژول ساعت DS1307 را به شما نشان می‌دهد و می‌تواند به عنوان مبنایی برای پروژه‌های عملی شما مورد استفاده قرار بگیرد.

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 rtc;

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

void setup () 
{
  Serial.begin(9600);
  delay(3000); // wait for console opening

  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (!rtc.isrunning()) {
    Serial.println("RTC lost power, lets set the time!");
	
	// Comment out below lines once you set the date & time.
    // Following line sets the RTC to the date & time this sketch was compiled
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
	
    // Following line sets the RTC with an explicit date & time
    // for example to set January 27 2017 at 12:56 you would call:
    // rtc.adjust(DateTime(2017, 1, 27, 12, 56, 0));
  }
}

void loop () 
{
    DateTime now = rtc.now();
    
    Serial.println("Current Date & Time: ");
    Serial.print(now.year(), DEC);
    Serial.print('/');
    Serial.print(now.month(), DEC);
    Serial.print('/');
    Serial.print(now.day(), DEC);
    Serial.print(" (");
    Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
    Serial.print(") ");
    Serial.print(now.hour(), DEC);
    Serial.print(':');
    Serial.print(now.minute(), DEC);
    Serial.print(':');
    Serial.print(now.second(), DEC);
    Serial.println();
    
    Serial.println("Unix Time: ");
    Serial.print("elapsed ");
    Serial.print(now.unixtime());
    Serial.print(" seconds/");
    Serial.print(now.unixtime() / 86400L);
    Serial.println(" days since 1/1/1970");
    
    // calculate a date which is 7 days & 30 seconds into the future
    DateTime future (now + TimeSpan(7,0,0,30));
    
    Serial.println("Future Date & Time (Now + 7days & 30s): ");
    Serial.print(future.year(), DEC);
    Serial.print('/');
    Serial.print(future.month(), DEC);
    Serial.print('/');
    Serial.print(future.day(), DEC);
    Serial.print(' ');
    Serial.print(future.hour(), DEC);
    Serial.print(':');
    Serial.print(future.minute(), DEC);
    Serial.print(':');
    Serial.print(future.second(), DEC);
    Serial.println();
    
    Serial.println();
    delay(1000);
}

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

خروجی نمونه کد تنظیم زمان و تاریخ ماژول ساعت DS1307 بر روی سریال مانیتور

توضیحات کد:

این دستورات با فراخوانی کتابخانه‌های wire.h و RTClib.h برای ارتباط با ماژول آغاز می‌شود.

در مرحله بعدی، شما باید یک شی از کتابخانه RTClib ایجاد کنید و آرایه کاراکتری دو بعدی daysOfTheWeek را برای ذخیره روزهای هفته تعریف کنید.

در بخش‌های Setup و loop دستورات، از توابع زیر برای ارتباط با ماژول ساعت استفاده کنید:

()begin: این تابع از اتصال ماژول ساعت، اطمینان حاصل می‌کند.

()isrunning: این تابع رجیسترهای I2C داخلی ماژول DS1307 را می‌خواند تا بفهمد آیا تراشه، ردیابی زمان را از دست داده است یا نه. اگر این تابع مقدار false را برگرداند، شما می‌توانید تاریخ و زمان را تنظیم کنید.

()adjust: این تابع تاریخ و ساعت را تنظیم می‌کند و یک تابع overload است. overload نوعی قابلیت در زبان ++C است. با این قابلیت، دو تابع یا تعداد بیشتری از توابع می‌توانند اسم یکسان اما پارامتری‌های متفاوتی داشته باشند. به دو روش می‌توانید این تابع را فراخوانی کنید:

  • یکی از این روش‌ها، استفاده از دستور DateTime(F(__DATE__), F(__TIME__)) است که تاریخ و زمانی را که کد کامپایل شده است، تنظیم می‌کند.
  • روش دوم، استفاده از دستور DateTime(YYYY, M, D, H, M, s) است که برای تنظیم زمان و تاریخ به‌صورت مجزا مورد استفاده قرار می‌گیرد. به عنوان مثال، برای تنظیم ساعت 12:56 در تاریخ 27 ژانویه 2017، باید از این دستور به صورت ;rtc.adjust(DateTime(2017, 1, 27, 12, 56, 0)) استفاده کنید.

()now: این تابع تاریخ و زمان جاری را برمی‌گرداند. مقدار بازگشتی معمولا در یک متغیر از نوع داده DateTime ذخیره می‌شود.

()year: این تابع سال جاری را برمی‌گرداند.

()month: این تابع ماه جاری را برمی‌گرداند.

()day: این تابع روز جاری را برمی‌گرداند.

()dayOfTheWeek: این تابع روز جاری در هفته را برمی‌گرداند و معمولا به عنوان ایندکس یک آرایه دو بعدی که اطلاعات روزها را ذخیره می‌کند، مورد استفاده قرار می‌گیرد. نمونه این تابع را می‌توانید در کد بالا مشاهده کنید.

 ()hour: این تابع ساعت جاری را برمی‌گرداند.

 ()minute: این تابع دقیقه‌های جاری را برمی‌گرداند.

()second: این تابع ثانیه‌های جاری را برمی‌گرداند.

()unixtime: این تابع unix time را بر حسب ثانیه برمی‌گرداند. Unix time سیستمی برای توصیف یک نقطه از زمان است. Unix time در واقع تعداد ثانیه‌هایی است که از ساعت 00:00:00 (مبدا ساعت جهانی یعنی 5 شنبه 17 ژانویه 1970) گذشته است.

()TimeSpan: از این تابع برای اضافه کردن زمان به زمان جاری یا کم کردن زمان از آن استفاده می‌شود. در این تابع می‌توانید روز، ساعت، دقیقه و ثانیه را اضافه یا کم کنید. به علاوه، این تابع، یک تابع overload است و به دو روش فراخوانی می‌شود:

  • now() + TimeSpan(seconds): این تابع زمان را بر حسب ثانیه به زمان جاری اضافه می‌کند و زمان آینده را به ما می‌دهد.
  • now() – TimeSpan(days,hours, minutes, seconds): این تابع زمان گذشته را به ما می‌دهد.

کد آردوینو- خواندن/ نوشتن در 24C32 EEPROM

با استفاده از ماژول ساعت DS1307، علاوه بر یک ماژول، یک حافظه ROM سی و دو بایتی خواهید داشت. محتویات این حافظه حتی با قطع تغذیه اصلی هم از بین نخواهد رفت. کد زیر یک پیام در 24C32 EEPROM می‌نویسد و سپس این پیام را از آن می‌خواند. شما می‌توانید از این کد برای ذخیره تنظیمات، رمز عبور یا هر چیز دیگری استفاده کنید.

#include <Wire.h>

void setup()
{
    char somedata[] = "lastminuteengineers.com"; // data to write
    Wire.begin(); // initialise the connection
    Serial.begin(9600);
    Serial.println("Writing into memory...");
	
	// write to EEPROM
    i2c_eeprom_write_page(0x50, 0, (byte *)somedata, sizeof(somedata));

    delay(100); //add a small delay
    Serial.println("Memory written");
}

void loop()
{
    Serial.print("Reading memory: ");
    int addr=0; //first address
	
	// access the first address from the memory
    byte b = i2c_eeprom_read_byte(0x50, 0);

    while (b!=0)
    {
        Serial.print((char)b); //print content to serial port
        addr++; //increase address
        b = i2c_eeprom_read_byte(0x50, addr); //access an address from the memory
    }
    Serial.println(" ");
    delay(2000);
}

void i2c_eeprom_write_byte( int deviceaddress, unsigned int eeaddress, byte data ) {
    int rdata = data;
    Wire.beginTransmission(deviceaddress);
    Wire.write((int)(eeaddress >> 8)); // MSB
    Wire.write((int)(eeaddress & 0xFF)); // LSB
    Wire.write(rdata);
    Wire.endTransmission();
}

// WARNING: address is a page address, 6-bit end will wrap around
// also, data can be maximum of about 30 bytes, because the Wire library has a buffer of 32 bytes
void i2c_eeprom_write_page( int deviceaddress, unsigned int eeaddresspage, byte* data, byte length ) {
    Wire.beginTransmission(deviceaddress);
    Wire.write((int)(eeaddresspage >> 8)); // MSB
    Wire.write((int)(eeaddresspage & 0xFF)); // LSB
    byte c;
    for ( c = 0; c < length; c++)
        Wire.write(data[c]);
    Wire.endTransmission();
}

byte i2c_eeprom_read_byte( int deviceaddress, unsigned int eeaddress ) {
    byte rdata = 0xFF;
    Wire.beginTransmission(deviceaddress);
    Wire.write((int)(eeaddress >> 8)); // MSB
    Wire.write((int)(eeaddress & 0xFF)); // LSB
    Wire.endTransmission();
    Wire.requestFrom(deviceaddress,1);
    if (Wire.available()) rdata = Wire.read();
    return rdata;
}

// maybe let's not read more than 30 or 32 bytes at a time!
void i2c_eeprom_read_buffer( int deviceaddress, unsigned int eeaddress, byte *buffer, int length ) {
    Wire.beginTransmission(deviceaddress);
    Wire.write((int)(eeaddress >> 8)); // MSB
    Wire.write((int)(eeaddress & 0xFF)); // LSB
    Wire.endTransmission();
    Wire.requestFrom(deviceaddress,length);
    int c = 0;
    for ( c = 0; c < length; c++ )
        if (Wire.available()) buffer[c] = Wire.read();
}


در تصویر زیر می‌توانید خروجی کد بالا را بر روی سریال مانیتور مشاهده کنید:

خروجی نمونه کد خواندن و نوشتن پیام در حافظه 24C32 EEPROM بر روی سریال مانیتور

خلاصه

همان‌طور که قبلا به آن اشاره کردیم، ماژول ساعت DS1307، می‌تواند گزینه‌ای عالی برای ساخت یک ساعت و تایمر باشد. این ماژول با فراهم کردن امکان نصب سنسور دما DS18B20 بر روی آن، به شما این فرصت را می‌دهد تا بتوانید تغییرات دما را در طول زمان بررسی کنید.

هدف اصلی ما در این مقاله این بود تا شما بتوانید راه اندازی ماژول ساعت DS1307 با آردوینو را آغاز کنید و برای انجام این گونه پروژه‌ها منبع مناسبی در اختیار داشته باشید. فراموش نکنید که می‌توانید سوالات و نظرات خود را همیشه با ما در میان بگذارید.

مقالات مشابه

۲۰ دیدگاه. Leave new

  • سلام
    خیلی جامع و مفید توضیح دادید، خیلی ممنونم
    سوال من این هستش که الان ما برای جلوگیری از فراموشی ساعت حین برق رفتگی، باید کدی بنویسیم که در هرلحظه ساعت رو از حافظه بخونه و براش یک ثانیه اضافه کنه و در همون لحظه ساعت جدید رو در حافظه ذخیره کنه؟

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

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

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

      پاسخ
  • باسلام خیلی از مطلب مفیددتون ممنون مثل همیشه عالی فقط من یه سوال داشتم من میخوام با کمک این مازول کنتلرل جوجه کشی بسازم فقط اینکه مثلا چطور میتونیم بگیم که مثلا بدا ۱۷ روز دیگه موتور رو روشن نکن.سپاس فراوان

    پاسخ
    • سلام محمود عزیز، ممنون از شما که ما رو همراهی می‌کنی،
      ما توی مقاله زمان حال حاضر و زمان ۷ روز بعد رو خوندیم و نمایش دادیم. همچنین نحوه خواندن و نوشتن در حافظه EEPROM ماژول رو توضیح دادیم.
      با مطالعه دقیق مقاله و درک پروژه‌هایی که انجام شده این عملکرد به سادگی قابل انجامه.
      برای مثال شما می‌تونی در هر لحظه زمان فعلی رو بخونی و زمان ۱۷ روز آینده رو محاسبه کنی.
      حالا می‌تونی زمان آینده رو در حافظه ماژول ذخیره کنی و توی حلقه تکرار کد، هر بار بین زمان فعلی و زمان مدنظر مقایسه انجام بدی،
      وقتی زمان موردنظر فرارسید، فرمان روشن شدن موتور صادر بشه.

      پاسخ
  • سلام. ابتدای پست نوشتید آدرس eeprom ماژول 0x50 هست اما توی کد آدرس 0x57 استفاده کردید. کدوم درسته؟
    سپاس

    پاسخ
  • سلام
    برای استفاده ی رله به طور زمانی (برای مثال در ساعت ۳:۴۵ رله فعال شود)
    چه متغیری رو باید وارد دستور if کرد؟

    پاسخ
    • سلام امیر حسین عزیز،
      با فرض اینکه نام شی تعریف شده از کتابخانه RTC_DS1307 مثل مقاله rtc باشه، rtc.hour() به شما ساعت و rtc.minute() دقیقه رو میده.

      پاسخ
  • سلام ممنون از شما
    چون این ماژول اگر به ۵ ولت وصل شود مدام باتری سکه ای را شارژ می کند و باعث از بین رفتن باتری و نگه نداشتن زمان می شود
    برای رفع این مشکل اگر از باتری CR2032 استفاده می شود حتما مقاومت های R4,R5,R6 و دیود D1 را از مدار خارج کنید و دو سر مقاومت R6 را اتصال کوتاه کنید تا باتری شارژ نشود و آی سی نسوزد

    پاسخ
  • عاطف جعفریان
    آبان ۱۸, ۱۴۰۱ ۱۸:۰۹

    باسلام خدمت همکاران گرامی
    آیا میشه ماژول DS1307 رو با آی سی Atmega8 راه اندازی کرد

    پاسخ
  • سلام برای من این ارور میاد
    Error compiling for board Arduino Uno.

    پاسخ
    • سلام و درود،
      لطفا بررسی کن که کد درست کپی شده و همچنین کتابخانه RTClib به‌درستی نصب شده باشه.

      پاسخ
  • سلام و خداقوت
    ممنون بابت مطالب خوبتون.
    سوال من اینه، من اگر بخوام از این کتابخانه برای کنترل ماژول Ds3231 استفاده کنم، باید آدرس های کنترل و دیتا رو فقط تغییر بدم؟
    من میخوام همین کتابخانه که شما منتشر کردید رو با تغییراتی، قابل استفاده برای da1307 بشه

    پاسخ

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed

پر بازدید ترین مقالات