Zajęcia nr 4 – cyferki, cyferki, komu komu, bo idę do domu

Kto nie był niech żałuje. Prawie zakończyliśmy budowę naszego pojazdu podróżującego w czasie 😉 Pracowaliśmy nad konsoletą do sterowania (programowania daty podróży)

A dokładniej pracowaliśmy nad jednym z elementów:

878-00

A jeszcze dokładniej: nad pojedynczą cyferką!

7 segment display (SSD) – przeczytaj Wikipedię (ale nie całą).


Wszyscy uczestnicy Talenów pracowali wytrwale i już po chwili każdyemu udało się tak sterować LEDami 7-mio segmentowego wyświetlacza, by pokazywał jedynkę, dwójkę i trójkę. Jeden z uczestników kursu okazał się bardzo sprytny i bardzo szybko miał zaprogramowane wszystkie 10 cyfr (gratuluję Jakubowi M. (VIII LO) – nagroda na koniec kursu).

W celu sterowania 7-mio segmentowym wyświetlaczem szlifowaliśmy techniki programowania strukturalnego:

  • tworzyliśmy własne funkcje, w tym funkcje z argumentami
  • wykorzystywaliśmy tablice (do przechowywania numerów pinów z Arduino)
  • wykorzystaliśmy tablice dwuwymiarowe – tzw. tablice tablic, czyli elementami tablicy była… tablica! Okazało się to bardzo użyteczne (z odpowiednim programowaniem funkcji)
  • no i poznaliśmy hardware, czyli 7 segment display ze wspólną anodą (CA – common anode – w naszym przypadku). Musieliśmy troszkę zmienić nasze myślenie – przywykliśmy do schematu: 1=włączone, 0=wyłączone. A tutaj odwrotnie. Włączając napięcie 5V na pinie Arduino powodujemy zgaszenie segmentu, z kolei ustawiając napięcie na 0V włączamy segment! Tak – specjalnie dałem Wam taki właśnie sprzęt, by troszkę wysilić szare komórki!

Niestety – programowanie pojedynczej cyferki wymagało wykorzystania 8 pinów cyfrowych z Arduino. To dość dużo… 2 Takie cyferki wymagają już 16 pinów, a nasze UNO ma ich 14 (tylko? aż?). OK, można ustawić piny analogowe jako cyfrowe, tym samy będziemy mieć ich dodatkowo 6 sztuk – czyli oprogramujemy 2 cyferki. Ale co z naszą konsolą do podróży w czasie?? Pojazd już mamy, tylko ta konsola nas blokuje…

Rejestr przesuwny 74HC595 (ang. shift register)

Jako rozwiązanie powyższego problemu poznaliśmy rejestr przesuwny 74HC595. Cena tego cuda na czarnym rynku to około 1 zł w detalu, a umożliwia ono sterowanie 8 wyjściami (czyli np. jedną cyferką) za pomocą tylko 3 pinów cyfrowych z Arduino! Co więcej, łącząc ze sobą dwa takie układy (za łączną kwotę 2 zł) możemy mieć już oprogramowane 2 cyferki, ciągle wykorzystując tylko 3 piny cyfrowe z Arduino. Układy można łączyć w kolejne szeregi aż do 8 sztuk.

Przy tej okazji poznaliśmy:

  • orientację modułu w kasiecie DIP (pamiętacie tą kropeczkę? wcięcie?)
  • numerację pinów na module (odwrotnie do ruchu wskazówek zegara, gdy patrzę mu w twarz…)
  • nazewnictwo niektórych pinów (GND, Vcc, Qa, Qb…)

No i na koniec okazało się, że aż 3 uczniów zrobiło błąd przepisując mój cudowny kod z tablicy, tym samym rejestr przesuwny nie działał. Trudno powiedzieć o co chodzi w tej plątaninie przewodów,

DSC_0322

ale od kłopotów uratował nas Sylwester K. (ZSH-E) – bezbłędnie przepisując program, uruchamiając i ciesząc oczy działającym układem. Był nawet na tyle szczodry, że po chwili rozsyłał swój (mój?) program kolegom, którzy tylko czerwienieli widząc, że już u nich wszystko gra 😉

Praca domowa – tym razem – dobrowolna!

Proszę zmusić Arduino by odliczało od 9 do 0 z wykorzystaniem rejestru przesuwnego. W tym celu zalogujcie się do 123d.circuits.io i tam przygotujcie hardware (poszukajcie wyświetlacza oraz rejestru – czekają tam na Was, przy czym najpierw sprawdźcie wirtualną bateryjką, czy wyświetlacz jest ze wspólną anodą, czy katodą), a software macie już prawie gotowy. Kto się na to pokusi? Nagroda czeka…

P.S.

Lubicie dobranocki z dreszczykiem? Jeśli tak, i nie lękacie się języka angielskiego to zapraszam do lektury

 

Posted in TalentyXXIw.