Cuprins:
- Provizii
- Pasul 1: Materiale
- Pasul 2: Diagrama conexiunii
- Pasul 3: Configurați pentru SPI
- Pasul 4: Codul
- Pasul 5: Rezultatul
- Pasul 6: Utilizarea materialelor CrowPi2
- Pasul 7: Utilizarea CrowPi2- Diagrama conexiunii
- Pasul 8: Utilizarea CrowPi2- Configurare pentru SPI
- Pasul 9: Utilizarea CrowPi2- Codul
- Pasul 10: Utilizarea CrowPi2-the Result
- Pasul 11: Utilizarea CrowPi2- Mergeți mai departe
Video: Construiți Rainbow Interactive Bridge folosind Minecraft Raspberry Pi Edition: 11 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:41
Ieri, l-am văzut pe nepotul meu de 8 ani jucând Minecraft cu Raspberry Pi pe care i l-am dat înainte, apoi mi-a venit o idee, care folosește codul pentru a face un proiect personalizat și interesant de blocuri LED Minecraft-pi. Minecraft Pi este o modalitate excelentă de a începe cu microcomputerul Raspberry Pi, Minecraft Pi este o versiune specială personalizată a Minecraft care ne permite să interacționăm cu jocul folosind un API Python simplu mortal pentru a personaliza experiența și recuzita jocului!
Există multe proiecte pe care le puteți face în lumea Minecraft cu Raspberry Pi, dar în mod special pentru noi nu a fost suficient, căutam ceva provocator și clipeam în același timp. În acest proiect, vom călca pe mai multe blocuri Minecraft, vom detecta ID-ul blocului și vom detecta culoarea blocului specific pe care am pășit, pe baza culorii, ne vom aprinde LED-ul RGB pentru a crea joc interactiv de pași!
Voi folosi două metode pentru a obține efectul, prima este utilizarea accesoriilor, care pot fi foarte haotice …; al doilea folosește CrowPi2 (computer de învățare cu mulți senzori, finanțat în prezent pe Kickstarter: CrowPi2)
să începem și să vedem cum să arhivăm un proiect atât de uimitor!
Provizii
CrowPi2 acum este live pe kickstarter acum, proiectul CrowPi2 a strâns aproape 250.000 de dolari.
Accesați linkul:
Metoda 1 Utilizarea accesoriilor
Pasul 1: Materiale
● 1 x Raspberry Pi 4 model B
● 1 x card TF cu imagine
● 1 x sursă de alimentare Raspberry Pi
● Monitor 1 x 10,1 inch
● 1 x sursă de alimentare pentru monitor
● 1 x cablu HDMI
● 1 x tastatură și mouse
● 1 x LED RGB (catod comun)
● 4 x jumperi (de la femeie la femeie)
Pasul 2: Diagrama conexiunii
De fapt, există trei lumini în LED-ul color RGB, care sunt roșu, verde și albastru. Controlează aceste trei lumini pentru a emite lumină de diferite intensități și, atunci când sunt amestecate, pot emite lumină de diferite culori. Cei patru pini de pe lumina LED sunt GND, R, G și respectiv B. LED-ul RGB pe care l-am folosit este un catod obișnuit, iar conexiunea la Raspberry Pi este următoarea:
RaspberryPi 4B (în numele funcției) LED RGB
GPIO0 1 ROȘU
GPIO1 3 VERDE
GPIO2 4 ALBASTRU
GND 2 GND
A doua imagine este conexiunea hardware
Pasul 3: Configurați pentru SPI
Deoarece trebuie să folosim SPI pentru a controla RGB, trebuie mai întâi să activăm interfața SPI, care este dezactivată în mod implicit. Puteți urma pașii de mai jos pentru a activa interfața SPI:
În primul rând, puteți utiliza interfața grafică pentru desktop, îndreptându-vă către Pi start Menupreferences Configurația Raspberry Pi, așa cum se arată în prima imagine.
În al doilea rând, navigați la „Interfețe” și activați SPI și faceți clic pe OK (a doua imagine).
În cele din urmă, reporniți Pi-ul pentru a vă asigura că modificările vor intra în vigoare. Faceți clic pe Pi Start MenuPreferencesShutdown. Deoarece trebuie doar să repornim, faceți clic pe butonul Reboot.
Pasul 4: Codul
Vom începe prin a scrie codul nostru Python, mai întâi, vom începe prin a importa câteva biblioteci de care vom avea nevoie pentru a ne integra codul în lumea Minecraft. Apoi, vom importa biblioteca de timp, în special o funcție numită sleep. Funcția de somn ne va permite să așteptăm un anumit interval înainte de a efectua o funcție. Nu în ultimul rând, importăm biblioteca RPi. GPIO care ne permite să controlăm GPIO pe Raspberry Pi.
din mcpi.minecraft import Minecraft din timp import somn import RPi. GPIO ca GPIO
Și gata, am terminat cu importul bibliotecilor, acum este timpul să le folosim! Primul lucru este să folosim biblioteca Minecraft, vrem să ne conectăm scriptul python la lumea Minecraft, putem face acest lucru invocând funcția init () a bibliotecii MCPI și apoi setăm modul GPIO și dezactivăm avertismentul.
mc = Minecraft.create () GPIO.setmode (GPIO. BCM) GPIO.setwarnings (0)
Acum, definim câteva culori curcubeu în hexazecimal, astfel încât să putem schimba culorile RGB.
ALB = 0xFFFFFF RED = 0xFF0000 ORANGE = 0xFF7F00 GALBEN = 0xFFFF00 VERDE = 0x00FF00 CIAN = 0x00FFFF ALBASTRU = 0x0000FF PURPLE = 0xFF00FF MAGENTA = 0xFF0090
În continuare, trebuie să definim câteva variabile pentru a înregistra culoarea blocului de lână, care este deja definit în lista blocurilor Minecraft.
W_WHITE = 0 W_RED = 14 W_ORANGE = 1 W_YELLOW = 4 W_GREEN = 5 W_CYAN = 9 W_BLUE = 11 W_PURPLE = 10 W_MAGENTA = 2
ID-ul blocului de lână din Minecraft este 35. Acum, trebuie să configurăm pinul pentru LED-ul RGB și să îl configurăm.
pin roșu = 17 pin verde = 18 pin albastru = 27
GPIO.setup (red_pin, GPIO. OUT, initial = 1) GPIO.setup (green_pin, GPIO. OUT, initial = 1) GPIO.setup (blue_pin, GPIO. OUT, initial = 1)
Apoi, configurați PWM pentru fiecare pin, rețineți că intervalul valorii PWM este 0-100. Aici, setăm mai întâi culoarea RGB condusă la alb (100, 100, 100).
roșu = GPIO. PWM (pin roșu, 100)
verde = GPIO. PWM (verde_pin, 100) albastru = GPIO. PWM (albastru_pin, 100) red.start (100) green.start (100) albastru.start (100)
Următorul este crearea a două funcții, care pot fi folosite pentru decodarea culorii și iluminarea LED-ului RGB! Rețineți că funcția map2hundred () este să mapeze valorile de la 255 la 100, așa cum am spus mai sus, valoarea PWM ar trebui să fie 0-100.
def map2hundred (valoare): return int (valoare * 100/255)
def set_color (color_code): # Decode red_value = color_code >> 16 & 0xFF green_value = color_code >> 8 & 0xFF blue_value = color_code >> 0 & 0xFF
# Valorile hărții red_value = map2hundred (red_value) green_value = map2hundred (green_value) blue_value = map2hundred (blue_value)
# A lumina! red. ChangeDutyCycle (red_value) green. ChangeDutyCycle (green_value) albastru. ChangeDutyCycle (blue_value)
Bine făcut! Este timpul să începem programul nostru principal, așteptați, ar trebui definită o altă variabilă pentru a înregistra codul de culoare al blocului de lână înainte de programul principal:
last_data = 0 try: x, y, z = mc.player.getPos () mc.setBlocks (x, y, z, x + 1, y, z + 2, 35, 14) mc.setBlocks (x + 2, y + 1, z, x + 3, y + 1, z + 2, 35, 11) mc. set Blocuri (x + 4, y + 2, z, x + 5, y + 2, z + 2, 35, 2) mc.setBlocks (x + 6, y + 3, z, x + 7, y + 3, z + 2, 35, 5) mc.setBlocks (x + 8, y + 4, z, x + 9, y + 4, z + 2, 35, 4) mc.setBlocks (x + 10, y + 5, z, x + 11, y + 5, z + 2, 35, 10) mc.setBlocks (x + 12, y + 6, z, x + 13, y + 6, z + 2, 35, 1) mc.set Blocks (x + 14, y + 5, z, x + 15, y + 5, z + 2, 35, 10) mc.setBlocks (x + 16, y + 4, z, x + 17, y + 4, z + 2, 35, 4) mc.setBlocks (x + 18, y + 3, z, x + 19, y + 3, z + 2, 35, 5) mc.setBlocks (x + 20, y + 2, z, x + 21, y + 2, z + 2, 35, 2) mc.setBlocks (x + 22, y + 1, z, x + 23, y + 1, z + 2, 35, 11) mc.set Blocks (x + 24, y, z, x + 25, y, z + 2, 35, 14) în timp ce True: x, y, z = mc.player.getPos () # poziția jucătorului (x, y, z) block = mc.getBlockWithData (x, y-1, z) # ID bloc #print (bloc) dacă block.id == WOOL and last_data! = Block.data: if block.data == W_RED: print ("Red!") Set_color (RED) if block.data == W_ORANGE: print ("Orange!") Set_color (ORANGE) if block.data == W_ GALBEN: print ("Galben!") Set_color (GALBEN) dacă block.data == W_GREEN: print ("Verde!") Set_color (VERZ) dacă block.data == W_CYAN: print ("Cyan!") Set_color (CYAN) if block.data == W_BLUE: print ("Blue!") set_color (BLUE) if block.data == W_PURPLE: print ("Purple!") set_color (PURPLE) if block.data == W_MAGENTA: print (" Magenta! ") Set_color (MAGENTA) if block.data == W_WHITE: print (" White! ") Set_color (WHITE) last_data = block.data sleep (0.05) exceptând KeyboardInterrupt: pass GPIO.cleanup ()
Deoarece programul principal este prezentat mai sus, mai întâi să folosim câteva comenzi pentru a genera niște blocuri colorate de lână, apoi trebuie să aflăm poziția jucătorului, astfel încât să putem obține id-ul blocurilor și codul său de culoare. După obținerea informațiilor despre bloc, vom folosi declarația pentru a determina dacă blocul de sub player este un bloc de lână și dacă are codul de culoare. Dacă da, judecați ce culoare are blocul de lână și apelați funcția set_color () pentru a schimba culoarea ledului RGB la fel ca și blocul de lână.
În plus, adăugăm o instrucțiune try / except pentru a prinde excepția întreruperii utilizatorului atunci când vrem să ieșim din program pentru a șterge ieșirea pinilor GPIO.
Atașat este codul complet.
Bravo, atâtea accesorii și prea complicat nu? Nu vă faceți griji, să vedem a doua metodă de realizare a proiectului, care vă va face să vă simțiți mai flexibili și mai convenabili, care folosește CrowPi2!
Pasul 5: Rezultatul
Deschideți jocul și rulați scriptul, veți vedea rezultatul în videoclipul de mai sus
Apoi vom folosi CrowPi2 pentru a construi următorul pod interactiv Rainbow
Pasul 6: Utilizarea materialelor CrowPi2
● 1 x CrowPi2
Pasul 7: Utilizarea CrowPi2- Diagrama conexiunii
Nu este nevoie. Există mulți senzori și componente utile (mai mult de 20) pe CrowPi2, totul într-un laptop raspberry pi și o platformă de educație STEM care ne permite să facem mai multe proiecte cu ușurință și fără transpirație! În acest caz, vom folosi un modul atractiv și plin de culoare pe CrowPi2, care este un modul matricial 8x8 RGB, care ne permite să controlăm 64 de leduri RGB în același timp!
Pasul 8: Utilizarea CrowPi2- Configurare pentru SPI
Nu este nevoie. CrowPi2 vine cu o imagine încorporată cu un sistem de învățare! Totul a fost pregătit, ceea ce înseamnă că puteți programa și învăța direct. În plus, cu CrowPi2 nostru este ușor și deja integrat în bord ca o platformă STEAM gata de utilizare.
Pasul 9: Utilizarea CrowPi2- Codul
Acum, este timpul să începem programul nostru! În primul rând, importați câteva biblioteci, cum ar fi biblioteca MCPI, care este biblioteca Minecraft Pi Python care ne permite să folosim un API foarte simplu pentru a ne integra cu lumea Minecraft; bibliotecă de timp care ne permite funcția de somn să așteptăm un anumit interval înainte de a efectua o funcție; Biblioteca RPi. GPIO care ne permite să controlăm pinii GPIO Raspberry Pi.
din mcpi.minecraft import Minecraft din timp import somn import RPi. GPIO ca GPIO
În cele din urmă, vom importa o bibliotecă numită rpi_ws281x, care este biblioteca RGB Matrix, în interiorul bibliotecii, există mai multe funcții pe care le vom folosi, cum ar fi PixelStrip pentru a configura obiectul cu bandă LED și Color pentru a configura un obiect de culoare RGB pe care să se aprindă LED-urile noastre RGB
din rpi_ws281x import PixelStrip, Color
Și gata, am terminat cu importul bibliotecilor, acum este timpul să le folosim! La fel, primul lucru este să folosim biblioteca Minecraft, vrem să ne conectăm scriptul python la lumea Minecraft, putem face acest lucru invocând funcția init a bibliotecii MCPI:
mc = Minecraft.create ()
Acum, de fiecare dată când dorim să efectuăm operații pe lumea minecrat, putem folosi obiectul mc.
Următorul pas va fi să definim clasa matricei de LED-uri RGB pe care o vom folosi pentru a controla LED-urile noastre RGB, inițializăm clasa cu configurație de bază, cum ar fi numărul de led-uri, pini, luminozitate etc.
creăm o funcție numită curată care va „curăța” cu atât mai puțin cu o anumită culoare dată și, de asemenea, o funcție numită rulare care va inițializa obiectul LED RGB efectiv la prima dată când dorim să-l folosim.
clasa RGB_Matrix:
def _init _ (auto):
# Configurație bandă LED:
self. LED_COUNT = 64 # Număr de pixeli LED.
self. LED_PIN = 12 # pin GPIO conectat la pixeli (18 utilizează PWM!).
self. LED_FREQ_HZ = 800000 # frecvența semnalului LED în hertz (de obicei 800 kHz)
self. LED_DMA = 10 # canal DMA de utilizat pentru generarea semnalului (încercați 10)
self. LED_BRIGHTNESS = 10 # Setați la 0 pentru cel mai întunecat și 255 pentru cel mai luminos
self. LED_INVERT = False # Adevărat pentru a inversa semnalul
self. LED_CHANNEL = 0 # setat la „1” pentru GPIO-urile 13, 19, 41, 45 sau 53
# Definiți funcții care animă LED-urile în diferite moduri. curat def (self, strip, color):
# ștergeți toate LED-urile simultan
pentru i în intervalul (strip.numPixels ()):
strip.setPixelColor (i, culoare)
strip.show ()
def run (auto):
# Creați obiect NeoPixel cu configurația adecvată.
strip = PixelStrip (self. LED_COUNT, self. LED_PIN, self. LED_FREQ_HZ, self. LED_DMA, self. LED_INVERT, self. LED_BRIGHTNESS, self. LED_CHANNEL)
încerca:
bandă de întoarcere
cu excepția KeyboardInterrupt:
# curățați LED-ul matricei înainte de întrerupere
self.clean (strip)
După ce am terminat cu cele de mai sus, este timpul să invocăm acele clase și să creăm obiecte pe care le putem folosi în codul nostru, mai întâi să creăm un obiect matricial LED RGB pe care să îl putem folosi folosind clasa pe care am creat-o mai devreme:
matrixObject = RGB_Matrix ()
Acum, să folosim acest obiect pentru a crea un obiect activ cu bandă LED pe care îl vom folosi pentru a controla LED-urile noastre individuale din matricea RGB:
strip = matrixObject.run ()
În cele din urmă, pentru a activa această bandă, va trebui să rulăm o ultimă funcție:
strip.begin ()
API-ul Minecraft include o mulțime de blocuri, fiecare bloc Minecraft are propriul său ID. În exemplul nostru, am luat o serie de blocuri Minecraft și am încercat să ghicim ce culoare este cea mai potrivită pentru ele.
RGB înseamnă roșu, verde și albastru, așa că vom avea nevoie de 3 valori diferite, de la 0 la 255 pentru fiecare, culorile pot fi în format HEX sau RGB, folosim formatul RGB pentru exemplul nostru.
În lumea Minecraft Pi există ID-uri de blocuri normale și ID-uri de blocuri de lână speciale, lana specială se află sub numărul de identificare 35, dar cu subnumere cuprinse între multe ID-uri diferite … Vom rezolva această problemă creând 2 liste separate, una pentru blocurile normale și o listă pentru blocuri speciale de lână:
Prima listă este pentru blocurile normale, de exemplu 0 reprezintă blocul aerian, o vom seta cu culoarea 0, 0, 0 care este goală sau complet albă, când jucătorul va sări sau zbura în joc, RGB se va opri, 1 este un bloc diferit cu culoare RGB 128, 128, 128 și așa mai departe …
#Culoare curcubeu
culori_curcubeu = {
„0”: Culoare (0, 0, 0), „1”: Culoare (128, 128, 128), „2”: Culoare (0, 255, 0), „3”: Culoare (160, 82, 45), „4”: Culoare (128, 128, 128), „22”: Culoare (0, 0, 255)
}
Pentru blocurile de lână facem același lucru, dar este important să ne amintim că toate blocurile au un ID de 35, în această listă definim subtipurile blocului care este blocul de lână. Diferite subtipuri de lână au culori diferite, dar toate sunt blocuri de lână.
culori_lână = {
„6”: Culoare (255, 105, 180), „5”: Culoare (0, 255, 0), „4”: Culoare (255, 255, 0), „14”: Culoare (255, 0, 0), „2”: Culoare (255, 0, 255)
}
Când am terminat de definit programul, clasele și funcțiile noastre principale, este timpul să ne integrăm cu senzorul nostru LED CrowPi2 RGB.
Programul principal va lua parametrii pe care i-am definit mai devreme și va avea impact asupra hardware-ului.
Vom folosi LED-ul CrowPi2 RGB pentru a le aprinde pe baza pașilor pe care îi facem în interiorul Minecraft Pi pe fiecare bloc, să începem!
Primul lucru pe care îl vom face este să generăm câteva blocuri de lână cu comenzi și să creăm o buclă de timp, pentru a menține programul rulat atâta timp cât jucăm jocul.
Va trebui să obținem niște date de la jucător, mai întâi folosim comanda player.getPos () pentru a obține poziția jucătorului, apoi folosim getBlockWithData () pentru a obține blocul pe care ne aflăm în prezent (coordonata y este -1 care înseamnă sub jucător)
x, y, z = mc.player.getPos ()
mc.setBlocks (x, y, z, x + 1, y, z + 2, 35, 14)
mc.setBlocks (x + 2, y + 1, z, x + 3, y + 1, z + 2, 35, 11)
mc.setBlocks (x + 4, y + 2, z, x + 5, y + 2, z + 2, 35, 2)
mc.setBlocks (x + 6, y + 3, z, x + 7, y + 3, z + 2, 35, 5)
mc.setBlocks (x + 8, y + 4, z, x + 9, y + 4, z + 2, 35, 4)
mc.setBlocks (x + 10, y + 5, z, x + 11, y + 5, z + 2, 35, 10)
mc.setBlocks (x + 12, y + 6, z, x + 13, y + 6, z + 2, 35, 1)
mc.setBlocks (x + 14, y + 5, z, x + 15, y + 5, z + 2, 35, 10)
mc.setBlocks (x + 16, y + 4, z, x + 17, y + 4, z + 2, 35, 4)
mc.setBlocks (x + 18, y + 3, z, x + 19, y + 3, z + 2, 35, 5)
mc.setBlocks (x + 20, y + 2, z, x + 21, y + 2, z + 2, 35, 2)
mc.setBlocks (x + 22, y + 1, z, x + 23, y + 1, z + 2, 35, 11)
mc.setBlocks (x + 24, y, z, x + 25, y, z + 2, 35, 14)
în timp ce este adevărat:
x, y, z = mc.player.getPos () # poziția jucătorului (x, y, z)
blockType, data = mc.getBlockWithData (x, y-1, z) # ID bloc
print (blocTip)
Apoi vom verifica dacă blocul este bloc de lână, ID-ul blocului 35, dacă este, ne vom referi la lână_colori cu culoarea blocului pe baza ID-ului dicționarului și vom aprinde culoarea potrivită în consecință.
dacă blockType == 35:
# culori personalizate de lână
matrixObject.clean (bandă, lână_colori [str (date)])
Dacă nu este bloc de lână, vom verifica dacă blocul se află în prezent în dicționarul rainbow_colors pentru a evita excepțiile, dacă este, vom continua luând culoarea și schimbând RGB.
dacă str (blockType) în rainbow_colors:
print (rainbow_colors [str (blockType)])
matrixObject.clean (strip, rainbow_colors [str (blockType)])
somn (0,5)
Puteți oricând să încercați să adăugați mai multe blocuri la rainbow_color pentru a adăuga mai multe culori și mai multe suporturi de blocuri!
Perfect! A face proiecte folosind accesorii este complicat, dar folosind circuitul integrat CrowPi2, lucrurile devin mult mai ușoare! Mai mult decât atât, există mai mult de 20 de senzori și componente pe CrowPi2, ceea ce vă permite să vă realizați proiectele ideale și chiar proiectele AI!
Mai jos este codul complet:
Pasul 10: Utilizarea CrowPi2-the Result
Deschideți jocul și rulați scriptul, veți vedea rezultatul în videoclipul de mai sus:
Pasul 11: Utilizarea CrowPi2- Mergeți mai departe
Acum am terminat proiectul nostru colorat în jocul Minecraft cu CrowPi2. De ce nu încercați să utilizați alți senzori și componente pe CrowPi2 pentru a vă juca cu jocul, cum ar fi joystick-ul pentru a controla mișcarea jucătorului, RFID pentru a genera blocuri bazate pe diferite cărți NFC și etc. proiecte mai incredibile cu CrowPi2!
Acum, CrowPi2 este acum pe Kickstarter, vă puteți bucura și de prețul atractiv.
Atașați linkul pentru pagina Kickstarter CrowPi2
Recomandat:
Cum să construiți un sistem de udare a plantelor folosind Arduino: 7 pași
Cum să construiești un sistem de udare a plantelor folosind Arduino: În acest tutorial vom învăța cum să realizăm un sistem de udare a plantelor folosind un senzor de umiditate, pompa de apă și un LED verde intermitent dacă totul este în regulă și afișajul OLED și Visuino
Construiți un Safe folosind un Rpi: 12 pași
Construiți un seif folosind un Rpi: doriți să aflați cum să vă convertiți Raspberry pi într-un seif pe deplin funcțional? Apoi, urmați acest pas cu 12 pași care poate fi instruit pentru a afla cum. Seiful va avea o tastatură complet funcțională și un sistem de blocare, astfel încât să vă puteți păstra bunurile în siguranță
Construiți un dispozitiv de monitorizare a energiei folosind un electron de particule: 5 pași (cu imagini)
Construiți un dispozitiv de monitorizare a energiei folosind un electron de particule: în majoritatea întreprinderilor, considerăm că energia este o cheltuială a afacerii. Factura apare în e-mailul sau e-mailurile noastre și o plătim înainte de data anulării. Odată cu apariția IoT și a dispozitivelor inteligente, Energy începe să ocupe un nou loc în bala unei afaceri
Construiți un higrometru acasă folosind Raspberry Pi și SI7021: 6 pași
Construiți un higrometru acasă folosind Raspberry Pi și SI7021: Este umed astăzi? Se simte cam umed pentru mine. Uneori pentru noi, umiditatea ridicată se dovedește a fi cu adevărat incomodă, dar și nesănătoasă. Pentru gospodari, poate provoca și daune potențiale. Pentru o casă, umiditatea ridicată distruge pardoseala și mobilierul din lemn
Construiți un radio amator APRS RX numai IGate Folosind un Raspberry Pi și un dongle RTL-SDR în mai puțin de jumătate de oră: 5 pași
Construiți un radio amator APRS RX numai IGate Folosind un Raspberry Pi și un dongle RTL-SDR în mai puțin de o jumătate de oră: Rețineți că acest lucru este acum destul de vechi, astfel încât unele părți sunt incorecte și nu sunt actualizate. Fișierele pe care trebuie să le editați s-au schimbat. Am actualizat linkul pentru a vă oferi cea mai recentă versiune a imaginii (vă rugăm să utilizați 7-zip pentru a o decomprima), dar pentru instrumente complete