08-02-2017, 00:08
(04-02-2017, 12:08)namok napisał(a): Nie ma takiej możliwości a by jednocześnie działały dwie sekwencje z użyciem delay().
W momencie wywołania delay() program "stoi w miejscu" do momentu aż minie zadany czas.
W momencie wywołania delay() nie działają przyciski czytane w pętli loop().
Możesz to zrobić z użyciem millis() ale musisz dobrze przemyśleć algorytm. Poczytaj: https://techniczny.wordpress.com/2012/04...w-arduino/
Oczywiście są biblioteki pomagające w wielowątkowości np: http://www.jarzebski.pl/arduino/bibliote...duino.html.
Hmm , dzisiaj miałem trochę czasu i próbowałem poprawić program.Coś mi to nie wychodzi. ograniczyłem więc go do dwóch sygnalizatorów (mijanka). Co w nim zmienić aby działały przyciski?Jakiś przykład proszę.
Kod:
// Pierwszy sygnalizator
int led0 = 2;// Dioda czerwona
int led1 = 3;// Dioda pomarańczowa
int led2 = 4;// Dioda zielona
// Drugi sygnalizator
int led3 = 7;// Dioda czerwona
int led4 = 8;// Dioda pomarańczowa
int led5 = 9;// Dioda zielona
int switch0 = 0; // przycisk na pin 0
int switch1 = 1; // przycisk na pin 1
void setup()
{
pinMode(led0, OUTPUT); //pin 2 jako wyjście
pinMode(led1, OUTPUT); //pin 3 jako wyjście
pinMode(led2, OUTPUT); //pin 4 jako wyjście
pinMode(led3, OUTPUT); //pin 7 jako wyjście
pinMode(led4, OUTPUT); //pin 8 jako wyjście
pinMode(led5, OUTPUT); //pin 9 jako wyjście
pinMode(switch0, INPUT_PULLUP); //pin 0 jako wejście
pinMode(switch1, INPUT_PULLUP); //pin 1 jako wejście
}
void loop()
{
if (digitalRead(0) == LOW) { //Jeśli przycisk wciśnięty
digitalWrite(led0, HIGH);digitalWrite(led3, LOW); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, HIGH); // włącz diodę zieloną
delay(5000);
digitalWrite(led0, HIGH);digitalWrite(led3, LOW); // włącz diodę czerwoną
digitalWrite(led1, HIGH);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, HIGH); // włącz diodę zieloną
delay(2000);
}
//Miganie diod pomarańczowej i zielonej
digitalWrite(led0, HIGH);digitalWrite(led3, LOW); // włącz diodę czerwoną
digitalWrite(led1, HIGH);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, HIGH); // włącz diodę zieloną
delay(500);
digitalWrite(led0, HIGH);digitalWrite(led3, LOW); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, LOW); // włącz diodę zieloną
delay(500);
digitalWrite(led0, HIGH);digitalWrite(led3, LOW); // włącz diodę czerwoną
digitalWrite(led1, HIGH);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, HIGH); // włącz diodę zieloną
delay(500);
digitalWrite(led0, HIGH);digitalWrite(led3, LOW); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, LOW); // włącz diodę zieloną
delay(500);
digitalWrite(led0, HIGH);digitalWrite(led3, LOW); // włącz diodę czerwoną
digitalWrite(led1, HIGH);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, HIGH); // włącz diodę zieloną
delay(500);
digitalWrite(led0, HIGH);digitalWrite(led3, LOW); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, LOW); // włącz diodę zieloną
delay(500);
digitalWrite(led0, HIGH);digitalWrite(led3, LOW); // włącz diodę czerwoną
digitalWrite(led1, HIGH);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, HIGH); // włącz diodę zieloną
delay(500);
digitalWrite(led0, HIGH);digitalWrite(led3, LOW); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, LOW); // włącz diodę zieloną
delay(500);
digitalWrite(led0, HIGH);digitalWrite(led3, LOW); // włącz diodę czerwoną
digitalWrite(led1, HIGH);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, HIGH); // włącz diodę zieloną
delay(500);
digitalWrite(led0, HIGH);digitalWrite(led3, LOW); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, LOW); // włącz diodę zieloną
delay(500);
{
if (digitalRead(1) == LOW) { //Jeśli przycisk wciśnięty
digitalWrite(led0, LOW);digitalWrite(led3, HIGH); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, HIGH);digitalWrite(led5, LOW); // włącz diodę zieloną
delay(5000);
digitalWrite(led0, LOW);digitalWrite(led3, HIGH); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, HIGH); // włącz diodę pomarańczową
digitalWrite(led2, HIGH);digitalWrite(led5, LOW); // włącz diodę zieloną
delay(2000);
digitalWrite(led0, LOW);digitalWrite(led3, HIGH); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, HIGH); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, LOW); // włącz diodę zieloną
delay(500);
digitalWrite(led0, LOW);digitalWrite(led3, HIGH); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, LOW); // włącz diodę zieloną
delay(500);
digitalWrite(led0, LOW);digitalWrite(led3, HIGH); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, HIGH); // włącz diodę pomarańczową
digitalWrite(led2, HIGH);digitalWrite(led5, LOW); // włącz diodę zieloną
delay(500);
digitalWrite(led0, LOW);digitalWrite(led3, HIGH); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, LOW); // włącz diodę zieloną
delay(500);
digitalWrite(led0, LOW);digitalWrite(led3, HIGH); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, HIGH); // włącz diodę pomarańczową
digitalWrite(led2, HIGH);digitalWrite(led5, LOW); // włącz diodę zieloną
delay(500);
digitalWrite(led0, LOW);digitalWrite(led3, HIGH); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, LOW); // włącz diodę zieloną
delay(500);
digitalWrite(led0, LOW);digitalWrite(led3, HIGH); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, HIGH); // włącz diodę pomarańczową
digitalWrite(led2, HIGH);digitalWrite(led5, LOW); // włącz diodę zieloną
delay(500);
digitalWrite(led0, LOW);digitalWrite(led3, HIGH); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, LOW); // włącz diodę zieloną
delay(500);
digitalWrite(led0, LOW);digitalWrite(led3, HIGH); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, HIGH); // włącz diodę pomarańczową
digitalWrite(led2, HIGH);digitalWrite(led5, LOW); // włącz diodę zieloną
delay(500);
digitalWrite(led0, LOW);digitalWrite(led3, HIGH); // włącz diodę czerwoną
digitalWrite(led1, LOW);digitalWrite(led4, LOW); // włącz diodę pomarańczową
digitalWrite(led2, LOW);digitalWrite(led5, LOW); // włącz diodę zieloną
delay(500);
}
}
}