29-06-2017, 11:49
Cześć, dopiero zaczynam swoją zabawę z Arduino. Chcę zrobić układ który sygnalizuje zadziałanie czujnika mrugnięciem diody led3, tylko raz
Mój program wygląda jak poniżej, jednak działa prawidłowo tylko pierwszy raz, przy drugim zadziałaniu czujnika dioda3 nie zapala się pomimo że stan czujnika się zmienił w stosunku do poprzedniego. Sprawdzałem kod, wydaje się dobry, czy mógłby ktoś napisać co jest nie tak?
z góry dzięki
// deklaracja stałych
const int czujnik1 = 8; // pin czujnika
const int led1 = 10; // pin diody
const int led2 = 11;
const int led3 = 12;
// deklaracja zmiennych
int stanCzujnika = HIGH; // zmienna stanu czujnika
int poprzedniStan = HIGH; // zmienna poprzedniego stanu
void setup() {
// deklaracje wejść i wyjść
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(czujnik1, INPUT);
}
void loop() {
// odczyt stanu czujnika
stanCzujnika = digitalRead(czujnik1);
if (stanCzujnika == HIGH) {
// sygnał 5v na wyjściu czujnika - led 2 świeci:
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
} else {
// sygnał 0v na wyjściu - led1 świeci:
digitalWrite(led2, LOW);
digitalWrite(led1, HIGH);
//tutaj sprawdza czy zmienił się sygnał jeśli się zmienił to led 3 mrugnie
if (stanCzujnika != poprzedniStan) {
digitalWrite (led3, HIGH);
delay (100);
digitalWrite (led3, LOW);
}
poprzedniStan = stanCzujnika; // na koniec zapisuje obecny stan do zmiennej poprzedniego, dla kolejnego cyklu
}
}
Mój program wygląda jak poniżej, jednak działa prawidłowo tylko pierwszy raz, przy drugim zadziałaniu czujnika dioda3 nie zapala się pomimo że stan czujnika się zmienił w stosunku do poprzedniego. Sprawdzałem kod, wydaje się dobry, czy mógłby ktoś napisać co jest nie tak?
z góry dzięki
// deklaracja stałych
const int czujnik1 = 8; // pin czujnika
const int led1 = 10; // pin diody
const int led2 = 11;
const int led3 = 12;
// deklaracja zmiennych
int stanCzujnika = HIGH; // zmienna stanu czujnika
int poprzedniStan = HIGH; // zmienna poprzedniego stanu
void setup() {
// deklaracje wejść i wyjść
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(czujnik1, INPUT);
}
void loop() {
// odczyt stanu czujnika
stanCzujnika = digitalRead(czujnik1);
if (stanCzujnika == HIGH) {
// sygnał 5v na wyjściu czujnika - led 2 świeci:
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
} else {
// sygnał 0v na wyjściu - led1 świeci:
digitalWrite(led2, LOW);
digitalWrite(led1, HIGH);
//tutaj sprawdza czy zmienił się sygnał jeśli się zmienił to led 3 mrugnie
if (stanCzujnika != poprzedniStan) {
digitalWrite (led3, HIGH);
delay (100);
digitalWrite (led3, LOW);
}
poprzedniStan = stanCzujnika; // na koniec zapisuje obecny stan do zmiennej poprzedniego, dla kolejnego cyklu
}
}