Witam. Robię na arduino mini grę z przyciskami oraz zegarem, który będzie odliczał czas(minutę) do zakończenia gry. W grze losowane są diody i poprzez wciśnięcie odpowiedniego przycisku (przypisanego do diody) na wyświetlaczach doliczane są punkty. Problem mój polega na tym iż mam dwie funkcje: zegar(), który obsługuje dwa wyświetlacze 7dmio segmentowe do odliczania czasu oraz gra() w której odbywa się cały proces gry. Chciałbym zrobić aby podczas funkcji zegar() wykonywała się funkcja gra() czyli po zaczęciu gry, czas jest odliczany od 60 do 0 i gra ma się zakończyć. Nie mam bladego pojęcia jak się za to zabrać i prosiłbym o pomoc. Podaje tylko kod z tych dwóch funkcji ponieważ deklaracje zmiennych nie są ważne.
void turnOff()
{
digitalWrite(tran1, HIGH);
digitalWrite(tran2, HIGH);
}
void zegar()
{
//tran 2
turnOff();
expander3.write(displayArray[mult2]);
digitalWrite(tran1, LOW);
delay(DELAY_TIME);
//tran 1
turnOff();
expander3.write(displayArray[mult1]);
digitalWrite(tran2, LOW);
delay(DELAY_TIME);
if(millis() - czas >= 1000)
{
czas = millis();
mult1--;
if ( mult1 == 0 )
{
mult1 = 9;
mult2--;
}
if ( mult2 == 0 )
{
mult1 = 0;
mult2 = 0;
}
}
}
void gra()
{
if(digitalRead(bs) == LOW)
{
digitalWrite(ds, HIGH);
iter = 0;
iter2 = 0;
expander.write(displayArray[iter]);
expander2.write(displayArray[iter2]);
delay(3000);
for(k = 0; k < 25; k++)
{
dioda = random()%4;
digitalWrite(d[dioda], HIGH);
int val = digitalRead(d[dioda]);
delay(random(300,1000));
digitalWrite(d[dioda], LOW);
if(digitalRead(b[0]) == LOW || digitalRead(b[1]) == LOW || digitalRead(b[2]) == LOW || digitalRead(b[3]) == LOW)
{
// LOW-wcisniety HIGH-zapalona
if(digitalRead(b[0]) == LOW)
{
if(dioda==0)
{
punkty++;
iter2++;
expander2.write(displayArray[iter2]);
if ( iter2 == 10 )
{
iter2 = 0;
iter++;
expander.write(displayArray[iter]);
expander2.write(displayArray[iter2]);
}
delay(1000);
Serial.print("pierwsza: ");
Serial.println(punkty);
//goto koniec;
}
}
if(digitalRead(b[1]) == LOW)
{
if(dioda==1)
{
punkty++;
iter2++;
expander2.write(displayArray[iter2]);
if ( iter2 == 10 )
{
iter2 = 0;
iter++;
expander.write(displayArray[iter]);
expander2.write(displayArray[iter2]);
}
delay(1000);
Serial.print("druga: ");
Serial.println(punkty);
//goto koniec;
}
}
if(digitalRead(b[2]) == LOW)
{
if(dioda==2)
{
punkty++;
iter2++;
expander2.write(displayArray[iter2]);
if ( iter2 == 10 )
{
iter2 = 0;
iter++;
expander.write(displayArray[iter]);
expander2.write(displayArray[iter2]);
}
delay(1000);
Serial.print("trzecia: ");
Serial.println(punkty);
//goto koniec;
}
}
if(digitalRead(b[3]) == LOW)
{
if(dioda==3)
{
punkty++;
iter2++;
expander2.write(displayArray[iter2]);
if ( iter2 == 10 )
{
iter2 = 0;
iter++;
expander.write(displayArray[iter]);
expander2.write(displayArray[iter2]);
}
delay(1000);
Serial.print("czwarta: ");
Serial.println(punkty);
}
}
koniec:
delay(1000);
}
else
{
delay(1000);
}
}
digitalWrite(ds, LOW);
}
}
void loop()
{
gra();
};