نمایش نتایج: از 1 به 8 از 8

موضوع: راهنمایی در مورد ds1307

  1. #1
    Junior Member
    تاریخ عضویت
    Dec 2015
    نوشته ها
    11

    راهنمایی در مورد ds1307

    سلام خدمت دوستان عزیز
    بنده یه ساعت با اردوینو نانو و چهار تا سون سگمنت و ای سی ds1307 ساختم.همه چیز اوکی هست فقط دو تا سوال دارم
    اول اینکه برای تنظیم ساعت از چه کد و دستوری باید استفاده کنم تا با سه تا کلید بتونم مقدار ساعت رو تنظیم کنم ؟
    دوم اینکه برای اینکه بخوام خروجی یک هرتز ds1307 رو فعال کنم چه کدی باید بنویسم؟
    ضمنا از کتابخانه ds3231 استفاده کردم.
    ممنون میشم اگه راهنمایی کنید

  2. #2
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    در مورد سوال اولتون کد میتونم تو روند کلی کد نویسی کمکتون کنم .
    به این شکل هست که شما الان احتمالا با کنسول سریال دارید زمان رو کانفیگ می کنید.
    کافیه یه منو طراحی کنید که که توش به جای اینکه عدد رو از کنسول بگیرید از یه تابع بگیرید
    که اون تابع در واقع خروجی عدد وارد شده با سوئیچ هاست.
    (توضیحش سخته اگر کامل نبود بگید یه مدل دیگه توضیح بدم )

    در مورد سوال دومتون:
    DS1307 Square Wave Output Help

  3. #3
    Junior Member
    تاریخ عضویت
    Dec 2015
    نوشته ها
    11
    ممنون از اینکه پاسخ دادید.
    خروجی یک هرتز فعال شد واقعا ممنون
    در مورد توضیح اولتون کد رو گذاشتم . باید چیکار کنم؟

    کد:
    #include <Wire.h> // برای راه اندازی این آی سی باید حتما این کتابخونه رو هم فراخونی کنیم
    #include <Sodaq_DS3231.h> // فراخوانی کتابخانه این آی سی
    DateTime now; // ایجاد یه متغییر از نوع "دیتا تایم"
    #include <DS3231.h>
    boolean state;
    int a;
    int yekan=0 ;
    int dahgan=0;
    int sadgan=0;
    int hezargan=0;
    int _sec;
    int _min;
    int _hour;
    int h=0;
    int m=0;
    int s=0;
    
    
    
    byte seven_seg_digits[10][7] = { { 1,1,1,1,1,1,0 },  // = 0
                                     { 0,1,1,0,0,0,0 },  // = 1
                                     { 1,1,0,1,1,0,1 },  // = 2
                                     { 1,1,1,1,0,0,1 },  // = 3
                                     { 0,1,1,0,0,1,1 },  // = 4
                                     { 1,0,1,1,0,1,1 },  // = 5
                                     { 1,0,1,1,1,1,1 },  // = 6
                                     { 1,1,1,0,0,0,0 },  // = 7
                                     { 1,1,1,1,1,1,1 },  // = 8
                                     { 1,1,1,0,0,1,1 }   // = 9
                                    };
    void setup() {   
      Serial.begin(9600);  
    //  Serial.setTimeout(10);           
      pinMode(5, OUTPUT);   
      pinMode(6, OUTPUT);
      pinMode(7, OUTPUT);
      pinMode(8, OUTPUT);
      pinMode(9, OUTPUT);
      pinMode(10, OUTPUT);
      pinMode(11, OUTPUT);
      pinMode(12, OUTPUT);
      pinMode(13, OUTPUT);
      pinMode(14, OUTPUT);
      pinMode(15, OUTPUT);
      pinMode(3, INPUT);   
      pinMode(4, INPUT);
    DateTime dt(2016, 5, 7, 21, 53, 15, 0);
    
    
    rtc.setDateTime(dt);
     Wire.begin();
     rtc.begin();
    }
    
    void loop() {
     now = rtc.now();
    
      //Serial.print(now.hour());
     //Serial.print(':');
     //Serial.print(now.minute());
     //Serial.print(':');
     //Serial.print(now.second());
     //Serial.print(" ");
    _sec=now.second();
    _min=now.minute();
    _hour=now.hour();
      
      dahgan=_min/10;
      yekan=_min%10;
    
       hezargan=_hour/10;
       sadgan=_hour%10;  
       sevenSegWrite000X(yekan); 
       delay(50);//20 MILI VAGHEI
       sevenSegWrite00X0(dahgan);
       delay(50);//20 MILI VAGHEI
       sevenSegWrite0X00(sadgan);
       delay(50);//20 MILI VAGHEI
       sevenSegWriteX000(hezargan);
       delay(50);//20 MILI VAGHEI
    }
        
    void sevenSegWrite000X(byte digit) {
      digitalWrite(12, HIGH);
      digitalWrite(13, LOW);
      digitalWrite(14, LOW);
      digitalWrite(15, LOW);
      byte pin = 5;
      for (byte segCount = 0; segCount < 7; ++segCount) {
        digitalWrite(pin, seven_seg_digits[digit][segCount]);
        ++pin;
      }
    }
    
    void sevenSegWrite00X0(byte digit) {
    digitalWrite(12, LOW);
    digitalWrite(13, HIGH);
    digitalWrite(14, LOW);
    digitalWrite(15, LOW);
     
      byte pin = 5;
      for (byte segCount = 0; segCount < 7; ++segCount) {
        digitalWrite(pin, seven_seg_digits[digit][segCount]);
        ++pin;
      }
    }
    
    void sevenSegWrite0X00(byte digit) {
    digitalWrite(12, LOW);
    digitalWrite(13, LOW);
    digitalWrite(14, HIGH);
    digitalWrite(15, LOW);
      byte pin = 5;
      for (byte segCount = 0; segCount < 7; ++segCount) {
        digitalWrite(pin, seven_seg_digits[digit][segCount]);
        ++pin;
      }
    }
    void sevenSegWriteX000(byte digit) {
    digitalWrite(12, LOW);
    digitalWrite(13, LOW);
    digitalWrite(14, LOW);
    digitalWrite(15, HIGH);
      byte pin = 5;
      for (byte segCount = 0; segCount < 7; ++segCount) {
        digitalWrite(pin, seven_seg_digits[digit][segCount]);
        ++pin;
      }
    }
    ویرایش توسط hamed_avr : 07-09-2016 در ساعت 05:36 PM

  4. #4
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط hamed_avr نمایش پست ها
    ممنون از اینکه پاسخ دادید.
    خروجی یک هرتز فعال شد واقعا ممنون
    در مورد توضیح اولتون کد رو گذاشتم . باید چیکار کنم؟

    byte seven_seg_digits[10][7] = { { 1,1,1,1,1,1,0 }, // = 0
    { 0,1,1,0,0,0,0 }, // = 1
    { 1,1,0,1,1,0,1 }, // = 2
    { 1,1,1,1,0,0,1 }, // = 3
    { 0,1,1,0,0,1,1 }, // = 4 for (byte segCount = 0; segCount < 7; ++segCount) {
    digitalWrite(pin, seven_seg_digits[digit][segCount]);
    ++pin;
    }
    }
    [/CODE]
    این خط رو توی کدت میبینی؟
    کد:
    DateTime dt(2016, 5, 7, 21, 53, 15, 0);
    توی این خط داری زمان رو کانفیگ می کنی
    باید به جای این عددهایی که دستی وارد می کنی جاشون متغیر بزاری که این متغیرها درواقع خروجی تابع تعیین زمان هستن:
    یه نمونش میشه این کد من میشه که تابع هاشو باید بر اساس منویی که تعریف می کنید بنویسید
    کد:
    #include <Wire.h> 
    #include <Sodaq_DS3231.h>
    #include <DS3231.h>
    boolean state;
    DateTime now; 
    int a;
    int yekan=0 ;
    int dahgan=0;
    int sadgan=0;
    int hezargan=0;
    int _sec;
    int _min;
    int _hour;
    int h=0;
    int m=0;
    int s=0;
    
    
    
    
    
    
    byte seven_seg_digits[10][7] = { { 1,1,1,1,1,1,0 },  // = 0
                                     { 0,1,1,0,0,0,0 },  // = 1
                                     { 1,1,0,1,1,0,1 },  // = 2
                                     { 1,1,1,1,0,0,1 },  // = 3
                                     { 0,1,1,0,0,1,1 },  // = 4
                                     { 1,0,1,1,0,1,1 },  // = 5
                                     { 1,0,1,1,1,1,1 },  // = 6
                                     { 1,1,1,0,0,0,0 },  // = 7
                                     { 1,1,1,1,1,1,1 },  // = 8
                                     { 1,1,1,0,0,1,1 }   // = 9
                                    };
    void setup() {   
      Serial.begin(9600);  
    //  Serial.setTimeout(10);           
      pinMode(5, OUTPUT);   
      pinMode(6, OUTPUT);
      pinMode(7, OUTPUT);
      pinMode(8, OUTPUT);
      pinMode(9, OUTPUT);
      pinMode(10, OUTPUT);
      pinMode(11, OUTPUT);
      pinMode(12, OUTPUT);
      pinMode(13, OUTPUT);
      pinMode(14, OUTPUT);
      pinMode(15, OUTPUT);
      pinMode(3, INPUT);   
      pinMode(4, INPUT);
    DateTime dt(year(), month(), day(),hour(), minute(), second(), 0);
    
    
    
    
    rtc.setDateTime(dt);
     Wire.begin();
     rtc.begin();
    }
    
    
    void loop() {
     now = rtc.now();
    
    
      //Serial.print(now.hour());
     //Serial.print(':');
     //Serial.print(now.minute());
     //Serial.print(':');
     //Serial.print(now.second());
     //Serial.print(" ");
    _sec=now.second();
    _min=now.minute();
    _hour=now.hour();
      
      dahgan=_min/10;
      yekan=_min%10;
    
    
       hezargan=_hour/10;
       sadgan=_hour%10;  
       sevenSegWrite000X(yekan); 
       delay(50);//20 MILI VAGHEI
       sevenSegWrite00X0(dahgan);
       delay(50);//20 MILI VAGHEI
       sevenSegWrite0X00(sadgan);
       delay(50);//20 MILI VAGHEI
       sevenSegWriteX000(hezargan);
       delay(50);//20 MILI VAGHEI
    }
    
    
    int year(){}
    int month(){}
    int day(){}
    int hour(){}
    int minute(){}
    int second(){}
    ویرایش توسط magmagmary : 07-10-2016 در ساعت 04:03 AM

  5. #5
    Junior Member
    تاریخ عضویت
    Dec 2015
    نوشته ها
    11
    درسته . ولی من الان نمیدونم چطور باید به DateTime dt(year(), month(), day(),hour(), minute(), second(), 0);
    سال و ماه و روز و ... مقدار بدم؟یعنی از کجا باید مقدار رو وارد کنم؟

  6. #6
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط hamed_avr نمایش پست ها
    درسته . ولی من الان نمیدونم چطور باید به DateTime dt(year(), month(), day(),hour(), minute(), second(), 0);
    سال و ماه و روز و ... مقدار بدم؟یعنی از کجا باید مقدار رو وارد کنم؟
    ببینید اینهایی که من نوشتم :
    year(), month(), day(),hour(), minute(), second()

    اینا همشون تابع هستن
    شما باید کدی بزنید که با دو تا میکروسوئیچ بتونید اینها رو تنظیم کنید.

    به یه چیز مشابه این کد احتیاج داری
    https://www.arduino.cc/en/Tutorial/StateChangeDetection

    توی این کد میاد تعداد دفعاتی رو که سوئیچ فشار داده میشه میشماره

  7. #7
    Junior Member
    تاریخ عضویت
    Dec 2015
    نوشته ها
    11
    مهندس شرمندتم امکان داره یه نمونه برام تابع و بنویسین ؟؟

  8. #8
    مدیر گروه
    تاریخ عضویت
    Nov 2013
    محل سکونت
    ایران
    نوشته ها
    4,064
    نقل قول نوشته اصلی توسط hamed_avr نمایش پست ها
    مهندس شرمندتم امکان داره یه نمونه برام تابع و بنویسین ؟؟

    باید اجازه بدید تا وقت کنم انجام بدم یه نمونشو

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

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

SEO by vBSEO