আমার পিসি থেকে আমার আসল সময়ের ঘড়িটি কেন ভুল সময় পাচ্ছে?


10

আমি চাই যে আমার রিয়েল-টাইম ঘড়িটি আমার পিসিতে সময় হিসাবে সেট করবে। যাইহোক, আমি যখন নিম্নলিখিত স্কেচটি চালনা করি তখন রিয়েল-টাইম ক্লকটি সময়টি আমার পিসি সময়টির চেয়ে 32-33 সেকেন্ড আগে বলে দেয়।

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

RTC_DS1307 RTC;

void setup () {
  Serial.begin(57600);
  Wire.begin();
  RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
// uncomment it & upload to set the time, date and start run the RTC!
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}

void loop () {
  DateTime now = RTC.now();
  Serial.print(now.year(), DEC);
  Serial.print('/');
  Serial.print(now.month(), DEC);
  Serial.print('/');
  Serial.print(now.day(), DEC);
  Serial.print(' ');
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.println();
}

আমি নিজেও আরটিসি-তে সময় নির্ধারণ করার চেষ্টা করেছি, তবে আমি একই সমস্যাটি শেষ করছি: আরটিসি সর্বদা 32.33 সেকেন্ড আমার পিছনে থাকে I স্কেচটি চালানোর সাথে সাথে ল্যাগটি ঘটে যায়। এটি আমার কাছে খুব অদ্ভুত বলে মনে হচ্ছে যে আমি সময় নির্ধারণের চেষ্টা করি না কেন, আমি ঠিক একই ত্রুটিটি দিয়ে শেষ করি। আমি আরডিনোকে বলতে পারি যে আরটিসি যা বলছে তার পরে 33 সেকেন্ড হিসাবে সময়টি রিপোর্ট করতে পারে, তবে এই সমাধানটি একধরণের স্কেচিযুক্ত বলে মনে হচ্ছে এবং আমি উদ্বিগ্ন যে আমার আরটিসি বা আমি যেভাবে এটি ব্যবহার করছি তাতে কিছু ভুল হয়েছে।

আমি অ্যাডাফ্রুট থেকে এসেম্বলড ডেটা লগিং শিল্ড সহ একটি আরডুইনো ইউনো ব্যবহার করছি। ডেটা লগিং শিল্ড একটি DS1307 আরটিসি ব্যবহার করে। কারও কি এর আগেও এই সমস্যা ছিল, বা এর কারণ কী হতে পারে সে সম্পর্কে কোনও ধারণা আছে? কোন সাহায্যের অনেক প্রশংসা হবে।


আমি আমার প্রকল্পগুলিতে ব্যবহার করার জন্য হুগো বার্টিনি এবং অলি ব্যাখ্যা নিয়েছি এবং এটি কার্যকর! আপনাকে ধন্যবাদ (: তবে এটি 26 সেকেন্ডে দ্রুত চলে যায় ....
আহমদ জাকি আইমন আবদুল রশিদ

উত্তর:


17

__DATE__এবং __TIME__সেট করা হলে কোড কম্পাইল করা হয় যাতে তারা স্বাভাবিকভাবেই পিছনে হবে যেহেতু কোড এখনও সংকলন শেষ এবং তারপর চিপ চমকিত করা প্রয়োজন।

সিরিয়াল দিয়ে এটি আপনার কম্পিউটারে কীভাবে সিঙ্ক করা যায় তার উদাহরণের জন্য আরডুইনো খেলার মাঠ দেখুন ।

টাইমসারিয়াল.পিডি আর্দুইনোকে বাহ্যিক হার্ডওয়্যার ছাড়াই একটি ঘড়ি হিসাবে দেখায়।

এটি সিরিয়াল পোর্টের মাধ্যমে প্রেরিত সময়ের বার্তাগুলির দ্বারা সিঙ্ক্রোনাইজ করা হয়। কোনও সহযোগী প্রসেসিং স্কেচ যদি এই বার্তাগুলি চালু থাকে এবং আরডুইনো সিরিয়াল বন্দরের সাথে সংযুক্ত থাকে তবে স্বয়ংক্রিয়ভাবে এই বার্তা সরবরাহ করবে।


0

setup()ফাংশনে নিম্নলিখিত কোডটি একবার কল করে আপনি অফসেটটি ঠিক করতে পারেন :

RTC_DS3231 rtc;

DateTime now = rtc.now();
rtc.adjust(DateTime(now.unixtime() + 10)); // add 10s to current time for fixing the offset

0

আমি আরডুইনো ইউএনও এবং ন্যানোর সাথে একই ধরণের সমস্যাটি অনুভব করছি। উভয় একই পিসি থেকে। প্রকৃতপক্ষে এটি দেখে মনে হয় যে আপলোড করতে সংকলন থেকে সময় লাগে + এমসিইউ শুরু প্রতিফলিত হয়।

ধরে নিচ্ছি আরটিসির একটি ভাল ব্যাটারি রয়েছে এবং সংকলন + আপলোডের সময়গুলি সামঞ্জস্যপূর্ণ, তারপরে কোডটিতে একটি ড্রিফট ক্ষতিপূরণ যোগ করার কৌশলটি মনে হচ্ছে। আমি এটি কীভাবে করেছি তা এখানে রয়েছে (আমার ক্ষেত্রে 7 সেকেন্ডে "কৌশল" করেছিলেন - হার্ডকোডের জন্য দুঃখিত, তবে এটি নিছক বর্ণনার উদ্দেশ্যে):

RTC.adjust(DateTime(__DATE__, __TIME__));
DateTime t = DateTime(RTC.now().unixtime()+7);
RTC.adjust(t);

শুভেচ্ছা, হুগো বার্টিনি


-1

আরডুইনো কম্পিউটারের সময় নেয় এবং এটি DS1307 এ প্রেরণ করে। অনুলিপি করতে যে সময় লাগে সেটিই আপনি ভুল দেখছেন। আপনার সময়টি প্রয়োজনীয় সময়টি কম্পিউটারে বিলম্বিত হওয়ার পরে এবং প্রোগ্রামিং করার সময় আপনার সঠিক সময় থাকা উচিত বলে আমি সমস্যাটি সমাধান করব।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.