majsterkowanie

Jak zrobić grę w życie z matrycą LED Arduino Conway - Zrób to sam

Jak zrobić grę w życie z matrycą LED Arduino Conway - Zrób to sam

Krótkie bajty: Każde hobby ma swoje własne przełomowe projekty, takie jak wprowadzenie Hello World w programowaniu. Społeczność Arduino lubi zaczynać ludzi od migającego światła LED. Ale co moglibyśmy zrobić z 64 diodami LED w matrycy? Możemy wyświetlać różne rzeczy, takie jak cyfry, litery, a nawet proste obrazy. W tym artykule omówimy, jak to zrobić, a także „Gra w życie” Conwaya.

Arduino cieszy się ogromną popularnością w ciągu ostatniej dekady. Dostępne są tysiące bibliotek. To bardzo dobrze udokumentowana platforma, niesamowita do nauki programowania i projektowania elektroniki.

W tym artykule pokrótce omówimy użycie sterowników LED MAX7219 i MAX7221 z biblioteką LedControl, która jest dostępna do pobrania i instalacji w Arduino IDE, a także na Github, a także zaimplementujemy Conway's Game of Life. Dwie ważne części, które będziesz do tego potrzebować, to jeden z wyżej wymienionych sterowników LED i kompatybilna matryca LED (oprócz Arduino i oczywiście niektórych standardowych elementów elektronicznych). Możesz znaleźć wiele za bardzo tanie (poniżej 3 USD) w różnych sklepach internetowych, takich jak eBay, Banggood i AliExpress. Bardzo ważne jest jednak, aby przeczytać opis tego, co kupujesz, ponieważ wiele z nich to zestawy, które należy zmontować i przylutować. W zależności od tego, gdzie mieszkasz, czas wysyłki może wynosić kilka tygodni, więc pamiętaj, aby dokładnie sprawdzić szacowany czas przybycia do Twojej okolicy.

Poszedłem dalej i udostępniłem źródło tego projektu na moim (baron) Github, więc możesz ją pobrać, zmodyfikować, ponownie opublikować lub cokolwiek chcesz. Konieczne będzie podążanie za nim, a w kodzie na Github jest wiele komentarzy, które nie są zawarte w tym artykule tylko dlatego, że byłby to długi artykuł i są one znacznie bardziej efektywne w rzeczywistym kodzie niż próba ich wciśnięcia w tym artykule.

Po pliku nagłówkowym i definicjach pinów znajdziesz wiersz, który może nie mieć sensu.

LedControl lc = LedControl (DIN, CLK, CS, 0);

Tworzy to obiekt LedControl, który jest używany do łączenia się z naszym sterownikiem LED, dostarczając wejścia cyfrowe, zegar i piny sygnałowe chipa, a także określając liczbę urządzeń (można je połączyć szeregowo w celu uzyskania dużego wyświetlacza). Protokół sterujący pomiędzy sterownikiem LED a Arduino to SPI (Serial Peripheral Interface), ale nie musimy się w to zagłębiać, ponieważ mamy obiekt klasy LedControl, który wykonuje za nas naszą licytację.

Następna porcja w Ustawiać() funkcja jest w większości oczywista, ale omówimy to dla jasności.

lc.shutdown (0; fałsz); lc.setIntensity (0, 8); lc.clearDisplay (0);

Sterownik LED będzie w stanie wyłączenia po pierwszym włączeniu, więc musimy powiedzieć mu, aby się obudził, co robi pierwsza linia. Drugi ustawia jasność, ponieważ używamy tylko jednego wyświetlacza, pierwszy parametr, czyli adres matrycy, to 0, a intensywność powinna być ustawiona zgodnie z preferencjami, przy czym maksymalna poprawna wartość to 15. Na koniec usuwamy wyświetlanie wszelkich możliwych poprzednich wartości. Zwykle nie stanowi to problemu, ale jeśli z jakiegoś powodu Arduino uruchomi się ponownie, może potencjalnie spowodować zapalenie niechcianych diod LED.

Zanim przejdziemy do programowania, ważne jest, aby zrozumieć, czym jest Gra w życie Conwaya i jakie są zasady. Ta gra jest grą typu „zero player”. Oznacza to tylko tyle, że gracz wybiera stan początkowy, który zrobimy losowo, a następnie postępuje zgodnie z zasadami. Gra w życie jest bardzo prosta i ma tylko cztery zasady:

  1. Każda żywa komórka z mniej niż dwoma żywymi sąsiadami umiera, jak gdyby spowodowana niedostateczną populacją.
  2. Każda żywa komórka z dwoma lub trzema żyjącymi sąsiadami żyje dla następnego pokolenia.
  3. Każda żywa komórka z więcej niż trzema żywymi sąsiadami umiera, jakby przez przeludnienie.
  4. Każda martwa komórka z dokładnie trzema żywymi sąsiadami staje się żywą komórką, jakby przez rozmnażanie.

- Wikipedia

Kup własną płytkę Arduino i zacznij majsterkować już dziś

Aby przedstawić siatkę, używamy dwóch dwuwymiarowych tablic. Ponieważ pracujemy z macierzami 8 × 8, są to wymiary, które stosujemy do naszych tablic. Podczas gdy tablice bajtowe byłyby znacznie wydajniejsze w pamięci (i w rzeczywistości są często używane w takich aplikacjach), wartości logiczne są znacznie łatwiejsze do zmodyfikowania w tablicy niż bity w bajcie. Modyfikacja bitów w bajcie wymagałaby użycia bitowe operacje, które skomplikowałyby trochę rzeczy w porównaniu z prostymi tablicami logicznymi. Druga tablica wynika z tego, że musimy obliczyć następny stan na podstawie stanu obecnego, ale jeśli zmienimy stan bieżący, nie uzyskamy pożądanego stanu kolejnego.

Kolejne dwie pętle for służą do inicjalizacji cgrid tablica z losowymi wartościami i ngrid tablica z fałszywe wartości. Istnieje jedna na cztery szansa, że ​​komórka będzie `` żywa '', odbywa się to poprzez generowanie losowej liczby od 0 do 3, jeśli liczba jest większa niż 2, komórka żyje.

Pozostała część kodu jest albo na tyle prosta, że ​​nie wymaga dalszych wyjaśnień, albo ma wyjaśnienie w kodzie. Ale displayGeneration () funkcja jest bardziej interesująca. Ta funkcja, z niewielkimi modyfikacjami, jest w stanie pobierać tablice bajtów i przesyłać je bezpośrednio do macierzy. Plik lc.setColumn () wywołanie metody w rzeczywistości pobiera bajt, ponieważ jest to ostatni argument, pierwszy to adres i ustawiana kolumna. Używając tego i ustawiając jak poniżej, możesz łatwo utworzyć funkcję, która wyświetli ośmioelementową tablicę bajtów, taką jak litera lub obraz, na matrycy.

void printByte (bajt ba [8]) for (int i = 0; i < 8; i++) lc.setRow(0,0,ba[i]); 

Widać, że zastosowana metoda to setRow () metoda w przeciwieństwie do setColumn () metoda. Po prostu zastosuj bajt poziomo, a nie pionowo, prosty obrót o 90 stopni. Jest to ważna kwestia, biorąc pod uwagę, że orientacja twojego projektu niekoniecznie będzie taka sama jak moja. Ponadto możesz odwrócić kolejność umieszczania bajtów za pomocą (7 - i) jako drugi argument, skutecznie odzwierciedlając wynik. Jest to bardzo łatwy sposób na poprawne zorientowanie wyjścia dla twojego projektu.

Jeśli zamierzasz wyświetlać tekst na swojej matrycy, w Internecie znajdziesz czcionki matrycowe 8 × 8. Jednak bardzo ważne jest, aby zanotować całkowitą ilość pamięci RAM, jaką ma twój mikrokontroler. Użyłem Uno do tego projektu i jedna z czcionek zawierała definicje konfiguracji 128-bitowych poza 7-bitowym standardem ASCII. To było za dużo dla mojego Uno (to 8 bajtów x 256 = 2048 bajtów, całość Uno pojemność) i potrzebowałem połowy zestawu do oryginalnych 128 definicji ASCII, aby ta czcionka działała. Pamiętaj więc, że przebieg może się różnić w zależności od mikrokontrolera.

Po krótkiej pracy możesz usiąść i obserwować hipnotyzujący efekt Game of Life na własnym małym wyświetlaczu z matrycą LED.

Czy są jakieś inne projekty Arduino, które chciałbyś zobaczyć w Fossbytes? Daj nam znać w komentarzach poniżej.

Jak zainstalować dodatek Aliunde Plus Kodi
Aliunde Plus to dodatek wideo Real Debrid Kodi 19 Matrix.Sekcje obejmują filmy, programy telewizyjne, trakt, ostatnio odtworzone łącze, wznowienie ogl...
Jak zainstalować kreatora konserwacji macierzy Aliunde Kodi 19
Aliunde wydało Kreatora konserwacji matrycy Kodi 19, który ma wiele przydatnych narzędzi.Posiada funkcję Fresh Start, Backup / Restore, Maintenance, A...
Jak zainstalować dodatek ApeX Sports Kodi
ApeX Sports to dodatek sportowy Kodi 19 Matrix do telewizji na żywo z Arxtic-ape Repository.Zawiera sekcje dotyczące sportu na żywo, telewizji na żywo...