Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Arduino - tutorijali, pitanja, primjeri i projekti
Razrađujem neki kod i sad imam potrebi za nekim da kažem multi-tasking-om, u kodu imam jedan program koji ima delay od nekoliko sekundi i tako njih nekoliko, ono što me interesuje da ubacim još jedan tajmer ili delay koji će raditi neovisno o prethodnom kodu tj. da oba delay-a rade istovremeno?

Code:
const int motor1 = 2;                        //Motor1 spojen na pin 2                                   -
const int motor2 = 3;                        //Motor2 spojen na pin 3                                   --
const int motor3 = 4;                        //Motor3 spojen na pin 4                                   --    Motori
const int motor4 = 5;                        //Motor4 spojen na pin 5                                   -

const int motor1uslov = 6;                   //Uslov motora1 pin 6                                      -
const int motor2uslov = 7;                   //Uslov motora2 pin 7                                      --
const int motor3uslov = 8;                   //Uslov motora3 pin 8                                      --    Prekidači Motora
const int motor4uslov = 9;                   //Uslov motora4 pin 9                                      -

int motor1uslovState = LOW;                  //Uslov motora1 (vrijednost nsika)                         -
int motor2uslovState = LOW;                  //Uslov motora2 (vrijednost nsika)                         --
int motor3uslovState = LOW;                  //Uslov motora3 (vrijednost nsika)                         --    Prekidači motora postavljeni niske vrijednosti
int motor4uslovState = LOW;                  //Uslov motora4 (vrijednost nsika)                         -

const int startstop = 10;                    //Glavni taster za pokretanje tajmera motora pin 10        -     Taster Start/Stop
int startstopState = LOW;

void setup()
{
 pinMode(motor1, OUTPUT);                  //Motor1 izlaz pin 2                                        -    
 pinMode(motor2, OUTPUT);                  //Motor2 izlaz pin 3                                        --
 pinMode(motor3, OUTPUT);                  //Motor3 izlaz pin 4                                        --    Konfigurisanje izlaznih pinova
 pinMode(motor4, OUTPUT);                  //Motor4 izlaz pin 5                                        -

 pinMode(motor1uslov, INPUT);              //Uslov motora1 ulaz pin 6                                  -
 pinMode(motor2uslov, INPUT);              //Uslov motora2 ulaz pin 7                                  --
 pinMode(motor3uslov, INPUT);              //Uslov motora3 ulaz pin 8                                  --    Konfigurisanje ulaznih pinova
 pinMode(motor4uslov, INPUT);              //Uslov motora4 ulaz pin 9                                  -

 pinMode(startstop, INPUT);                //Taster Start/Stop ulaz pin 10                             -     Konfigurisanje ulaznog pina

}

void loop()
{
  startstopState = digitalRead(startstop);                                 //Dodjela vrijednosti
 if (startstopState == HIGH)                                               //Čitanje vrijednosti Start/Stop tastera, ako je tačan
  {        
   motor1uslovState = digitalRead(motor1uslov);                            //Dodjela vrijednosti
   if (startstopState == HIGH && motor1uslovState == HIGH)                 //Čitanje vrijednosti Sart/Stop tastera i uslova motora1, logičkim kolom AND
     {
       digitalWrite(motor1, HIGH);                                         //Postaviti izlaz motora1 aktivnim
       if (motor1uslovState == HIGH)                                       //Čitanje vrijednosti uslova motora1, ako je tačan
       {
         delay(3000);                                                      //Čekati xxxx s
       }
     }
   else                                                                    //Čitanje vrijednosti uslova motora1, ako nije tačan
      {
       digitalWrite(motor1, LOW);                                          //Postaviti izlaz motora1 neaktivnim
       delay(100);                                                         //Čekati 100ms
      }
 
 
   
   motor2uslovState = digitalRead(motor2uslov);                            //Dodjela vrijednosti
   if (startstopState == HIGH && motor2uslovState == HIGH)                 //Čitanje vrijednosti Sart/Stop tastera i uslova motora2, logičkim kolom AND
   {
       digitalWrite(motor2, HIGH);                                         //Postaviti izlaz motora2 aktivnim
       if (motor2uslovState == HIGH)                                       //Čitanje vrijednosti uslova motora2, ako je tačan
       delay(3000);                                                        //Čekati xxxx s
     }
   else                                                                    //Čitanje vrijednosti uslova motora2, ako nije tačan
      {
       digitalWrite(motor2, LOW);                                          //Postaviti izlaz motora2 neaktivnim
       delay(100);                                                         //Čekati 100ms
      }
 
   
   
   
   motor3uslovState = digitalRead(motor3uslov);
   if (motor3uslovState == HIGH && startstopState == HIGH)                 //Čitanje vrijednosti Sart/Stop tastera i uslova motora3, logičkim kolom AND
   {
       digitalWrite(motor3, HIGH);                                         //Postaviti izlaz motora3 aktivnim
       if (motor3uslovState == HIGH)                                       //Čitanje vrijednosti uslova motora3, ako je tačan
       delay(3000);                                                        //Čekati xxxx s
     }
   else                                                                    //Čitanje vrijednosti uslova motora3, ako nije tačan
      {
       digitalWrite(motor3, LOW);                                          //Postaviti izlaz motora3 neaktivnim
       delay(100);                                                         //Čekati 100ms
      }

                     
   motor4uslovState = digitalRead(motor4uslov);
   if (motor4uslovState == HIGH && startstopState == HIGH)                 //Čitanje vrijednosti Sart/Stop tastera i uslova motora4, logičkim kolom AND
   {
       digitalWrite(motor4, HIGH);                                         //Postaviti izlaz motora4 aktivnim
       if (motor4uslovState == HIGH)                                       //Čitanje vrijednosti uslova motora4, ako je tačan
       delay(3000);                                                        //Čekati xxxx s
     }
   else                                                                    //Čitanje vrijednosti uslova motora4, ako nije tačan
      {
       digitalWrite(motor4, LOW);                                          //Postaviti izlaz motora4 neaktivnim
       delay(100);                                                         //Čekati 100ms
      }  
  }
     else                                                                  //Čitanje vrijednosti Start/Stop tastera, ako nije tačan
     {
       digitalWrite(motor1, LOW);                                          //Postaviti izlaz motora1 neaktivnim
       digitalWrite(motor2, LOW);                                          //Postaviti izlaz motora2 neaktivnim
       digitalWrite(motor3, LOW);                                          //Postaviti izlaz motora3 neaktivnim
       digitalWrite(motor4, LOW);                                          //Postaviti izlaz motora4 neaktivnim
       delay(100);                                                         //Čekati 100ms
     }
}

Znači na kraju ovog koda da dodam još jedan delay koji bi jedan izlaz držao aktivan oko 60min i onda napravio pauzu nekih 10min i onda aktivirao drugi izlaz i opet držao 60min pa opet pauza 10min pa onda aktivan prvi izlaz i tako u krug (ciklično), da se dva izlaza smjenjuju na svakih 60min sa po 10min pauze, a da prethodni dio koda radi svoj posao?
Reply


Messages In This Thread
RE: Arduino - tutorijali, pitanja, primjeri i projekti - by Makso - 12-22-2016, 11:33 PM

Forum Jump:


Users browsing this thread: 25 Guest(s)