• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Sygnalizacja zmiany stanu
#1
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 Smile

// 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
  }
}
 
Odpowiedź
#2
(29-06-2017, 11:49)Yeah napisał(a): 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 Smile

// 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
  }
}
Witam,

Kod:
void loop() {
 // odczyt stanu czujnika
 stanCzujnika = digitalRead(czujnik1);

 if (stanCzujnika) {
   // 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
 }
       

}
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości