نمایش نتایج: از 1 به 10 از 25
Like Tree10 لایک

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

Threaded View

  1. #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 در ساعت 05:59 PM

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

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

SEO by vBSEO