thequeash Napisano Czerwiec 10, 2017 Udostępnij Napisano Czerwiec 10, 2017 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ć. Cytuj Link do komentarza Share on other sites More sharing options...
Treker (Damian Szymański) Czerwiec 10, 2017 Udostępnij Czerwiec 10, 2017 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. Cytuj Link do komentarza Share on other sites More sharing options...
thequeash Czerwiec 11, 2017 Autor tematu Udostępnij Czerwiec 11, 2017 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? Cytuj Link do komentarza Share on other sites More sharing options...
deshipu Czerwiec 11, 2017 Udostępnij Czerwiec 11, 2017 Tak, dowolny kurs C++. A reszta jest tu: https://www.arduino.cc/en/Reference/HomePage Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
Treker (Damian Szymański) Czerwiec 12, 2017 Udostępnij Czerwiec 12, 2017 zmienna =!zmienna; Znak wykrzyknika, to negacja. Czyli dzięki tej linijce do "zmienna" zapisywany jest zanegowana wartość tej zmiennej. Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!