Skocz do zawartości

Przerzutnik bistabilny na arduino


thequeash

Pomocna odpowiedź

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ć.

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

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?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.