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: 2 Guest(s)