İçindekiler:

Arduino ile DIY Akıllı Elektronik Ukulele: 14 Adım (Resimlerle)
Arduino ile DIY Akıllı Elektronik Ukulele: 14 Adım (Resimlerle)

Video: Arduino ile DIY Akıllı Elektronik Ukulele: 14 Adım (Resimlerle)

Video: Arduino ile DIY Akıllı Elektronik Ukulele: 14 Adım (Resimlerle)
Video: diamond tema ifşa oluyor 2024, Temmuz
Anonim
Arduino ile DIY Akıllı Elektronik Ukulele
Arduino ile DIY Akıllı Elektronik Ukulele

Kendi ukulelenizi nasıl tasarlayabileceğinizi ve onu benzersiz kılacak bazı efektler ekleyebileceğinizi adım adım açıklayacağız, örneğin ukulelenin yüzeyine istediğimiz bir şeyi çizmek veya bazı ışık efektleri eklemek gibi.

Bunu yapmak için bir ukulele seti satın almak gerekiyor.

Enstrümanın nasıl monte edileceğini açıklayacağız ve ortaya çıkabilecek farklı sorunları çözeceğiz.

Adım 1: Malzemeler

Malzemeler
Malzemeler
Malzemeler
Malzemeler

Yapı malzemeleri:

DIY ukulele montaj kiti (başka bir farklı kit olabilir):

1- Vücut.

2-boyun.

3-eyer

4-İp Desteği

5-Köprü

6-Dize somunu.

7-Makine kafası için sabitleme halkası (x4).

8-Makine kafaları (x4).

9-Makine kafaları için montaj vidaları (x8).

10-Makine köprüsü için montaj vidaları (x2).

11-Köprü montaj vidaları için kapaklar (x2).

12-Dizeler (x4).

Elektronik malzemeler:

  • NANO Arduino.
  • Led Çarkı WS2812.
  • İvmeölçer BMA220 (isteğe bağlı).
  • Pil konektörü.
  • 9V pil.
  • Değiştirmek.

Diğerleri

  • Ahşap verniği.
  • cırt cırt.
  • Lehimleme tenekesi.
  • Vernikleme için koruyucu plastik.
  • Sıcakta eriyen silikon.

Aletler:

  • Lazer işleme.
  • zımpara kağıdı
  • Yıldız tornavida.
  • Boya fırçası.
  • Sıcak eriyik tabancası.
  • Kalay havya.

2. Adım: Ukulele'yi özelleştirin

Ukulele'yi özelleştirin
Ukulele'yi özelleştirin
Ukulele'yi özelleştirin
Ukulele'yi özelleştirin
Ukulele'yi özelleştirin
Ukulele'yi özelleştirin

Ukulelemizi kostümlemek için, gövde üzerinde lazer kesici ile bir çizimin gravürünü yapabiliriz. O aletin olmaması durumunda, onu boyayabiliriz.

Seçtiğimiz resim beliren ilk resimdir.

Her şeyden önce, gravürü yapmak için çizim şablonunu tasarlamamız gerekiyor.

Bunun için https://inkscape.org/es/descargas/ linkinden edinebileceğimiz 'Inkscape' isimli bir yazılım kullanacağız.

Kullanmak için kullanmak istediğimiz resmi ikinci resimde gösterdiğimiz gibi ayarlamalıyız. Aletin çemberi ile elin çemberini ayarlamak için ilk görüntüyü döndürdüğümüze bakabilirsiniz. Daha önce de söylediğimiz gibi, herhangi bir resmi koyabilirsiniz.

3. Adım: Inkscape Kullanarak Bir Görüntüyü Vektörleştirin

Inkscape Kullanarak Görüntüyü Vektörleştirme
Inkscape Kullanarak Görüntüyü Vektörleştirme
Inkscape Kullanarak Görüntüyü Vektörleştirme
Inkscape Kullanarak Görüntüyü Vektörleştirme
Inkscape Kullanarak Görüntüyü Vektörleştirme
Inkscape Kullanarak Görüntüyü Vektörleştirme
Inkscape Kullanarak Görüntüyü Vektörleştirme
Inkscape Kullanarak Görüntüyü Vektörleştirme

Bir pixmap'ten (jpg, png, Inkscape'in açabileceği tarama formatı ne olursa olsun) bir vektör dosyasının nasıl oluşturulacağını göreceğiz.

Inkscape Inkscape, açık kaynaklı bir vektör grafik editörüdür ve başlığından da anlaşılacağı gibi, logoları vektörleştirmek için kullanacağım araç bu. Vektörleştirme adımları Adımlar, yapmak isteyebileceğimiz herhangi bir vektörleştirme için ortaktır.

  1. Resmi Inkscape'de açın
  2. Trace Bitmap Tool Path->Trace Bitmap'i açın
  3. Trace Bitmap seçeneklerinde oynayın
  4. İzlemeyi çalıştır
  5. Sonuçları temizleyin (gerekirse)

"Etrafta oynama" kısmına dikkat edin. İzleme konusunda uzman değilim, bu yüzden bu araca, en iyi sonucu elde edene kadar dönen ve değişen düğmeleri ve ışıkları olan bir kara kutu gibi davranıyorum.

Adım 4: Logo Gravür

Image
Image
Logo Gravür
Logo Gravür
Logo Gravür
Logo Gravür

Bunun için çizimin gravürünün üretileceği yüzeyin bir silüetine sahip olmak önemlidir.

Gravür yapmak için 'T2Laser' yazılımını kullanacağız. Bu yazılımı şu adresten edinebiliriz:

Yazılımı açtıktan sonra son adımda oluşturduğumuz imajı yüklememiz gerekiyor. Ardından "kontrol lazeri" butonuna basın ve cnc kontrolleri belirir. İki resim, lazer kesicimizle kazımanın sürecini ve sonucunu göstermektedir.

Adım 5: Zımparalama ve Vernikleme

Zımparalama ve Vernikleme
Zımparalama ve Vernikleme
Zımparalama ve Vernikleme
Zımparalama ve Vernikleme
Zımparalama ve Vernikleme
Zımparalama ve Vernikleme
Zımparalama ve Vernikleme
Zımparalama ve Vernikleme

Ukulelemizi parlak ve pürüzsüz bir katmanla bırakmak için aletimizi oluşturan iki parçayı özenle zımparalayabiliriz, çünkü yapılan çizime zarar verebiliriz (ukuleleyi boyamayı seçtiyseniz, önce zımparalayın). Daha sonra iki parçamızı daha koyu bir renk alması ve ahşabın daha dayanıklı olması için vernikleyeceğiz. Normal bir ahşap verniği kullanabiliriz, özel olması gerekmez.

Verniğimizi aldıktan sonra, biraz çözülmesi için biraz çözücü ile karıştırıyoruz. Daha sonra karışımı bir fırça ile enstrümanın boynuna ve gövdesine sürerek kurumasını sağlıyoruz.

Ürünün ikinci bir kata ihtiyacı olduğunu görürsek, iki parçayı biraz zımparalayabilir ve tekrar bir kat seyreltilmiş vernik uygulayabiliriz.

** ÖNLEMLER: Vernik kimyasal bir üründür, bu nedenle bu işlemin havalandırılan bir yerde yapılması, kokuların solunmaması için maske ve koruyucu gözlük kullanılması gerekir.

Doğru çalışabilmemiz için ihtiyaç duyduğumuz malzemeler fotoğraflarda görünenlerdir. Esas olarak bir fırça, bir vernik kutusu (bizim durumumuzda kırmızı renk), biraz solvent ve görsel koruma ile çalışacağız. Ve her şeyden önce iyi havalandırılmış alanlarda çalışın.

6. Adım: Donanım

Donanım
Donanım
Donanım
Donanım
Donanım
Donanım

Arduino'lu plaketimiz, acelerometre ve ledli çark küçük bir parantez içerisinde tüm bileşenlerin cihaz içinde hareket etmesini engellemek için tanıtılacaktır.

Ayrıca daha rahat olması için bir pil tutucu ve bir anahtar ekledik ve cihazı kullanmadığımız zamanlarda pili yıpratmıyoruz. Bu desteği ukulele gövdesinin iç yüzüne bir parça Velcro (silikon ve sıcak eriyik tabanca ile de çalışır) ile tutturacağız. Öte yandan LED tekerlek delikten daha küçük olduğu için düşecekti. Bir destek, iyi tutunması ve işlevini yerine getirebilmesi için tasarlanmıştır.

7. Adım: Yazılım

Yazılım
Yazılım
Yazılım
Yazılım
Yazılım
Yazılım

Ukulelemize özel bir dekor kazandırmak için bir tekerli led sayesinde ışık efektleri ekleyebildik. WS2812'yi kullanacağız, ancak veri sayfasındaki talimatları izleyerek başka birini kullanabilirsiniz. Yerçekimi etkisi yapmamızı sağlayan bir acelerometre (BMA220) de kullanacağız.

Aslında Arduino'nun 'Adafruit' adlı bilgisayar kütüphanesinde bulunan 4 adet ışık oyunumuz olacak. Bunun için üç bileşen arasında doğru bir bağlantı kurmalıyız: Arduino NANO, WS2812 ve BMA220, ilk resimde göründüğü gibi.

Kırmızı kablolar güç içindir, GND siyahları ve diğerleri doğru çalışma için gerekli bağlantılar. Işık kiti için kullandığımız kod "play_of_light_v0.ino" adlı bir dosyaya eklenmiştir. Programın doğru çalışması için gerekli kütüphaneleri eklediğinizden emin olun. Devreye harici eklediğimiz pilin minimum voltajı 9V olmalı ve tüm devreye güç sağlamak için gerekli minimum akımı verebilmesini sağlamalıyız.

//Değişkenler contador ve kesinti sayacı; //Değişkenler Ejemplo mezar #include #include #include #define NUMBER_OF_LEDS_ON_RING 16 #define NEOPIXEL_RING_DATA_PIN 9

bayt Sürüm[3];

int8_t x_data; int8_t y_data; int8_t z_data; bayt aralığı = 0x00; kayan bölme = 16; yüzer x, y, z; kayan nokta pi = 3.14159265359; float nx, ny, açı; int led, öncekiLed; QueueList ledQueue; Adafruit_NeoPixel neoring = Adafruit_NeoPixel(NUMBER_OF_LEDS_ON_RING, NEOPIXEL_RING_DATA_PIN, NEO_GRB + NEO_KHZ800);

//Değişkenler Luces arcoiris

#include #ifdef _AVR_ #include #endif #define PIN 9 // Parametre 1 = şeritteki piksel sayısı // Parametre 2 = Arduino pin numarası (çoğu geçerlidir) // Parametre 3 = piksel tipi bayraklar, gerektiği gibi ekleyin: // NEO_KHZ800 800 KHz bit akışı (çoğu NeoPixel ürünü, WS2812 LED'li) // NEO_KHZ400 400 KHz (klasik 'v1' (v2 değil) FLORA pikselleri, WS2811 sürücüleri) // NEO_GRB Pikselleri, GRB bit akışı (çoğu NeoPixel ürünü) için kablolanmıştır / / NEO_RGB Pikseller RGB bit akışı için bağlanmıştır (v2 değil v1 FLORA pikselleri) // NEO_RGBW Pikseller RGBW bit akışı için bağlanmıştır (NeoPixel RGBW ürünleri) Adafruit_NeoPixel şeridi = Adafruit_NeoPixel(16, PIN, NEO_GRB + NEO_KHZ800); // ÖNEMLİ: NeoPixel tükenme riskini azaltmak için, // piksel güç kablolarına 1000 uF kapasitör ekleyin, ilk pikselin veri girişine 300 - 500 Ohm direnç ekleyin // ve Arduino ile ilk piksel arasındaki mesafeyi en aza indirin. Canlı bir devreye // bağlamaktan kaçının… gerekiyorsa önce GND'yi bağlayın.

// Değişkenler Rueda de colores

// NeoPixel Ring basit çizimi (c) 2013 Shae Erisson // AdaFruit NeoPixel kitaplığının geri kalanıyla eşleşmesi için GPLv3 lisansı altında yayınlandı

#Dahil etmek

#ifdef _AVR_ #include #endif

// Arduino'daki hangi pin NeoPixels'e bağlı?

// Biblo veya Gemma'da bunu 1 #define PIN 9 olarak değiştirmenizi öneririz

// Arduino'ya kaç NeoPiksel bağlı?

#define NUMPIXELS 16

// NeoPixel kütüphanesini kurarken kaç piksel ve sinyal göndermek için hangi pini kullanacağını söyleriz.

// Daha eski NeoPixel şeritleri için üçüncü parametreyi değiştirmeniz gerekebileceğini unutmayın -- olası değerler hakkında daha fazla bilgi için en büküm // örneğine bakın. Adafruit_NeoPixel piksel = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); int gecikme değeri = 50; // 50ms gecikme

// Değişkenler renkler aleatorios

#include #ifdef _AVR_ #include #endif

#define PIN 9

#define NUM_LEDS 16

#define PARLAKLIK 200

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

bayt 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 }; /////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////

/METOD KURULUMU

void setup() { //Código: Dirección de la mezarda neoring.begin(); neoring.setBrightness(200); Seri.başla(9600); Wire.begin(); Wire.beginTransmission(0x0A); // ivmeölçerin adresi // aralık ayarları Wire.write(0x22); //kayıt adresi Wire.write(aralık); //"0x00""0x01""0x02""0x03" olarak ayarlanabilir, wiki'de Datashhet'e bakın // düşük geçiş filtresi Wire.write(0x20); //kayıt adresi Wire.write(0x05); //"0x05""0x04"……"0x01""0x00" olarak ayarlanabilir, wiki'de Datashhet'e bakın Wire.endTransmission();

//Kodigo; Luces Arcoiris

// Bu Biblo 5V 16MHz içindir, bir Biblo kullanmıyorsanız bu üç satırı kaldırabilirsiniz #if tanımlı (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // Biblo sonu özel kodu strip.begin(); şerit.göster(); // Tüm pikselleri 'kapalı' olarak başlat

//Código Rueda de colores

// Bu Biblo 5V 16MHz içindir, bir Biblo kullanmıyorsanız bu üç satırı kaldırabilirsiniz #if tanımlı (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // Biblo sonu özel kodu

piksel.begin(); // Bu, NeoPixel kitaplığını başlatır.

//Codigo Kesintisi

sayaç = 1;

//Codigo Colores çeşitleri

// Bu Biblo 5V 16MHz içindir, Biblo kullanmıyorsanız bu üç satırı kaldırabilirsiniz #if tanımlı (_AVR_ATtiny85_) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // Biblo sonu özel kodu strip.setBrightness(PARLAKLIK); strip.begin(); şerit.göster(); // Tüm pikselleri 'kapalı' olarak başlat }

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

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

/Bucle sonsuz

void loop() { //Caso 1: Cehennemin dibine vurdu; if(counter == 1){ for(int i=0;i 0.0){ if(nx 0.0) angle+=180; başka açı += 360; }//else if(açı == 360.0) açı = 0.0; led = dairesel(açı / (360 / NUMBER_OF_LEDS_ON_RING)); // led hareketini düzgün yap if(previousLed == led){ // yapacak bir şey yok } else if (counterClockwiseDistanceBetweenLeds(previousLed, led) <= 8) led = daireselize(previousLed + 1); else led = daireselleştir(öncekiLed - 1); ledQueue.push(led); makeLightShow(); öncekiLed = led; gecikme(25); } sayaç = 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++){ // Gösterilen bazı örnek prosedürler piksellere nasıl gösterileceği: colorWipe1(strip. Color(255, 0, 0), 50); // Kırmızı colorWipe1(şerit. Renk(0, 255, 0), 50); // Yeşil colorWipe1(şerit. Renk(0, 0, 255), 50); // Blue colorWipe1(şerit. Color(0, 0, 0, 255), 50); // Beyaz RGBW // Şuraya bir sinema piksel takibi gönder… TheaterChase(strip. Color(127, 127, 127), 50); // Beyaz tiyatroChase(şerit. Renk(127, 0, 0), 50); // Red theatreChase(strip. Color(0, 0, 127), 50); // Mavi

gökkuşağı(5);

gökkuşağıDöngü(5); tiyatroChaseRainbow(5); } sayaç = 3; }//End if counter==2 //Caso 3: Luces Aleatorias else if(counter == 3){ for(int k=0;k<50;k++){ // Bir NeoPixel seti için ilk NeoPixel 0, saniye 1, piksel sayısı eksi bire kadar. int a=rastgele(255); int b=rastgele(255); int c=rastgele(255); for(int i=0;i

// piksel. Renk, 0, 0, 0'dan 255, 255, 255'e kadar RGB değerleri alır

piksel.setPixelColor(i, piksel. Renk(a, b, c)); // Orta derecede parlak yeşil renk.

piksel.göster(); // Bu, güncellenen piksel rengini donanıma gönderir.

gecikme (gecikme); // Belirli bir süre için gecikme (milisaniye olarak).

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

// piksel. Renk, 0, 0, 0'dan 255, 255, 255'e kadar RGB değerleri alır

piksel.setPixelColor(i, piksel. Renk(a, b, c)); // Orta derecede parlak yeşil renk.

piksel.göster(); // Bu, güncellenen piksel rengini donanıma gönderir.

gecikme (gecikme); // Belirli bir süre için gecikme (milisaniye olarak).

} } sayaç = 4; } else if(counter == 4){ for(int g=0;g<=6;g++){ // Piksellerin nasıl görüntüleneceğini gösteren bazı örnek prosedürler: colorWipe(strip. Color(255, 0, 0), 50); // Red colorWipe(strip. Color(0, 255, 0), 50); // Green colorWipe(strip. Color(0, 0, 255), 50); // Blue colorWipe(strip. Color(0, 0, 0, 255), 50); // Beyaz beyazOverRainbow(20, 75, 5); darbeBeyaz(5); // tamBeyaz(); // gecikme(2000); gökkuşağıSoluk2Beyaz(3, 3, 1);

}

sayaç = 1; } } /////////////////////////////////////////// /////////////////////////////// /////////////// ///////////////////////////////////////////// ////////////////

/Metodos del Ejemplo de la mezarda

void AccelerometerInit() { Wire.beginTransmission(0x0A); // ivmeölçerin adresi // ivmeölçeri sıfırla Wire.write(0x04); // X verisi Wire.endTransmission(); Wire.requestFrom(0x0A, 1); // bağımlı cihazdan 6 bayt talep et #2 while(Wire.available()) // bağımlı, istenenden daha azını gönderebilir { Version[0] = Wire.read(); // karakter olarak bir bayt al } x_data=(int8_t)Sürüm[0]>>2; Wire.beginTransmission(0x0A); // ivmeölçerin adresi // ivmeölçeri sıfırla Wire.write(0x06); // Y verisi Wire.endTransmission(); Wire.requestFrom(0x0A, 1); // bağımlı cihazdan 6 bayt talep et #2 while(Wire.available()) // bağımlı, istenenden daha azını gönderebilir { Version[1] = Wire.read(); // karakter olarak bir bayt al } y_data=(int8_t)Sürüm[1]>>2; Wire.beginTransmission(0x0A); // ivmeölçerin adresi // ivmeölçeri sıfırla Wire.write(0x08); // Z verisi Wire.endTransmission(); Wire.requestFrom(0x0A, 1); // bağımlı cihazdan 6 bayt talep et #2 while(Wire.available()) // bağımlı, istenenden daha azını gönderebilir { Version[2] = Wire.read(); // karakter olarak bir bayt al } z_data=(int8_t)Version[2]>>2; x=(kayan)x_data/bölen; y=(kayan)y_data/bölen; z=(kayan)z_data/bölen; Seri.print("X="); Seri.baskı(x); // Serial.print(" "); karakterini yazdır Seri.print("Y="); Seri.baskı(y); // Serial.print(" "); karakterini yazdır Seri.print("Z="); // Serial.println(z) karakterini yazdır; }

int daireselleştir(int konum){

if(konum >= NUMBER_OF_LEDS_ON_RING) dönüş(konum - NUMBER_OF_LEDS_ON_RING); else if(konum < 0) return(konum + NUMBER_OF_LEDS_ON_RING); başka dönüş(konum); }

int mesafe;

int counterClockwiseDistanceBetweenLeds(int prevPos, int nextPos){ Distance = nextPos - prevPos; if(mesafe < 0) mesafe += NUMBER_OF_LEDS_ON_RING; dönüş(mesafe); }

int ledPosition, currentQueueSize;

#define NUMBER_OF_LEDS_TO_SHINE 10 int parlaklıkAdım = 255/NUMBER_OF_LEDS_TO_SHINE;

geçersiz 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

// Noktaları arka arkaya bir color void ile doldurun colorWipe(uint32_t c, uint8_t wait) { for(uint16_t i=0; i

void gökkuşağı(uint8_t bekleyin) {

uint16_t ben, j;

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

// Biraz farklı, bu gökkuşağının her yere eşit dağılmasını sağlar

void RainbowCycle(uint8_t bekle) { uint16_t i, j;

for(j=0; j<256*5; j++) { // çarktaki tüm renklerin 5 döngüsü for(i=0; i< strip.numPixels(); i++) { strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255); } şerit.göster(); gecikme(bekle); } }

//Tiyatro tarzı gezici ışıklar.

void TheaterChase(uint32_t c, uint8_t wait) { for (int j=0; j<10; j++) { //10 döngü takip for (int q=0; q < 3; q++) { for (uint16_t i=) 0; i < strip.numPixels(); i=i+3) { strip.setPixelColor(i+q, c); //her üçüncü pikseli } strip.show();

gecikme(bekle);

for (uint16_t i=0; i < strip.numPixels(); i=i+3) { strip.setPixelColor(i+q, 0); // her üçüncü pikseli kapat } } } }

//Gökkuşağı efektli tiyatro tarzı sürünen ışıklar

void TheaterChaseRainbow(uint8_t wait) { for (int j=0; j < 256; j++) { // çarktaki 256 rengin hepsini döndürün for (int q=0; q < 3; q++) { for (uint16_t i=0; i < strip.numPixels(); i=i+3) { strip.setPixelColor(i+q, Wheel((i+j) % 255); //her üçüncü pikseli } strip.show();

gecikme(bekle);

for (uint16_t i=0; i < strip.numPixels(); i=i+3) { strip.setPixelColor(i+q, 0); // her üçüncü pikseli kapat } } } }

// Bir renk değeri elde etmek için 0 ile 255 arasında bir değer girin.

// Renkler r - g - b - r'ye bir geçiştir. uint32_t Wheel(byte WheelPos) { WheelPos = 255 - WheelPos; if(WheelPos < 85) { dönüş şeridi. Color(255 - WheelPos * 3, 0, WheelPos * 3); } if(WheelPos < 170) { WheelPos -= 85; dönüş şeridi. Renk(0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; dönüş şeridi. Renk(WheelPos * 3, 255 - WheelPos * 3, 0); }

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

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

/ Metodos Rueda de colores

// int elegirColor = random(0x000000, 0xffffff);//Seçim aleatoriamente girişi bugünün en büyük renklerinin özeti 0x000000 y 0xFFFFFF

//CylonEyeColor=HtmlColor(elegirColor); //int elegirColor = random(1, 7);//Podemos elegir aleatoriamente 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

// Noktaları arka arkaya bir renkle doldurun

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

void pulseWhite(uint8_t bekleyin) {

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

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

for(uint16_t i=0; ben

void gökkuşağıFade2White(uint8_t bekle, int gökkuşağı Döngüleri, int beyaz Döngüler) {

şamandıra fadeMax = 100.0; int fadeVal = 0; uint32_t tekerlek Valfi; int redVal, greenVal, blueVal;

for(int k = 0; k < RainbowLoops; k ++){ for(int j=0; j<256; j++) { // Çarktaki tüm renklerin 5 çevrimi

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

WheelVal = Wheel(((i * 256 / strip.numPixels()) + j) & 255);

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

greenVal = green(wheelVal) * float(fadeVal/fadeMax); blueVal = blue(wheelVal) * float(fadeVal/fadeMax);

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

}

//İlk döngü, yavaşla!

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

//Son döngü, yavaşla!

else if(k == gökkuşağıDöngüleri - 1 && j > 255 - fadeMax){ fadeVal--; }

şerit.göster();

gecikme(bekle); } }

gecikme(500);

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

for(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])); } şerit.göster(); }

gecikme(2000);

for(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])); } şerit.göster(); } }

gecikme(500);

}

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

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

int kafa = beyazUzunluk - 1;

int kuyruk = 0;

int döngüler = 3;

int döngüNum = 0;

statik imzasız uzun lastTime = 0;

süre(doğru){

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

if(millis() - lastTime > whiteSpeed) {

kafa++; kuyruk++; if(head == strip.numPixels()){ loopNum++; } lastTime = millis(); }

if(loopNum == döngüler) dönüş;

head%=strip.numPixels(); tail%=strip.numPixels(); şerit.göster(); gecikme(bekle); } } } void fullWhite() { for(uint16_t i=0; i

// Biraz farklı, bu gökkuşağının her yere eşit dağılmasını sağlar

void RainbowCycle1(uint8_t bekle) { uint16_t i, j;

for(j=0; j<256 * 5; j++) { // çarktaki tüm renklerin 5 döngüsü for(i=0; i< strip.numPixels(); i++) { strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255); } şerit.göster(); gecikme(bekle); } }

void gökkuşağı1(uint8_t bekleyin) {

uint16_t ben, j;

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

// Bir renk değeri elde etmek için 0 ile 255 arasında bir değer girin.

// Renkler r - g - b - r'ye bir geçiştir. uint32_t Wheel1(byte WheelPos) { WheelPos = 255 - WheelPos; if(WheelPos < 85) { dönüş şeridi. Color(255 - WheelPos * 3, 0, WheelPos * 3, 0); } if(WheelPos < 170) { WheelPos -= 85; dönüş şeridi. Color(0, WheelPos * 3, 255 - WheelPos * 3, 0); } WheelPos -= 170; dönüş şeridi. Renk(WheelPos * 3, 255 - WheelPos * 3, 0, 0); }

uint8_t red(uint32_t c) {

dönüş (c >> 16); } uint8_t green(uint32_t c) { dönüş (c >> 8); } uint8_t mavi(uint32_t c) { dönüş (c); }

Adım 8: 3D Tasarım

3D Tasarım
3D Tasarım
3D Tasarım
3D Tasarım
3D Tasarım
3D Tasarım

İlk olarak, doğru olduğundan emin olmak için donanım bileşenlerinizi boyutlandırmalısınız. Bizimkilerle aynıysa, size ödünç verdiğimiz dosyaları kullanabilirsiniz.

Her iki destek de aşağıdakileri içeren bir 3D yazıcı ile tasarlanmıştır:

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

Son olarak, ışık son iki resimdeki gibi olacaktır.

Adım 9: Boynun Montajı

Boyun Montajı
Boyun Montajı
Boyun Montajı
Boyun Montajı

Önce semeri boyuna yerleştireceğiz. Vidaların tutması gereken delikler orada değil, bu yüzden nereye gitmeleri gerektiğini işaretleyerek ve bir burgu ile dikkatlice, deliği açarak onları yapmamız gerekecek.

Aynısı, boynun kendisini alet gövdesine tutan vidaların bulunduğu delikler için de geçerlidir. Bu sabitleme için vida olmadığından bunları yapmak gerekli değildir, ancak yapmak istersek sorun olmaz.

ÖNEMLİ: Direğin başlangıcı ile diyapazonun başlangıcı arasında 5 mm boşluk bırakın, çünkü o deliğe somun yerleştirilecektir.

Somunu şekilde gösterilen yönde tutkalla yapıştıracağız.

Son olarak direğin başında bulunan deliklere 4 adet pini resimde görüldüğü gibi her pini 2 adet kısa vida ile tutarak tanıtacağız.

Adım 10: Birdge'i Monte Etme

Kuşun Montajı
Kuşun Montajı
Kuşun Montajı
Kuşun Montajı

Köprü, gövde üzerinde merkezi bir konumda iki uzun vida ile yapıştırılarak sabitlenir. Vücuttaki doğru pozisyonu bir kalemle işaretlemeniz önerilir. Resimde işaretli olan mesafeleri alacağız.

İki bileşenin birleşiminde yapıştırıcı uygulayacağız. Sıkma vidası yardımıyla iki parçayı derz kuruyana kadar dikkatlice sabitliyoruz. Ahşap için 1,5 mm matkap ucu ile vidalar için iki delik açacağız. Köprüyü gövdedeki iki uzun vidayla sabitleyin. Ve son olarak koruyucu kapakları vidaların başlarına takıyoruz.

Adım 11: Gövde ve Boyun Montajı

Gövde ve Boyun Montajı
Gövde ve Boyun Montajı
Gövde ve Boyun Montajı
Gövde ve Boyun Montajı

İki parçayı birleştirmek için, gövdenin başında, sahip olduğu iki çıkıntı ile boynun sığacağı delikler var. Bunları tutkalla veya sıcak eriyik tabancasıyla yapıştırabiliriz. Daha iyi bir sabitleme elde etmek için, diyapazonun ucundaki delikleri gövdeye birleştirmek için açabilirsiniz.

Adım 12: Ukulele Tellerini Yerleştirin

Image
Image
Ukulele Dizelerini Koy
Ukulele Dizelerini Koy
Ukulele Dizelerini Koy
Ukulele Dizelerini Koy

Son olarak enstrümanımız bitecek şekilde telleri yerleştirmeliyiz.

Daha önce, direğin içinden geçen çıkıntılara pimlerin sabitleme halkalarını yerleştireceğiz. İpleri yerleştirmek için setle birlikte gelen 4 ipi aldık. İlk önce her bir dizeyi ayırt etmeniz gerekir çünkü hepsi aynı değildir. Her ipin bir ucunu (iki kalın olanı normal düğümlü ve iki ince olanı çift olan) bağlamanız ve ipleri köprünün yuvalarına sokmanız gerekir.

Ardından dizeleri şu şekilde yerleştireceğiz:

• Birinci konum: G dizisi (ikinci en kalın dizi).

• İkinci konum: C dizisi (daha kalın dizi).

• Üçüncü konum: E dizisi (ikinci daha ince dizi).

• Dördüncü konum: Bir dizi (daha ince dizi).

İpleri sağlanan fişin deliklerine geçirin. Pim üzerinde iki veya üç tur vererek her bir ipi sabitlemeye çalışın. Telleri çok fazla kuvvet uygulamadan gerin ve tellerle sele arasındaki mesafeyi kontrol edin.

Bunun nasıl yapılacağına dair herhangi bir şüpheniz varsa, dizeleri nasıl doğru bir şekilde koyduğunuzu açıklayan o öğreticiyi kullanabilirsiniz.

Adım 13: Test Etme

Test yapmak
Test yapmak
Test yapmak
Test yapmak

Son olarak, ukulelenin, ilk perdedeki ideal mesafe 0,1 mm ve on ikinci perdede yaklaşık 1,2 mm olacak şekilde düzgün bir şekilde monte edilip edilmediğini görmeliyiz.

Ukulele dizelerini ayarlamanız gerekir. Size şu uygulamayı öneriyorum: GuitarTuna

Adım 14: Keyfini Çıkarın

Şimdi size sadece ukulelenizin tadını çıkarmak kalıyor.

Bizimle ilgili daha fazla bilgi edinmek isterseniz, bizi şurada bulabilirsiniz:

Twitter: @Innovart_cc

Facebook: @Innovartcc

Instagram: @Innovart_cc

Web: Innovart.cc

Önerilen: