Daftar Isi:

Pemegang Kunci Jack Gitar Arduino Dengan Pengenalan Jack & OLED: 7 Langkah
Pemegang Kunci Jack Gitar Arduino Dengan Pengenalan Jack & OLED: 7 Langkah

Video: Pemegang Kunci Jack Gitar Arduino Dengan Pengenalan Jack & OLED: 7 Langkah

Video: Pemegang Kunci Jack Gitar Arduino Dengan Pengenalan Jack & OLED: 7 Langkah
Video: gitar akustik pake efek bisa ga? 2024, November
Anonim
Image
Image
Gantungan Kunci Jack Gitar Arduino Dengan Pengenalan Jack & OLED
Gantungan Kunci Jack Gitar Arduino Dengan Pengenalan Jack & OLED

pengantar:

Instruksi ini akan merinci pembuatan gantungan kunci plugin Guitar Jack berbasis Arduino saya

Ini adalah instruksi pertama saya, jadi mohon bersabar karena saya dapat membuat perubahan / pembaruan di sepanjang jalan

Langkah 1: Suku Cadang & Alat

Suku Cadang & Alat
Suku Cadang & Alat
Suku Cadang & Alat
Suku Cadang & Alat
Suku Cadang & Alat
Suku Cadang & Alat

Sebagian besar suku cadang yang saya beli dari Amazon.co.uk atau eBay, beberapa sudah saya beli - Berikut adalah daftar yang Anda perlukan.

Tautan Amazon adalah semua tautan Afiliasi, Anda mungkin dapat menemukan yang lebih murah di tempat lain - Saya sering menggunakan Amazon Prime, jadi Amazon kebetulan menjadi tujuan saya.

Saya ingin membuat bangunan ini cukup murah dan ramah anggaran. Anda bisa menggunakan layar TFT yang lebih besar yang Anda inginkan, serta Arduino yang berbeda. Jangan gunakan NANO, karena akan macet karena penggunaan memori yang tinggi. Kode menggunakan sekitar 72% dari RAM Pro Micro dan stabil, tetapi dari pengujian, NANO akan macet dan macet.

(Rincian lebih lanjut di langkah Kode.)

BAGIAN

1x Arduino Pro Mikro -

1x 0.96" OLED dengan Layar Kuning & Biru -

4x WS2812 'Piksel' -

1x DS3231 RTC -

4x 1/4 Mono Jack (Atau sebanyak yang Anda inginkan) - Amazon (Emas) atau Amazon (Perak) atau eBay.co.uk

1x Paket Resistor Campuran -

Jack Gitar 4x 1/4 -

1x Kabel Ekstensi Kabel USB Mikro -

4x M3 Sekrup

ALAT & BAHAN

- Besi Solder (Ini yang saya beli - TS100 - karena dilengkapi dengan tips tambahan

- Solder

- Pistol Lem Panas (https://amzn.to/2UTd9PN)

- Kawat (https://amzn.to/2VK2ILU)

- Pemotong kawat / penari telanjang (https://amzn.to/2KzqUzp)

- Layanan Printer 3D atau Pencetakan 3D

OPSIONAL - Item ini opsional, tergantung pada cara Anda memilih untuk menghubungkan semuanya

- Veroboard / Stripboard (https://amzn.to/2KzMFPE)

- Konektor Terminal Sekrup (2 Tiang | 3 Tiang | 4 Tiang)

- Header PCB (https://amzn.to/2X7RjWf)

Langkah 2: Mencetak Kasus 3D

3D Mencetak Kasing
3D Mencetak Kasing
3D Mencetak Kasing
3D Mencetak Kasing
3D Mencetak Kasing
3D Mencetak Kasing
3D Mencetak Kasing
3D Mencetak Kasing

Saya mencetak milik saya di Creality CR-10S saya, menggunakan Black PLA+ (https://amzn.to/2X2SDtE)

Saya mencetak pada ketinggian lapisan 0,2, dengan isi 25%.

Langkah 3: Menyatukan Semuanya + Skema

Menyatukan Semuanya + Skema
Menyatukan Semuanya + Skema
Menyatukan Semuanya + Skema
Menyatukan Semuanya + Skema
Menyatukan Semuanya + Skema
Menyatukan Semuanya + Skema
Menyatukan Semuanya + Skema
Menyatukan Semuanya + Skema

Bagaimana Anda memilih untuk menghubungkan Arduino Anda sepenuhnya terserah Anda - saya pribadi memilih untuk menjadikan diri saya "perisai" untuk berbicara. Untuk membuat perisai, saya telah menyolder header wanita ke veroboard agar sesuai dengan Pro Micro, saya kemudian menambahkan rel +5v dan GND, di ujung yang berlawanan. Saya telah menggunakan kabel jumper untuk menghubungkan +5v ke 'rel' 5v saya sekarang, dan melakukan hal yang sama untuk GND. Saya kemudian menambahkan resistor 4x 100k saya, satu ujung terhubung ke +5v untuk semuanya, dan kemudian sisi lainnya terhubung ke A0, A1, A2 & A3 masing-masing. Saya kemudian menambahkan terminal sekrup ke pin analog A0, A1, A2 & A3 dan juga Pin 2 (SDA), 3 (SCL) & 4

Ukur kabel Anda dan potong dengan panjang yang sesuai. Saya mulai dengan WS2812 Pixel LEDs terlebih dahulu - LED WS2812 PERTAMA terhubung ke +5v dari Arduino, GND dari Arduino, dan DIN terhubung ke Pin 4. Setelah ini, 3 sisanya dirantai bersama, merantai semua 5v > 5v, GND > Pin GND dan DOUT dari satu Piksel, terhubung ke DIN Piksel berikutnya. Setelah disolder, Tekan ini dengan lembut ke dalam lubang persegi di bagian atas, dan lem panas di tempatnya dan juga untuk melindungi bagian belakang dari sambungan atau celana pendek yang tidak disengaja.

Setelah LED, saya kemudian memasang Soket Jack Gitar. Satu pin dari masing-masing terhubung ke GND, dan kemudian pin ke-2 dari masing-masing terhubung ke A0, A1, A2 & A3. Jadi Soket 1 ke A0, Soket 2 ke A1, Soket 3 ke A2, dan Soket 4 ke A3.

Selanjutnya saya menyolder 4 kabel ke koneksi OLED, dan memangkas semua kelebihan solder sebanyak mungkin. Anda ingin memasang kabel dari bagian belakang layar, jadi Anda menyolder ke bagian depan layar.

Perhatikan pin! Beberapa OLED memiliki GND di luar, lalu VCC, beberapa memiliki VCC di luar, dan kemudian GND

Setelah disolder dan Anda telah memangkas atau meratakan sambungan solder sebanyak mungkin, tekan layar dengan lembut ke lokasinya. Ini sedikit sesuai dengan desain, tetapi perlu diketahui bahwa toleransi cetak yang berbeda dapat mempengaruhi ini dan Anda mungkin harus melakukan beberapa pasca-pemrosesan kecil untuk membuatnya sesuai. Setelah terpasang, letakkan lem panas di keempat sudut untuk menahannya.

Hubungkan semuanya agar sesuai dengan Skema dan gambar, dan setelah puas, Anda kemudian dapat merekatkan Pro Micro dan Jam RTC di tempatnya juga, dan kemudian menghubungkan ekstensi USB ke Pro Micro.

Saya menggunakan ekstensi micro USB sehingga a) USB dapat digunakan untuk menyediakan daya, tetapi lebih dari itu, b) sehingga memungkinkan untuk memprogram ulang Pro Micro jika diperlukan tanpa memisahkan semuanya

Setelah puas, kencangkan casing bersama-sama menggunakan 4 sekrup

Langkah 4: Colokan

Colokan!
Colokan!
Colokan!
Colokan!
Colokan!
Colokan!

Cara kerjanya adalah, untuk semua maksud dan tujuan, bagian dari desain berfungsi sebagai "ohmmeter". Ohmmeter adalah alat untuk mengukur hambatan listrik. Kebanyakan Multimeter memiliki fungsi ini di mana Anda memilih skala dan kemudian mengukur resistor untuk menemukan nilainya. Prinsip kerjanya adalah Anda menghubungkan resistor DIKENAL ke +ve, yang kemudian dihubungkan ke resistor UNKNOWN, yang terhubung ke -ve. Sambungan antara 2 resistor terhubung ke pin analog Arduino sehingga dapat membaca tegangan dan menghitung resistansi.

Ia bekerja seperti pembagi tegangan dan menghitung resistansi resistor yang tidak diketahui.

Sebagai jaringan pembagi tegangan resistor R1 dan R2, Vout = Vin * R2 / (R1 + R2) - Kami menggunakan 100k untuk resistor kami yang dikenal (R1). Ini memberi kita "penurunan tegangan"

Dari sini, sekarang kita dapat menghitung resistansi resistor yang tidak diketahui (R2), R2 = Vout * R1 / (Vin – Vout) - di mana R1 adalah resistor 100k (100.000 ohm) kami

Dengan menggunakan resistor yang berbeda di setiap colokan colokan yang ingin Anda gunakan, Anda kemudian dapat menyesuaikan kode sesuai dengan colokan yang digunakan.

Saya menggunakan 4 colokan jack. Saya memilih untuk menggunakan:

Resistor yang Diketahui (x4) - 100k

Colokan Jack 1 - 5.6k

Colokan Jack 2 - 10k

Colokan Jack 3 - 22k

Jack Plug 4 - 39k

Anda tentu saja dapat memperluas ini, dan membuat kode sebanyak yang Anda mau.

Langkah 5: Kode

Kode
Kode

Pertama, Anda memerlukan Arduino IDE, tersedia dari sini:

Anda juga perlu memastikan bahwa Anda memiliki beberapa Perpustakaan Arduino juga:

Adafruit NeoPixel:

u8g2:

Adafruit RTClib:

Adafruit SleepyDog (Opsional):

Catatan tentang memilih papan "Arduino" yang tepat. Awalnya saya memulai proyek ini dengan Arduino Nano, karena harganya super murah sekitar £3-£4 di Inggris, atau hanya £1,50 jika Anda membeli dari AliExpress (tapi tidak masalah menunggu 30-50 hari). Masalah dengan Nano adalah SRAM-nya adalah 2 KB (2048 byte). Sketsa ini menggunakan 1728 byte memori dinamis dengan Variabel Global. Itu 84% dari SRAM, hanya menyisakan 320 byte gratis untuk variabel lokal. Ini tidak cukup dan akan menyebabkan Nano terkunci dan membeku.

Pro Micro (Leonardo) memiliki 2.5K SRAM (2560 byte), yang berarti ada 694 byte gratis untuk variabel lokal (Sketsa menggunakan 72% dari SRAM Pro Micro). Sejauh ini telah terbukti sangat memadai dan stabil untuk penggunaan saya. Jika Anda bermaksud menggunakan banyak colokan jack, maka Anda mungkin ingin mempertimbangkan untuk menggunakan sesuatu dengan lebih banyak SRAM.

Sejauh menyangkut penyimpanan Flash, sketsa ini menggunakan 88% (25252 byte) dari 30k (ATmega328p [Nano] dan ATMega32u4 [Pro Micro] keduanya memiliki 32k, tetapi 2k dicadangkan untuk bootloader)

Saya telah menulis ratusan sketsa Arduino selama bertahun-tahun, tetapi saya adalah seorang penghobi - jadi ingatlah bahwa beberapa bagian kode mungkin tidak efisien atau mungkin ada skenario "cara yang lebih baik untuk melakukan ini". Yang sedang berkata, itu bekerja dengan sempurna untuk saya dan saya senang dengan itu. Saya menggunakan perpustakaan yang HARUS bekerja di sebagian besar papan, apakah itu AVR (Arduino paling dasar) atau SAMD21 (Saya punya beberapa perangkat Cortex M0)

Saya ingin menampilkan grafik yang berbeda berdasarkan jack yang digunakan juga. Jika Anda ingin membuatnya sendiri, ini adalah panduan sederhana yang brilian tentang cara membuat C Array untuk gambar yang akan digunakan dengan tampilan ini:

sandhansblog.wordpress.com/2017/04/16/interfacing-displaying-a-custom-graphic-on-an-0-96-i2c-oled/

Pastikan untuk menggunakan PROGMEM untuk grafik Anda. Misalnya:

static const unsigned char YOUR_IMAGE_NAME PROGMEM = { }

Secara desain, layar akan "batas waktu" setelah 5 detik dan kembali menampilkan waktu.

Sebagian besar Pengaturan dapat ditemukan di Settings.h, khususnya, nama colokan jack terkait dikodekan di sini:

#menentukan PLUG1 "KUNCI"

#define PLUG2 "P2" #define PLUG3 "P3" #define PLUG4 "P4" #define GENERIC "NA"

Ada juga beberapa bagian penting dari kode di dalam Variables.h

mengapung R1=96700,0;

mengapung R2=96300.0; mengapung R3=96500.0; mengapung R4=96300.0;

Ini adalah nilai resistansi yang DIKENAL, dalam ohm, dari masing-masing 4 resistor.

R1 terhubung ke A0, R2 ke A1, R3 ke A2, dan R4 ke A3.

Dianjurkan untuk mengukur resistor 100k Anda menggunakan multimeter dan menggunakan nilai resistor yang tepat. Lakukan pengukuran resistor setelah semuanya terhubung. (Tapi tidak dihidupkan).

Saat memilih resistor untuk colokan jack Anda, pastikan ada celah ohm yang baik di antara mereka, dan saat mengkodekannya, berikan rentang yang bagus lebih rendah dan lebih tinggi dari resistor pilihan Anda. Inilah yang saya gunakan dalam kode saya:

float P1_MIN=4000.0, P1_MAX=7000,0; // 5.6K

float P2_MIN=8000.0, P2_MAX=12000.0; // 10K float P3_MIN=20000.0, P3_MAX=240000.0; // 22K float P4_MIN=36000.0, P4_MAX=420000.0; // 39K

Alasan untuk ini adalah untuk memperhitungkan pembacaan analog dan fluktuasi tegangan kecil, dll

Jadi yang terjadi adalah, jika resistansi yang terdeteksi antara 4000 ohm dan 7000 ohm, kami menganggap Anda telah menggunakan resistor 5,6k dan dengan demikian kode akan melihat ini sebagai Jack Plug 1. Jika resistansi yang diukur adalah antara 8000 ohm dan 12000 ohm, asumsinya adalah resistor 10k dan Jack Plug 2 dan seterusnya.

Jika Anda perlu melakukan debugging (Jangan tinggalkan komentar di 'produksi' karena debugging serial menghabiskan ram yang berharga) cukup batalkan komentar pada baris yang Anda butuhkan di bagian atas Settings.h

//#menentukan SERIAL_DEBUG

//#menentukan WAIT_FOR_SERIAL

Untuk membatalkan komentar, hapus saja // …. untuk mengomentari baris kembali, tambahkan kembali // ke depan baris.

SERIAL_DEBUG memungkinkan debugging serial dan penggunaan hal-hal seperti (misalnya)

Serial.println(F("halo dunia"));

WAIT_FOR_SERIAL adalah langkah tambahan, artinya sampai Anda membuka Serial Monitor, kode tidak akan berlanjut. Ini membantu memastikan Anda tidak melewatkan pesan serial penting. - JANGAN PERNAH TINGGALKAN INI DIAKTIFKAN

Jika Anda membiarkan WAIT_FOR_SERIAL diaktifkan, Anda tidak akan dapat menggunakan gantungan kunci Anda di lingkungan "dunia nyata" karena akan macet menunggu monitor Arduino IDE Serial sebelum dapat melanjutkan ke loop utama sketsa. Setelah Anda menyelesaikan proses debug, pastikan Anda menghapus komentar pada baris ini lagi, dan unggah ulang sketsa Anda untuk produksi/penyelesaian.

Saat menggunakan opsi SERIAL_DEBUG, kode saya berisi yang berikut:

#ifdef SERIAL_DEBUG

Serial.print(F("JACK AKTIF = ")); Serial.println(ACTIVE_JACK); int len = ukuran(SOCKET_1234_HAS_PLUGTYPE_X)/ukuran(SOCKET_1234_HAS_PLUGTYPE_X[0]); for (int i=0;i<len;i++) { Serial.print(F("SOCKET_1234_HAS_PLUGTYPE_X[")); Serial.print(i); Serial.print(F("] = ")); Serial.println(SOCKET_1234_HAS_PLUGTYPE_X); } Serial.println(); if (DIMASUKKAN[soket]) { Serial.print(F("Masukkan soket ")); Serial.print(soket+1); Serial.print(F(" memiliki resistansi: ")); Serial.println(resistensi); } #berakhir jika

Baris Serial.print terakhir akan memberi tahu Anda berapa hambatannya, dalam ohm, dari jack yang terakhir dimasukkan. Jadi Anda juga dapat menggunakan sketsa ini sebagai semacam ohmmeter untuk memeriksa resistansi colokan jack.

Langkah 6: Catatan

Saya pikir saya sudah membahas semuanya, tetapi tolong beri komentar dan saya akan melakukan yang terbaik untuk membaca dan membalas ketika saya bisa:)

Maaf untuk video yang agak buruk - Saya tidak memiliki tripod, pengaturan pengodean ulang, atau ruang kerja yang tepat sehingga untuk berbicara, jadi ini difilmkan (buruk) memegang telepon di satu tangan dan mencoba mendemonstrasikannya dengan yang lain.

Terima kasih sudah membaca.

Direkomendasikan: