Kazalo:
- Korak: Stvari, ki jih boste potrebovali
- 2. korak: Povzetek
- 3. korak: Osnovna ideja
- 4. korak: Walabot
- 5. korak: Začnite
- 6. korak: Nastavitev Raspberry Pi - 1
- 7. korak: Nastavitev Raspberry Pi - 2
- 8. korak: Nastavitev Raspberry Pi - 3
- 9. korak: Nastavitev Raspberry Pi - 4
- 10. korak: Python
- 11. korak: Za Walabot
- 12. korak: Za servo vmesnik
- 13. korak: Za LCD
- 14. korak: Blynk
- Korak 15: Konfiguriranje aplikacije Blynk
- Korak 16: To kodo QR lahko uporabite z aplikacijo Blynk za kloniranje mojega projekta, da prihranite čas
- Korak 17: Zagon programa Blynk z Raspberry Pi in uporaba protokola Blynk HTTPS za Python
- 18. korak: Samodejni zagon skripta
- 19. korak: Strojna oprema
- 20. korak: Oblikovanje ohišja
- 21. korak: Črevesni streli
- Korak: Zadnji posnetki montaže
- 23. korak: pritrdite Walabot na stojalo
- Korak: Strojne datoteke STL za 3D tiskanje
- Korak 25: Sheme za ožičenje stvari
- Korak 26: Koda
- Korak 27: Uporabite skladišča Github
- 28. korak: Zaključek
Video: Walabot FX - Upravljanje učinka kitare: 28 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:09
Nadzirajte svoj najljubši učinek kitare z uporabo le čudovitih kitarskih pozi!
Korak: Stvari, ki jih boste potrebovali
Komponente strojne opreme
Walabot - Walabot
Raspberry Pi - Raspberry Pi 3 Model B
Sunfounder LCD1602
SunFounder PCA9685 16-kanalni 12-bitni PWM servo gonilnik za Arduino in Raspberry Pi
Servo (generično) Brez povezave
9V sponka za baterijo
Nosilec baterije 4xAA
AA baterije
Mostične žice (splošne)
Nožno stikalo za zaklepanje DPDT
Korg SDD3000-PDL
OS programske opreme, aplikacije in spletne storitve
Autodesk Fusion360 -
Blynk -
Orodja itd
3D tiskalnik
Spajkalnik
2. korak: Povzetek
Kako bi bilo nadzorovati glasbeno izražanje samo s položajem svoje kitare v 3D prostoru? No, naredimo nekaj prototipa in ugotovimo!
3. korak: Osnovna ideja
Želel sem imeti možnost nadzorovanja parametra 3 učinka v realnem času, želel sem to narediti s tem, kako sem postavil svojo kitaro. Torej je bila ena stvar jasna, potreboval bom nekaj stvari.
- Senzor, ki lahko vidi 3D prostor
- Servomotorji za obračanje gumbov
- LCD zaslon
- Servo gonilnik I2C
- Malina Pi
- Naučiti se Pythona
4. korak: Walabot
Želite videti skozi stene? Občutljivi predmeti v 3D prostoru? Ali čutite, če dihate z druge strani sobe? No, imaš srečo!
Walabot je povsem nov način zaznavanja prostora okoli vas z radarjem z nizko močjo.
To bi bilo ključno za ta projekt, lahko bi vzel karteasanske (X-Y-Z) koordinate predmetov v 3D prostoru in jih preslikal na servo položaje, ki v realnem času spremenijo zvok učinka kitare, ne da bi se morali dotakniti pedala.
Zmaga.
Več informacij o Walabotu najdete tukaj
5. korak: Začnite
Najprej boste potrebovali računalnik za pogon Walabota, za ta projekt uporabljam Raspberry Pi 3 (tukaj omenjen na RPi) zaradi vgrajenega WiFi in splošnega dodatnega oomph
Kupil sem 16 GB kartico SD z vnaprej nameščenim NOOBS -om, da so stvari lepe in preproste, in se odločil, da namestim Raspian kot svoj izbrani OS Linux
(če niste seznanjeni s tem, kako namestiti Raspian, si vzemite trenutek, da si to malo preberete)
V redu, ko na svojem RPi zaženete Raspian, morate narediti nekaj korakov za konfiguracijo, da pripravite stvari za naš projekt
6. korak: Nastavitev Raspberry Pi - 1
Najprej se prepričajte, da uporabljate najnovejšo različico jedra in preverite, ali so na voljo posodobitve, tako da odprete ukazno lupino in vnesete
sudo apt-get posodobitev
sudo apt-get dist-upgrade
(dodano je sudo, da zagotovite, da imate administrativne privilegije, npr. stvari bodo delovale)
To lahko traja nekaj časa, zato pojdite na skodelico čaja.
7. korak: Nastavitev Raspberry Pi - 2
Namestiti morate Walabot SDK za RPi. V spletnem brskalniku RPi pojdite na https://www.walabot.com/gettingstarted in prenesite namestitveni paket Raspberry Pi.
Iz ukazne lupine:
cd prenosi
sudo dpkg -I walabotSDK_RasbPi.deb
8. korak: Nastavitev Raspberry Pi - 3
Za začetek konfiguracije RPi za uporabo vodila i2c moramo iz ukazne lupine:
sudo apt-get install python-smbus
sudo apt-get install i2c-tools
ko to storite, morate v datoteko modulov dodati naslednje
Iz ukazne lupine:
sudo nano /etc /moduli
ta dva niza dodajte v ločene vrstice:
i2c-dev
i2c-bcm2708
9. korak: Nastavitev Raspberry Pi - 4
Walabot črpa precej aktualnosti, za nadzor stvari pa bomo uporabili tudi GPIO, zato jih moramo nastaviti
Iz ukazne lupine:
sudo nano /boot/config.txt
na konec datoteke dodajte naslednje vrstice:
safe_mode_gpio = 4
max_usb_current = 1
RPi je odlično orodje za izdelovalce, vendar je omejen v toku, ki ga lahko pošlje Walabotu. Zato dodajamo največji tok 1Amp namesto bolj standardnih 500mA
10. korak: Python
Zakaj Python? No, saj je zelo enostavno kodirati, hitro zagnati in na voljo je veliko dobrih primerov pythona! nikoli prej ga nisem uporabljal in kmalu je začel delovati. Zdaj je RPi konfiguriran za tisto, kar želimo, naslednji korak je konfiguriranje Pythona za dostop do vmesnikov Walabot API, LCD Servo
11. korak: Za Walabot
Iz ukazne lupine
Sudo pip namestite »/usr/share/walabot/python/WalabotAPI-1.0.21.zip«
12. korak: Za servo vmesnik
Iz ukazne lupine
sudo apt-get install git build-bistven python-dev
cd ~
git clone
cd Adafruit_Python_PCA9685
sudo python setup.py install
Zakaj moramo uporabiti servo gonilnik? No, za RPi nekaj razlogov.
1. Tok, ki ga porabi servomotor, je lahko zelo visok in to število se poveča, več ko imate servomotorjev (seveda). Če vozite servo directky iz RPi -ja, tvegate, da bo razstrelil napajalnik
2. Časi PWM (Pulse Width Modulation), ki nadzorujejo položaj servomotorjev, so zelo pomembni. Ker RPi ne uporablja operacijskega sistema v realnem času (lahko pride do prekinitev in podobno), časovni razporedi niso natančni in se lahko servomotorji živčno trzajo. Namenski gonilnik omogoča natančen nadzor, hkrati pa omogoča dodajanje do 16 servomotorjev, zato je to odlično za razširitev.
13. korak: Za LCD
odprite spletni brskalnik RPi
www.sunfounder.com/learn/category/sensor-k…
Prenesi
github.com/daveyclk/SunFounder_SensorKit_…
Iz ukazne lupine:
sudo mkdir/usr/share/sunfounder
Z grafičnim raziskovalcem kopirajte mapo python iz datoteke zip v novo mapo Sunfounder
Zaslon LCD se uporabniku prikaže, kaj točno se dogaja. Prikaz procesa konfiguracije do vrednosti x, y in z, preslikanih na vsak servo
14. korak: Blynk
Blynk je briljantna storitev interneta stvari, ki vam omogoča ustvarjanje aplikacije po meri za nadzor vaših stvari. Zdelo se mi je kot popolna rešitev, da mi omogoči daljinski upravljalnik walabota, da resnično pokličem v nastavitvah …
En problem. Blynk trenutno ni podprt na platformi Python, bugger. Ampak ne bojte se! uspelo mi je najti lepo delo, ki omogoča daljinsko upravljanje in daljinski vnos parametrov! malo je hecno
prvi korak je prenos aplikacije Blynk iz vaše najljubše trgovine z aplikacijami
Drugič, prijavite se za račun
Ko to storite, odprite aplikacijo in začnite nov projekt, za strojno opremo izberite Raspberry Pi 3.
Aplikacija vam bo dodelila žeton za dostop (to boste potrebovali za vnos kode)
Ko to storite. aplikacijo boste morali nastaviti, kot je prikazano na slikah. Tako se bo povezal z walabotom.
Korak 15: Konfiguriranje aplikacije Blynk
Korak 16: To kodo QR lahko uporabite z aplikacijo Blynk za kloniranje mojega projekta, da prihranite čas
V redu Zdaj, ko je aplikacija vse nastavljena, lahko konfiguriramo Python in RPi, da se z njimi pogovarjajo prek interneta. Magija
Korak 17: Zagon programa Blynk z Raspberry Pi in uporaba protokola Blynk HTTPS za Python
Najprej morate namestiti ovoj Blynk HTTPS za Python
Iz ukazne lupine:
klon sudo git
sudo pip namestite blynkapi
Drugič, na RPi morate namestiti storitev Blynk
Iz ukazne lupine:
git clone
cd blynk-library/linux
vse očisti
za zagon storitve blynk
sudo./blynk --token = YourAuthToken
Če želite, da se storitev Blynk zažene ob zagonu, morate spremeniti /etc/rc.local
z početjem
sudo nano /etc/rc.local
to dodaj na koncu
./blynk-library/linux/blynk --token = moj žeton &
(v sklepni odsek za referenco sem vključil kopijo svoje datoteke /etc/rc.local)
Če želite preveriti, ali deluje, preprosto vnesite
sudo /etc/rc.local start
Storitev Blynk bi se morala zdaj zagnati
18. korak: Samodejni zagon skripta
Zdaj, ko je vse to nastavljeno in konfigurirano ter imamo pripravljeno kodo python. stvari lahko nastavimo na samodejno izvajanje, tako da lahko umaknemo tipkovnico in monitorje
Nekaj stvari je treba narediti
Ustvarite novo datoteko skripta za izvajanje programa Python
sudo nano guitareffect.sh
dodajte te vrstice
#!/bin/sh
python /home/pi/GuitarEffectCLI.py
shranite ga
Nato moramo skriptu dati dovoljenje za izvajanje s tipkanjem
Sudo chmod +x /home/pi/guitareffect.sh
In nazadnje moramo ta skript dodati v datoteko /etc/rc.local, s katero smo se prej poigrali.
Sudo nano /etc/rc.local
Dodaj
/home/pi/guitareffect.sh &
obvezno vključite "&", ki omogoča izvajanje skripta Python v ozadju
Prav! To je vse konfiguracija in programska oprema razvrščena, naslednjič je čas, da priključite strojno opremo
19. korak: Strojna oprema
Prvi prototip Breadboard
20. korak: Oblikovanje ohišja
Ohišje je bilo oblikovano in izdelano v čudovitem Fusion360
21. korak: Črevesni streli
Korak: Zadnji posnetki montaže
23. korak: pritrdite Walabot na stojalo
Za pritrditev uporabite samolepilni kovinski disk, ki je priložen walabotu
Korak: Strojne datoteke STL za 3D tiskanje
Korak 25: Sheme za ožičenje stvari
Korak 26: Koda
Za svoj projekt uporabite priloženi skript Python
od _future_ uvoz print_functionfrom uvozne platforme sys iz uvoznega sistema os iz uvoznega sistema blynkapi uvoz Blynk uvoz WalabotAPI uvozni čas uvoz RPi. GPIO kot GPIO
#nastavite GPIO z oštevilčenjem plošč
GPIO.setmode (GPIO. BOARD) GPIO.setup (18, GPIO. IN, pull_up_down = GPIO. PUD_UP)
#blynk avten žeton
auth_token = "your_auth_token_ tukaj"
# Uvozite modul PCA9685 za servo krmiljenje.
uvoz Adafruit_PCA9685
#import LCD modula z lokacije
from imp import load_source LCD1602 = load_source ('LCD1602', '/usr/share/sunfounder/Python/LCD1602.py')
# Inicializirajte PCA9685 s privzetim naslovom (0x40).
pwm = Adafruit_PCA9685. PCA9685 ()
# blynk predmetov
privzete vrednosti = Blynk (auth_token, pin = "V9") start_button = Blynk (auth_token, pin = "V3") Rmax = Blynk (auth_token, pin = "V0") Rmin = Blynk (auth_token, pin = "V1") Rres = Blynk (auth_token, pin = "V2")
ThetaMax = Blynk (auth_token, pin = "V4")
ThetaRes = Blynk (auth_token, pin = "V5")
PhiMax = Blynk (auth_token, pin = "V6")
PhiRes = Blynk (auth_token, pin = "V7")
Prag = Blynk (auth_token, pin = "V8")
ServoMin = Blynk (auth_token, pin = "V10")
ServoMax = Blynk (auth_token, pin = "V11")
def LCDsetup ():
LCD1602.init (0x27, 1) # init (podrejeni naslov, osvetlitev ozadja)
def numMap (x, in_min, in_max, out_min, out_max): "" "se uporablja za preslikavo odčitkov walabota v položaj servo" "" return int ((x- in_min) * (out_max - out_min) / (in_max - in_min) + out_min)
# uporabite za zaokroževanje surovih podatkov na dodeljeno vrednost
def myRound (x, base = 2): return int (base * round (float (x)/base))
#izvleče številko iz vrnjenega niza nizov
def numberExtract (val): val = str (val) povratni int (filter (str.isdigit, val))
# Nastavite frekvenco na 60Hz, dobro za servomotorje.
pwm.set_pwm_freq (60)
# Konfigurirajte privzete vrednosti dolžine in dolžine servo impulzov
SERVO_MIN = 175 # Najmanjša dolžina impulza od 4096 SERVO_MAX = 575 # Največja dolžina impulza od 4096
# privzete vrednosti walabot
R_MAX = 60 R_MIN = 20 R_RES = 5
THETA_MAX = 20
THETA_RES = 5
PHI_MAX = 20
PHI_RES = 5
PRAG = 1
# spremenljivka za preklop blynk
on = "[u'1 ']"
razred Walabot:
def _init _ (samo):
self.wlbt = WalabotAPI self.wlbt. Init () self.wlbt. SetSettingsFolder () self.isConnected = False self.isTargets = False
def blynkConfig (self):
load_defaults = defaults.get_val () če je str (load_defaults) == vklopljeno: SERVO_MAX = ServoMax.get_val () SERVO_MAX = numberExtract (SERVO_MAX) print ("Servo Max =", SERVO_MAX)
SERVO_MIN = ServoMin.get_val ()
SERVO_MIN = številka Extract (SERVO_MIN) print ("Servo MIN =", SERVO_MIN) R_MAX = Rmax.get_val () R_MAX = numberExtract (R_MAX) print ("R max =", R_MAX)
R_MIN = Rmin.get_val ()
R_MIN = numberExtract (R_MIN) print ("R Min =", R_MIN)
R_RES = Rres.get_val ()
R_RES = numberExtract (R_RES) print ("R Res =", R_RES)
THETA_MAX = ThetaMax.get_val ()
THETA_MAX = numberExtract (THETA_MAX) print ("Theta Max =", THETA_MAX) THETA_RES = ThetaRes.get_val () THETA_RES = numberExtract (THETA_RES) print ("Theta Res =", THETA_RES)
PHI_MAX = PhiMax.get_val ()
PHI_MAX = numberExtract (PHI_MAX) print ("Phi Max =", PHI_MAX) PHI_RES = PhiRes.get_val () PHI_RES = numberExtract (PHI_RES) print ("Phi Res =", PHI_RES)
THRESHOLD = Threshold.get_val ()
THRESHOLD = numberExtract (THRESHOLD) print ("Threshold =", THRESHOLD)
else: # če nič od aplikacije blynk, privzete nastavitve obremenitve SERVO_MIN = 175 # Najmanjša dolžina impulza od 4096 SERVO_MAX = 575 # Največja dolžina impulza od 4096
# privzete vrednosti walabot
R_MAX = 60 R_MIN = 20 R_RES = 5
THETA_MAX = 20
THETA_RES = 5
PHI_MAX = 20
PHI_RES = 5
PRAG = 1
def connect (self): try: self.wlbt. ConnectAny () self.isConnected = Resnično self.wlbt. SetProfile (self.wlbt. PROF_SENSOR) #self.wlbt. SetDynamicImageFilter (self.wlbt. FILTER_TYPE_micge) (self.wlbt. FILTER_TYPE_NONE) #self.wlbt. SetDynamicImageFilter (self.wlbt. FILTER_TYPE_DERIVATIVE) self.wlbt. SetArenaTheta (-THETA_MAX, THETA_MAX, THETA_RES) SetArenaR (R_MIN, R_MAX, R_RES) self.wlbt. SetThreshold (THRESHOLD) razen self.wlbt. WalabotError as err: if err.code! = 19: # 'WALABOT_INSTRUMENT_NOT_FOUND' dvig napake
def start (samostojno):
self.wlbt. Start ()
def umerjanje (samo):
self.wlbt. StartCalibration ()
def get_targets (self):
self.wlbt. Trigger () vrne self.wlbt. GetSensorTargets ()
def stop (samo):
self.wlbt. Stop ()
def prekinitev povezave (samo):
self.wlbt. Disconnect ()
def main ():
flag = True check = "" LCDsetup () medtem ko zastava: LCD1602.write (0, 0, 'Guitar') LCD1602.write (0, 1, 'Effect Control') time.sleep (2) LCD1602.write (0, 0, 'Pritisnite Start to') LCD1602.write (0, 1, 'start') time.sleep (2) if (str (check) == on): flag = False else: check = start_button.get_val () # preverite, ali je gumb za zagon blynk pritisnjen, če (GPIO.input (18) == 0): #check zastavica stopalke = False
LCD1602.write (0, 0, "OK! Naredimo to")
LCD1602.write (0, 1, '') wlbt = Walabot () wlbt.blynkConfig () wlbt.connect () LCD1602.clear (), če ni wlbt.isConnected: LCD1602.write (0, 0, 'Not Connected') drugo: LCD1602.write (0, 0, 'Connected') time.sleep (2) wlbt.start () wlbt.calibrate () LCD1602.write (0, 0, 'Calibrating…..') time.sleep (3) LCD1602.write (0, 0, 'Zagon Walabota')
appcheck = start_button.app_status () zastava = True # zastavica za ponastavitev za glavni prog
medtem ko zastavica: # se uporablja za stanje v pripravljenosti (učinkovito)
if (appcheck == True): if (str (check)! = on): if (GPIO.input (18)! = 0): #check nožna stikalna zastavica = False else: check = start_button.get_val () #check for gumb za zagon pritisnite appcheck = start_button.app_status ()
drugače:
if (GPIO.input (18)! = 0): #preverite zastavico stopalke = False
xval = 0
yval = 0 zval = 0 povprečje = 2 delayTime = 0
cilji = wlbt.get_targets ()
če je len (cilji)> 0:
za j v razponu (povprečje):
cilji = wlbt.get_targets ()
če je len (cilji)> 0: natisni (len (cilji)) cilji = cilji [0]
print (str (target.xPosCm))
xval += int (cilji.xPosCm) yval += int (cilji.yPosCm) zval += int (cilji.zPosCm) time.sleep (delayTime) drugo: print ("brez ciljev") xval = xval/povprečje
xval = numMap (xval, -60, 60, SERVO_MIN, SERVO_MAX)
xval = myRound (xval), če je xval SERVO_MAX: xval = SERVO_MAX LCD1602.write (0, 0, 'x =' + str (xval) + '') pwm.set_pwm (0, 0, xval)
yval = yval/povprečje
yval = numMap (yval, -60, 60, SERVO_MIN, SERVO_MAX)
yval = myRound (yval), če yval SERVO_MAX: yval = SERVO_MAX LCD1602.write (0, 1, 'y =' + str (yval)) pwm.set_pwm (1, 0, yval)
zval = zval/povprečje
zval = numMap (zval, R_MIN, R_MAX, SERVO_MIN, SERVO_MAX)
zval = myRound (zval), če je zval SERVO_MAX: zval = SERVO_MAX LCD1602.write (8, 1, 'z =' + str (zval)) pwm.set_pwm (2, 0, zval)
drugače:
print ("brez ciljev") LCD1602.write (0, 0, "Zaustavitev") LCD1602.write (0, 1, 'The Walabot') time.sleep (3) wlbt.stop () wlbt.disconnect ()
če _name_ == '_main_':
medtem ko True: main ()
za guitareffect.sh
#!/bin/sh
cd /home /pi
sudo python GuitarEffectCLI.py
Kopija lokalne datoteke RC za referenco
#!/bin/sh -e # # rc.local # # Ta skript se izvede na koncu vsake ravni uporabe za več uporabnikov. # Prepričajte se, da bo skript "izstopil 0" ob uspehu ali kateri koli drugi # vrednosti ob napaki. # # Če želite omogočiti ali onemogočiti ta skript, samo spremenite # bitove izvajanja. # # Ta skript privzeto ne naredi nič.
# Natisnite naslov IP
_IP = $ (ime gostitelja -I) || res, če ["$ _IP"]; nato printf "Moj naslov IP je %s / n" "$ _IP" fi
./blynk-library/linux/blynk --token = "vaš žeton gre sem" &
spanje 10 sudo /home/pi/guitareffect.sh & izhod 0
Korak 27: Uporabite skladišča Github
To uporabite za LCD zaslon Sunfounder
github.com/daveyclk/SunFounder_SensorKit_f…
To uporabite za servo gonilnik
github.com/daveyclk/Adafruit_Python_PCA968…
Uporabite to za Blynk Python HTTPS Wrapper
github.com/daveyclk/blynkapi
28. korak: Zaključek
No, to je bila strma krivulja učenja, vendar je bilo tako vredno.
Moje jemanje je
- Moral sem se naučiti Python..izkazalo se je, da je as
- Vmesnik Python na Raspberry Pi s storitvijo Blynk IoT. To ni uradno podprto, zato obstajajo nekatere omejitve njegovih funkcij. Še vedno deluje odlično!
- Izkazalo se je, da je Walabot odličen za glasbeno izražanje. Uporabil sem ga na Korgu SDD3000, vendar lahko uporabite kateri koli učinek, ki vam je všeč
Odpravite se sami. To ni omejeno na učinke kitare, lahko se uporablja s katerim koli instrumentom s katerim koli učinkom.
Podprvak na tekmovanju Raspberry Pi 2017
Priporočena:
Raspberry Pi A1332 Precision Hall - Senzor kota učinka Java Vadnica: 4 koraki
Raspberry Pi A1332 Precision Hall - Senzor kota učinka Java Vadnica: A1332 je 360 ° brezkontaktno programabilno tipalo magnetnega kota z visoko ločljivostjo. Zasnovan je za digitalne sisteme z vmesnikom I2C. Zgrajen je na tehnologiji CVH (Circular Vertical Hall) in programirljivem mikroprocesorskem signalu
Senzor učinka Arduino Hall s prekinitvami: 4 koraki
Arduino Hall Effect Sensor z prekinitvami: Pozdravljeni, danes vam bom pokazal, kako lahko senzor Hall efekta povežete z Arduinom in ga uporabite s prekinitvijo. Orodja in materiali, uporabljeni v videoposnetku (partnerske povezave): Arduino Uno: http : //s.click.aliexpress.com/e/biNyW0zK Senzorji Hallovih učinkov: h
Preiskava učinka resonančne strukture s papirnatim satjem: 6 korakov
Preiskava učinka resonančne strukture s papirnatim satjem: Mislil sem, da bi tisti, ki se radi ukvarjajo z alternativnimi energijami, to morda poskusili. Temelji na odkritju Viktorja Grebennkova. Zgodbo lahko najdemo na številnih mestih, toda to na keelynetu sem našel http://www.keelynet.com/gr
Hall -ov senzor učinka na Arduinu z vrtenjem vrtenja: 3 koraki (s slikami)
Senzor Hallovih učinkov na Arduinu z uporabo Fidget Spinnerja: Povzetek V tem projektu razlagam, kako deluje senzor Hall efekta, ki meri hitrost vrtenja fidgeta z arduino ploščo. deluje: -A Hall-ov senzor je pretvornik, ki spreminja svojo izhodno napetost kot odziv na magnetno polje. Hall učinek
Preoblikovanje kamere v "vojaško nočno videnje", dodajanje učinka nočne vizije ali ustvarjanje načina "NightVision" na kateri koli kameri !!!: 3 koraki
Preoblikovanje vaše kamere v "vojaško nočno vizijo", dodajanje učinka nočne vizije ali ustvarjanje načina "NightVision" na kateri koli kameri !!!: *** To je bilo že vpleteno v DIGITALNO DANE FOTOGRAFIJO NATEČAJ, Glasujte zame ** *Če potrebujete pomoč, nam pošljite e -pošto: [email protected] Govorim angleško, francosko, japonsko, špansko in poznam še druge jezike, če