Bergayakan dengan Gaya Elektronik DIY D20 Ini

Bergayakan dengan Gaya Elektronik DIY D20 Ini

Inginkan sesuatu yang agak unik untuk permainan main peranan meja anda yang seterusnya? Bagaimana dengan D20 elektronik dengan grafik tersuai untuk hits dan ketinggalan kritikal? Hari ini saya akan menunjukkan cara membina sendiri dengan Arduino dan beberapa bahagian mudah.





Jangan risau jika anda belum pernah menggunakan Arduino sebelumnya, kami mempunyai panduan memulakan .





Pelan Binaan

Ini adalah projek yang mudah. Arduino akan memacu paparan OLED, dan butang akan memutar mati. Grafik tersuai akan dipaparkan untuk hit kritikal atau miss roll yang kritikal. Anda boleh mengubah kod dengan mudah menjadi D8, D10, atau D12.





Apa yang kamu perlu

  • 1 x Arduino
  • 1 x 0.96 ' Paparan OLED I2C
  • 1 x Butang Tekan
  • 1 x 10k? Perintang
  • 1 x Papan Roti
  • Kabel penyambung pelbagai
  • Kod penuh di sini, jika anda tidak mahu mengikuti arahan bertulis.

Itulah bahagian teras yang anda perlukan untuk membina D20 anda sendiri. Anda mungkin ingin memasangnya ke dalam casing (dibincangkan di bawah) dan memasangkan litar ke keadaan yang lebih kekal. Berikut adalah bahagian tambahan yang perlu anda lakukan:

  • Baut 4 x M2 x 10mm (0.4 inci)
  • 4 x kacang M2
  • Mesin basuh 4 x 7mm (0.28 inci)
  • Snap bateri 9V (atau alternatif yang sesuai)
  • Tiub pengecutan haba pelbagai

Paparan OLED ini sangat sejuk. Mereka biasanya boleh dibeli dalam warna putih, biru, kuning, atau campuran ketiganya. Saya telah membelinya dengan warna biru, untuk memenuhi kes saya. Pastikan anda mendapat I2C model dan bukannya SPI .



Hampir mana-mana Arduino akan sesuai. Saya telah memilih Nano, kerana mereka cukup kecil untuk memenuhi kes itu. Lihat panduan membeli kami untuk maklumat lebih lanjut mengenai model Arduino.

Litar

Inilah litar yang anda perlukan:





Sambung VCC dan GND pada paparan OLED ke Arduino + 5V dan tanah . Sambung analog 4 pada Arduino ke pin berlabel SDA . Sambung analog 5 kepada SCL sematkan. Pin ini mengandungi litar yang diperlukan untuk menggerakkan paparan menggunakan bas I2C. Pin yang tepat akan berbeza mengikut model, tetapi A4 dan A5 digunakan pada Nano dan Uno. Periksa Dokumentasi perpustakaan wayar untuk model anda jika anda tidak menggunakan Uno atau Nano.

Sambungkan bateri ke arde dan WINE sematkan. Ini bermaksud voltan masuk, dan menerima pelbagai voltan DC yang berbeza - tetapi periksa model khusus anda terlebih dahulu, dan kadangkala ia sedikit berbeza.





Sambungkan butang ke pin digital 2 . Perhatikan bagaimana 10k? perintang disambungkan ke tanah. Ini sangat penting! Ini dikenali sebagai resistor tarik ke bawah, dan ini menghalang Arduino mengesan data palsu atau gangguan ketika menekan butang. Ia juga berfungsi untuk melindungi papan. Sekiranya perintang ini tidak digunakan, + 5V akan langsung ke tanah. Ini dikenali sebagai mati pendek dan merupakan cara mudah untuk membunuh Arduino.

Sekiranya anda menyolder litar ini, lindungi sambungan anda dengan tiub pengecutan haba:

Pastikan anda tidak memanaskannya terlalu banyak, dan hanya melakukannya setelah anda yakin litar berfungsi. Anda juga mungkin ingin memutar kabel anda menjadi berpasangan. Ini menjadikan mereka kemas dan membantu melindungi mereka dari tekanan yang tidak semestinya:

Ujian Butang

Setelah anda membina litar, muat naik kod ujian ini (pastikan untuk memilih papan dan port yang betul dari Alatan> Papan dan Alatan> Pelabuhan menu):

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);
}
}

Setelah dimuat naik, teruskan Arduino terhubung melalui USB dan buka monitor bersiri ( Kanan Atas> Monitor Bersiri ). Anda mesti melihat kata-kata Ianya berfungsi muncul setiap kali anda menekan butang.

Sekiranya tidak ada yang berlaku, pergi dan periksa semula rangkaian anda.

Persediaan OLED

Anda perlu memasang dua perpustakaan untuk memacu paparan. Muat turun Adafruit_SSD1306 dan perpustakaan Adafruit-GFX [Tidak Lagi Ada] dari Github, dan simpan ke dalam folder perpustakaan anda. Sekiranya anda tidak pasti di mana folder perpustakaan anda, baca tutorial permainan retro saya, di mana saya mengkonfigurasi paparan yang sama ini dengan lebih terperinci.

Mulakan semula Arduino IDE anda dan muat naik lakaran ujian dari Fail> Contoh menu. Pilih Adafruit SSD1306 dan kemudian ssd1306_128x64_i2c . Muat naik kod ini (akan memerlukan sedikit masa), dan anda akan melihat banyak bentuk dan corak di paparan:

Sekiranya tidak ada yang berlaku, periksa semula sambungan anda. Sekiranya, setelah diperiksa, masih tidak berfungsi, anda perlu mengubah kod contoh.

cara menukar buku kindle ke pdf

Tukar garis ini (pada permulaan persediaan fungsi):

display.begin(SSD1306_SWITCHCAPVCC, 0x3D);

Untuk ini:

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

Ini memberitahu perincian khusus perpustakaan mengenai paparan yang anda gunakan. Anda kini sudah siap untuk meneruskan pembinaan.

Kes itu

Sekiranya anda membina ini di papan roti, atau tidak mahu memasukkannya ke dalam kotak, maka anda boleh melangkau langkah ini.

Saya merancang dan 3D mencetak kotak ini. Hidupkan fail Thingiverse . Jangan risau jika anda tidak mempunyai pencetak 3D - perkhidmatan dalam talian Hab 3D dan Shapeways menyediakan perkhidmatan percetakan dalam talian.

Anda boleh membuat kotak ini dengan mudah dari kayu, atau dengan membeli plastik kotak projek .

Tudungnya adalah reka bentuk push fit sederhana, dan mengandungi beberapa potongan untuk perkakasan:

Kod tersebut

Sekarang semuanya sudah siap, inilah masanya untuk kod. Inilah cara ia berfungsi Pseudocode :

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

Agar ini berfungsi dengan betul, nombor rawak perlu dihasilkan - ini adalah gulungan die. Arduino mempunyai penjana nombor rawak yang dipanggil rawak , tetapi tidak boleh menggunakannya. Walaupun cukup baik untuk tugas rawak asas, ia tidak cukup rawak untuk mati elektronik. Sebab mengapa agak rumit, tetapi anda boleh membaca lebih banyak jika anda berminat boallen.com .

Muat turun TrueRandom perpustakaan oleh tuan pada Github. Tambahkan ini ke folder perpustakaan anda dan mulakan semula IDE.

Sekarang buat fail baru dan siapkan kod awal anda (atau ambil kod yang sudah selesai dari GitHub):

#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() {

}

Kod ini mengkonfigurasi OLED, dan merangkumi semua perpustakaan yang anda perlukan untuk berkomunikasi dengannya, bersama dengan perpustakaan nombor rawak baru anda. Sekarang tambahkan ini ke gelung utama:

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);
}
}

Ini cukup asas pada masa ini, tetapi ia adalah D20 yang berfungsi. Setiap kali butang ditekan, nombor rawak antara satu dan 20 ditunjukkan di skrin:

Ini berfungsi dengan baik, tetapi agak membosankan. Mari menjadikannya lebih baik. Buat dua kaedah baru, lukisDie dan padamkanDie :

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

Ini akan menarik mati di tengah-tengah skrin. Anda mungkin ingin menjadikannya lebih rumit, mungkin dengan melukis D20, atau D12 dan seterusnya, tetapi lebih mudah untuk melukis mati enam sisi asas. Inilah penggunaan asas:

drawDie();

Seterusnya, ubah gelung utama anda untuk menarik nombor rawak, hanya lebih besar dan di tengah. Tukar saiz teks dan kursor ke ini:

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

Ia kelihatan lebih baik sekarang:

Satu-satunya masalah adalah dengan nombor yang lebih besar daripada sembilan:

Penyelesaiannya mudah. Sebilangan nombor kurang dari 10 akan mempunyai kursor ke kedudukan yang berbeza daripada angka 10 atau lebih besar. Gantikan baris ini:

komputer dihidupkan tetapi skrin berwarna hitam
display.setCursor(57, 21);

Dengan ini:

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);
}

Inilah yang kelihatan seperti sekarang:

Yang tinggal sekarang adalah untuk gambar semasa anda melancarkan hit kritikal atau ketinggalan. Terdapat beberapa langkah yang terlibat, tetapi prosesnya cukup mudah.

Cari gambar yang sesuai yang anda mahu gunakan (yang lebih sederhana lebih baik kerana paparannya hanya berwarna tunggal). Berikut adalah gambar yang saya gunakan:

Kredit Gambar: publicdomainvectors.org

Sebarang gambar yang ingin anda gunakan perlu ditukar menjadi array HEX. Ini adalah gambaran gambar dalam bentuk kod. Terdapat banyak alat yang tersedia untuk melakukan ini, dan ada yang ditulis khusus untuk paparan OLED. Cara termudah adalah dengan menggunakan PicturetoC_Hex alat dalam talian. Berikut adalah tetapan yang diperlukan:

cara menghapus akaun hotmail secara kekal

Muat naik gambar anda, dan tetapkan format kod ke HEX: 0x . Tetapkan Digunakan untuk ke Hitam / Putih untuk semua fungsi gambar gambar . Biarkan semua pilihan lain sebagai lalai. Anda boleh mengubah saiz gambar di sini jika perlu. Tekan Dapatkan C String dan anda akan melihat data gambar muncul:

Anda memerlukan data yang dihasilkan ini dalam satu minit. Buat dua fungsi yang dipanggil drawExplosion dan drawSkull (atau nama yang sesuai untuk versi anda). Inilah kodnya:

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
}

Sekiranya anda ingin menggunakan gambar yang telah saya gunakan, teruskan dan salin kodnya. Sekiranya anda ingin menggunakan gambar anda sendiri yang anda hasilkan sebelumnya, salin kod bait ke dalam imSku dan imExp tatasusila mengikut keperluan.

Inilah rupa gambar tersebut di paparan:

Bahagian yang paling penting dari kod itu ialah baris ini:

static const unsigned char PROGMEM imSku[]

Ini memberitahu Arduino untuk menyimpan gambar anda di EEPROM ( apa itu EEPROM? ) bukannya RAMnya ( panduan ringkas untuk RAM ). Sebabnya mudah; Arduino mempunyai RAM yang terhad, dan menggunakannya untuk menyimpan gambar mungkin tidak akan meninggalkan baki kod anda untuk dilaksanakan

Ubah suai utama anda sekiranya pernyataan untuk menunjukkan grafik baru ini apabila satu atau 20 digulung. Perhatikan garis kod untuk menunjukkan nombor yang digulung di samping gambar juga:

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
}

Dan inilah bentuk gulungan baru itu:

Itu semua untuk sisi kod (ambil kod dari GitHub jika anda melewatkan semua itu). Anda boleh mengubahnya dengan mudah menjadi D12, D8, dan sebagainya.

Pemasangan akhir

Sekarang semua yang lain sudah selesai, sudah tiba masanya untuk menyelesaikan semuanya. Pasang paparan di hidupkan, pastikan tidak mengetatkan baut dengan terlalu ketat. Ini mungkin bahagian yang paling sukar. Saya memecahkan paparan, jadi anda mungkin ingin menggunakan beberapa mesin basuh plastik. Saya memotong beberapa petak Plasticard :

Mur dan selak kecil sukar untuk disambungkan. Petua: Gunakan sekeping kecil Blu-Tack di hujung pemutar skru untuk meletakkan mur pada mulanya:

Tutup butang, sambungkan bateri dan tutup penutupnya. Berhati-hatilah untuk tidak menjebak wayar, atau memasangkannya terlalu rapat, mungkin menyebabkan sesak. Bergantung pada panjang jejak belakang anda, anda mungkin perlu melindungi sambungan yang terdedah dengan beberapa penebat (kotak bersiri berfungsi dengan baik):

Inilah rupa di dalamnya:

Dan inilah produk siap:

Anda kini harus menjadi pemilik D20 elektronik yang bangga!

Apa pengubahsuaian yang anda buat? Adakah anda menukar gambar? Beritahu kami dalam komen, kami ingin melihat apa yang anda buat!

Berkongsi Berkongsi Tweet E-mel Panduan Pemula untuk Animasi Ucapan

Animasi pertuturan boleh menjadi cabaran. Sekiranya anda sudah bersedia untuk mula menambahkan dialog ke projek anda, kami akan menguraikan proses untuk anda.

Baca Seterusnya
Topik-topik yang berkaitan
  • DIY
  • Arduino
  • Permainan papan
  • Elektronik
Mengenai Pengarang Joe Coburn(136 Artikel Diterbitkan)

Joe adalah lulusan Sains Komputer dari University of Lincoln, UK. Dia seorang pembangun perisian profesional, dan ketika dia tidak terbang drone atau menulis muzik, dia sering didapati mengambil gambar atau menghasilkan video.

Lagi Dari Joe Coburn

Langgan buletin kami

Sertailah buletin kami untuk mendapatkan petua, ulasan, ebook percuma, dan tawaran eksklusif!

Klik di sini untuk melanggan