Tartalomjegyzék:
- 1. lépés: A vezérlőpult prototípusának létrehozása
- 2. lépés: Nyomógombok
- 3. lépés: A potenciométer
- 4. lépés: A forgó kódoló
- 5. lépés: Összerakni
- 6. lépés: Kód + bemutató
Videó: Mini vezérlőpad a Photoshophoz (Arduino): 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Itt megmutatom, hogyan készíts egy kis eszközt a Photoshop gyorsabb munkájához!
A kifejezetten PS -hez készült billentyűzetek nem újak, de nem pontosan azt kínálják, amire szükségem van. Festőként a Photoshopban töltött időm nagy részét az ecset beállításának beállításával töltöm, és úgy gondolom, hogy az egyszerű gyorsgombok nem adják meg az irányítást a munkafolyamatomhoz. Ezért úgy döntöttem, hogy saját billentyűzetet készítek, amely kicsi, nem feltűnő, és tárcsákkal rendelkezik, hogy megadja nekem azt az analóg interakciót, amelyre mindig is vágytam.
Működése egyszerű: annak érdekében, hogy a mikrovezérlő kölcsönhatásba lépjen a Photoshoppal, kihasználjuk az alapértelmezett parancsikonokat. Egy olyan táblánál, amelyet a számítógép billentyűzetként/egérként tud olvasni, mindössze annyit kell tennünk, hogy néhány egyszerű kódsor segítségével utasítjuk a számítógépet, hogy olvassa el az egyes bemeneteket a gombnyomások kombinációjaként. Most a visszavonás gomb csak egy gombnyomásra van!
Lássunk neki! Ehhez a projekthez szüksége lesz:
- 1 Sparkfun ProMicro (vagy egy Arduino Leonardo, nem ajánlott)
- 1 db mikro-USB adapter
- 6 nyomógomb (vagy tetszőleges szám)
- 10 k ohmos ellenállások (1 gombonként)
- 1 potenciométer
- 1 db forgó jeladó
- vezetékek, kenyérlap, perfboard, forrasztás, fejrészek stb.
Ehhez a projekthez használhat Arduino Leonardót, de a ProMicro egy sokkal olcsóbb alternatíva, amely ugyanazt az atmega32u4 chipet használja, több tűvel rendelkezik, és sokkal kisebb formában érkezik, így tökéletes a billentyűzethez.
A ProMicro programozásához az Arduino IDE -ben először be kell állítania néhány dolgot. Erről bővebben a SparkFun útmutatójában olvashat:
Ha számítógépe nehezen találja meg az eszközt, győződjön meg arról, hogy a használt mikro-USB nem csak tápellátású, és támogatja az adatátvitelt.
Ez az első Arduino projektem, és alkalmas kezdőknek.
1. lépés: A vezérlőpult prototípusának létrehozása
Javaslom, hogy a forrasztás megkezdése előtt tesztelje programját kenyérsütőn.
Itt láthatod a vázlatomat.
Az 1 -es és 2 -es gombok a Visszavonás és az Újra -visszaállítások, a 3 -tól 5 -ig a Brush, Eraser és Lasso eszközök, a 6 -os gomb a gyors mentés gomb. A kódoló és a potméter szabályozza a méretet és az átlátszatlanságot.
Vegye figyelembe, hogy balkezes vagyok, és az elrendezést a számomra legkényelmesebb módon terveztem. Tekintse meg azt a pillanatot, amikor a kenyértáblát használja, hogy átgondolja, milyen funkciókat szeretne a vezérlővel ellátni, mi a legjobb az Ön számára, és végül szükség lesz -e további alkatrészekre.
2. lépés: Nyomógombok
A gombok végrehajtása a legegyszerűbb. Nézzük a kódot:
#befoglalni
const int gombok = {2, 3, 4, 5, 6, 7, 8, 9}; // az összes gombcsap tömbje char ctrlKey = KEY_LEFT_GUI; // Windows és Linux esetén használja ezt az opciót: // char ctrlKey = KEY_LEFT_CTRL; char shiftKey = KEY_LEFT_SHIFT; char altKey = KEY_LEFT_ALT; void setup () {// tegye ide a beállítási kódot, hogy egyszer lefusson: Serial.begin (9600); Keyboard.begin (); // Gombok - hurkolja végig a tömböt, és ellenőrizze, hogy nem nyomta -e meg (int i = gombok [0]; i <(sizeof (gombok)/sizeof (gombok [0]))+gombok [0]; ++ i) { pinMode (i, INPUT); }} boolean readButton (int pin) {// ellenőrzi és kikapcsolja a gombokat, ha (digitalRead (pin) == HIGH) {delay (10); if (digitalRead (pin) == HIGH) {return true; }} return false; } void doAction (int pin) {// feladatok végrehajtása kapcsoló (pin) {// ---- Parancsikonok ---- // 4. eset visszavonása: Keyboard.press (ctrlKey); Keyboard.print ('z'); Serial.print ("bemenet"); Serial.println (pin); késleltetés (200); Keyboard.releaseAll (); szünet; // 5. eset visszaállítása: Keyboard.press (ctrlKey); Keyboard.print ('y'); Serial.print ("bemenet"); Serial.println (pin); késleltetés (200); Keyboard.releaseAll (); szünet; // 6. kefe tok: Keyboard.press ('b'); Serial.print ("bemenet"); Serial.println (pin); késleltetés (200); Keyboard.releaseAll (); szünet; // Radír 7. eset: Keyboard.press ('e'); Serial.print ("bemenet"); Serial.println (pin); késleltetés (200); Keyboard.releaseAll (); szünet; // Lasso 8. eset: Keyboard.press ('l'); Serial.print ("bemenet"); Serial.println (pin); késleltetés (200); Keyboard.releaseAll (); szünet; // 9. eset mentése: Keyboard.press (ctrlKey); Keyboard.print ('s'); Serial.print ("bemenet"); Serial.println (pin); késleltetés (200); Keyboard.releaseAll (); szünet; alapértelmezett: Keyboard.releaseAll (); szünet; }}
void loop () {
// tegye ide a fő kódot az ismételt futtatáshoz:
for (int i = gombok [0]; i <sizeof (gombok)/sizeof (gombok [0])+gombok [0]; ++ i) {if (readButton (i)) {doAction (i); }} // Módosítók visszaállítása Keyboard.releaseAll ();
}
Elég egyszerűek. Ahhoz, hogy a számítógép felismerje a gombnyomást gombnyomásként, egyszerűen a Keyboard.press () funkciót használjuk. Tehát a Visszavonás parancsikon (ctrl+z) aktiválásához egyszerűen használjuk a Keyboard.press (ctrlKey), majd a Keyboard.press ('z') billentyűt. Ne feledje, hogy ezekhez a funkciókhoz hozzá kell adnia a Keyboard.h -t, és inicializálja a billentyűzetet.
A bemeneti csapok egy tömbben vannak tárolva, így könnyedén át lehet őket hurkolni a loop () függvényben. Egy egyszerű módja annak, hogy elérje és tömb hossza c ++ - ban, ha elosztja a tömb teljes méretét a tömb elemmel, plusz egy elemmel. Az összes gombot végiggörgetve ellenőrizzük, hogy megnyomtuk -e.
A dolgok rendszerezése érdekében a gomb minden műveletét a függvény kapcsoló utasításában tároltam, amely a PIN -számot veszi argumentumként.
Ha azt szeretné, hogy a gombjai különböző dolgokat tegyenek, vagy további gombokat szeretne hozzáadni, egyszerűen szerkessze a doAction funkció tartalmát!
A fizikai gombok működése miatt le kell kapcsolnunk őket. Ez megakadályozza, hogy a program beolvassa a nyomógombok rugózása által okozott nem kívánt megnyomásokat. Ennek számos módja van, de hozzáadtam egy egyszerű readButton () függvényt, amely gondoskodik erről.
Csak kösse be a gombjait néhány 10 ezer ellenállással, és aranynak kell lennie!
3. lépés: A potenciométer
Most a potméterre:
#befoglalni
int dial0 = 0; void setup () {// tegye ide a beállítási kódot, hogy egyszer lefusson: Serial.begin (9600); Keyboard.begin (); // Tárcsázik dial0 = analogRead (0); dial0 = térkép (tárcsázás0, 0, 1023, 1, 20); } void dialAction (int dial, int newVal, int lastVal) {switch (dial) {// Opacity case 0: delay (200); if (newVal! = lastVal) {int decim = ((newVal*5)/10); int egység = ((newVal *5)% 10); if (newVal == 20) {Keyboard.write (48+0); Keyboard.write (48+0); Serial.println ("max tárcsa 1"); } else {decim = kényszer (decim, 0, 9); egység = kényszer (egység, 0, 9); Serial.println (newVal*2); Keyboard.write (48+decim); Keyboard.write (48+egység); }} dial0 = newVal; szünet; alapértelmezett: break; }} // ------------------ FŐHOZAT ------------------------- érvénytelen loop () {// tegye ide a fő kódot az ismételt futtatáshoz: // Opacity // delay (500); int val0 = analógRead (0); val0 = térkép (val0, 0, 1023, 1, 20); //Serial.print ("dial0:"); //Serial.println(val0); if (val0! = tárcsáz0) {// Csinálj valamit dialAction (0, val0, dial0); }}
A fazékmérő ugyanezt a logikát követi, de kicsit trükkösebb.
Először nézzük meg, hogyan szeretnénk, hogy működjön: A Photoshop néhány praktikus gyorsbillentyűt tartalmaz az ecset átlátszatlanságának megváltoztatására. Ha bármelyik számgombot megnyomja, az átlátszatlanság megegyezik ezzel a számmal*10. De ha két számot megnyom, a második számot egységként fogja olvasni, így pontosabb irányítást biztosít.
Tehát azt akarjuk, hogy a mérőóránk százalékos arányban feltérképezze a forgását, de nem akarjuk állandóan csinálni, mert ez butaság lenne. Csak akkor akarjuk megváltoztatni az átlátszatlanságot, amikor a potmétert forgatjuk. Tehát tárolunk egy további értéket, amelyet összehasonlítunk az analogRead () értékkel, és csak akkor futtatjuk az akciószkriptet, ha eltérés van.
Egy másik kérdés, amibe bele fogunk ütni, az, hogy miként kapcsoljuk be az analogRead visszatérését int bemenetként. Mivel nincs egyszerű módja annak, hogy az int -t karakterlánccá alakítsuk, magát az int -et kell használnunk. Ha azonban egyszerűen csak a Keyboard.press (int) -t írja, akkor észre fogja venni, hogy a bemenet nem az, amit akart, és helyette egy másik gombot fog megnyomni.
Ennek oka az, hogy a billentyűzet billentyűi egész számként vannak kódolva, mindegyik billentyűnek saját indexe van. A num gomb helyes használatához meg kell keresnie az indexüket az ASCII táblázatban:
Amint láthatja, a számgombok a 48 -as indexnél kezdődnek. Tehát a megfelelő gomb megnyomásához mindössze annyit kell tennünk, hogy hozzáadjuk a tárcsa értékét a 48 -hoz. A tizedes és az egység értékek külön megnyomások.
Végül szükségünk van arra, hogy az érték ne ugráljon össze -vissza. Mert ha a tárcsával próbálja használni a térképet (val0, 0, 1023, 0, 100), akkor nagyon izgató lesz az eredmény. Hasonlóan a gombok kikapcsolásához, ezt a pontosság feláldozásával javítjuk. Megállapítottam, hogy 1-20-ra való leképezése, majd az érvek értékének 5-ös szorzata elfogadható kompromisszum.
A potenciométer csatlakoztatásához csak csatlakoztasson egy 5 V -os vezetéket, egy földelővezetéket és egy analóg bemeneti vezetéket, és nem lehet probléma.
Érdekes tény: ha ezt a parancsikont használja egy olyan eszköz kiválasztásakor, mint a Lasso, akkor a Réteg átlátszatlansága változik. Valami, amit figyelembe kell venni.
4. lépés: A forgó kódoló
A forgó jeladók kicsit olyanok, mint a potenciométerek, de nincs korlátozásuk arra, hogy mennyit tudnak forgatni. Analóg érték helyett digitálisan nézzük a jeladó fordulási irányát. Nem részletezem részletesen, hogyan működnek ezek, de amit tudnod kell, az az, hogy két bemenetet használ az arduino -n, hogy megmondja, melyik irányba forgatja. A forgó kódolóval bonyolultabb lehet dolgozni, a különböző kódolók eltérő beállításokat igényelhetnek. Hogy megkönnyítsem a dolgokat, vettem egyet PCB -vel, amelyek készen állnak arra, hogy női csapokkal rögzítsék. Most a kód:
#befoglalni
// Rotációs kódoló #define outputA 15 #define outputB 14 int counter = 0; int a állam; int aLastState; void setup () {// tegye ide a beállítási kódot, hogy egyszer fusson: // Rotary pinMode (outputA, INPUT); pinMode (outputB, INPUT); // Olvassa el a outputA kezdeti állapotát a aLastState = digitalRead (outputA); } void rotaryAction (int dir) {if (dir> 0) {Keyboard.press (']'); } else {Keyboard.press ('['); } Keyboard.releaseAll (); } // ------------------ MAIN LOOP ------------------------- void loop () {// tegye ide a fő kódot az ismételt futtatáshoz: // Size aState = digitalRead (outputA); if (aState! = aLastState) {if (digitalRead (outputB)! = aState) {// számláló ++; rotaryAction (1); } else {// számláló -; rotaryAction (-1); } // Sorozat.nyom ("Position: "); // Sorozat.println (számláló); } aLastState = aState; }
Alapértelmezés szerint a Photoshop] és [hivatkozások növelik és csökkentik az ecset méretét. Csakúgy, mint korábban, ezeket szeretnénk gombnyomásra bevinni. A kódoló fordulónként számos bemenetet küld (ez a típustól függ), és szeretnénk növelni/csökkenteni az ecsetek méretét mindegyik bemenetnél, így valóban gyorsan fel vagy le forgathatja a tárcsát. lassan, nagy pontossággal vezérelheti.
A potméterhez hasonlóan csak akkor szeretnénk futtatni a műveletet, amikor a tárcsát forgatjuk. A potmétertől eltérően, amint azt korábban kifejtettem, a forgó jeladónak két váltakozó bemenete van. Megnézzük, hogy ezek közül melyik változott, hogy megállapítsuk a tárcsa forgatásának irányát.
Ezután az iránytól függően megnyomjuk a megfelelő gombot.
Amíg nincs kapcsolatfelvételi problémája, működnie kell.
5. lépés: Összerakni
Most térjünk rá a forrasztásra. Először két lyukat fúrunk a perfboardba, hogy illeszkedjen a két tárcsához. a forrasztjuk a gombokat és a hozzájuk tartozó ellenállásokat. Két extra kis lyukat fúrtam, hogy a bemeneti vezetékek felülről haladjanak, hogy helyet takarítsanak meg alatta, de ez nem szükséges. Nincs sok bemeneti vezeték, ezért a GND és az 5 V -os vezetékek párhuzamosan futnak, de ha ügyesnek érzi magát, érdemes mátrixot készíteni. A mikrokontrollert forrasztottam egy másik, kisebb perforációs lapra, amely alul elfér a kódoló és a mérőműszer mellett. Most forrasztom az összes vezetéket a ProMicro -hoz. Nem kell kreatívnak lenni, csak ugyanazt a sémát kellett követnem, mint a kenyérlapon, de a forrasztás egy ilyen kis helyen érthetően unalmas lehet. Ne legyél olyan, mint én, használj drótcsupaszítót és jó forrasztót!
Végezetül érdemes egy szép tokot készíteni az új Photoshop haverjának. Legalább egy jobb, mint az enyém!
De ha szívesen kipróbálná, használjon kartont és szalagot, és csatlakoztassa a mikro-USB-t.
6. lépés: Kód + bemutató
A meglepetések elkerülése érdekében feltétlenül tesztelje a vezérlőpult programját a projekt során.
Itt a teljes kód:
Köszönöm szépen, hogy elolvastad!
Ajánlott:
Hogyan készítsünk MP3 lejátszót LCD -vel az Arduino és a DFPlayer Mini MP3 lejátszó modul használatával: 6 lépés
Hogyan készítsünk MP3 lejátszót LCD -vel az Arduino és a DFPlayer Mini MP3 lejátszó modul használatával: Ma elkészítünk egy MP3 lejátszót LCD -vel az Arduino és a DFPlayer mini MP3 lejátszó modul használatával. A projekt képes olvasni az MP3 fájlokat az SD kártyán, és szüneteltetni tudja és ugyanúgy játsszon, mint a 10 évvel ezelőtti eszköz. És az előző dal és a következő dal is szórakoztató
Az Arduino Pro Mini 328P program feltöltése az Arduino Uno használatával: 6 lépés
Az Arduino Pro Mini 328P program feltöltése az Arduino Uno használatával: Az Arduino Pro Mini a legkisebb forgácslap, amely 14 I/O tűvel rendelkezik, 3,3 - 5 voltos egyenáramban működik, és könnyen feltöltheti a kódot a programozó eszközbe. digitális bemeneti/kimeneti portok RX, TX, D2 ~ D13, 8 analóg bemeneti port A0 ~ A7 1
Az Arduino Pro Mini programozása az Arduino Uno programmal: 4 lépés
Az Arduino Pro Mini programozása az Arduino Uno programmal: Ezt egy másik projekt részeként írtam, de aztán úgy döntöttem, hogy egy Pro Micro -t használok, amely közvetlenül a laptopról programozható. Ez azonban egyszer (vagy valakinek) hasznos lehet Itt hagyom
Az Arduino Pro Mini programozása az Arduino UNO használatával: 4 lépés
Az Arduino Pro Mini programozása az Arduino UNO használatával: Helló srácok, ma megosztom egy egyszerű módszert az Arduino Pro mini programozására az Arduino UNO használatával. Ez az oktatóanyag azoknak szól, akik most kezdik használni az arduino programot, és szeretnék csökkenteni projektjük méretét egy Arduino Pro mini használatával. Arduino Pro mini
A legolcsóbb Arduino -- A legkisebb Arduino -- Arduino Pro Mini -- Programozás -- Arduino Neno: 6 lépés (képekkel)
A legolcsóbb Arduino || A legkisebb Arduino || Arduino Pro Mini || Programozás || Arduino Neno: …………………………. További videókért Iratkozz fel YouTube -csatornámra ……. .Ez a projekt arról szól, hogyan lehet a legkisebb és legolcsóbb arduino -t kezelni. A legkisebb és legolcsóbb arduino az arduino pro mini. Hasonló az arduino -hoz