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);

więc używamy tablicy char
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

Popularne posty