Kto nie był niech żałuje. Naszym celem jest taka oto konsola (kto wie, z jakiego to filmu?)
Pracowaliśmy nad jednym z elementów:
A 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 szybko miał zaprogramowane wszystkie 10 cyfr (gratuluję Jakubowi Sz. – 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). To była najtrudniejsza część zajęć, tj. „dla twardzieli” – dlatego pojawił się znany bohater filmów akcji 😉 Zaawansowany kod – do ponownego zastanowienia się:
// A B C D E F G DP int led7[8]={ 2, 3, 5, 7, 4, 6,12,13}; int digits[4][8]={ // A B C D E F G DP {1,1,1,1,0,0,1,0},//swieci jedynka {0,0,1,0,0,1,0,0},//swieci dwójka {0,0,0,0,1,1,0,0},//swieci trójka {1,0,0,1,1,0,0,0} }; //trzeba dodac kolejne cyfry void cyfra(int nr){ for (i=0; i<8; i++) digitalWrite(led7[i], digits[nr][i]); }
- 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… dlatego na kolejnych zajęciach (sobota) poznamy rozwiązanie tego problemu: