Korzystanie z Podstawowa kontrola grafiki ekranu szeregowego STONE, możesz rysować linie, trójkąty, wielokąty, prostokąty, kwadraty, koła, łuki, kolory wypełnienia, wycinać i wklejać i tak dalej.
Projekt maszyny do wczesnej nauki z wykorzystaniem szeregowego ekranu dotykowego STVI056WT-01, do identyfikacji kształtów na podstawie zdjęć, rozpoznawania słów po kolorach oraz do zaprojektowania formatu rozrywkowego w celu określenia poprawnych błędów, punktacji lub zaliczenia poziomu, aby dzieci mogły nauczyć się rozpoznawać kolory, rozumieć podstawowe kształty i uczyć się odpowiednich słów w zrelaksowany i zabawny sposób.
Oficjalna prezentacja wideo nie daje rzeczywistego efektu kontroli grafiki Basic, więc to demo ją uzupełni. Instrukcje dotyczące rysowania przekazywane są za pośrednictwem komunikacji między płyta sterująca arduino oraz Piasek seryjny STONEn.
Ponadto uwaga ta nie obejmuje pełnej zawartości funkcjonalnej podstawowego sterowania graficznego, jedynie funkcje wykorzystywane w użytkowaniu opracowania, nagrane są testowane na maszynie OK, można bezpośrednio pobrać przebieg demonstracyjny.
Środowisko sprzętowe demonstracji pokazano na Rysunku 1, Rysunku 2 i Rysunku 3.
STONE oficjalnie jest dostarczany z 2 płytami, z których kwadratowa to płyta USB do pobierania, a długa to płyta komunikacji USB do portu szeregowego (i zasilacz DC12V dla ekranu szeregowego).
(Rysunek 1: Komunikacja i podłączenie zasilania ekranu szeregowego STONE) (Rysunek 2: Schemat połączeń do pobierania plików kontrolnych Basic Graphics z ekranu STONE)
(Rysunek 3: Połączenie TX, RX, GND między płytą komunikacyjną ekranu szeregowego STONE a płytką rozwojową arduino)
(Rysunek 4: Podstawowa grafika steruje obszarem rysowania i adresem zmiennych oraz innymi ustawieniami parametrów)
Po wybraniu kontrolki Basicgraphics w menu STONE TOOLBox (oprogramowanie GUI Design) Variable Configuration (D) i ustawieniu parametrów obszaru rysowania i adresu zmiennej, polecenie 0x82 służy do zapisu do ustawionego adresu pamięci zmiennej (tu ustawia się 0x1000) Po ustawieniu obszaru rysowania i parametrów adresu zmiennej, instrukcja 0x82 służy do zapisania CMD + Data_pack_Num_Max + Data do ustawionego adresu pamięci zmiennej (w tym przypadku 0x1000) w celu zakończenia realizacji funkcji rysowania. Specyficzny kod funkcji pokazano na rysunku 6, gdzie znajduje się instrukcja rysowania linii 0x0002, przy użyciu następującego przykładu.
(Rysunek 5: Podstawowy format poleceń sterujących grafiką)
(Rysunek 6: Ilustracja poleceń rysowania linii i prostokąta dla podstawowego sterowania graficznego)
Instrukcja rysowania linii 0x0002, przykład użycia.
Aby połączyć czarną linię ze współrzędnych (340, 200) do współrzędnych (585, 200), instrukcja to
A5 5A 11 82 10 00 00 02 00 01 00 00 01 54 00 C8 02 49 00 C8
Narysuj trzy czarne linie zamknięte w trójkąt z trzema wierzchołkami o współrzędnych (200, 200), (300, 200), (250, 100), a instrukcja jest
A5 5A 19 82 10 00 00 02 00 03 00 00 00 00 C8 00 C8 01 2C 00 C8 00 FA 00 64 00 C8 00 C8
Powyższe 0x1000 to adres zmiennej podstawowej kontroli grafiki, 0x0002 to kod instrukcji, 0x0001 i 0x0003 to odpowiednio 1 linia i 3 linie, 0x0000 to kod koloru, wartość 0000 to czarny, a wartość ffff to jasnobiały. Inne natychmiastowe współrzędne XY każdego punktu.
Przykład rysowania prostokąta.
Prostokąt współrzędne górnego lewego wierzchołka (340, 237), współrzędne dolnego prawego wierzchołka (585, 340) kolor czarny, polecenie jest
A5 5A 11 82 10 00 00 03 00 01 01 54 00 ED 02 49 01 54 00 00
Narysuj jednocześnie dwa prostokąty (340, 237) – (585, 340), (324, 221) – (601, 356), polecenie jest
A5 5A 1B 82 10 00 00 03 00 02 01 54 00 ED 02 49 01 54 00 00 01 44 00 DD 02 59 01 64 FF FF
Powyższe 0x1000 to zmienny adres podstawowego sterowania grafiką, 0x0003 to kod polecenia prostokąta, 0x0001, 0x0002 to 1 prostokąt, 2 prostokąty, 0x0000, 0xffff to kod koloru, wartość 0000 to czarny, wartość fffff to jasny biały. Pozostałe to współrzędne XY lewego górnego i prawego dolnego wierzchołka każdego prostokąta.
(Rysunek 7: Polecenia wypełniania prostokątów i rysowania okręgów dla podstawowego sterowania grafiką)
Przykład wypełnienia prostokąta.
Polecenie wypełnienia czarnego prostokąta (470, 200) ~ (550 ,255) to
A5 5A 11 82 10 00 00 04 00 01 01 D6 00 C8 02 26 00 PF 00 00 00
Przykład rysowania koła.
Środek okręgu (470, 200), R = 50 czarny, instrukcja to
A5 5A 0F 82 10 00 00 05 00 01 01 D6 00 C8 00 32 00 00
Aby narysować dwa okręgi jednocześnie, środek A (470, 200) R=50 i środek B (256, 200) R=80, oba w kolorze czarnym, polecenie jest
A5 5A 17 82 10 00 00 05 00 02 01 D6 00 C8 00 32 00 00 01 00 00 C8 00 50 00 00
(Rysunek 8: Polecenie Arc dla podstawowego sterowania grafiką)
Rozdzielczość łuku wynosi 0.5 stopnia, 360 stopni odpowiada 720, a 0 stopni w kierunku pionowym do góry.
Przykład łuku.
Łuk górny 315 stopni do początku – 45 stopni do końca, środek okręgu (300, 200) R = 80, czarny, polecenie jest
A5 5A 13 82 10 00 00 0B 00 01 00 00 01 2C 00 C8 00 50 02 76 00 5A
Jeśli chodzi o kolory.
0x0000 to czarny 0xffff to biały 0x00ff to niebieski 0xf000 to czerwony 0xfd60 to pomarańczowy
0xff60 to żółty 0x2f60 to zielony
(Rysunek 9: Podstawowe parametry i adresy interfejsu graficznego sterowania kształtem tablicy kreślarskiej)
(Rysunek 10: Parametry i adresy tablicy kreślarskiej podstawowego interfejsu kolorów sterowania grafiką)
Zgodnie ze zmienną adres, polecenie wypełnienia zielonego koloru dla (10, 80) ~ (630, 400) to
A5 5A 11 82 60 00 00 04 00 01 00 0A 00 50 02 76 01 90 2f 60
Inne podobieństwa można znaleźć w kodzie programu, aby uzyskać szczegółowe informacje.
Kod zademonstrowany na filmie jest następujący.
/*
frank10
STONE i arduino COMM, grafika Basic gra w programie..
Włącza diodę LED na jedną sekundę, a następnie wielokrotnie wyłącza się na jedną sekundę. Dioda LED informuje nas, że miękki działa dobrze!
Przykład ma dwie strony. page1 to shape, page2 to corlor!
Ten przykładowy kod znajduje się w pliku franka. 20210625
*/
// Pin 13 ma diodę LED podłączoną na większości płyt Arduino.
// daj temu imię:
wewnętrzna dioda = 13;
int iYePian = 0; //0x0020 dla Liczba YePian!
//int iGongLu = 0; //0x0180 dla GongLu!
//int iLiuLiang = 0; //0x0160 dla The now LiuLiang!
int iJiao = 0; // 0x0260 dla JieJuJiao!
int iGongLuWoda = 0; //0x0280 dla GongLu Wody! wartość to 0-50000!
wewn iLed = 1; //czas opóźnienia il.
int iLed2 = 1; //czas opóźnienia il. 50 ms zrobić punkt.
int iLed3 = 0; //czas opóźnienia il. 50 ms zrobić punkt.
int iLed4 = 0; //czas opóźnienia il. 50 ms zrobić punkt.
int iKrzywa0 = 0; //Wartość krzywej0. 50 ms zrobić punkt.
int iKrzywa1 = 0; //Wartość krzywej1. 50 ms zrobić punkt.
int iFlag0 = 1; // Flaga krzywej0 + lub -; .1 to góra, 0 to dół.
int iFlag1 = 1; // Flaga krzywej1 + lub -; .1 to góra, 0 to dół.
int iNum = 0 ; //odczytaj w numerze znaku.
int iNum2 = 0; //odczytaj w char num2 dla ShuiDianZhan!
//int iPower = 2; //klucz statua 0x0009
//int iMode = 2; //klucz statua 0x000A
int iPowerWater = 2; //klucz statua 0x0039
// procedura konfiguracji uruchamia się raz po naciśnięciu resetu:
void setup () {
// zainicjuj pin cyfrowy jako wyjście.
pinMode (led, WYJŚCIE);
Serial.początek(115200); // Otwórz funkcję komunikacji szeregowej i poczekaj na otwarcie portu szeregowego
podczas (!Serial) {
; // poczekaj na połączenie portu szeregowego. Potrzebne tylko dla Leonardo
}
}
// procedura pętli działa w kółko w nieskończoność:
void loop () {
int inChar;
/*———————————————————————————-*/
jeśli (iLed == 800) {
//——- odczytaj wartość 0x0039———-
Serial.write(0xA5); //”A5” to 165
Serial.zapis (0x5A); // „5A” to 90
Serial.zapis (0x04); //długość
Serial.zapis (0x83); // czytać!
Serial.write(0x00); // adres klucza zasilania ShuiDianZhan!
Serial.zapis (0x39); // adres klucza zasilania ShuiDianZhan!
Serial.zapis (0x01); // 0x0039 (klawisz zasilania)
//———Zwrócona wartość STONE będzie wynosić „A5 5A 06 83 00 39 01 00 01” ——
}
// Odczytaj informacje wysyłane przez port szeregowy:
if (Serial.available() > 0) { inChar = Serial.read(); }
/*
zapisać bak.
ponieważ może mieć odczytany klucz i mieć pracę z kluczem.
program jest interfejsem HMI, w którym klucz wejścia wykonuje pracę peplose.
*/
//———————————————————————————
//—————————-0x0039 odczyt klawisza początek———————————–
if (inChar == 0x39) { iNum2 = 1 ; }
if ((inChar == 0x01)&&(iNum2 == 1)) { iNum2 = 2 ; }
if ((inChar == 0x00)&&(iNum2 == 2)) { iNum2 = 3 ; }
if ((inChar == 0x01)&&(iNum2 == 3)) {
iLiczba2 = 0 ;
jeśli(iPowerWater != 1){
iPowerWater = 1 ; //zasilanie włączone!
iJiao = 0;
iGongLuWoda = 0 ;
}
}
if ((inChar == 0x02)&&(iNum2 == 3)) {
iLiczba2 = 0 ;
iPowerWater = 2 ; //Wyłącz!
}
//——————Odczyt klucza 0x0039 ok! iPowerWater ok!——————————-
//———————————————————————————
opóźnienie (1);
iLed += 1;
iLed2 += 1; // 50 ms robi punkt.
//———————————————————————————————–
//———————————50 ms od rozpoczęcia punktu————————————–
jeśli (iLed2 == 50) {
iLed2 = 1;
iLed4 += 1; // 50 ms robi punkt.
jeśli(iFlag0 == 1){
iKrzywa0 += 1; // 50 ms robi punkt.
jeśli(iKrzywa0 >= 150){
iFlag0 = 0; // Wyłączanie iCurve0!.
}
}
jeśli(iFlag0 == 0){
iKrzywa0 -= 1; // 50 ms robi punkt.
jeśli(iKrzywa0 <= 1){
iFlag0 = 1; // Pojawia się iCurve0!.
}
}
jeśli(iFlag1 == 1){
jeśli(iLed4 >= 3){
iKrzywa1 += 1; // 50 ms robi punkt.
iLed4 = 0;
}
jeśli(iKrzywa1 >= 50){
iFlag1 = 0; // Wyłączanie iCurve1!.
}
}
jeśli(iFlag1 == 0){
jeśli(iLed4 >= 3){
iLed4 = 0;
iKrzywa1 -= 1; // 50 ms robi punkt.
}
jeśli(iKrzywa1 <= 1){
iFlag1 = 1; // Pojawia się iCurve1!.
}
}
Serial.write(0xA5); //”A5” to 165
Serial.zapis (0x5A); // „5A” to 90
Serial.zapis (0x06);
Serial.zapis (0x84); //napisz do krzywej!
Serial.zapis (0x03); // Ścieżka krzywej,
Serial.write(iCurve0); // N=1,
Serial.zapis (0x00);
Serial.write(iCurve1);
Serial.zapis (0x00);
}
//——————————-50ms zrobić koniec punktu—————————————
//———————————————————————————————-
jeśli (iLed == 500) {
digitalWrite(led, HIGH); // włącz diodę LED (HIGH to poziom napięcia)
//opóźnienie(500); // poczekaj sekundę, Zakres: 200-2000
}
jeśli (iLed >= 1000) {
digitalWrite(led, LOW); // wyłącz diodę LED, obniżając napięcie
//opóźnienie(500); // poczekaj sekundę, zakres:200-2000
iLed = 1;
if( iNum <= 6 ) iNum += 1; //obrót kształtu!
if( iNum == 6 ) iNum = 0; //obrót kształtu!
//——————————————Czerwony to początek—————————————–
if( iNum == 1){ // trójkąt! i czerwony!
Serial.write(0xA5); //”A5” to 165
Serial.zapis (0x5A); // „5A” to 90
Serial.zapis (0x19);
Serial.zapis (0x82);
Serial.zapis (0x10); // adresH grafiki Basic
Serial.write(0x00); // adresL grafiki Basic
Serial.write(0x00); // Wykonaj linię CMD
Serial.write(0x02); // Wykonaj linię CMD
Serial.write(0x00); // numer linii
Serial.zapis (0x03); // Numer linii.
Serial.write(0x00); //kolorH czarny
Serial.write(0x00); //kolorL
Serial.write(0x00); // punktX1H
Serial.write(0xc8); // punktX1L
Serial.write(0x00); // punktY1H
Serial.write(0xc8); // punktY1L
Serial.write(0x01); // punktX2H
Serial.zapis (0x2C); // punktX2L.
Serial.write(0x00); // punktY2H
Serial.write(0xC8); // punktY2L
Serial.write(0x00); // punktX3H
Serial.write(0xFA); // punktX3L
Serial.write(0x00); // punktY3H
Serial.write(0x64); // punktY3L
Serial.write(0x00); // punktX1H
Serial.write(0xc8); // punktX1L
Serial.write(0x00); // punktY1H
Serial.write(0xc8); // punktY1L
//napełnić--
Serial.write(0xA5); //”A5” to 165
Serial.zapis (0x5A); // „5A” to 90
Serial.zapis (0x11);
Serial.zapis (0x82);
Serial.zapis (0x60); // adresH podstawowej strony graficznej 2
Serial.write(0x00); // adresL podstawowej grafiki pabe2
Serial.write(0x00); // Wypełnij prostokąt CMD
Serial.zapis (0x04); // Wypełnij prostokąt CMD
Serial.write(0x00); // numer prostokąta
Serial.zapis (0x01); // Numer prostokąta
Serial.write(0x00); // punktX1H
Serial.zapis (0x0A); // punktX1L
Serial.write(0x00); // punktY1H
Serial.write(0x50); // punktY1L
Serial.write(0x02); // punktX2H
Serial.zapis (0x76); // punktX2L.
Serial.write(0x01); // punktY2H
Serial.write(0x90); // punktY2L
Serial.write(0xF0); // Kolor czerwonyH
Serial.write(0x00); // Kolor czerwonyL
}
//—————————————Czerwony to koniec—————————————–
//——————————————Żółty i łuk zaczyna się—————————————–
if( iNum == 2){ // arc! i żółty!
Serial.write(0xA5); //”A5” to 165
Serial.zapis (0x5A); // „5A” to 90
Serial.zapis (0x13);
Serial.zapis (0x82);
Serial.zapis (0x10); // adresH podstawowej strony graficznej 1
Serial.write(0x00); // adresL podstawowej grafiki pabe1
Serial.write(0x00); // Wykonaj łuk CMD
Serial.write(0x0B); // Wykonaj łuk CMD
Serial.write(0x00); // numer łuku
Serial.zapis (0x01); // Numer łuku.
Serial.write(0x00); // kolorH czarny
Serial.write(0x00); // kolorL puste
Serial.zapis (0x01); // środek koła XH
Serial.write(0x2c); // środek koła XL
Serial.write(0x00); // środek koła YH
Serial.write(0xc8); // środek koła YL
Serial.write(0x00); // RH
Serial.zapis (0x50); // RL.
Serial.zapis (0x02); // Kąt1H
Serial.zapis (0x76); // Kąt1L
Serial.zapis (0x00); // Kąt2H
Serial.zapis (0x5A); // Kąt2L
//napełnić--
Serial.write(0xA5); //”A5” to 165
Serial.zapis (0x5A); // „5A” to 90
Serial.zapis (0x11);
Serial.zapis (0x82);
Serial.zapis (0x60); // adresH podstawowej strony graficznej 2
Serial.write(0x00); // adresL podstawowej grafiki pabe2
Serial.write(0x00); // Wypełnij prostokąt CMD
Serial.write(0x04); // Wypełnij prostokąt CMD
Serial.write(0x00); // numer prostokąta
Serial.zapis (0x01); // Numer prostokąta
Serial.write(0x00); // punktX1H
Serial.zapis (0x0A); // punktX1L
Serial.write(0x00); // punktY1H
Serial.write(0x50); // punktY1L
Serial.write(0x02); // punktX2H
Serial.zapis (0x76); // punktX2L.
Serial.write(0x01); // punktY2H
Serial.write(0x90); // punktY2L
Serial.write(0xFF); // Żółty kolorH
Serial.zapis (0x60); // Żółty kolorL
}
//—————————————Żółty i łuk to koniec—————————————–
//—————————————–Zieleń i prostokąt to początek—————————————–
if( iNum == 3){ // prostokąt! i zielony!
Serial.write(0xA5); //”A5” to 165
Serial.zapis (0x5A); // „5A” to 90
Serial.zapis (0x11);
Serial.zapis (0x82);
Serial.zapis (0x10); // adresH podstawowej strony graficznej 1
Serial.write(0x00); // adresL podstawowej grafiki pabe1
Serial.write(0x00); // Wykonaj prostokąt CMD
Serial.write(0x03); // Wykonaj prostokąt CMD
Serial.write(0x00); // numer prostokąta
Serial.zapis (0x01); // Numer prostokąta
Serial.write(0x01); // punktX1H
Serial.write(0x54); // punktX1L
Serial.write(0x00); // punktY1H
Serial.write(0xED); // punktY1L
Serial.write(0x02); // punktX2H
Serial.zapis (0x49); // punktX2L.
Serial.write(0x01); // punktY2H
Serial.write(0x54); // punktY2L
Serial.write(0x00); // kolorH czarny
Serial.write(0x00); // kolorL puste
//napełnić--
Serial.write(0xA5); //”A5” to 165
Serial.zapis (0x5A); // „5A” to 90
Serial.zapis (0x11);
Serial.zapis (0x82);
Serial.zapis (0x60); // adresH podstawowej strony graficznej 2
Serial.write(0x00); // adresL podstawowej grafiki pabe2
Serial.write(0x00); // Wypełnij prostokąt CMD
Serial.write(0x04); // Wypełnij prostokąt CMD
Serial.write(0x00); // numer prostokąta
Serial.zapis (0x01); // Numer prostokąta
Serial.write(0x00); // punktX1H
Serial.zapis (0x0A); // punktX1L
Serial.write(0x00); // punktY1H
Serial.write(0x50); // punktY1L
Serial.write(0x02); // punktX2H
Serial.zapis (0x76); // punktX2L.
Serial.zapis (0x01); // punktY2H
Serial.write(0x90); // punktY2L
Serial.write(0x2F); // Kolor zielonyH
Serial.zapis (0x60); // Kolor zielonyL
}
//————————————–Zielony i prostokąt to koniec—————————————–
//——————————————Pomarańcz i kwadrat to początek—————————————–
if( iNum == 4){ // kwadrat! i pomarańczowy!
Serial.write(0xA5); //”A5” to 165
Serial.zapis (0x5A); // „5A” to 90
Serial.zapis (0x11);
Serial.zapis (0x82);
Serial.zapis (0x10); // adresH podstawowej strony graficznej 1
Serial.write(0x00); // adresL podstawowej grafiki pabe1
Serial.write(0x00); // Wykonaj prostokąt CMD
Serial.write(0x03); // Wykonaj prostokąt CMD
Serial.write(0x00); // numer prostokąta
Serial.zapis (0x01); // Numer prostokąta
Serial.write(0x01); // punktX1H
Serial.write(0x54); // punktX1L
Serial.write(0x00); // punktY1H
Serial.write(0x91); // punktY1L
Serial.write(0x02); // punktX2H
Serial.zapis (0x49); // punktX2L.
Serial.write(0x01); // punktY2H
Serial.write(0x86); // punktY2L
Serial.write(0x00); // kolorH czarny
Serial.write(0x00); // kolorL puste
//napełnić--
Serial.write(0xA5); //”A5” to 165
Serial.zapis (0x5A); // „5A” to 90
Serial.zapis (0x11);
Serial.zapis (0x82);
Serial.zapis (0x60); // adresH podstawowej strony graficznej 2
Serial.write(0x00); // adresL podstawowej grafiki pabe2
Serial.write(0x00); // Wypełnij prostokąt CMD
Serial.write(0x04); // Wypełnij prostokąt CMD
Serial.write(0x00); // numer prostokąta
Serial.zapis (0x01); // Numer prostokąta
Serial.write(0x00); // punktX1H
Serial.zapis (0x0A); // punktX1L
Serial.write(0x00); // punktY1H
Serial.write(0x50); // punktY1L
Serial.write(0x02); // punktX2H
Serial.zapis (0x76); // punktX2L.
Serial.write(0x01); // punktY2H
Serial.write(0x90); // punktY2L
Serial.write(0xFD); // kolor pomarańczowyH
Serial.zapis (0x60); // kolor pomarańczowyL
}
//—————————————–Pomarańcz i kwadrat to koniec—————————————–
//————————————–Niebieski i okrąg to początek—————————————–
if( iNum == 5){ // zakreśl! i niebieski!
Serial.write(0xA5); //”A5” to 165
Serial.zapis (0x5A); // „5A” to 90
Serial.write(0x0F);
Serial.zapis (0x82);
Serial.zapis (0x10); // adresH podstawowej strony graficznej 1
Serial.write(0x00); // adresL podstawowej grafiki pabe1
Serial.write(0x00); // Zakreśl CMD
Serial.write(0x05); // Zakreśl CMD
Serial.zapis (0x00); // numer koła
Serial.zapis (0x01); // Numer koła
Serial.zapis (0x01); // środek koła XH
Serial.write(0xD6); // środek koła XL
Serial.write(0x00); // środek koła YH
Serial.write(0xc8); // środek koła YL
Serial.write(0x00); // RH
Serial.zapis (0x32); // RL.
Serial.write(0x00); // kolorH czarny
Serial.write(0x00); // kolorL puste
//napełnić--
Serial.write(0xA5); //”A5” to 165
Serial.zapis (0x5A); // „5A” to 90
Serial.zapis (0x11);
Serial.zapis (0x82);
Serial.zapis (0x60); // adresH podstawowej strony graficznej 2
Serial.write(0x00); // adresL podstawowej grafiki pabe2
Serial.write(0x00); // Wypełnij prostokąt CMD
Serial.write(0x04); // Wypełnij prostokąt CMD
Serial.write(0x00); // numer prostokąta
Serial.zapis (0x01); // Numer prostokąta
Serial.write(0x00); // punktX1H
Serial.zapis (0x0A); // punktX1L
Serial.write(0x00); // punktY1H
Serial.write(0x50); // punktY1L
Serial.write(0x02); // punktX2H
Serial.zapis (0x76); // punktX2L.
Serial.write(0x01); // punktY2H
Serial.write(0x90); // punktY2L
Serial.write(0x00); // kolor niebieskiH
Serial.write(0xFF); // kolor niebieskiL
}
//—————————————Niebieski i okrąg to koniec—————————————–
Wreszcie debugowanie online.
STONE TOOLBox (oprogramowanie GUI Design) będzie edytować pobieranie pliku ekranu, przesyłanie pliku kodu arduino, podłączanie zasilania, komunikację, włączanie zasilania, aby obserwować rysunek obrazu i zmianę koloru, aby osiągnąć pożądany efekt.
Kod zademonstrowany na filmie jest następujący.
(próby strojenia online)
Źródło: Plato Data Intelligence