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

موضوع: ساخت تایمر با آردیونو+کنترل با میکروسوئیچ

Hybrid View

  1. #1
    Junior Member
    تاریخ عضویت
    May 2016
    نوشته ها
    22
    من تغییرات تو برنامه رو ایجاد کردم اگه امکان داره بازبینی بفرمایید و سناریو به این شکله ک

    1.اگر کلید A در حالت HIGH باشه و مقدار جاری زمان از زمان قبلی بیشتر از مقدار تایم(یک ساعت)بیشتر بشه رله چپ گرد رو روشن کنه و چهار چوب بره به سمت کلید B
    2.حالا تو if چهارم گفتیم به محض رسیدن چهارچوب به کلید B, رله چپ گرد خاموش شه
    3.اگر کلید َB در حالت HIGH باشه و مقدار جاری زمان از زمان قبلی بیشتر از مقدار تایم(یک ساعت)بیشتر بشه رله راست گرد رو روشن کنه و چهار چوب بره به سمت کلید A
    4.حالا تو if سوم گفتیم به محض رسیدن چهارچوب به کلید A, رله راست گرد خاموش شه

    کد:
    const int button_A = 2;  //pin for button A
    const int button_B = 3;  //pin for button B
    const int relay_L = 4;  //pin for Left turn motor
    const int relay_R = 5;  //pin for Right turn motor
    unsigned long previousMillis = 0;        // will store last time button was updated
    long OffTime = 3600000;          // milliseconds of off-time
    
     
    void setup() {
    pinMode(button_A,INPUT);
    pinMode(button_B,INPUT);
    pinMode(relay_L,OUTPUT);
    pinMode(relay_R,OUTPUT);
    }
    
    void loop() 
    {
    unsigned long currentMillis = millis();
    
          if((digitalRead(button_A)==HIGH) && (currentMillis - previousMillis >= OffTime))
    {
      previousMillis = currentMillis;  // Remember the time
      digitalWrite(relay_L,HIGH);  //if curr-perv>=3600sec(1h) start turn motor to Left
     }
    
          if((digitalRead(button_B)==HIGH) && (currentMillis - previousMillis >= OffTime))
    {
       previousMillis = currentMillis;  // Remember the time
       digitalWrite(relay_R,HIGH);  //if curr-perv>=3600sec(1h) start turn motor to Right
    }
    
    if(digitalRead(button_A)==HIGH)
      {
        digitalWrite(relay_R,LOW);  ////stop motor turn Right after push button_A
      }
      
    if(digitalRead(button_B)==HIGH)
    {
        digitalWrite(relay_L,LOW);  //stop motor turn Left after push button_B
    }
    
    }
    ویرایش توسط abbasjavanmardi : 05-31-2016 در ساعت 08:39 PM

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

    1.اگر کلید A در حالت HIGH باشه و مقدار جاری زمان از زمان قبلی بیشتر از مقدار تایم(یک ساعت)بیشتر بشه رله چپ گرد رو روشن کنه و چهار چوب بره به سمت کلید B
    2.حالا تو if چهارم گفتیم به محض رسیدن چهارچوب به کلید B, رله چپ گرد خاموش شه
    3.اگر کلید َB در حالت HIGH باشه و مقدار جاری زمان از زمان قبلی بیشتر از مقدار تایم(یک ساعت)بیشتر بشه رله راست گرد رو روشن کنه و چهار چوب بره به سمت کلید A
    4.حالا تو if سوم گفتیم به محض رسیدن چهارچوب به کلید A, رله راست گرد خاموش شه

    کد:
    
    
    با این کد جواب نمیگیری
    باید شرطهای بعدیت بشه else if
    نمونه کد من که تست کردم :
    کد:
    const int button_A = 2;  //pin for button A
    const int button_B = 3;  //pin for button B
    const int relay_L = 4;  //pin for Left turn motor
    const int relay_R = 5;  //pin for Right turn motor
    unsigned long previousMillis = 0;        // will store last time button was updated
    long OffTime = 10000;          // milliseconds of off-time
    
    
    
    
    void setup() {
      pinMode(button_A, INPUT);
      pinMode(button_B, INPUT);
      pinMode(relay_L, OUTPUT);
      pinMode(relay_R, OUTPUT);
      Serial.begin(9600);
    }
    
    
    void loop()
    {
      unsigned long currentMillis = millis();
      if (Serial.available() > 0) {
        char data = Serial.read();
        if ((data == 'a') && (currentMillis - previousMillis >= OffTime))
        {
          previousMillis = currentMillis;  // Remember the time
          Serial.println("C1");
        }
    
    
        else if ((data == 'b') && (currentMillis - previousMillis >= OffTime))
        {
          previousMillis = currentMillis;  // Remember the time
          Serial.println("C2");
        }
    
    
      else  if (data == 'a')
        {
          Serial.println("C3");
        }
    
    
       else  if (data == 'b')
        {
          Serial.println("C4");
        }
      }
    }
    لایک کردن

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

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

SEO by vBSEO