صفحه 2 از 5 نخستنخست 1234 ... آخرینآخرین
نمایش نتایج: از 11 به 20 از 49
Like Tree14 لایک

موضوع: ماژول ساعت فوق دقیق ds3231 با رابط i2c

  1. #11
    Junior Member
    تاریخ عضویت
    May 2015
    نوشته ها
    7
    سلام دوستان . این ماژول رو من سوار کردم و خیلی خووب کار میکنه حتی به راحتی تونستم روی ال سی دی 2*16 خروجی بگیرم
    فقط یه سوال:
    وقتی آردینیو خاموش روشن بشه ساعت دوباره از اول شروع به کار میکنه پس این باطری رو ماژول به چه دردی میخوره ؟ نمیشه کاری کرد که برق قطع شد ساعت کار کنه ؟؟؟
    لایک کردن

  2. #12
    Junior Member
    تاریخ عضویت
    Jun 2015
    نوشته ها
    1
    نقل قول نوشته اصلی توسط mohaghegh نمایش پست ها
    سلام دوستان . این ماژول رو من سوار کردم و خیلی خووب کار میکنه حتی به راحتی تونستم روی ال سی دی 2*16 خروجی بگیرم
    فقط یه سوال:
    وقتی آردینیو خاموش روشن بشه ساعت دوباره از اول شروع به کار میکنه پس این باطری رو ماژول به چه دردی میخوره ؟ نمیشه کاری کرد که برق قطع شد ساعت کار کنه ؟؟؟
    دوست عزیز حتما باطری روی ماژول خالی شده اون رو عوض کنی مشکل حل میشه
    ضمنا اگه باطری نو بندازی بعد یه مدت(حدودا دو سه هفته) باطری باد میکنه و فاسد میشه علتش اینه که از تغذیه ماژول از مسیر دیود شیشه ای و یک مقاومت 220 اهمی یاطری روی ماژول شارژ میشه و باعث باد کردن و فاسد شدن باطری میشه یا باید باطری قابل شارژ روش بندازی یا دیود شیشه ای رو حذف کنی که باطری شارژ نشه
    لایک کردن

  3. #13
    Member
    تاریخ عضویت
    Feb 2016
    نوشته ها
    55
    سلام ببخشید در کد بنده در زیر که از یه SD-CARD و یه ماژول DS3231 استفاده کردم می خوام هر بار که پرونده ای جدید باز میشه در کارت تحت عنوان ساعتی که خوانده ایم ایجاد شود که برای این کار باید متغیر k در کد رو طوری مقدار دهی کنیم که GLOBAL شه تا تابع دومی که در VOID LOOP تعریف شده نیز روی همان پرونده تغییرات را ثبت کند برای این کار باید چه کرد یا به عبارتی چطور می توان یه مقدار رشته ای به عنوان متغیر محلی را به متغیر کلی GLOBAL تبدیل کرد؟

    /*
    DS3231: Real-Time Clock. Simple example
    Read more: www.jarzebski.pl/arduino/komponenty/zegar-czasu-rzeczywistego-rtc-ds3231.html
    GIT: https://github.com/jarzebski/Arduino-DS3231
    Web: /dev/Jarzębski - Santyago back to root
    (c) 2014 by Korneliusz Jarzebski
    */
    #include <SPI.h>
    #include <SD.h>
    #include "Adafruit_GFX.h"
    #include "Adafruit_ILI9340.h"
    #include <Wire.h>
    #include <DS3231.h>

    #if defined(__SAM3X8E__)
    #undef __FlashStringHelper::F(string_literal)
    #define F(string_literal) string_literal
    #endif
    // These are the pins used for the UNO
    // for Due/Mega/Leonardo use the hardware SPI pins (which are different)
    #define _sclk 13
    #define _miso 12
    #define _mosi 11
    #define _cs 10
    #define _dc 9
    #define _rst 8

    Adafruit_ILI9340 tft = Adafruit_ILI9340(_cs, _dc, _rst);

    const int chipSelect = 4; //number of pin cs of sd-card

    DS3231 clock;
    RTCDateTime dt;
    String k;//="ali"
    void setup()
    {
    Serial.begin(9600);
    // Initialize DS3231
    Serial.println("Initialize DS3231");;
    if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;}
    Serial.println("card initialized.");
    // Set sketch compiling time

    clock.begin();
    clock.setDateTime(__DATE__, __TIME__);
    dt = clock.getDateTime();
    String k=String(clock.dateFormat("Y-m-d l H:i:s", dt));
    String M =(clock.dateFormat("Y-m-d l H:i:s", dt));
    Serial.println(k); Serial.println("M =");
    Serial.println(M);

    File dataFile = SD.open(k, FILE_WRITE);
    dataFile.println(clock.dateFormat("Y-m-d l H:i:s", dt));
    dataFile.println("YA ALI MADAD");
    dataFile.close();
    }
    void loop()
    {
    dt = clock.getDateTime();
    // For leading zero look to DS3231_dateformat example
    File dataFile = SD.open(k, FILE_WRITE);
    dataFile.println("ljksadfljsfljslfjlsjf");
    dataFile.close();
    Serial.print("Raw data: ");
    Serial.print(dt.year); Serial.print("-");
    Serial.print(dt.month); Serial.print("-");
    Serial.print(dt.day); Serial.print(" ");
    Serial.print(dt.hour); Serial.print(":");
    Serial.print(dt.minute); Serial.print(":");
    Serial.print(dt.second); Serial.println("");
    // String k=clock.dateFormat("Y-m-d l H:i:s", dt);
    Serial.println(k);
    delay(1000);
    }

  4. #14
    Member
    تاریخ عضویت
    Feb 2016
    نوشته ها
    55
    نقل قول نوشته اصلی توسط yhz7 نمایش پست ها
    دوست عزیز حتما باطری روی ماژول خالی شده اون رو عوض کنی مشکل حل میشه
    ضمنا اگه باطری نو بندازی بعد یه مدت(حدودا دو سه هفته) باطری باد میکنه و فاسد میشه علتش اینه که از تغذیه ماژول از مسیر دیود شیشه ای و یک مقاومت 220 اهمی یاطری روی ماژول شارژ میشه و باعث باد کردن و فاسد شدن باطری میشه یا باید باطری قابل شارژ روش بندازی یا دیود شیشه ای رو حذف کنی که باطری شارژ نشه
    منظورتون از دیود شیشه ای همونی است که برای پاورشه و نشان دهنده روشن بودن ماژوله؟

  5. #15
    Junior Member
    تاریخ عضویت
    Mar 2014
    نوشته ها
    13
    ضمن سلام جناب انصاری
    برای دریافت ساعت و تبدیل به یک داده رشته ای تابع زیر رو امتحان کنید

    String SENDSTR (void)
    {
    String k=String(clock.dateFormat("Y-m-d l H:i:s", dt));
    return k;
    }

    بعد هم وقتی می خوای اسم برای فایلی که می خوای در رم ایجاد بکنی از کد زیر استفاده کن

    File dataFile = SD.open(SENDSTR(), FILE_WRITE);

    یه تست کن جواب رو بگو
    لایک کردن

  6. #16
    Member
    تاریخ عضویت
    Feb 2016
    نوشته ها
    55

    /*
    DS3231: Real-Time Clock. Simple example
    Read more: http://www.jarzebski.pl/arduino/komp...tc-ds3231.html
    GIT: https://github.com/jarzebski/Arduino-DS3231
    Web: /dev/Jarzębski - Santyago back to root
    (c) 2014 by Korneliusz Jarzebski
    */
    #include <SPI.h>
    #include <SD.h>
    #include "Adafruit_GFX.h"
    #include "Adafruit_ILI9340.h"
    #include <Wire.h>
    #include <DS3231.h>

    #if defined(__SAM3X8E__)
    #undef __FlashStringHelper::F(string_literal)
    #define F(string_literal) string_literal
    #endif
    // These are the pins used for the UNO
    // for Due/Mega/Leonardo use the hardware SPI pins (which are different)
    #define _sclk 13
    #define _miso 12
    #define _mosi 11
    #define _cs 10
    #define _dc 9
    #define _rst 8

    Adafruit_ILI9340 tft = Adafruit_ILI9340(_cs, _dc, _rst);

    const int chipSelect = 4; //number of pin cs of sd-card

    DS3231 clock;
    RTCDateTime dt;
    // String k;//="ali"
    String SENDSTR (void)
    {
    String k=String(clock.dateFormat("Y-m-d l H:i:s", dt));
    return k; }

    void setup()
    {
    Serial.begin(9600);
    // Initialize DS3231
    Serial.println("Initialize DS3231");;
    if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    return; // don't do anything more:
    }
    Serial.println("card initialized.");
    // Set sketch compiling time

    clock.begin();
    clock.setDateTime(__DATE__, __TIME__);
    dt = clock.getDateTime();
    String k=String(clock.dateFormat("Y-m-d l H:i:s", dt));
    String M =(clock.dateFormat("Y-m-d l H:i:s", dt));
    Serial.println("k =");Serial.println(k);
    Serial.println("M =");Serial.println(M);

    File dataFile = SD.open(SENDSTR(), FILE_WRITE);
    dataFile.println(clock.dateFormat("Y-m-d l H:i:s", dt));
    dataFile.println("YA ALI MADAD");
    dataFile.close();
    }

    void loop()
    {
    dt = clock.getDateTime();

    Serial.print("Value of SENDSTR()= ");Serial.println(SENDSTR());
    File dataFile = SD.open(SENDSTR(), FILE_WRITE);
    dataFile.println("ljksadfljsfljslfjlsjf");
    dataFile.close();
    Serial.print("Raw data: ");
    Serial.print(dt.year); Serial.print("-");
    Serial.print(dt.month); Serial.print("-");
    Serial.print(dt.day); Serial.print(" ");
    Serial.print(dt.hour); Serial.print(":");
    Serial.print(dt.minute); Serial.print(":");
    Serial.print(dt.second); Serial.println("");

    delay(1000);
    }
    ممنونم از جوابتون آقای لطفی من کد شما رو با کمی تغییرات و اصلاحات به صورت بالا زدم و خطا نداد منتها هیچ فایلی در حافظه ذخیره نشد اینم به این علت است که SD.OPEN دوم در تابع Loop وقتی تابع جدید را فراخوانی می کنه مقادیرش اولا مرتب عوض میشه شاید به این علت باشه که اگر بخواهیم dt = clock.getDateTime(); را در تابع Loop استفاده کنیم مقدار تابع SENDSTR(), عوض میشه .

    این خروجی سریال مانیتور کد بالاست :
    [QUOTE][/
    Initialize DS3231
    card initialized.
    k =
    2016-04-11 Monday 10:52G
    M =
    2016-04-11 Monday 10:52:16
    Value of SENDSTR()= 2016-04-11 Monday 10:52:16
    Raw data: 2016-4-11 10:52:16
    Value of SENDSTR()= 2016-04-11 Monday 10:52:17
    Raw data: 2016-4-11 10:52:17
    Value of SENDSTR()= 2016-04-11 Monday 10:52:18

    QUOTE]

  7. #17
    Member
    تاریخ عضویت
    Feb 2016
    نوشته ها
    55
    ببخشید کسی می دونه چگونه می شه در تابع setup مثلا متغیر سراسری مثل K تعریف کرد و مقدارشو برابر با زمانی گرفت که از ماژول DS3231 گرفته میشه طوری که در تابع LOOP که باز زمان رو از ماژول می خوانیم دیگه مقدار رشته ای ثابتی داشته باشه و تغییر نکنه؟

  8. #18
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط mr.ansaripour نمایش پست ها
    ببخشید کسی می دونه چگونه می شه در تابع setup مثلا متغیر سراسری مثل K تعریف کرد و مقدارشو برابر با زمانی گرفت که از ماژول DS3231 گرفته میشه طوری که در تابع LOOP که باز زمان رو از ماژول می خوانیم دیگه مقدار رشته ای ثابتی داشته باشه و تغییر نکنه؟
    در تابع setup نمیشه متغیر سراسری تعریف کرد

    شما بالای ستاپ معرفیش می کنی
    توی ستاپ برای اولین بار (مقدار اولیه متغیر ) بهش مقدار میدی

  9. #19
    Member
    تاریخ عضویت
    Feb 2016
    نوشته ها
    55
    سلام خیلی ممنون که بالاخره کسی پیدا شد به ما کمک کنه ولی این فرمایش شما طبق کد زیر عملیاتی نمیشه گرچه خطا هم نمیده ولی مقدار K در تابع LOOP نشان داده نمیشه در سریال مانیتور

    const String k;
    void setup() {
    // put your setup code here, to run once:
    Serial.begin(9600);
    const String k=String(1234);
    Serial.print("k1 = "); Serial.println(k);
    //static
    //public
    }
    void loop() {
    Serial.print("k1 = "); Serial.println(k);
    delay(1000);
    // put your main code here, to run repeatedly:
    }

  10. #20
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط mr.ansaripour نمایش پست ها
    سلام خیلی ممنون که بالاخره کسی پیدا شد به ما کمک کنه ولی این فرمایش شما طبق کد زیر عملیاتی نمیشه گرچه خطا هم نمیده ولی مقدار K در تابع LOOP نشان داده نمیشه در سریال مانیتور

    const String k;
    void setup() {
    // put your setup code here, to run once:
    Serial.begin(9600);
    const String k=String(1234);
    Serial.print("k1 = "); Serial.println(k);
    //static
    //public
    }
    void loop() {
    Serial.print("k1 = "); Serial.println(k);
    delay(1000);
    // put your main code here, to run repeatedly:
    }

    علتش این هست که جنس متغیر رو const گرفتید
    کد صحیح :
    کد:
     String k;
    
    
    void setup() {
    // put your setup code here, to run once:
    Serial.begin(9600);
    k=String(1234);
    Serial.print("k1 = "); Serial.println(k);
    //static
    //public
    }
    
    
    
    
    void loop() {
    Serial.print("k1 = "); Serial.println(k);
    delay(1000);
    // put your main code here, to run repeatedly:
    }
    لایک کردن

صفحه 2 از 5 نخستنخست 1234 ... آخرینآخرین

کلمات کلیدی این موضوع

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  

SEO by vBSEO