VIDI Project X #51:
Biblioteke za VIDI X mikroračunalo

Dolazi vrijeme kada svi imamo malo više vremena za stvari koje inače ostavljamo sa strane. Kada je riječ o VIDI X mikroračunalu, taj višak vremena bilo bi zgodno iskoristiti za istraživanje dostupnih biblioteka. Lako je moguće da za vaš programski problem već postoji gotovo rješenje, samo ne znate od kuda krenuti tražiti. Gdje pronaći dostupne biblioteke za korištenje naprednih mogućnosti VIDI X-a, ali i što sve one nude te kako ih koristiti saznajte u ovome vodiču.

 

Nakon što isprobate primjere koje vam donosimo kroz ovu radionicu, bit ćete spremni za samostalno istraživanje biblioteka u bespućima interneta. Opisane biblioteke omogućit će vam pokretanje koda izvorno pisanog za M5STACK konzolu na VIDI X mikroračunalu. Uvidjet ćete razlike između različitih grafičkih biblioteka. Možda vam se svide primjeri koda za animaciju očiju ili primjeri nekih igara. Svakako vam savjetujemo da isprobate sve priložene primjere koda uz pojedinu biblioteku jer ima zaista poučnih primjera.

Biblioteku, ili kako ju zovemo na engleskom, „Library“, čini skup programskih funkcija koje omogućavaju jednostavnije korištenje dodatnog senzora ili proširuju pisanje koda dodavanjem unaprijed definiranih programskih funkcija spremnih za korištenje, sa ciljem proširivanja programskih funkcionalnosti.

Razlikujemo biblioteke pisane za različite programske jezike. Tako nije svejedno pronađete li biblioteke za programski jezik C ili za Python. Isto tako razlikujemo biblioteke za različite mikrokontrolere. Tako biblioteke mogu biti napisane za Arduino, Raspberry Pi Pico, Micro:bit, STM32 i razne druge mikrokontrolere.

U ovome tekstu saznat ćete gdje pronaći biblioteke za VIDI X mikroračunalo, kako ih koristiti u razvojnoj okolini Arduino IDE te ih prema potrebi modificirati.

 

Razvojna okolina Arduino IDE

Unutar razvojne okoline Arduino IDE postoji upravitelj biblioteka (Library Manager) koji će olakšati potragu za bibliotekama koje možete koristiti.
Otvorite ga klikom u izborniku na Skica –> Include Library –> Manage Libraries… 

 

Neke biblioteke već se nalaze u razvojnoj okolini Arduino IDE, dok ćete većinu njih morati instalirati.

 

U novootvorenom prozoru prikazat će se biblioteke dostupne za instalaciju direktno iz Arduino IDE. Ovdje možete sortirati biblioteke po tipu i namjeni, ili u polje za pretraživanje upišite ključnu riječ poput naziva senzora ili funkcije koju tražite.
Recimo, tražite li algoritme za sortiranje kao što su Bubble Sort ili Quick Sort, dovoljno je u tražilicu upisati „sort“ i u rezultatima ćete pronaći biblioteku AceSorting.

 

Ponekad neki programski primjeri rade s ranijim verzijama biblioteke, pa je moguće da vam u jednom trenutku zatreba jedna verzija, a u drugom neka druga verzija iste biblioteke.

 

Ako postoji više izdanja te biblioteke, uz pomoć padajućeg izbornika možete odabrati verziju izdanja koju želite instalirati, no prije instalacije je poželjno pročitati informacije o biblioteci koje nam njezin programer nudi klikom na poveznicu More info.

U ovom konkretnom slučaju, poveznica nas vodi na GitHub gdje se nalazi izvorni kod biblioteke, kao i vrlo lijepa i opsežna dokumentacija. Čitajući pomalo, možete saznati da biblioteka pokriva sedam algoritama za sortiranje te su za svaki od njih priložene dodatne poveznice na Wikipediju ako želite saznati više o pojedinom algoritmu.

Za svaki algoritam priložena je i tablica benchmark rezultata iz koje ćete saznati na kojem mikrokontroleru se algoritam najbrže izvodi, ali i u kojem slučaju se najbrže izvodi. Je li to u slučaju kada je niz nasumičan, ili kada je obrnut, te koliko se RAM-a troši za sortiranje u pojedinom slučaju.

Nakon instaliranja klikom na gumb Install, putem izbornika Datoteka –> Primjeri –> AceCommon otvorite neki od priloženih primjera kako biste iskušali novoinstaliranu biblioteku. Otvorite li AutoBenchmark skicu te ju pokušate kompajlirati na već uobičajen način, dobit ćete grešku o prekinutom kompajliranju koja glasi ovako:

Arduino:1.8.19 (Windows 10), Ploča: “ESP32 Wrover Module, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), QIO, 80MHz, 921600, None”
Benchmark.cpp:9:23: fatal error: AceCommon.h: No such file or directory
…
AceCommon.h: No such file or directory

 

Iz priloženoga se vidi da na devetoj liniji koda nedostaje biblioteka AceCommon.h. Ponovno uz pomoć upravitelja biblioteka potražite i instalirajte biblioteku AceCommon.

Nakon uspješnog kompajliranja, u prozoru Serial Monitor možete vidjeti benchmark rezultate algoritama priloženih u ovoj biblioteci.

Poželite li istražiti ili unaprijediti kod ove biblioteke, njezin izvorni kod pronađite u mapi \Arduino\libraries\AceSorting smještenoj u mapi My Documents.

Spomenutu mapu trebali biste pogledati i radi mape docs, unutar koje ćete pronaći dokumentaciju za spomenutu biblioteku koja će vam zasigurno biti od koristi. Iako nije pravilo da svaka biblioteka ima ovako dobro dokumentiran kod.

U mapi examples pronaći ćete programske primjere koje je priložio developer kako biste se lakše poslužili bibliotekom.
Mapa src je glavna mapa u kojoj se nalazi kod biblioteke. Proučavanjem tog koda možete puno naučiti.

Iz uređivača koda u okolini Arduino IDE moguće je pokrenuti upravitelja biblioteka upisivanjem poveznice i pojma za pretraživanje iza hash znaka (#), primjerice http://librarymanager/All#Adafruit_ILI9341 ili http://librarymanager/All#tft_espi, te klikom na tu poveznicu.

Primjer takvoga koda potražite na: https://hr.vidi-x.org/radionice/vidi-project-x-87-robot-nadograden-vidi-project-x-mikroracunalom/

 

Promjena koda biblioteke utjecat će i na ostale projekte koji koriste istu biblioteku, pa oprezno s time kako vam se ne bi dogodilo da neki programski primjeri ne rade zbog greške koju ste napravili izmjenom koda biblioteke.

 

Github.com

Još jedno mjesto na kojem ćete pronaći mnoštvo biblioteka je GitHub, pa tako u njegovu tražilicu možete upisati „ESP32 library“ i pogledati što nam sve GitHub nudi.

 

Arduino biblioteke su u dosta slučajeva kompatibilne s ESP32 procesorom, pa i njih možete pokušati pretražiti na GitHubu.

 

Preuzetu datoteku instalirajte putem izbornika: Skica –> Include Library –> Add .ZIP Library…

Odaberite preuzetu .zip datoteku i kliknite Open. Nakon kraćeg vremena, putem izbornika pronađite instalirane primjere za korištenje nove biblioteke.

Na ovaj način možete instalirati i druge biblioteke koje ste preuzeli s drugih web stranica s interneta.

 

Kada pronađete biblioteku koju želite isprobati, preuzmite ju klikom na zeleni gumb Code, te zatim na Download ZIP.

 

Ručno instaliranje

Ručno instaliranje biblioteka moguće je na način da jednostavno prekopirate datoteke biblioteke u mapu gdje se biblioteke nalaze. To je mapa C:\Users\korisnik\Documents\Arduino\libraries.

Na primjer, preuzmite biblioteku ODROID-GO sa stranice https://github.com/hardkernel/ODROID-GO klikom na Code, a zatim odaberite Download ZIP.

Otpakirajte datoteku, te kompletnu mapu „ODROID-GO-master“ kopirajte u mapu C:\Users\korisnik\Documents\Arduino\libraries.

Ukoliko ponovno pokrenete Arduino IDE, pronaći ćete primjere biblioteke u izborniku Datoteka –> Primjeri.

 

Kopiranje sadržaja biblioteke u pripadajuću mapu identično je instalaciji biblioteke.

 

Arduino stranica s bibliotekama

Cijela jedna domena https://www.arduinolibraries.info/ namijenjena je prikupljanju podataka o bibliotekama kako bi im se moglo pristupiti na jednom mjestu. Konkretnije, poveznica https://www.arduinolibraries.info/architectures/esp32 sadrži biblioteke kompatibilne s ESP32 arhitekturom. Ipak, neke biblioteke objavljuju se po raznim privatnim web stranicama do kojih se dolazi putem Googlea, YouTubea ili trećih web stranica. Zanima li vas kako spomenuto web sjedište prikuplja podatke o bibliotekama, posjetite https://github.com/njh/arduino-libraries i proučite kod stranice koji je javno dostupan.

Recimo, na spomenutom sjedištu postoji biblioteka https://www.arduinolibraries.info/libraries/m5-stack koja je namijenjena M5STACK modulu, također baziranome na ESP32 SoC-u, dok se prilagođena verzija za VIDI X mikroračunalo može pronaći na GitHub-u na poveznici https://github.com/VIDI-X.

Ta prilagođena verzija prvenstveno služi kako bi mapirala pinove za ekran, tipke i drugo. No kako M5STACK ima neke stvari posložene na drugačiji način, često ćete morati napraviti minimalne izmjene koda kako biste pokrenuli primjere dobivene uz biblioteku. Recimo, igra Tetris ima krivu „include“ instrukciju na početku koda te treba prilagoditi kod ovako:

#include <M5Stack.h> // M5STACK
//#include <M5OW.h>

 

U nekim primjerima umjesto M5Stack.h može pisati M5stack.h s malim slovom S, a kako C++ razlikuje mala i velika slova, to je onda zapravo programska greška.

 

Primjeri za šah

Spomenuta biblioteka bit će vam potrebna poželite li zaigrati šah na VIDI X mikroračunalu, a skicu igre možete pronaći na https://github.com/VIDI-X/Chess.

Taj primjer šaha radit će bez ikakvih izmjena koda. Jedino treba pripaziti na verziju ESP32 podrške s kojom kompajlirate kod, te kao razvojnu pločicu odaberite ODROID GO umjesto ESP32 Wrover Modula.

Za šah će vam biti potrebna i biblioteka M5StackUpdater.h koju ćete također pronaći na GitHubu, na poveznici https://github.com/VIDI-X.