صفحه 1 از 3 123 آخرینآخرین
نمایش نتایج: از 1 به 10 از 25
Like Tree10 لایک

موضوع: شمارش با آردوینو

  1. #1
    Member
    تاریخ عضویت
    Feb 2015
    نوشته ها
    42

    شمارش با آردوینو

    سلام دوستان
    من میخوام که یک شمارش رو روی lcd نمایش بدم به صورتی که این ط.ری باشه که:
    صدم ثانیه:ثانیه:دقیقه
    من الان میتونم یک متن رو مثل helloروی lcd نمایش بدم
    و میتونم یک تایمر با استفاده از کتابخونه های آردوینو درست کنم که میلی ثانیه بشمره
    اما نمیتونم تایمر درست کنم که صدم ثانیه بشمره و روی lcd به صورت بالا نمایش بده
    چند تا برنامه تایمر هم از سایت گرفت اما نمیفهمم چی میگه
    لطفا کمکم کنید
    ویرایش توسط ss13 : 05-10-2015 در ساعت 08:56 PM

  2. #2
    Member
    تاریخ عضویت
    Feb 2015
    نوشته ها
    42
    سلام
    چرا کسی جواب منو نمیده؟

  3. #3
    Senior Member
    تاریخ عضویت
    Dec 2013
    محل سکونت
    ایران - شیراز
    نوشته ها
    220
    unsigned long start, finished, elapsed;

    void setup()
    {
    Serial.begin(9600);
    pinMode(2, INPUT); // start button
    pinMode(3, INPUT); // stop button
    Serial.println("Press 1 for Start/reset, 2 for elapsed time");
    }

    void displayResult()
    {
    float h,m,s,ms;
    unsigned long over;
    elapsed=finished-start;
    h=int(elapsed/3600000);
    over=elapsed%3600000;
    m=int(over/60000);
    over=over%60000;
    s=int(over/1000);
    ms=over%1000;
    Serial.print("Raw elapsed time: ");
    Serial.println(elapsed);
    Serial.print("Elapsed time: ");
    Serial.print(h,0);
    Serial.print("h ");
    Serial.print(m,0);
    Serial.print("m ");
    Serial.print(s,0);
    Serial.print("s ");
    Serial.print(ms,0);
    Serial.println("ms");
    Serial.println();
    }

    void loop()
    {
    if (digitalRead(2)==HIGH)
    {
    start=millis();
    delay(200); // for debounce
    Serial.println("Started...");
    }
    if (digitalRead(3)==HIGH)
    {
    finished=millis();
    delay(200); // for debounce
    displayResult();
    }
    }

    فقط یکم تغییرات توش بده

    arduino millis counter اینو اگه تو گوگل سرچ کنی چیزای دیگه ایی هم پیدا می کنی.
    سوال داشتی در خدمتیم.....
    ویرایش توسط solxsado : 05-13-2015 در ساعت 08:27 PM
    لایک کردن

  4. #4
    Member
    تاریخ عضویت
    Feb 2015
    نوشته ها
    42
    سلام
    خیلی ممنون به خاطر راهنمایی که انجا دادید
    من کاملا برنامه شما رو متوجه شدم
    اما چند تا سوال دارم:
    یکی اینکه قبل از یک شدن پین شماره 2 و 3 این برنامه شروع به کار میکنه!
    دومه اینکه مثلا من از یک صفحه serial monitor عکس گرفتم و نتیجه زی رو گرفتم که نمیدونم چرا!!!؟؟؟؟؟؟
    Press 1 for Start/reset, 2 for elapsed time
    Started...
    Started...
    Started...
    Started...
    Started...
    Started...
    Raw elapsed time: 200
    Elapsed time: 0h 0m 2s 0ms

    Started...
    Raw elapsed time: 201
    Elapsed time: 0h 0m 2s 1ms

    Started...
    Raw elapsed time: 200
    Elapsed time: 0h 0m 2s 0ms

    Started...
    Raw elapsed time: 201
    Elapsed time: 0h 0m 2s 1ms

    Started...
    Raw elapsed time: 201
    Elapsed time: 0h 0m 2s 1ms

    Started...
    Raw elapsed time: 200
    Elapsed time: 0h 0m 2s 0ms
    سوم اینه من میخوا این برامه رو روی lcd پیاده کنم
    برنامه زیر رو بهش اضافه کرم تا شاید جواب بده وی نمیدونم چرا جواب نمیده!
    #include <SPI.h>

    unsigned long start, finished, elapsed;
    #include <LiquidCrystal.h>

    LiquidCrystal lcd(10,9, 5, 4, 3, 2);



    void setup()
    {
    float h,m,s,ms;
    unsigned long over;
    elapsed=finished-start;
    h=int(elapsed/3600000);
    over=elapsed%3600000;
    m=int(over/60000);
    over=over%60000;
    s=int(over/1000);
    ms=over%1000;

    Serial.begin(9600);

    lcd.begin(16,2);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.println("hello");
    lcd.setCursor(0,1);
    lcd.print(s);


    }
    void loop()
    {
    float h,m,s,ms;
    unsigned long over;
    elapsed=finished-start;
    h=int(elapsed/3600000);
    over=elapsed%3600000;
    m=int(over/60000);
    over=over%60000;
    s=int(over/1000);
    ms=over%1000;
    if (digitalRead(13)==HIGH)
    {
    start=millis();
    delay(200);
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.println("Started...");
    }
    if (digitalRead(14)==HIGH)
    {
    finished=millis();
    lcd.println(s);

    delay(200);
    }
    }



    الان خط اول مینویسه start
    اما در خط بعد عددی که مینویسه معلوم نیست که چیه
    وقتی پایه 13 رو یک میکنم و بلافاصله 14 رو
    یک بار مینویسه
    47.00
    یک بار مینویسه
    19.00
    با توجه به اینکه نوشتم ثانیه رو نشون بده معلوم نیست چی داره نشون میده
    ممنون میشم اگه راهنماییم کنید

  5. #5
    Senior Member
    تاریخ عضویت
    Dec 2013
    محل سکونت
    ایران - شیراز
    نوشته ها
    220
    unsigned long start, finished, elapsed;

    void setup(){
    Serial.begin(9600);
    }

    void displayResult(){
    float h,m,s,ms;
    unsigned long over;
    elapsed=finished-start;
    h=int(elapsed/3600000);
    over=elapsed%3600000;
    m=int(over/60000);
    over=over%60000;
    s=int(over/1000);
    ms=over%1000;
    Serial.print("Raw elapsed time: ");
    Serial.println(elapsed);
    Serial.print("Elapsed time: ");
    Serial.print(h,0);
    Serial.print("h ");
    Serial.print(m,0);
    Serial.print("m ");
    Serial.print(s,0);
    Serial.print("s ");
    Serial.println("ms");
    Serial.println();
    }

    void loop(){
    finished=millis();
    delay(10);
    displayResult();
    }

    اینجا من ساده ترش کردم واست

  6. #6
    Member
    تاریخ عضویت
    Feb 2015
    نوشته ها
    42
    سلام
    مرسی
    با این تعییرات الان برنامه به خوبی کار میکنه
    unsigned long start, finished, elapsed;
    #include <SPI.h>
    int ledpin = 7;
    int led = 13;
    // LED connected to digital pin 13
    #include <LiquidCrystal.h> //Load Liquid Crystal Library
    LiquidCrystal LCD(10, 9, 5, 4, 3, 2);
    void setup(){
    pinMode(ledpin, INPUT);
    // sets the digital pin as output
    Serial.begin(9600);
    LCD.clear();
    LCD.begin(16,2); //Tell Arduino to start your 16 column 2 row LCD
    LCD.setCursor(0,0); //Set LCD cursor to upper left corner, column 0, row 0
    LCD.print("My Timer:"); //
    }

    void displayResult(){
    int h,m,s,ms;
    unsigned long over;
    elapsed=finished-start;
    h=int(elapsed/3600000);
    over=elapsed%3600000;
    m=int(over/60000);
    over=over%60000;
    s=int(over/1000);
    ms=over%100;
    Serial.print("Raw elapsed time: ");
    Serial.println(elapsed);
    Serial.print("Elapsed time: ");
    Serial.print(h,0);
    Serial.print("h ");
    Serial.print(m,0);
    Serial.print("m ");
    Serial.print(s,0);
    Serial.print("s ");
    Serial.print(s,0);
    Serial.println("ms");
    Serial.println();
    }

    void loop(){
    aval:
    if (digitalRead(ledpin)==HIGH)
    {
    int h,m,s,ms;
    unsigned long over;
    elapsed=finished-start;
    h=int(elapsed/3600000);
    over=elapsed%3600000;
    m=int(over/60000);
    over=over%60000;
    s=int(over/1000);
    ms=over%100;
    finished=millis();
    delay(10);
    displayResult();
    LCD.setCursor(0,1);
    LCD.print(h);
    LCD.setCursor(4,1);
    LCD.print(m);
    LCD.setCursor(8,1);
    LCD.print(s);
    LCD.setCursor(12,1);
    LCD.print(ms);
    if(s==0)
    {
    LCD.setCursor(9,1);
    LCD.print(" ");
    }
    if(m==0)

    {
    LCD.setCursor(5,1);
    LCD.print(" ");
    }
    }

    else if (digitalRead(ledpin)==LOW)
    {
    finished=millis();
    delay(200); // for debounce
    displayResult();
    digitalWrite(led , HIGH);
    goto aval;

    }
    }
    البته الان هم من 2 تا مشکل دارم:
    یکی اینکه من میخوام تا پایه 7 یک نشده زمان اندازه گیری نشه اما در این برنامه به محض اتصال برد به پاور زمان اندازه گیری میشه ووقتی پایه 7 به 5 ولت وصل میشه مثلا از زمان 18 ثانیه شروع به شمارش میکنه.
    یکی دیگه اینکه در کمال تعجب باید بگم وقتی فقط در پایه 7 سیم قرار دارد و این سیم به جایی وصل نیست تایمر روی lcd زمان را نشان میدهد که ثانیه به جای یکی یکی دوتا دوتا افزایش می یابد
    مثلا 39 ثانیه رو نشون میده بعد از 2 ثانیه 40 ثانیه رو نشون میده!!!!!!!!!!
    ویرایش توسط ss13 : 05-15-2015 در ساعت 06:59 PM

  7. #7
    Senior Member
    تاریخ عضویت
    Dec 2013
    محل سکونت
    ایران - شیراز
    نوشته ها
    220
    پایه 7 رو باید poll down کنی یعنی با یه مقاومت 1 مگا اهمی به منفی وصل کنی

  8. #8
    Member
    تاریخ عضویت
    Feb 2015
    نوشته ها
    42
    سلام
    خیلی ممنون به خاطر راهنمایی هاتون
    ی سوال دارم: چطور میشه این تایمر رو ریسیت کرد؟
    من میخوام وقتی پایه 7 low شد سپس high شد تایمر شروع کنه از اول بشمره
    چطور باید تایمر رو به این صورت فعال کنم؟

  9. #9
    Member
    تاریخ عضویت
    Feb 2015
    نوشته ها
    42
    الو.........
    دوستم کجایی؟
    چطور میشه این تایمر رو ریست کرد؟

  10. #10
    Senior Member
    تاریخ عضویت
    Dec 2013
    محل سکونت
    ایران - شیراز
    نوشته ها
    220
    فکر نمی کنم ریست بشه
    مگه میکرو رو ریست کنی

صفحه 1 از 3 123 آخرینآخرین

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

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

SEO by vBSEO