Skocz do zawartości

Wizualizacja przejscia dla pieszych


Panmarian

Pomocna odpowiedź

@Panmarian witam na forum 🙂 

15 godzin temu, Panmarian napisał:

Zatrzymalem sie na tym, ze dioda zielona po 3sekundach gasnie i nie wiem co robic dalej.

Z treści zadania wynika chyba, że powinieneś wtedy zamigać diodą. Na czym dokładnie utknąłeś?

Link do komentarza
Share on other sites

Witam 😊

Właśnie nie wiem jak zrobić miganie diodą z częstotliwością 2Hz przez 2 sek.

Próbowałem zrobić to funkcją delay, ale nie wychodzi...

Może da radę zrobić to jakoś w pętli?   (W pętli będzie to, że jak po 3 sekundach dioda zgaśnie to później ma zamigać )

 

Link do komentarza
Share on other sites

2Hz - czyli dioda ma się włączać i wyłączać 2 razy na sekundę. Tu masz 2 sekundy czyli w tym czasie dioda powinna się włączyć i wyłączyć 4 razy .  2s / 4 = 0,5s = 500ms - tyle ma trwać jeden okres(włącz i wyłącz) . W jednym okresie są 2 polecenia (włącz i wyłącz), zatem czas 500ms dzielimy na 2 : 500ms / 2 = 250ms. Z tych obliczeń wychodzi że dioda przez 250ms ma być włączona a przez kolejne 250ms ma być wyłączona, całość ma się wykonywać przez 2 sekundy. Kod wykonujący takie polecenie może wyglądać tak:

digitalWrite(10,HIGH); //włączamy diodę   #   
delay(250); //czekamy 250ms               #   to jest
digitalWrite(10,LOW); // wyłączamy diodę  #   jeden okres
delay(250); // czekamy kolejne 250 ms     #   
digitalWrite(10,HIGH); //włączamy diodę   #   
delay(250); //czekamy 250ms               #   to jest
digitalWrite(10,LOW); // wyłączamy diodę  #   jeden okres
delay(250); // czekamy kolejne 250 ms     #   
digitalWrite(10,HIGH); //włączamy diodę   #   
delay(250); //czekamy 250ms               #   to jest
digitalWrite(10,LOW); // wyłączamy diodę  #   jeden okres
delay(250); // czekamy kolejne 250 ms     #   
digitalWrite(10,HIGH); //włączamy diodę   #   
delay(250); //czekamy 250ms               #   to jest
digitalWrite(10,LOW); // wyłączamy diodę  #   jeden okres
delay(250); // czekamy kolejne 250 ms     #   

Jak widać program nie wygląda najlepiej i zajmuje sporo miejsca, dlatego użyjemy czegoś takiego co nazywa się pętla for:

for(int i=0;i<4;i++){ //for(delkarujemy zmienną i;dopuki i jest mniejsze od 4; zwiększamy wartość i po każdym obiegu pętli)
   digitalWrite(10,HIGH); // włączamy diodę  #        
   delay(250); // czekamy 250ms              #  to jest
   digitalWrite(10,LOW); // wyłączamy diodę  # jeden okres
   delay(250); // czekamy kolejne 250ms      #
}

 

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

@jas123 dzięki wielkie za pomoc. Zrobiłem wszystko tak jak pokazałeś i dioda zielona zamiast migać 4 razy to miga 3 razy i zapala się czerwona dioda. Po zmianie z i<4 na i<5 układ działa jak powinien. 

Wydaje mi się, że jak było i<4 i jakby jeszcze po zrobieniu tej pętli wstawić czas, żeby dioda czerwona nie zapalała się od razu to byłoby dobrze 

 

Link do komentarza
Share on other sites

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.