12-22-2016, 11:33 PM
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?
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?
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?