Daftar Isi:

Ukulele Elektronik Cerdas DIY Dengan Arduino: 14 Langkah (dengan Gambar)
Ukulele Elektronik Cerdas DIY Dengan Arduino: 14 Langkah (dengan Gambar)

Video: Ukulele Elektronik Cerdas DIY Dengan Arduino: 14 Langkah (dengan Gambar)

Video: Ukulele Elektronik Cerdas DIY Dengan Arduino: 14 Langkah (dengan Gambar)
Video: Membuat Jam Digital dengan Alarm di Arduino - Project Arduino #14 2024, November
Anonim
Ukulele Elektronik Cerdas DIY Dengan Arduino
Ukulele Elektronik Cerdas DIY Dengan Arduino

Kami akan menjelaskan langkah demi langkah bagaimana Anda dapat mendesain ukulele Anda sendiri dan menambahkan beberapa efek yang akan membuatnya unik, seperti menggambar sesuatu yang kita inginkan pada permukaan ukulele atau menambahkan beberapa efek cahaya.

Untuk membuatnya, perlu membeli kit ukulele.

Kami akan menjelaskan cara merakit instrumen, dan memecahkan berbagai masalah yang mungkin muncul.

Langkah 1: Bahan

Bahan
Bahan
Bahan
Bahan

Bahan struktur:

Kit pemasangan ukelele DIY (bisa berupa kit lain yang berbeda) yang dibentuk oleh:

1- Tubuh.

2-Leher.

3-Sadel

Dukungan 4-Tali

5-Jembatan

Kacang 6-string.

7-Fixing ring untuk kepala mesin (x4).

8-Kepala mesin (x4).

Sekrup pemasangan 9 untuk kepala mesin (x8).

Sekrup pemasangan 10 untuk jembatan mesin (x2).

11-Tutup penutup untuk sekrup pemasangan jembatan (x2).

12-String (x4).

Bahan elektronik:

  • NANO Arduino.
  • Roda LED WS2812.
  • Akselerometer BMA220 (opsional).
  • Konektor baterai.
  • Baterai 9V.
  • Mengalihkan.

Yang lain

  • Pernis kayu.
  • Velcro.
  • Timah solder.
  • Plastik pelindung untuk pernis.
  • Silikon meleleh panas.

Peralatan:

  • Ukiran laser.
  • Ampelas
  • obeng bintang.
  • Kuas.
  • Pistol meleleh panas.
  • Besi solder timah.

Langkah 2: Sesuaikan Ukulele

Sesuaikan Ukulele
Sesuaikan Ukulele
Sesuaikan Ukulele
Sesuaikan Ukulele
Sesuaikan Ukulele
Sesuaikan Ukulele

Untuk menyesuaikan ukulele kami, kami dapat membuat ukiran gambar dengan pemotong laser di badan. Dalam hal tidak memiliki alat itu, kita bisa mengecatnya.

Gambar yang telah kita pilih adalah yang pertama muncul.

Pertama-tama, kita harus mendesain template gambar untuk membuat ukiran.

Untuk melakukan itu, kami akan menggunakan perangkat lunak bernama 'Inkscape' yang dapat kami peroleh dari tautan ini:

Untuk menggunakannya, kita harus menyesuaikan gambar yang ingin kita gunakan seperti yang kita tampilkan pada gambar kedua. Anda dapat melihat bahwa kami telah memutar gambar awal untuk dapat menyesuaikan putaran tangan dengan lingkaran instrumen. Seperti yang telah kami katakan sebelumnya, Anda dapat menempatkan gambar apa pun.

Langkah 3: Membuat Vektor Gambar Menggunakan Inkscape

Membuat Vektor Gambar Menggunakan Inkscape
Membuat Vektor Gambar Menggunakan Inkscape
Membuat Vektor Gambar Menggunakan Inkscape
Membuat Vektor Gambar Menggunakan Inkscape
Membuat Vektor Gambar Menggunakan Inkscape
Membuat Vektor Gambar Menggunakan Inkscape
Membuat Vektor Gambar Menggunakan Inkscape
Membuat Vektor Gambar Menggunakan Inkscape

Kita akan melihat cara membuat file vektor dari pixmap (jpg, png, format raster apa pun yang dapat dibuka oleh Inkscape).

Inkscape Inkscape adalah editor grafis vektor open-source, dan sesuai dengan judulnya, ini adalah alat yang akan saya gunakan untuk membuat vektor logo. Langkah-langkah membuat vektor Langkah-langkahnya umum untuk vektorisasi apa pun yang mungkin ingin kita lakukan.

  1. Buka gambar di Inkscape
  2. Buka Jalur Alat Trace Bitmap->Trace Bitmap
  3. Mainkan opsi Trace Bitmap
  4. Jalankan pelacakan
  5. Bersihkan hasilnya (jika perlu)

Perhatikan bagian "bermain-main". Saya bukan ahli tracing, jadi saya memperlakukan alat ini sebagai kotak hitam dengan kenop dan lampu, memutar dan mengubah sampai saya mendapatkan hasil terbaik

Langkah 4: Pengukiran Logo

Image
Image
Ukiran Logo
Ukiran Logo
Ukiran Logo
Ukiran Logo

Untuk ini, penting untuk memiliki siluet permukaan tempat ukiran gambar akan dihasilkan.

Untuk membuat ukiran, kita akan menggunakan software 'T2Laser'. Kami dapat memperoleh perangkat lunak ini dari:

Setelah kita membuka perangkat lunak, kita harus memuat gambar yang telah kita buat pada langkah terakhir. Kemudian, tekan tombol "kontrol laser", dan muncul kontrol cnc. Dua gambar menunjukkan proses dan hasil ukiran dengan pemotong laser kami.

Langkah 5: Pengamplasan dan Varnishing

Pengamplasan dan Varnishing
Pengamplasan dan Varnishing
Pengamplasan dan Varnishing
Pengamplasan dan Varnishing
Pengamplasan dan Varnishing
Pengamplasan dan Varnishing
Pengamplasan dan Varnishing
Pengamplasan dan Varnishing

Agar ukulele kita tetap cerah dan dengan lapisan tanpa kekasaran, kita dapat mengampelas kedua bagian yang membentuk instrumen kita dengan hati-hati, karena kita dapat merusak gambar yang telah dibuat (jika Anda memilih untuk mengecat ukulele, Anda harus amplas dulu). Kemudian kami akan memoles dua bagian kami sehingga mereka mendapatkan warna yang lebih gelap dan kayu lebih tahan. Kita bisa menggunakan pernis kayu biasa, tidak perlu yang khusus.

Setelah pernis kami memiliki, kami mencampurnya dengan sedikit pelarut sehingga sedikit larut. Selanjutnya, kami mengoleskan campuran tersebut dengan kuas pada leher dan badan instrumen dan biarkan mengering.

Jika kami melihat bahwa produk membutuhkan lapisan kedua, kami dapat mengampelas kedua bagian sedikit dan mengoleskan kembali lapisan pernis yang diencerkan.

** PERHATIAN: Pernis adalah produk kimia, jadi perlu untuk melakukan proses ini di tempat yang berventilasi, memakai masker untuk menghindari menghirup bau dan kacamata pelindung.

Bahan-bahan yang kita butuhkan untuk dapat bekerja dengan benar adalah yang tampak pada foto. Terutama kami akan bekerja dengan kuas, kaleng pernis (dalam kasus kami warna merah), sedikit pelarut dan perlindungan visual. Dan yang terpenting, bekerja di ruang yang berventilasi baik.

Langkah 6: Perangkat Keras

Perangkat keras
Perangkat keras
Perangkat keras
Perangkat keras
Perangkat keras
Perangkat keras

Plakat kami dengan Arduino, akselerometer dan roda dengan led akan diperkenalkan di braket kecil untuk menghindari semua komponen bergerak di instrumen.

Kami juga telah menambahkan dudukan baterai dan sakelar untuk membuatnya lebih nyaman dan kami tidak menghabiskan baterai saat kami tidak menggunakan instrumen. Kami akan melampirkan dukungan ini dengan sepotong Velcro (itu juga akan bekerja dengan silikon dan pistol meleleh panas) ke wajah bagian dalam badan ukulele. Di sisi lain, roda LED lebih kecil dari lubang, sehingga akan jatuh. Sebuah dukungan telah dirancang agar dapat bertahan dengan baik dan dapat menjalankan fungsinya.

Langkah 7: Perangkat Lunak

Perangkat lunak
Perangkat lunak
Perangkat lunak
Perangkat lunak
Perangkat lunak
Perangkat lunak

Untuk memberikan dekorasi khusus pada ukulele kami, kami dapat menambahkan efek cahaya berkat roda led. Kami akan menggunakan WS2812, tetapi Anda dapat menggunakan yang lain dengan mengikuti instruksi dari lembar data. Kami akan menggunakan acelerometer (BMA220) juga, yang memungkinkan kami membuat efek gravitasi.

Bahkan, kita akan memiliki 4 permainan cahaya, termasuk dalam perpustakaan komputer yang disebut 'Adafruit' dari Arduino. Untuk itu, kita harus membuat koneksi yang benar antara tiga komponen: Arduino NANO, WS2812 dan BMA220, seperti yang terlihat pada gambar pertama.

Kabel merah untuk daya, GND hitam dan sisanya adalah koneksi yang diperlukan untuk operasi yang benar. Kode yang kami gunakan untuk kit lampu dilampirkan dalam file bernama "play_of_light_v0.ino". Pastikan Anda telah menyertakan pustaka yang diperlukan untuk pengoperasian program yang benar. Baterai yang kita tambahkan di luar rangkaian harus memiliki tegangan minimum 9V dan kita harus memastikan bahwa baterai tersebut mampu memberikan arus minimum yang diperlukan untuk memberi daya pada seluruh rangkaian.

//Variables contador dan interrupciónint counter; //Variabel Ejemplo gravedad #include #include #include #define NUMBER_OF_LEDS_ON_RING 16 #define NEOPIXEL_RING_DATA_PIN 9

Versi byte[3];

int8_t x_data; int8_t y_data; int8_t z_data; rentang byte = 0x00; float divi=16; mengapung x, y, z; float pi = 3.14159265359; float nx, ny, sudut; int dipimpin, sebelumnyaLed; Daftar Antrian yang dipimpin Antrian; Adafruit_NeoPixel neoring = Adafruit_NeoPixel(NUMBER_OF_LEDS_ON_RING, NEOPIXEL_RING_DATA_PIN, NEO_GRB + NEO_KHZ800);

//Variabel Luces arcoiris

#include #ifdef _AVR_ #include #endif #define PIN 9 // Parameter 1 = jumlah piksel dalam strip // Parameter 2 = Nomor pin Arduino (sebagian besar valid) // Parameter 3 = flag tipe piksel, tambahkan sesuai kebutuhan: // NEO_KHZ800 800 KHz bitstream (sebagian besar produk NeoPixel dengan LED WS2812) // NEO_KHZ400 400 KHz (klasik 'v1' (bukan v2) piksel FLORA, driver WS2811) // Piksel NEO_GRB dihubungkan untuk bitstream GRB (sebagian besar produk NeoPixel) / / NEO_RGB Piksel disambungkan untuk bitstream RGB (piksel FLORA v1, bukan v2) // NEO_RGBW Piksel disambungkan untuk bitstream RGBW (produk NeoPixel RGBW) Adafruit_NeoPixel strip = Adafruit_NeoPixel(16, PIN, NEO_GRB + NEO_KHZ800); // PENTING: Untuk mengurangi risiko kejenuhan NeoPixel, tambahkan kapasitor 1000 uF di // kabel daya piksel, tambahkan resistor 300 - 500 Ohm pada input data piksel pertama // dan minimalkan jarak antara Arduino dan piksel pertama. Hindari menghubungkan // pada sirkuit langsung…jika harus, sambungkan GND terlebih dahulu.

//Variabel Rueda de colores

// Sketsa sederhana NeoPixel Ring (c) 2013 Shae Erisson // dirilis di bawah lisensi GPLv3 untuk mencocokkan sisa perpustakaan NeoPixel AdaFruit

#termasuk

#ifdef _AVR_ #include #endif

// Pin mana di Arduino yang terhubung ke NeoPixels?

// Pada Trinket atau Gemma kami sarankan untuk mengubahnya menjadi 1 #define PIN 9

// Berapa banyak NeoPixels yang terpasang ke Arduino?

#menentukan NUMPIXELS 16

// Saat kami menyiapkan perpustakaan NeoPixel, kami memberi tahunya berapa banyak piksel, dan pin mana yang digunakan untuk mengirim sinyal.

// Perhatikan bahwa untuk strip NeoPixel lama Anda mungkin perlu mengubah parameter ketiga--lihat contoh strandtest // untuk informasi lebih lanjut tentang nilai yang mungkin. Adafruit_NeoPixel piksel = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); int delayval = 50; // penundaan selama 50 ms

//Variabel mewarnai aleatorios

#sertakan #ifdef _AVR_ #sertakan #endif

#tentukan PIN 9

#tentukan NUM_LEDS 16

#menentukan KECERAHAN 200

//Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);

byte neopix_gamma = {

0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 10, 10, 10, 11, 11, 11, 12, 12, 13, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 24, 24, 25, 25, 26, 27, 27, 28, 29, 29, 30, 31, 32, 32, 33, 34, 35, 35, 36, 37, 38, 39, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 50, 51, 52, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 69, 70, 72, 73, 74, 75, 77, 78, 79, 81, 82, 83, 85, 86, 87, 89, 90, 92, 93, 95, 96, 98, 99, 101, 102, 104, 105, 107, 109, 110, 112, 114, 115, 117, 119, 120, 122, 124, 126, 127, 129, 131, 133, 135, 137, 138, 140, 142, 144, 146, 148, 150, 152, 154, 156, 158, 160, 162, 164, 167, 169, 171, 173, 175, 177, 180, 182, 184, 186, 189, 191, 193, 196, 198, 200, 203, 205, 208, 210, 213, 215, 218, 220, 223, 225, 228, 231, 233, 236, 239, 241, 244, 247, 249, 252, 255 }; /////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////

/METODO SETUP

void setup() { //Código: Arahan de la gravedad neoring.begin(); neoring.setBrightness(200); Serial.begin(9600); Kawat.mulai(); Wire.beginTransmission (0x0A); // alamat akselerometer // pengaturan rentang Wire.write(0x22); //daftar alamat Wire.write(range); //dapat diatur pada"0x00""0x01""0x02""0x03", lihat Datashet di wiki // filter lolos rendah Wire.write(0x20); //daftar alamat Wire.write(0x05); //dapat diatur pada"0x05""0x04"……"0x01""0x00", lihat Datashet di wiki Wire.endTransmission();

//kodigo; Luces Arcoiris

// Ini untuk Trinket 5V 16MHz, Anda dapat menghapus tiga baris ini jika Anda tidak menggunakan Trinket #jika ditentukan (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // Akhir dari strip kode khusus perhiasan.begin(); strip.tampilkan(); // Inisialisasi semua piksel ke 'mati'

//Código Rueda de colores

// Ini untuk Trinket 5V 16MHz, Anda dapat menghapus tiga baris ini jika Anda tidak menggunakan Trinket #jika ditentukan (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // Akhir kode khusus perhiasan

piksel.mulai(); // Ini menginisialisasi perpustakaan NeoPixel.

//Gangguan Codigo

penghitung = 1;

//Codigo Colores varios

// Ini untuk Trinket 5V 16MHz, Anda dapat menghapus tiga baris ini jika Anda tidak menggunakan Trinket #jika ditentukan (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // Akhir dari strip kode khusus perhiasan.setBrightness(BRIGHTNESS); strip.mulai(); strip.tampilkan(); // Inisialisasi semua piksel ke 'off' }

///////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////

/Bucle infinito

void loop() { //Caso 1: Juego de luces de la gravedad; if(counter == 1){ for(int i=0;i 0.0){ if(nx 0.0) angle+=180; sudut lain += 360; }//end else if(angle == 360.0) angle = 0.0; led = melingkar (sudut / (360 / NUMBER_OF_LEDS_ON_RING)); // membuat gerakan led mulus if(previousLed == led){ // no to do } else if (counterClockwiseDistanceBetweenLeds(previousLed, led) <= 8) led = circularize(previousLed + 1); else led = melingkari (sebelumnyaLed - 1); ledQueue.push(dipimpin); makeLightShow(); sebelumnyaLed = dipimpin; penundaan(25); } penghitung = 2; }//End if counter==1 //Caso 2: Codigo del juego de luces del arcoiris else if(counter == 2){ for(int j=0; j<5;j++){ // Beberapa contoh prosedur yang ditampilkan cara menampilkan ke piksel: colorWipe1(strip. Color(255, 0, 0), 50); // Warna merahWipe1(strip. Color(0, 255, 0), 50); // Warna hijauWipe1(strip. Color(0, 0, 255), 50); // Warna biruHapus1(strip. Warna(0, 0, 0, 255), 50); // RGBW Putih // Kirim pengejaran piksel teater di… theaterChase(strip. Color(127, 127, 127), 50); // White theaterChase(strip. Color(127, 0, 0), 50); // Red theaterChase(strip. Color(0, 0, 127), 50); // Biru

pelangi (5);

siklus pelangi(5); theaterChaseRainbow(5); } penghitung = 3; }//End if counter==2 //Caso 3: Luces Aleatorias else if(counter == 3){ for(int k=0;k<50;k++){ // Untuk satu set NeoPixel, NeoPixel pertama adalah 0, detik adalah 1, hingga hitungan piksel dikurangi satu. int a=acak(255); int b=acak(255); int c=acak(255); untuk(int i=0;i

// piksel. Warna mengambil nilai RGB, dari 0, 0, 0 hingga 255, 255, 255

pixels.setPixelColor(i, pixels. Color(a, b, c)); // Warna hijau cukup terang.

piksel.tampilkan(); // Ini mengirimkan warna piksel yang diperbarui ke perangkat keras.

penundaan (delayval); // Penundaan untuk jangka waktu tertentu (dalam milidetik).

} a=acak(255); b=acak(255); c=acak(255); for(int i=NUMPIXELS;i>0;i--){

// piksel. Warna mengambil nilai RGB, dari 0, 0, 0 hingga 255, 255, 255

pixels.setPixelColor(i, pixels. Color(a, b, c)); // Warna hijau cukup terang.

piksel.tampilkan(); // Ini mengirimkan warna piksel yang diperbarui ke perangkat keras.

penundaan (delayval); // Penundaan untuk jangka waktu tertentu (dalam milidetik).

} } penghitung = 4; } else if(counter == 4){ for(int g=0;g<=6;g++){ // Beberapa contoh prosedur yang menunjukkan cara menampilkan ke piksel: colorWipe(strip. Color(255, 0, 0), 50); // Warna merahHapus(strip. Warna(0, 255, 0), 50); // Warna hijauHapus(strip. Warna(0, 0, 255), 50); // Warna biruHapus(strip. Warna(0, 0, 0, 255), 50); // Putih putihOverRainbow(20, 75, 5); pulsaPutih (5); // penuhPutih(); // tunda(2000); rainbowFade2White(3, 3, 1);

}

penghitung = 1; } } /////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////// //////////////////

/Metodos del Ejemplo de la gravedad

void AccelerometerInit() { Wire.beginTransmission(0x0A); // alamat akselerometer // setel ulang akselerometer Wire.write(0x04); // X data Wire.endTransmission(); Wire.requestFrom(0x0A, 1); // meminta 6 byte dari perangkat slave #2 while(Wire.available()) // slave dapat mengirim kurang dari yang diminta { Version[0] = Wire.read(); // menerima satu byte sebagai karakter } x_data=(int8_t)Versi[0]>>2; Wire.beginTransmission (0x0A); // alamat akselerometer // setel ulang akselerometer Wire.write(0x06); // Data Y Wire.endTransmission(); Wire.requestFrom(0x0A, 1); // meminta 6 byte dari perangkat slave #2 while(Wire.available()) // slave dapat mengirim kurang dari yang diminta { Version[1] = Wire.read(); // menerima satu byte sebagai karakter } y_data=(int8_t)Versi[1]>>2; Wire.beginTransmission (0x0A); // alamat akselerometer // atur ulang akselerometer Wire.write(0x08); // Z data Wire.endTransmission(); Wire.requestFrom(0x0A, 1); // meminta 6 byte dari perangkat slave #2 while(Wire.available()) // slave dapat mengirim kurang dari yang diminta { Version[2] = Wire.read(); // menerima satu byte sebagai karakter } z_data=(int8_t)Versi[2]>>2; x=(mengambang)x_data/divi; y=(mengambang)y_data/divi; z=(mengambang)z_data/divi; Serial.print("X="); Serial.print(x); // mencetak karakter Serial.print(" "); Serial.print("Y="); Serial.print(y); // mencetak karakter Serial.print(" "); Serial.print("Z="); // cetak karakter Serial.println(z); }

int sirkularisasi(int pos){

if(pos >= NUMBER_OF_LEDS_ON_RING) return(pos - NUMBER_OF_LEDS_ON_RING); else if(pos < 0) return(pos + NUMBER_OF_LEDS_ON_RING); lain kembali (pos); }

int jarak;

int counterClockwiseDistanceBetweenLeds(int prevPos, int nextPos){ jarak = nextPos - prevPos; if(jarak < 0) jarak += NUMBER_OF_LEDS_ON_RING; kembali (jarak); }

int ledPosition, currentQueueSize;

#define NUMBER_OF_LEDS_TO_SHINE 10 int brightnessLangkah = 255/NUMBER_OF_LEDS_TO_SHINE;

batal makeLightShow(){

for(int j = 0; j < NUMBER_OF_LEDS_ON_RING; j++) neoring.setPixelColor(j, 0, 0, 0); currentQueueSize = ledQueue.count(); for(int k = 0; k < currentQueueSize; k++){ ledPosition = ledQueue.pop(); neoring.setPixelColor(ledPosition, 0, (brightnessStep * k), 0); if((k == 0 && currentQueueSize 0) ledQueue.push(ledPosition); } neoring.show(); }

///////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////

/Metodos del juego de luces del arcoiris

// Isi titik-titik satu demi satu dengan warna void colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i

void pelangi(uint8_t tunggu) {

uint16_t i, j;

untuk(j=0; j<256; j++) { untuk(i=0; i

// Sedikit berbeda, ini membuat pelangi merata di seluruh

void rainbowCycle(uint8_t tunggu) { uint16_t i, j;

for(j=0; j<256*5; j++) { // 5 siklus semua warna pada roda for(i=0; i< strip.numPixels(); i++) { strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255); } strip.tampilkan(); tunda (tunggu); } }

//Lampu merangkak bergaya teater.

void theaterChase(uint32_t c, uint8_t wait) { for (int j=0; j<10; j++) { //lakukan 10 siklus pengejaran untuk (int q=0; q < 3; q++) { for (uint16_t i= 0; i < strip.numPixel(); i=i+3) { strip.setPixelColor(i+q, c); //mengaktifkan setiap piksel ketiga } strip.show();

tunda (tunggu);

for (uint16_t i=0; i < strip.numPixels(); i=i+3) { strip.setPixelColor(i+q, 0); //matikan setiap piksel ketiga } } } }

//Lampu merangkak bergaya teater dengan efek pelangi

void theaterChaseRainbow(uint8_t wait) { for (int j=0; j < 256; j++) { // putar semua 256 warna dalam roda for (int q=0; q < 3; q++) { for (uint16_t i=0; i < strip.numPixels(); i=i+3) { strip.setPixelColor(i+q, Roda((i+j) % 255); //mengaktifkan setiap piksel ketiga } strip.show();

tunda (tunggu);

for (uint16_t i=0; i < strip.numPixels(); i=i+3) { strip.setPixelColor(i+q, 0); //matikan setiap piksel ketiga } } } }

// Masukkan nilai 0 hingga 255 untuk mendapatkan nilai warna.

// Warna adalah transisi r - g - b - kembali ke r. uint32_t Wheel(byte WheelPos) { WheelPos = 255 - WheelPos; if(WheelPos < 85) { kembali strip. Warna(255 - WheelPos * 3, 0, WheelPos * 3); } if(WheelPos < 170) { WheelPos -= 85; kembali strip. Color(0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; kembali strip. Warna(WheelPos * 3, 255 - WheelPos * 3, 0); }

///////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////

/Metode Rueda de colores

// int elegirColor = random(0x000000, 0xffffff);//Se elige aleatoriamente entre toda la gama de colores comprendida entre 0x000000 y 0xFFFFFF

//CylonEyeColor=HtmlColor(elegirColor); //int elegirColor = random(1, 7);//Podemos elegir aleatoriamente entre los 7 colores que hay debajo0xf0ffff // if(elegirColor == 1) CylonEyeColor=HtmlColor(0xff0000);//Rojo // if(elegirColor == 2) CylonEyeColor=HtmlColor(0x00ff00);//Verde // if(elegirColor == 3) CylonEyeColor=HtmlColor(0x0000ff);//Azul // if(elegirColor == 4) CylonEyeColor=HtmlColor(0xffff00);//Amarillo // if(elegirColor == 5) CylonEyeColor=HtmlColor(0x200020);//Morado // if(elegirColor == 6) CylonEyeColor=HtmlColor(0x00ffff);//Azul Claro // if(elegirColor == 7) CylonEyeColor= HtmlColor(0x100010);//Rosa //CylonEyeColor=HtmlColor(0x000000);

///////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////

/Metodos luces varias

// Isi titik-titik satu demi satu dengan warna

void colorWipe1(uint32_t c, uint8_t tunggu) { for(uint16_t i=0; i

void pulseWhite(uint8_t tunggu) {

untuk(int j = 0; j < 256; j++){ untuk(uint16_t i=0; i

untuk(int j = 255; j >= 0; j--){

untuk(uint16_t i=0; i

void rainbowFade2White(uint8_t tunggu, int rainbowLoops, int whiteLoops) {

float fadeMax = 100.0; int fadeVal = 0; uint32_t wheelVal; int redVal, greenVal, blueVal;

for(int k = 0; k < rainbowLoops; k ++){ for(int j=0; j<256; j++) { // 5 siklus semua warna pada roda

untuk(int i=0; i< strip.numPixels(); i++) {

wheelVal = Roda(((i * 256 / strip.numPixels()) + j) & 255);

redVal = merah(wheelVal) * float(fadeVal/fadeMax);

greenVal = hijau(wheelVal) * float(fadeVal/fadeMax); blueVal = biru(wheelVal) * float(fadeVal/fadeMax);

strip.setPixelColor(i, strip. Color(redVal, greenVal, blueVal));

}

// Putaran pertama, fade in!

if(k == 0 && fadeVal < fadeMax-1) { fadeVal++; }

// Putaran terakhir, menghilang!

else if(k == rainbowLoops - 1 && j > 255 - fadeMax){ fadeVal--; }

strip.tampilkan();

tunda (tunggu); } }

penundaan (500);

for(int k = 0; k < whiteLoops; k ++){

untuk(int j = 0; j < 256; j++){

for(uint16_t i=0; i < strip.numPixels(); i++) { strip.setPixelColor(i, strip. Color(0, 0, 0, neopix_gamma[j])); } strip.tampilkan(); }

penundaan(2000);

untuk(int j = 255; j >= 0; j--){

for(uint16_t i=0; i < strip.numPixels(); i++) { strip.setPixelColor(i, strip. Color(0, 0, 0, neopix_gamma[j])); } strip.tampilkan(); } }

penundaan (500);

}

void whiteOverRainbow(uint8_t tunggu, uint8_t whiteSpeed, uint8_t whiteLength) {

if(whiteLength >= strip.numPixels()) whiteLength = strip.numPixels() - 1;

int head = putihPanjang - 1;

int ekor = 0;

int loop = 3;

int loopNum = 0;

static unsigned long lastTime = 0;

sementara(benar){

for(int j=0; j<256; j++) { for(uint16_t i=0; i= tail && i head && i >= tail) || (ekor > kepala && i <= kepala)){ strip.setPixelColor(i, strip. Color(0, 0, 0, 255)); } else{ strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255); } }

if(millis() - lastTime > whiteSpeed) {

kepala++; ekor++; if(head == strip.numPixels()){ loopNum++; } waktu terakhir = milis(); }

if(loopNum == loop) kembali;

head%=strip.numPixels(); tail%=strip.numPixels(); strip.tampilkan(); tunda (tunggu); } } } void fullWhite() { for(uint16_t i=0; i

// Sedikit berbeda, ini membuat pelangi merata di seluruh

void rainbowCycle1(uint8_t tunggu) { uint16_t i, j;

for(j=0; j<256 * 5; j++) { // 5 siklus semua warna pada roda for(i=0; i< strip.numPixels(); i++) { strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255); } strip.tampilkan(); tunda (tunggu); } }

void rainbow1(uint8_t tunggu) {

uint16_t i, j;

untuk(j=0; j<256; j++) { untuk(i=0; i

// Masukkan nilai 0 hingga 255 untuk mendapatkan nilai warna.

// Warna adalah transisi r - g - b - kembali ke r. uint32_t Wheel1(byte WheelPos) { WheelPos = 255 - WheelPos; if(WheelPos < 85) { kembali strip. Warna(255 - WheelPos * 3, 0, WheelPos * 3, 0); } if(WheelPos < 170) { WheelPos -= 85; kembali strip. Warna(0, WheelPos * 3, 255 - WheelPos * 3, 0); } WheelPos -= 170; kembali strip. Warna(WheelPos * 3, 255 - WheelPos * 3, 0, 0); }

uint8_t merah(uint32_t c) {

kembali (c >> 16); } uint8_t hijau(uint32_t c) { kembali (c >> 8); } uint8_t biru(uint32_t c) { kembali (c); }

Langkah 8: Desain 3D

Desain 3D
Desain 3D
Desain 3D
Desain 3D
Desain 3D
Desain 3D

Pertama, Anda harus mengukur komponen perangkat keras Anda untuk memastikan yang benar. Jika mereka sama dengan milik kami, Anda dapat menggunakan file yang sama yang kami pinjamkan kepada Anda.

Kedua dukungan telah dirancang dengan printer 3D, yang juga disertakan sebagai:

ukelele_support_arduino_v0.stl: https://www.tinkercad.com/things/1aAGZ1xFptA-ukel… ukelele_support_WS2812_v0.stl:

Akhirnya, cahaya akan seperti dua gambar terakhir.

Langkah 9: Memasang Leher

Memasang Leher
Memasang Leher
Memasang Leher
Memasang Leher

Pertama kita akan menempatkan pelana di leher. Lubang yang harus dipegang oleh sekrup tidak ada di sana, jadi kita harus membuatnya, menandai ke mana mereka harus pergi dan dengan hati-hati, dengan auger, buat lubangnya.

Hal yang sama berlaku untuk lubang di mana sekrup yang menahan leher itu sendiri ke badan instrumen. Tidak perlu melakukannya, karena tidak ada sekrup untuk pengikat ini, tetapi jika kita ingin melakukannya, tidak akan ada masalah.

PENTING: sisakan jarak 5mm antara awal tiang dan awal garpu tala, karena di lubang itulah mur akan ditempatkan.

Kami akan merekatkan mur dengan lem, ke arah yang ditunjukkan oleh gambar.

Akhirnya, kami akan memperkenalkan 4 pin di lubang yang ada di awal tiang, menahan setiap pin dengan 2 sekrup pendek seperti yang ditunjukkan pada gambar.

Langkah 10: Memasang Birdge

Memasang Birdge
Memasang Birdge
Memasang Birdge
Memasang Birdge

Jembatan diperbaiki dengan menempelkan dan dengan dua sekrup panjang di posisi tengah pada tubuh. Dianjurkan untuk menandai dengan pensil posisi yang benar di tubuh. Kami akan mengambil jarak yang ditandai pada gambar.

Kami akan menerapkan lem pada penyatuan dua komponen. Kami memperbaiki kedua bagian dengan hati-hati dengan bantuan sekrup pengencang sampai sambungan mengering. Kami akan membuat dua lubang untuk sekrup dengan mata bor 1,5 mm untuk kayu. Perbaiki jembatan dengan dua sekrup panjang di badan. Dan akhirnya, kami memasang tutup pelindung di kepala sekrup.

Langkah 11: Perakitan Tubuh dan Leher

Perakitan Tubuh dan Leher
Perakitan Tubuh dan Leher
Perakitan Tubuh dan Leher
Perakitan Tubuh dan Leher

Untuk merakit dua bagian, kami memiliki lubang di kepala tubuh, di mana leher akan cocok dengan dua tonjolan yang dimilikinya. Kita bisa merekatkannya dengan lem atau dengan hot melt gun. Untuk memiliki fiksasi yang lebih besar, Anda dapat membuat lubang yang ada di ujung garpu tala untuk menyambungkannya ke bodi.

Langkah 12: Letakkan Senar Ukulele

Image
Image
Pasang Senar Ukulele
Pasang Senar Ukulele
Pasang Senar Ukulele
Pasang Senar Ukulele

Akhirnya kita harus meletakkan senar agar instrumen kita selesai.

Sebelumnya kami akan memasukkan cincin pengikat pin ke dalam proyeksi yang melewati tiang. Untuk menempatkan senar, kami mengambil 4 senar yang disertakan dengan kit. Pertama, Anda harus membedakan setiap string karena tidak semuanya sama. Anda harus mengikat salah satu ujung setiap tali (dua yang tebal dengan simpul normal, dan dua yang tipis dengan simpul ganda) dan masukkan senar ke dalam slot jembatan.

Kemudian kita akan menempatkan string sedemikian rupa sehingga:

• Posisi pertama: Senar G (senar kedua paling tebal).

• Posisi kedua: Senar C (senar lebih tebal).

• Posisi ketiga: Senar E (senar kedua yang lebih tipis).

• Posisi keempat: Sebuah string (string tipis).

Masukkan senar ke dalam lubang steker yang disediakan. Cobalah untuk memperbaiki setiap tali dengan memberikan dua atau tiga putaran pada pin. Kencangkan senar tanpa menerapkan terlalu banyak kekuatan dan periksa jarak antara senar dan pelana.

Jika Anda ragu tentang cara membuatnya, Anda bisa melihat tutorial yang menjelaskan cara memasang senar dengan benar.

Langkah 13: Pengujian

Pengujian
Pengujian
Pengujian
Pengujian

Terakhir, kita harus melihat apakah ukulele telah dipasang dengan benar sedemikian rupa sehingga jarak ideal pada fret pertama adalah 0,1 mm dan pada fret kedua belas kira-kira 1,2 mm.

Anda perlu menyetel senar ukulele. Saya merekomendasikan Anda aplikasi ini: GuitarTuna

Langkah 14: Nikmati Ini

Sekarang, Anda hanya perlu menikmati ukulele Anda.

Jika Anda ingin mengetahui informasi lebih lanjut tentang kami, Anda dapat menemukan kami di:

Twitter: @Innovart_cc

Facebook: @Innovartcc

Instagram: @Innovart_cc

Web: Innovart.cc

Direkomendasikan: