Skocz do zawartości

Kurs Arduino - #2 - podstawy programowania, porty I/O


Komentator

Pomocna odpowiedź

while (digitalRead(7) == HIGH) {} //Czekaj na wciśnięcie przycisku 

Kiedy zmienię na( LOW) program kręci się w kółko, program zatrzymuje tylko wtedy gdy wciskam przycisk. Kiedy jest jak we wzorze diody wyłączone a wciśnięcie zapala kolejną sekwencję, dlaczego? Wydawało mi się że kiedy przycisk łączymy z "gnd" na arduino i wciskamy przyciska zamykamy obwód i podajemy na pin "7" skonfigurowany jako "wejście" potencjał niski.

Link do komentarza
Share on other sites

@Pawell witam na forum. Czy mógłbyś jeszcze raz zadać swoje pytanie? Niestety nie rozumiem o co pytasz. Wkleiłeś źle sformatowany kod do wiadomości, co sprawiło, że całość była nieczytelna. Próbowałem sformatować post za Ciebie, ale niestety nie wiem czy tak miało to wygląda. Pamiętaj, aby kody programów umieszczać za pomocą odpowiedniego narzędzia  w edytorze:

edytor_forum.png

Teraz mogę się tylko domyślać... Czy chodzi Ci o to, że nie rozumiesz dlaczego po zmianie warunku w pętli while na LOW program nie czeka na wciśnięcie przycisku? Jeśli tak, to zastanów się jak działa pętla while. Chyba mylisz działanie tej linijki z warunkiem if. Tutaj zależy nam, aby pętla "kręciła się" tak długo, jak długo przycisk nie będzie wciśnięty (HIGH), a po jego wciśnięciu, chcemy wyjść z pustej pętli while i pójść dalej. Pętla ta działa więc na zasadzie "kręć się w koło i nic nie rób tak długo, jak długo przycisk nie jest wciśnięty". Takie działanie umożliwia wstrzymanie programu do momentu wciśnięci przycisku, który sprawia, że program opuszcza pustą pętle.

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

Nie rozumiem tylko jednej rzeczy, myślę że problem jest na tyle mały że nie ma sensu pisać nowego tematu na forum, mianowicie chodzi o to:

 if (digitalRead(7) == LOW)  //Jeśli przycisk wciśnięty

Trochę nie rozumiem dlaczego kiedy wciśnięty zostanie przycisk to pin do niego podłączony da wartość LOW, dlaczego nie jest na odwrót? Przecież dopiero kiedy się go wciśnie to "zamkniemy obwód" ( przynajmniej część ).

Z góry dziękuje za pomoc, bo nie mam pojęcia co jest złego w moim toku myślenia 🙂

Edytowano przez JAKPAD
Link do komentarza
Share on other sites

11 minut temu, Panda napisał:

@JAKPAD Według mnie, to chodzi o to, że przycisk ma stan LOW, czyli jest jakby nisko. Ja sobie to tak tłumaczę, ale nie wiem czy dobrze myślę.

@Panda No tak, ale przycisk jest podłączony z jednej strony do odpowiedniego pinu a z drugiej do masy, więc żeby przepłynął sygnał to musi być  różnica potencjałów. Więc skoro na masie jest (-) jak sama nazwa wskazuje to na pinie musi być stan wysoki. No chyba że całkowicie mylę ze sobą potencjały oraz wartości binarne...

Sorry jeśli wszystko pomieszałem 😕

Edytowano przez JAKPAD
Link do komentarza
Share on other sites

@JAKPADO ile dobrze czytałem, to tam jest dobrze opisane działanie guzika. Sam nie jestem do końca tego pewny i po prostu nie rozmyślam dlaczego tak jest, tylko po prostu, jak jest LOW, to znaczy, że jest wciśnięty. Możliwe, że jest LOW, bo może wtedy obwód jest otwierany. Nie jestem tego pewien, sam się dopiero uczę. Pozdrawiam 🙂

Link do komentarza
Share on other sites

19 minut temu, Blood_John napisał:

@JAKPAD @PandaStan niski jest kiedy podamy masę, stan wysoki jest kiedy podamy napięcie. Prościej się nie da opisać 🙂

@Blood_John To wiem, ale jak już wcześniej wspomniałem skoro przycisk jest podłączony do GND, to dla pinu nr.7 ( bo tam jest podłączony 'guzik' w przykładzie ) musi wystąpić stan wysoki żeby w ogóle wystąpiło napięcie, dlatego to LOW mi strasznie nie pasuje... ( mimo że działa poprawnie ).

16 minut temu, Panda napisał:

@Blood_John Czyli, gdy guzik jest wciśnięty, to obwód w nim jest otwarty?

@Panda Tak, wystarczy zbudować prosty układ na płytce stykowej używając rezystora, przycisku i diody bez zastosowania nawet arduino, i widać że jak przycisk jest wciśnięty to dioda świeci.

Edytowano przez JAKPAD
Link do komentarza
Share on other sites

11 minut temu, Panda napisał:

@Blood_John Czyli, gdy guzik jest wciśnięty, to obwód w nim jest otwarty?

Działanie układów logicznych opiera się na podawaniu stanów (wysokiego i niskiego). To tak jakbyś wziął dwa kabelki (jeden + a drugi -) i przykładał do nóżki która oczekuje na sygnał. Nie rozpatrywałbym tego w kategorii otwarty/zamknięty obwód. Te określenia pasują ale przy układach analogowych, nie w układach cyfrowych 🙂

Jeżeli się mylę proszę mnie poprawić

  • Lubię! 1
Link do komentarza
Share on other sites

@Panda jeśli przycisk jest z jednej strony podłączony do Arduino, a z drugiej do masy to oznacza, że po wciśnięciu przycisku zwierasz wejście układu z masą. Czyli na wejściu Arduino pojawia się masa, logiczne zero, czyli LOW.

  • Pomogłeś! 1
Link do komentarza
Share on other sites

Panda skup się. Jeśli chodzi o przyciski to jest ich cała masa, pojedyncze, podwójne, potrójne........ Każdy przycisk posiada parę styków (lub wiele par), które z kolei mogą być typu NO (normal open, zwierne) lub NC (normal close, rozwierne). W zależności od posiadanego przycisku po jego wciśnięciu styki się zwierają lub rozwierają. Te popularne tzw. tact switch posiadają najczęściej jeden styk NO. Oznacza to, że styki tego przycisku są rozwarte kiedy przycisk nie jest wciśnięty. Oznacza to przerwę w obwodzie, w którym styki przycisku się znajdują. Kiedy przycisk zostaje naciśnięty obwód się zamyka i tyle. W układzie na rysunku przy zwolnionym przycisku dioda nie świeci (obwód otwarty), a po jego wciśnięciu obwód się zamyka przez styki przycisku i dioda świeci.

sw.jpg

Edytowano przez Belferek
  • Pomogłeś! 1
Link do komentarza
Share on other sites

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.