IOT

STONE seryjny HMI Arduino demonstracja umiejętności wczesnego uczenia się

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