Ads_700x200

środa, 24 sierpnia 2016

ROBAL - czyli szybka zagadka dla szarych komórek ;)

Witam,

Tym razem chciałbym Wam zadać tzw "szybką" albo nawet za szybką zagadkę ;) ... ale tym razem moi drodzy to nie będzie zgaduj zgadula. Tym razem będzie trzeba troszkę pomyśleć nad ? ... TADA! nad prostym jak DRUT kodem programu dla mikrokontrolera. Pewnie już domyślacie się w jakim języku ma on być napisany ? ... na pewno nie w Pythonie, nie w Ruby, nie w PHP ani nawet nie w Cobolu. Ot po prostu w najzwyklejszym, który jest naszych cyfrowym chlebem powszednim ;) języku C. Co ów program ma wyprawiać ? W zasadzie to wszystko mówi obrazek na górze tego postu. Miga sobie nieźle co ? ;) No właśnie ale o co tu chodzi? - każdy sobie pomyśli. (Nadmienię, że to zadanie dla początkujących ew średnio zaawansowanych) W takim razie wyjaśniam.


  1. Trzeba wziąć procka AVR
  2. Podłączyć do jednego pełnego portu 8 diod LED 
  3. Napisać prosty program który będzie robił to co na obrazku ;)


TYLKO TO i nic więcej ;) ale UWAGA! są pewne zastrzeżenia i obostrzenia.
  • pod żadnym pozorem nie można pisać kodu liniowo! (chociaż ...  ktoś miał to wyrzeźbić liniowo to Jezu ;) ... powodzenia)
  • pod żadnym kocim pozorem nie można użyć ŻADNEGO timera sprzętowego ani Timera od Watchdoga - no broń cię Panie Boże żeby mi tu ktoś użył jakiegokolwiek modułu sprzętowego wbudowanego w procka.
  • można w łatwy sposób w programie zmieniać czasy migania dwóch diod z lewej i tempa pełzania "robala"

(poza tym wszystkie chwyty dozwolone, byleby nie bić poniżej pępka :D )

Kilka słów wyjaśnienia co tu się dzieje na tym obrazku GIF

  • dioda LED8 (po lewej) zmienia sobie stan co 700 ms
  • dioda LED7 (od lewej) zmienia swój stan co 50 ms
  • diody LED6..0 jak widać, robią efekt ROBALA takiej gąsienicy, która wciąż przełazi z prawej do lewej. Idzie do migadełka a ono ją wpiernicza :D Ale żeby było techniczne to człony ciała robala wsuwają się co 100 ms.
  • kod źródłowy ma mieć charakter edukacyjny.


Czy ktoś jeszcze czegoś nie rozumie ? Jak coś to proszę dopytać.

-------------------------------------------------------------------------------------------

UWAGA! jeśli ktoś chce coś wygrać w tym mini konkursie to proszę nie publikować swoich rozwiązań na blogu lub na naszym forum, tylko nadsyłać do mnie swój plik main.c (bo całość ma się zmieścić w tym jednym pliku). Co można wygrać ? o tym za chwilę ...

...... oooo już minęła chwila :D więc mogę powiedzieć:

Do wygrania jest YELLOWBOOK !

przy okazji pamiętaj proszę o wsparciu projektu yellowbook - nawet dobrym słowem do znajomego ;) przekaż mu tę wiadomość i link do strony projektu - bardzo proszę:


https://polakpotrafi.pl/projekt/yellowbook-c-w-praktyce

... kto wygrywa ? jakie są kryteria wyboru kodu na pierwsze miejsce ? to przecież ważne.

Uwaga! nie będę tu się rozpisywał, że zbierze się grono JURY składające się z 20 osób, że zgodnie z regulaminem konkursu wyłoni zwycięzcę ... bo to nieprawda :D

Po prostu ja, jednoosobowo, zupełnie nieobiektywnie a subiektywnie prawem kaduka, wybiorę jeden nadesłany kod. Jeśli ktoś podejrzewa mnie o szachrajstwa to proszę nie brać udziału w końkursie. To jest konkurs tylko dla ludzi z dobrym poczuciem humoru, dla których ma być to nauka poprzez zabawę. Bo obiecuję, że zagadka się ot tak nie skończy ... 

W osobnym filmiku wideo, który będzie przy okazji jednym z pierwszych moich poradników wideo po długiej przerwie (z nowej serii "Z ARCHIWUM X języka C", nie tylko zaprezentuję kod który ja napisałem ale również kod zwycięzcy ... być może napisze go w sposób jeszcze ciekawszy ode mnie, na co liczę ... a wtedy wszyscy się czegoś nauczymy.

Jeśli będą jeszcze inne ciekawe rozwiązania zasługujące na uwagę to wtedy wszystkie ciekawe kody zaprezentuję na naszym forum w specjalnym wątku. 

No i na KONIEC - jaki jest termin nadsyłania waszych prac na konkurs ... krótko i prosto, do 31 sierpnia 2016 roku.

czekam zatem na wasze maile ...

45 komentarzy:

  1. Można używać _delay_ms ?

    OdpowiedzUsuń
    Odpowiedzi
    1. Wszystko co nie jest zabronione - jest dozwolone ;) nic nie pisałem, że nie można korzystać z delay_ms ;)

      Usuń
  2. A wstawek asemblerowych można używać?:) i czy czasem _delay_ms to nie jest funkcja blokująca i liniowa?

    OdpowiedzUsuń
    Odpowiedzi
    1. No tak nie wspomniałem wprawdzie o wstawkach asemblerowych, ale nie nie można. Mówimy tu o języku C ok? ... co do _delay pewnie że jest i blokujący i liniowy no ale to jak widać wyjątek i ma to specjalny cel. Wszystko okaże się później, również to jaki był CEL tych działań ;)

      Usuń
  3. Do kiedy mozna podsylac program?;)

    OdpowiedzUsuń
    Odpowiedzi
    1. a na końcu posta kolega nie zauważył do kiedy ? ;)

      Usuń
  4. Trochę z innej beczki. Jakim programem Szanowny Mirek tworzy animowane gify?

    OdpowiedzUsuń
    Odpowiedzi
    1. A tym co najczęściej używam czyli Camtasia Studio ;)

      Usuń
  5. Czy to że program ma mieć charakter edukacyjny, determinuje użycie komentarzy w programie? Czy wystarczy jedynie czytelnie napisany program ?

    OdpowiedzUsuń
    Odpowiedzi
    1. To w sumie prosty program więc komentarzy nie musi być a jeśli to nie za dużo

      Usuń
  6. "można w łatwy sposób w programie zmieniać czasy migania dwóch diod z lewej i tempa pełzania "robala"" <-- Czy ten łatwy sposób ma zmieniać wszystkie czasy migania tak żeby były w pierwotnych proporcjach? Czy raczej czasy pierwszej diody, drugiej diody i robala mają być łatwo zmieniane niezależnie od siebie?

    OdpowiedzUsuń
    Odpowiedzi
    1. Ma być MEGA łatwo regulować dowolne czasy ;) ale spokojnie - proszę napisać jak kto potrafi ;) warto - warto - później zrobimy przegląd ;) Zapraszam do dobrej zabawy i nauki.

      Usuń
  7. Hej, czy przy okazji tematu z ledami mógłbym POPROSIĆ bardzo ładnie i zgrabnie tudzież delikatnie o tutorial jedno lub dwu odcinkowy o sterowaniu większą ilością led przy pomocy AVR? Chodzi o zrobienie czegoś na zasadzie dodatkowego stopu do samochodu (16 led lub 24) wysterowanie 50 ledów z 230V sieci lub z 12V instalacji samochodowej lub akumulatora LiPo?

    Myślę, że inne osoby również by skorzystały z tego. Temat niby banalny, ale zawsze są wątpliwości.

    Mirku - da radę?

    OdpowiedzUsuń
    Odpowiedzi
    1. Ależ przecież w tym zakresie jest cała seria poradników o Magic LED na których ludzie robią to o czym piszesz, a dla zwykłych diod LED na tym blogu masz już dwa poradniki na temat rejestrów przesuwnych 74595 i dużej ilości diod LED sterowanych za pomocą 3 pinów procka ;) Zaś w nadchodzącym Yellowbooku będzie wręcz o wyświetlaczu matrycowym na rejestrach przesuwnych a zatem również olbrzymia ilość diod LED ... ;)

      Usuń
    2. Kurka, przeklikałem wszystkie poradniki Magic LED, ale nie znalazłem tego, co potrzebuję :( Chodzi mi o zastosowanie AVR + tranzystora mosfet jako drivera do LED np. 0.5W w ilości 20 sztuk do zbudowania latarki zasilanej z LiPo.

      Usuń
    3. A nie o latarce jeszcze nie było ale zapewniam, że będzie bo już projekt na poradnik się szykuje ;)

      Usuń
  8. No to jeszcze możesz zbudować inteligentną żarówkę, taką sterowaną ze smartfona po wifi z magic ledami :) Temat mnie akuratnie nie interesuje kompletnie, ale na pewno są osoby, które to pociągnie :):)

    OdpowiedzUsuń
  9. Żarówkę na 230V oczywiście!

    OdpowiedzUsuń
    Odpowiedzi
    1. Może nie żarówkę na 230V ale o namiotowej / biwakowej lampce tego typu też będzie .... jest już cały plan poradników ... ale też wiele innych ciekawych rzeczy

      Usuń
  10. Jak nie na 230V to jak MY amatorzy mamy stworzyć realną konkurencję dla Philipsa? ;)

    Mirku, sporo ujawniłeś planów :) Dziękujemy!

    OdpowiedzUsuń
  11. Chciałbym zapytać, co mam rozumieć, iż kod źródłowy ma być edukacyjny? Chodzi o to, aby kod poruszał jak najwięcej aspektów języka c, które można omówić?

    OdpowiedzUsuń
    Odpowiedzi
    1. Nic szczególnego to nie oznacza, jak kto uważa tak napisze. Chodzi o to aby kod był zrozumiały dla każdego

      Usuń
    2. Dziękuję za odpowiedź ;).

      Usuń
  12. Mam, pytanie wymaga pan, aby w kodzie była możliwość zmiany czasu migania diod. Czy np. jeżeli obecne czasy wynoszą 100ms,50ms,700ms. To jeżeli pan tak będzie chciał to będą wynosić 5000ms, 1ms, 2500ms? Czy też proporcja ma być zachowana?

    OdpowiedzUsuń
    Odpowiedzi
    1. Proporcje nie są ważne - powinna być możliwość dowolnego regulowania każdego z czasów ;) i niezależnie od siebie najlepiej ;)

      Usuń
  13. Czy można wysłać więcej niż jedną pracę?

    OdpowiedzUsuń
    Odpowiedzi
    1. hmm można ale nie wiem czy się połapię, przykro mi ... obecnie jest już mnóstwo prac. Poza tym jaki jest cel wysyłania kilku programów ?

      Usuń
    2. Mam kilka ciekawych odmiennych pomysłów :).

      Usuń
    3. No jeśli się mocno różnią i są ciekawe, to można ;)

      Usuń
  14. Głupie pytanie Panie Mirku (choc podobno takich nie ma). Rozumiem do 31 sierpnia to, że jeszcze jutro moge jeszcze podesłac? :)

    OdpowiedzUsuń
  15. A można jeszcze wysłać spóźnionego robaka? :)
    Zbyt późno zauważyłem konkurs.

    OdpowiedzUsuń
  16. Wygląda na to, że blogowicz wie co robi. Brawa mu Panie i Panowie.

    OdpowiedzUsuń
  17. Zaś mi poczta nawaliła, wysłałem załącznik, który widać w wysłanych, zaś w edycji już nie.
    No trudno :/

    OdpowiedzUsuń
  18. Panie Mirku, kiedy potencjalne rozstrzygnięcie konkursu?

    OdpowiedzUsuń
    Odpowiedzi
    1. Dostałem MNÓSTWO prac ;) nie dam rady w ciągu 2-3 dni tego nawet pobieżnie przejrzeć. Jak mi się uda to w następny weekend czyli ok 10-11 sierpień ... Chyba że wcześniej się uda ;)

      Usuń
    2. 10-11 sierpień, hmm, rozumiem że przyszłego roku :).

      Usuń
    3. :D gdyby przyjąć taki tok myślenia to czemu w przyszłym a nie np za 2 albo 5 lat ?

      Usuń
    4. Z prostej zależności - " w następny weekend .... - a to za rok, a nie 2 i więcej lat :))

      Usuń
    5. Następny weekend w dniach 10-11 sierpnia jest za 3 lata ... ;(
      To sobie poczekamy ... (aż przypomina się wstęp ze Shreka :) )

      Usuń
    6. Nooo nieee ... no ja zamiast pracować to czytam to i tarzam się ze śmiechu :D .... "no to sobie poczekamy" :D

      Usuń
  19. Oj tam, nie kłóćmy się o jeden dzień :), 11 VIII 2017 to piątek, dla wielu już łykend - w głowie od samego rana :))

    OdpowiedzUsuń
  20. Motyla noga ja dopiero dzisiaj z wakacji wróciłem!

    OdpowiedzUsuń