Skocz do zawartości
Komentator

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

Pomocna odpowiedź

boo, witam na forum!

"Zjadłeś" jeden nawias po "LOW" - zapewne to spowodowało ten błąd 😉

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Wow, dziękuję za ekspresową odpowiedź 🙂

Szukałem tego brakującego nawiasu... nie widziałem...

Jeszcze raz dzięki

Udostępnij ten post


Link to post
Share on other sites

Hej, witam,
właśnie rozpocząłem przygodę z Waszym kursem 😉

Od razu nasunęło mi się pytanie:

czy przy każdej ingerencji w podłączony układ, albo program zmieniając tym samym używane wejścia trzeba odłączyć Arduino od zasilania?

Dzięki za kurs 🙂

Udostępnij ten post


Link to post
Share on other sites

SzponWP, witam na forum 🙂 Zmiana programu nie wymaga wyłączania/włączania Arduino. Jeśli chodzi o zmiany sprzętowe to dobrą praktyką byłoby odłączać układ na czas zmian (i nie dotyczy to tylko tego kursu). Jeśli jednak czujesz się w miarę pewnie i wiesz, że przypadkiem nie zrobisz zwarcia to możesz próbować podpinać peryferia do włączonego Arduino (ale nie polecam tego) 🙂

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Szybkie pytanie o zaznaczone piny.

Czy GND z lewej i prawej strony czymś się różnią?

Czy Vin od 3,3V i 5V oznacza że można tam podać do 12V? (Zasilanie z akumuatora samochodowego, wiem, może nie bezpośrednio ale przez stabilizator?)

Zasilanie.JPG

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Tak, każda masa jest połączona se sobą. Co do vin-jest to wejście połączone z gniazdem zasilania zewnętrznego, które idzie na stabilizator 5V, czyli musi byc tam podane napięcie 7-12V. 5V i 3.3V to zasadniczo wyjścia umożliwiające "podebranie" napięcia z płytki(mając równe 5V można także podlaczyc zasilanie do pinu 5V).

Edytowano przez eksio
  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
19 godzin temu, eksio napisał:

mając równe 5V można także podlaczyc zasilanie do pinu 5V

Dokładnie tak, dla formalności dodam tylko, że nie można zasilać Arduino podając samo 3,3V na tak opisany pin. Dla wielu osób będzie to oczywiste, ale wolę napisać, aby nikt się nie dziwił później, że zasilanie przez 5V działa, a przez 3,3V już nie 😉

Udostępnij ten post


Link to post
Share on other sites

Witam serdecznie, mam pytanie apropos trzeciej części kursu Arduino poziom 1, a mianowicie funkcji while.

W przykładzie z diodami pętla while została użyta po określeniu odpowiedniej sekwencji zapalania się diod.

przykład: 

digitalWrite(10, LOW); //Czerwona

  digitalWrite(9, LOW); //Pomarańczowa

  digitalWrite(8, HIGH); //Zielona

  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde

  while (digitalRead(7) == HIGH) {} //Jeśli przycisk jest wciśnięty

rozumiem , że chodzi tu o zatrzymanie programu w momencie kiedy pali się ta jedna dioda do momentu, kiedy warunek przestanie być spełniany, jednak zastanawia mnie, dlaczego nie można by napisać tego w taki sposób:

  while (digitalRead(7) == HIGH) {

digitalWrite(10, LOW); //Czerwona

  digitalWrite(9, LOW); //Pomarańczowa

  digitalWrite(8, HIGH); //Zielona

}

 delay(1000); //Zatrzymujemy program przed wejściem do pętli na 1 sekundę

 

Jedyną różnicą, jaką zaobserwowałem jest fakt, iż zamiast sekundy, przez którą nie można nic zrobić w przypadku pierwszym, czyli po zmianie na następną pętle, w której pali się inna dioda( przez pierwszą sekundę z powodu ''delay'' będzie się ona paliła niezależnie od, tego czy i ile razy wciśniemy przycisk,) w drugim przypadku następuje ona po wciśnięciu go, czyli uściślając wciskamy przycisk, ''wcześniejsza'' dioda pali się jeszcze przez sekundę i dopiero wtedy zachodzi zmiana.

Czy oprócz tego są jeszcze jakieś różnice w tym zapisie komendy? Czy może są przykłady, w których wskazane jest użyć konkretnego rozwiązania z tych dwóch, czy może jest to tylko kwestia preferencji(w co wątpie:) )? Po prostu staram się to jak najlepiej zrozumieć, a nie do końca widzę różnicę i z tego powodu nie jestem pewien, którego wyjścia używać:)

Pozdrawiam serdecznie i z góry dziękuję za poswięcony czas:)

 

Udostępnij ten post


Link to post
Share on other sites

@StachuGDY, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start:

  • Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.
  • Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?
  • Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości.
Dnia 23.12.2018 o 22:52, StachuGDY napisał:

rozumiem , że chodzi tu o zatrzymanie programu w momencie kiedy pali się ta jedna dioda do momentu, kiedy warunek przestanie być spełniany

Słusznie, dokładnie o to chodzi.

Dnia 23.12.2018 o 22:52, StachuGDY napisał:

jednak zastanawia mnie, dlaczego nie można by napisać tego w taki sposób:

Można, ale trochę to bez sensu, bo wtedy w pętli cały czas ustawiasz stany na diodach. To tak jakbyś podszedł do włącznika światła, włączył je, a później cały czas dalej wciskałbyś przełącznik. Efekt ten sam, a Ty nie potrzebnie byś go naciskał 😉

W tak prostym programie nie ma to większej różnicy, ale ogólnie odradzałbym drugą metodę.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

@StachuGDY powodzenia w dalszych eksperymentach 😉

Udostępnij ten post


Link to post
Share on other sites
  digitalWrite(10, HIGH); //Czerwona
  digitalWrite(9, LOW); //Pomarańczowa
  digitalWrite(8, LOW); //Zielona
 
  delay(1000); //Zatrzymujemy program przed wejsciem do pętli na 1 sekunde
  while (digitalRead(7) == HIGH) {} //Jeśli przycisk jest wciśnięty 

Rozumiem, że jeżeli będę "wciskał" przycisk dłużej niż sekundę to program przeskoczy jeden zbiór zadań i zatrzyma się na kolejnym czekaniu sekundy. 
Teoretycznie można ustawić zadanie używając tego kodu na długość trzymanego przycisku, tak?  Chodź pewnie do takiego zadania milej i łatwiej (Jeżeli po pętli miały by się dziać inne zdarzenia czasowe) byłoby użyć przedziału czasu w jakim przycisk ma być odciśnięty, a jeżeli się tak nie stanie to pominie dalszy kod i przejdzie do kolejnego zbioru zadan .

Jest to zrozumiałe co napisałem w ogóle? 😛 

Udostępnij ten post


Link to post
Share on other sites

@bydlak69, witam na forum 😉 Widzę, że to Twoje pierwsze kroki na Forbocie, oto najważniejsze informacje na start:

  • Chcesz przywitać się z innymi członkami naszej społeczności? Skorzystaj z tematu powitania użytkowników.
  • Opis najciekawszych funkcji, które ułatwiają korzystanie z forum znajdziesz w temacie instrukcja korzystania z forum - co warto wiedzieć?
  • Poszczególne posty możesz oceniać (pozytywnie i negatywnie) za pomocą reakcji - ikona serca w prawym dolnym rogu każdej wiadomości.

Dnia 11.01.2019 o 22:31, bydlak69 napisał:

Rozumiem, że jeżeli będę "wciskał" przycisk dłużej niż sekundę to program przeskoczy jeden zbiór zadań i zatrzyma się na kolejnym czekaniu sekundy. 

Jeśli w kodzie byłoby kilka takich fragmentów to stanie się dokładnie tak, jak to opisałeś.

Dnia 11.01.2019 o 22:31, bydlak69 napisał:

Teoretycznie można ustawić zadanie używając tego kodu na długość trzymanego przycisku, tak? 

Nie byłoby to najwygodniejsze rozwiązanie, ale tak, teoretycznie jest to możliwe 🙂

Udostępnij ten post


Link to post
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...