Dolgozzon stílusosan ezzel a barkácsolásos elektronikus D20 szerszámgéppel

Dolgozzon stílusosan ezzel a barkácsolásos elektronikus D20 szerszámgéppel

Szeretne valami kicsit egyedit a következő asztali szerepjátékhoz? Mit szólnál egy elektronikus D20 -hoz, egyedi grafikával a kritikus találatokhoz és hiányzásokhoz? Ma megmutatom, hogyan lehet sajátot építeni egy Arduino -val és néhány egyszerű alkatrésszel.





Ne aggódjon, ha még soha nem használt Arduino -t, van egy kezdő útmutató .





Építési terv

Ez egy egyszerű projekt. Az Arduino OLED kijelzőt fog vezetni, és egy gomb meggörgetheti a kockát. Egyedi grafika jelenik meg a kritikus találat vagy kritikus dobás esetén. Könnyedén módosíthatja a kódot D8, D10 vagy D12 formátumúra.





Amire szükséged van

  • 1 x Arduino
  • 1 x 0,96 ' I2C OLED kijelző
  • 1 x nyomógomb
  • 1 x 10 ezer? Ellenállás
  • 1 x kenyeretábla
  • Vegyes összekötő vezetékek
  • Teljes kód itt, ha nem akarja végigkövetni az írásos utasításokat.

Ezek az alapvető alkatrészek, amelyekre szüksége van a saját D20 -as felépítéséhez. Érdemes lehet egy tokba telepíteni (az alábbiakban tárgyaljuk), és az áramkört tartósabb állapotba forrasztani. Íme a további alkatrészek, amelyekre ehhez szüksége lesz:

  • 4 x M2 x 10 mm (0,4 hüvelyk) csavar
  • 4 x M2 anya
  • 4 x 7 mm -es (0,28 hüvelykes) alátét
  • 9V -os elemcsatlakozás (vagy megfelelő alternatíva)
  • Vegyes hőre zsugorodó cső

Ezek az OLED kijelzők nagyon jók. Általában fehér, kék, sárga vagy a három keverékből vásárolhatók. Vettem egyet kék színben, az én esetemnek megfelelően. Győződjön meg róla, hogy kap egy I2C modell helyett SPI .



Szinte minden Arduino alkalmas lesz. Nano -t választottam, mivel elég kicsik ahhoz, hogy beleférjenek a tokba. Tekintse meg vásárlási útmutatónkat az Arduino modellekkel kapcsolatos további információkért.

Az áramkör

Itt van a szükséges áramkör:





Csatlakozás VCC és GND az OLED kijelzőn az Arduino felé +5V és talaj . Csatlakozás analóg 4 az Arduino -n a feliratos csaphoz SDA . Csatlakozás analóg 5 hoz SCL csap. Ezek a csapok tartalmazzák a kijelző I2C busszal történő meghajtásához szükséges áramkört. A pontos csapok típusonként változnak, de az A4 -es és az A5 -ös a Nano és az Uno típusokon használatos. Ellenőrizd a A vezetékes könyvtár dokumentációja a modellhez, ha nem Uno -t vagy Nano -t használ.

Csatlakoztassa az akkumulátort a földhöz és a BOR csap. Ez a bemeneti feszültséget jelenti, és elfogadja a különböző egyenáramú feszültségeket - de először ellenőrizze az adott modellt, és néha kissé eltérhet.





Csatlakoztassa a gombot digitális tű 2 . Figyeld meg, hogy a 10k? ellenállás földhöz van kötve. Ez nagyon fontos! Ezt lehúzható ellenállásnak nevezik, és megakadályozza, hogy az Arduino gombnyomásra észlelje a hamis adatokat vagy interferenciát. A tábla védelmét is szolgálja. Ha ezt az ellenállást nem használnák, +5V egyenesen a földbe kerülne. Ezt a halott rövid és egyszerű módja egy Arduino megölésének.

Ha ezt az áramkört forrasztja, védje a csatlakozókat hőzsugorító csővel:

Ügyeljen arra, hogy ne melegítse fel túlságosan, és csak akkor tegye meg, ha meggyőződött arról, hogy az áramkör működik. A kábeleket is érdemes párba csavarni. Ez tisztán tartja őket, és segít megvédeni őket az indokolatlan stressztől:

Gomb teszt

Most, hogy felépítette az áramkört, töltse fel ezt a tesztkódot (győződjön meg róla, hogy a megfelelő kártyát és portot választotta ki a Eszközök> Tábla és Eszközök> Port menük):

const int buttonPin = 2; // the number of the button pin
void setup() {
pinMode(buttonPin, INPUT); // setup button
Serial.begin(9600); // setup serial
}
void loop(){
if(digitalRead(buttonPin) == HIGH) {
Serial.print('It Works');
delay(250);
}
}

A feltöltés után tartsa csatlakoztatva az Arduino -t USB -n keresztül, és nyissa meg a soros monitort ( Jobbra fent> Soros monitor ). Látnia kellene a szavakat Működik jelenik meg minden alkalommal, amikor megnyomja a gombot.

Ha nem történik semmi, menjen és ellenőrizze az áramkört.

OLED beállítás

A kijelző meghajtásához két könyvtárat kell telepítenie. Töltse le a Adafruit_SSD1306 és az Adafruit-GFX [már nem érhető el] könyvtárakat a Githubból, és mentse őket a könyvtármappájába. Ha nem biztos abban, hogy hol vannak a könyvtári mappák, olvassa el a retro játék bemutatómat, ahol részletesebben konfigurálom ugyanezt a kijelzőt.

Indítsa újra az Arduino IDE -t, és töltsön fel tesztvázlatot a Fájl> Példák menü. Válassza a lehetőséget Adafruit SSD 1306 és akkor ssd1306_128x64_i2c . Töltse fel ezt a kódot (eltarthat egy ideig), és sok formát és mintát láthat a kijelzőn:

Ha nem történik semmi, ellenőrizze újra a kapcsolatokat. Ha az ellenőrzés után még mindig nem működik, módosítania kell a mintakódot.

hogyan lehet párosítani a repülőgépeket az androiddal

Változtassa meg ezt a sort (a. Elején beállít funkció):

display.begin(SSD1306_SWITCHCAPVCC, 0x3D);

Ehhez:

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

Ez a könyvtár specifikus részleteit mutatja a használt kijelzőről. Most már készen kell állnia a build folytatására.

Az ügy

Ha ezt kenyérsütő táblára építi, vagy nem szeretné dobozba csomagolni, akkor ezt a lépést kihagyhatja.

Ezt a dobozt terveztem és 3D -ben kinyomtattam. Kapcsolja be a fájlokat Thingiverse . Ne aggódjon, ha nincs 3D nyomtatója - online szolgáltatások 3D hubok és Alakzatok online nyomtatási szolgáltatásokat nyújtanak.

Ezt a dobozt egyszerűen fából készítheti, vagy műanyagot vásárolhat projekt doboz .

A fedél egyszerű push fit kialakítású, és néhány kivágást tartalmaz a hardverhez:

A kód

Most, hogy minden készen áll, itt az ideje a kódnak. Íme, hogyan fog működni Pseudokód :

if button is pressed
generate random number
if random number is 20
show graphic
else if random number is 1
show graphic
else
show number

Annak érdekében, hogy ez megfelelően működjön, véletlenszerű számot kell generálni - ez a kockás dobás. Az Arduino -nak van egy véletlenszám -generátora véletlen , de nem szabad használni. Bár elég jó az alapvető véletlenszerű feladatokhoz, de nem elég véletlen egy elektronikus kockához. Az okok kissé bonyolultak, de ha érdekel, olvashatsz tovább boallen.com .

Töltse le a TrueRandom könyvtár által sirleech a Githubon. Adja hozzá ezt a könyvtármappához, és indítsa újra az IDE -t.

Most hozzon létre egy új fájlt, és állítsa be a kezdeti kódot (vagy csak vegye le a kész kódot a GitHub -ból):

#include
#include
#include
#include
#include
Adafruit_SSD1306 display(4);
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // setup the OLED
pinMode(buttonPin, INPUT); // setup button
}
void loop() {

}

Ez a kód konfigurálja az OLED -et, és tartalmazza a vele való kommunikációhoz szükséges összes könyvtárat, valamint az új véletlenszámú könyvtárat. Most adja hozzá ezt a fő hurokhoz:

if(digitalRead(buttonPin) == HIGH) {
delay(15);
if(digitalRead(buttonPin) == HIGH) {
display.fillScreen(BLACK); // erase the whole display
display.setTextColor(WHITE);
display.setTextSize(2);
display.setCursor(0, 0);
display.println(TrueRandom.random(1, 21)); // print random number
display.display(); // write to display
delay(100);
}
}

Ez pillanatnyilag teljesen alap, de ez egy működő D20. A gomb megnyomásakor egy és 20 közötti véletlen szám jelenik meg a képernyőn:

Ez jól működik, de kicsit unalmas. Tegyük jobbá. Hozzon létre két új módszert, drawDie és eraseDie :

void drawDie() {
display.drawRect(32, 0, 64, 64, WHITE);
}

Ezek egy kockát rajzolnak a képernyő közepére. Lehet, hogy ezt bonyolultabbá szeretné tenni, például egy D20 vagy D12 rajzolásával, és így tovább, de egyszerűbb egy hatoldalú kockát rajzolni. Íme az alapvető használat:

drawDie();

Ezután módosítsa a fő hurkot a véletlen szám rajzolására, csak nagyobbra és középre. Módosítsa a szövegméretet és a kurzort erre:

display.setTextColor(WHITE);
display.setCursor(57, 21);

Most sokkal jobban néz ki:

Az egyetlen probléma a kilencnél nagyobb számokkal van:

Ennek javítása egyszerű. A 10 -nél kisebb számok a kurzort a 10 -es vagy annál nagyobb számoktól eltérő helyzetbe állítják. Cserélje ki ezt a sort:

milyen ramot használ a laptopom
display.setCursor(57, 21);

Ezzel:

int roll = TrueRandom.random(1, 21); // store the random number
if (roll <10) {
// single character number
display.setCursor(57, 21);
}
else {
// dual character number
display.setCursor(47, 21);
}

Így néz ki most:

Most már csak a képek maradnak, amikor kritikus találatot vagy kihagyást dobsz. Van néhány lépés, de ez elég egyszerű folyamat.

Keresse meg a használni kívánt képet (minél egyszerűbb, annál jobb, mivel a kijelző csak egyszínű). Itt vannak az általam használt képek:

Kép jóváírása: publicdomainvectors.org

A használni kívánt képeket HEX tömbré kell alakítani. Ez a kép kódszerű ábrázolása. Ehhez számos eszköz áll rendelkezésre, és néhány kifejezetten az OLED kijelzőhöz készült. A legegyszerűbb módja a PicturetoC_Hex online eszköz. Itt vannak a szükséges beállítások:

hogyan lehet aktiválni a vakut a Chrome -on

Töltse fel a képet, és állítsa a kód formátumát HEX: 0x . Készlet Használt nak nek Fekete/fehér minden rajzkép funkcióhoz . A többi opciót hagyja alapértelmezettként. Ha szükséges, itt átméretezheti a képet. nyomja meg Szerezzen C karakterláncot és látnia kell a képadatokat:

Egy perc múlva szüksége lesz ezekre a generált adatokra. Hozzon létre két függvényt, az ún drawExplosion és drawSkull (vagy az Ön verziójának megfelelő neve). Itt a kód:

void drawExplosion() {
// store image in EEPROM
static const unsigned char PROGMEM imExp[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0x00,0x00,0x78,0x7f,0xff,0xc0,0x00,0x00,0x00,0x00,0xfe,0xff,0xff,0xf0,0x00,0x00,0x00,0x3f,0xff,0xff,0xff,0xfb,0x00,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xc0,0x00,0x00,0x7f,0xff,0xff,0xff,0xff,0xff,0x00,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x07,0xff,0xff,0xff,0xff,0xff,0xff,0xc0,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x1f,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x0f,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xf0,0x03,0xff,0xff,0xff,0xff,0xff,0xff,0xe0,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xfe,0x00,0x00,0x07,0xff,0xff,0xf9,0xff,0xd8,0x00,0x00,0x00,0x3f,0xff,0xf0,0x0f,0x00,0x00,0x00,0x00,0x1f,0x1f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x3f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xe0,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x0f,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x1f,0xff,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xff,0xf0,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xff,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0xfc,0x00,0x00,0x01,0xbf,0xff,0xff,0xff,0x30,0x00,0x00,0x00,0x13,0xf7,0xb8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
display.drawBitmap(0, 0, imExp, 64, 62, 1); // draw mushroom cloud
}
void drawSkull() {
// store image in EEPROM
static const unsigned char PROGMEM imSku[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0xf0,0x00,0x00,0x00,0x00,0x78,0x00,0x07,0xf0,0x00,0x00,0x00,0x00,0xfc,0x00,0x07,0xf8,0x00,0x00,0x00,0x00,0xfe,0x00,0x07,0xf8,0x00,0x00,0x00,0x01,0xfe,0x00,0x07,0xfc,0x00,0x00,0x00,0x01,0xfe,0x00,0x07,0xfe,0x00,0x3f,0xc0,0x03,0xfe,0x00,0x01,0xff,0x81,0xff,0xfc,0x07,0xec,0x00,0x00,0x3f,0xc7,0xff,0xff,0x1f,0xc0,0x00,0x00,0x0f,0xcf,0xff,0xff,0xdf,0x00,0x00,0x00,0x07,0xbf,0xff,0xff,0xee,0x00,0x00,0x00,0x01,0x7f,0xff,0xff,0xf0,0x00,0x00,0x00,0x00,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x01,0xff,0xff,0xff,0xf8,0x00,0x00,0x00,0x03,0xff,0xff,0xff,0xfc,0x00,0x00,0x00,0x07,0xff,0xff,0xff,0xfe,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x0f,0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1f,0xff,0xff,0xff,0xff,0x80,0x00,0x00,0x1e,0x3f,0xff,0x3f,0xc7,0x80,0x00,0x00,0x1e,0x0c,0x0f,0x00,0x07,0x80,0x00,0x00,0x1e,0x00,0x0f,0x00,0x0f,0x80,0x00,0x00,0x1e,0x00,0x19,0x80,0x0f,0x00,0x00,0x00,0x0f,0x00,0x19,0x80,0x0f,0x00,0x00,0x00,0x0d,0x00,0x30,0xc0,0x1f,0x00,0x00,0x00,0x05,0x80,0x70,0xc0,0x1e,0x00,0x00,0x00,0x05,0xf0,0xe0,0xe0,0x36,0x00,0x00,0x00,0x01,0xff,0xe0,0x7f,0xf0,0x00,0x00,0x00,0x03,0xff,0xc4,0x7f,0xf0,0x00,0x00,0x00,0x03,0xff,0xcc,0x7f,0xf0,0x00,0x00,0x00,0x03,0xff,0xcc,0x7f,0xf0,0x00,0x00,0x00,0x03,0xff,0x9e,0x7f,0xf0,0x00,0x00,0x00,0x00,0xff,0xfe,0x7f,0xc0,0x00,0x00,0x00,0x00,0x01,0xff,0xf8,0x1c,0x00,0x00,0x00,0x03,0xe0,0x3f,0x01,0xbf,0x00,0x00,0x00,0x07,0xa6,0x40,0x09,0x9f,0x80,0x00,0x00,0x1f,0x27,0x5a,0x39,0x9f,0xf8,0x00,0x01,0xff,0x27,0xdb,0x39,0x0f,0xfc,0x00,0x03,0xfe,0x31,0x7f,0x39,0x07,0xfc,0x00,0x03,0xfc,0x10,0x1a,0x02,0x03,0xf8,0x00,0x03,0xf8,0x10,0x00,0x02,0x01,0xf0,0x00,0x01,0xf8,0x10,0x00,0x02,0x01,0xe0,0x00,0x00,0x78,0x10,0x00,0x02,0x00,0xe0,0x00,0x00,0x70,0x30,0x00,0x02,0x00,0x00,0x00,0x00,0x30,0x20,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x64,0x00,0x1b,0x00,0x00,0x00,0x00,0x00,0x73,0x55,0x63,0x00,0x00,0x00,0x00,0x00,0xf9,0x55,0x4f,0x00,0x00,0x00,0x00,0x00,0x7f,0x14,0x1f,0x00,0x00,0x00,0x00,0x00,0x1f,0xe0,0xfe,0x00,0x00,0x00,0x00,0x00,0x0f,0xff,0xfc,0x00,0x00,0x00,0x00,0x00,0x07,0xff,0xf0,0x00,0x00,0x00,0x00,0x00,0x03,0xff,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
display.drawBitmap(0, 0, imSku, 60, 64, 1); // draw skull cloud
}

Ha szeretné használni az általam használt képeket, akkor menjen tovább, és másolja le a kódot. Ha a korábban létrehozott saját képeit szeretné használni, másolja a bájtkódot a imSku és imExp tömböket szükség szerint.

Így néznek ki ezek a képek a kijelzőn:

A kód legfontosabb része ez a sor:

static const unsigned char PROGMEM imSku[]

Ez azt mondja az Arduino -nak, hogy tárolja képeit az EEPROM -ban ( mi az EEPROM? ) a RAM helyett ( gyors útmutató a RAM -hoz ). Ennek oka egyszerű; az Arduino korlátozott RAM -mal rendelkezik, és ha mindezt a képek tárolására használja fel, előfordulhat, hogy nem marad a kód végrehajtásához

Módosítsa a fő ha utasítás, amely megmutatja ezeket az új grafikákat, amikor egyet vagy 20 -at dobunk. Jegyezze fel a kódsorokat, hogy megjelenítse a képek melletti számot is:

if(roll == 20) {
drawExplosion();
display.setCursor(80, 21);
display.println('20');
}
else if(roll == 1) {
display.setCursor(24, 21);
display.println('1');
drawSkull();
}
else if (roll <10) {
// single character number
display.setCursor(57, 21);
display.println(roll); // write the roll
drawDie(); // draw the outline
}
else {
// dual character number
display.setCursor(47, 21);
display.println(roll); // write the roll
drawDie(); // draw the outline
}

És így néznek ki az új tekercsek:

Ennyi a kódoldal (menjen, és szerezze be a kódot a GitHub -ból, ha mindezt kihagyta). Könnyen módosíthatja ezt D12, D8 és így tovább.

Végső összeszerelés

Most, hogy minden más elkészült, itt az ideje, hogy mindent dobozba foglaljon. Csavarja be a kijelzőt, ügyelve arra, hogy ne húzza túl a csavarokat. Ez talán a legnehezebb rész. Megrepedtem a kijelzőn, ezért érdemes műanyag alátéteket használni. Kivágtam belőle néhány négyzetet Műanyag kártya :

A kis anyákat és csavarokat nehéz összekötni. Tipp: Használjon egy kis darab Blu-Tack-ot a csavarhúzó végén az anyák kezdeti rögzítéséhez:

Csavarja be a gombot, csatlakoztassa az akkumulátort és zárja le a fedelet. Ügyeljen arra, hogy ne szorítsa be a vezetékeket, és ne kösse össze túl szorosan, esetleg rövidzárlatot okozva. A vonóvezetékek hosszától függően előfordulhat, hogy bizonyos szigeteléssel meg kell védenie a szabadon lévő csatlakozásokat (a soros doboz jól működik):

Így néz ki belülről:

És itt a kész termék:

Most Ön legyen az elektronikus D20 büszke tulajdonosa!

Milyen módosításokat hajtott végre? Cserélted a képeket? Írja meg nekünk kommentben, szívesen látjuk, mit tett!

Részvény Részvény Csipog Email Kezdő útmutató a beszéd animálásához

A beszéd animálása kihívást jelenthet. Ha készen áll arra, hogy párbeszédet adjon hozzá a projekthez, akkor lebontjuk a folyamatot.

Olvassa tovább
Kapcsolódó témák
  • DIY
  • Arduino
  • Társasjáték
  • Elektronika
A szerzőről Joe Coburn(136 megjelent cikk)

Joe az Egyesült Királyságban, a Lincoln Egyetemen végzett informatikából. Professzionális szoftverfejlesztő, és amikor nem repül drónokkal és nem ír zenét, gyakran előfordul, hogy fényképeket készít vagy videókat készít.

Joe Coburn további alkotásai

Iratkozzon fel hírlevelünkre

Csatlakozz hírlevelünkhöz, ahol technikai tippeket, értékeléseket, ingyenes e -könyveket és exkluzív ajánlatokat találsz!

Feliratkozáshoz kattintson ide
Kategória Diy