Skocz do zawartości

Przerzutnik bistabilny na arduino


Pomocna odpowiedź

Napisano

Serwus!

Mam problem z napisaniem programu do bardzo prostej rzeczy. Otóż chcę zrobić coś w rodzaju przerzutnika bistabilnego (nie wiem czy ta nazwa jest adekwatna akurat do tego zagadnienia). Przejdźny do rzeczy:

Bardzo prosty układ składający się z diody LED oraz JEDNEGO przycisku.

Zasada działania:

Naciskam przycisk -> dioda świeci

Naciskam przycisk -> dioda gaśnie

Naciskam przycisk -> dioda świeci

... i tak w kółko

Problem polega na tym, że mam do dyspozycji tylko jeden przycisk. Jak to rozwiązać w kwestii napisania programu? Nie umiem się za to zabrać.

thequeash, temat jest dość prosty i można go rozwiązać na kilka sposób. Możesz np. stworzyć zmienną, która będzie zapamiętywała jaka akcja była wykonywana poprzednio (czy włączałeś, czy wyłączałeś diodę). Wtedy przy wciśnięciu przycisku wykonywaną akcję uzależniasz od stanu zapisanego w tej zmiennej pomocniczej.

Jakoś w końcu rozwiązałem ten problem, poradziłem sobie tak:

int zmienna = 0;
void setup () {
 pinMode(8, OUTPUT);
 pinMode(7, INPUT_PULLUP);
}

void loop () {
 if (digitalRead(7) == LOW && zmienna == 0) {
   delay(100);
   zmienna = 1;

 }
 if (digitalRead(7) == LOW && zmienna == 1) {
   delay(100);
   zmienna = 0;
 }

 if (zmienna == 0) {
   digitalWrite(8, HIGH);
 }
 if (zmienna == 1) {
   digitalWrite(8, LOW);
 }
}

Później obejrzałem odcinek o przyciskach u elektroprzewodnika i znalazłem coś takiego:

boolean zmienna = 0;
void setup() {
 pinMode(8, OUTPUT);
 pinMode(7, INPUT_PULLUP);

}

void loop() {
 if (digitalRead(7) == LOW) {
   delay(20);
   zmienna = !zmienna;
   digitalWrite(8, zmienna);
   while (digitalRead(7) == LOW) {
     delay(20);
   }
 }

Nie rozumiem tylko zapisu

zmienna =!zmienna;

Co dokładnie on robi? W ogóle są jakieś strony, gdzie są wyjaśnione wszystkie komendy?

zmienna =!zmienna;

Znak wykrzyknika, to negacja. Czyli dzięki tej linijce do "zmienna" zapisywany jest zanegowana wartość tej zmiennej.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...