MXChip fajne powitanie na warsztatach
Trochę się dziś namęczyłam, żeby zrobić fajne powitanie, które wgram na wszystkie płytki przed kolejnymi warsztatami. Chciałam, żeby było coś mojego i coś co nie wymaga inicjalizacji Wifi.
Skorzystałam z przykładu Katei Ren: MXCHip ACP Scroller tak aby nie pisać C++ kodu :)
Ale chciałam stworzyć projekt od zera.
No to zakładamy nowy projekt.
Kompilujemy… i kiszka
Wygląda to tak jakby były jakieś dodatkowe znaczki w plikach albo nie można było znaleźć wszystkich plików, referencji. Zapożyczyłam pliki cpp i sądziłam, że faktycznie mam jakieś problemy z referencjami. Inna opcja to złe ustawienia środowiska. Zazwyczaj wszystkie foldery i pliki zaczynające się od kropki pomijamy, bo to ustawienia lokalne, jednak przy Arduino tych konfiguracji jest tak dużo, że zdecydowanie lepiej je mieć przy sobie.No to?
Bierzemy istniejące rozwiązanie i lecimy z tym samym kodem. Działa 🤔No to wyrównujemy kod. Łącznie z wszystkimi ustawieniami, jsonami, nazwami plików - wszystko.
Jeden działa, drugi nie 🤔
WTF?
To może pora zrobić clean, rebuild? W Xamarinie działa.Usuwamy folder .build
Nie działa. Oba nie działają. Przynajmniej jest tak samo,
No to co zrobić, żeby działało?
Nie miałam już więcej pomysłów jak zadziałać z Visual Studio Code.Wróćmy do korzeni. Otwieramy Arduino IDE a w nim plik główny.
A tu IDE na mnie krzyczy
JLIoTWelcome.ino needs to be inside a sketch folder named JLIoTWelcome
No to dobra niech zrobi, jak mówi. Teraz zapewne będzie brakować tych dodatkowych cpp. No to wszystko do jednego folderu.
Weryfikuj. (czyli Build)
I co? DZIAŁA
Jest brzydko, jeśli chodzi o ilość katalogów, pewnie da się lepiej. WorkBranchowy projekt zakłada folder Device przygotowując się od razu również na część Azurową i frontendową. I teraz w Devices mamy katalog zgodny z nazwą pliku głównego.Let it be. Działa, nie ruszać.
Ale to nie koniec ;)
Ok opierałam się na rozwiązaniu z repo, ale koniecznie chciałam wrzucić mojego kotka.Ale jak przygotować taki rysunek?
Image2cpp
Bardzo fajne narzędzie, ale znaleźć konfigurację, która działa to już inna bajka.
Miałam tylko jeden ogromny problem z tą stronka. Generuje ona heksadecymalne wartości, które musiałam konwertować do intów. Dlatego dołożyłam taką konwersję a strona jest dostępna jlamch.net/MXChipWelcome
Ja chcę kotka
Skonwertujmy więc mojego kotka z dodatkowym linkiem do mojego landing page.Wybrane ustawienia wyglądają tak:
Słowem wytłumaczenia
Ekran MXChipa ma rozdzielczość 128 x 64 px. Więc najlepiej robić takiej wielkości obrazki.Daje to tablice 1024 wartości. Białe, czyli 0 to piksel wyłączony. Czarne = 255 piksel włączony.
Wyświetlacz jest złożony z dwóch rodzajów diod niebieskich i żółtych, ale obsługiwane są jako jeden ekran.
Aby uzyskać świecącego kotka wybrałam czarne tło i inwersje kolorów.
No i ostatnia sprawa "Draw mode". Zależy czy ekran odświeża się wiersz po wierszu czy też kolumna po kolumnie. W MXChip jest to wiersz po wierszu więc wybieramy Draw mode: Vertical 1 bit per piksel.
Pułapka
const unsigned char jlcat [] = { 0, …, 0}
rysujemy
display.draw(0,0,128,8,JLamchCat);
gdybyśmy chcieli użyć
display.drawBitmap( ... )
z tego repozytorium Toby Brad: mxchip iotdevkit gfx używamy
static byte azure_logo[] = {1, … ,1}
Efekt końcowy
To bardzo prosty kod.Cały program to ledwie parę linijek. Deklarujemy nasze rzeczy do wyświetlenia a potem w głównej pętli rysujemy je na zmianę na ekranie.
Cały kod rozwiązania znajdziecie w repo MXChipWelcome
Natomiast tutaj nagranie efektu działającego kodu
Komentarze
Prześlij komentarz