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

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

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