Orodha ya maudhui:

Ukulele wa Elektroniki wa Smart na Arduino: Hatua 14 (na Picha)
Ukulele wa Elektroniki wa Smart na Arduino: Hatua 14 (na Picha)

Video: Ukulele wa Elektroniki wa Smart na Arduino: Hatua 14 (na Picha)

Video: Ukulele wa Elektroniki wa Smart na Arduino: Hatua 14 (na Picha)
Video: Zuchu Amwaga Machozi Baada Ya kupewa Kiss Na Diamond Platinumz 2024, Julai
Anonim
Ukulele wa Elektroniki wa Smart na Arduino
Ukulele wa Elektroniki wa Smart na Arduino

Tutaelezea hatua kwa hatua jinsi unavyoweza kubuni ukulele wako mwenyewe na kuongeza athari ambazo zitaifanya iwe ya kipekee, kama kuchora kitu tunachotaka juu ya ukulele au kuongeza athari zingine nyepesi.

Ili kufanya hivyo, ni muhimu kununua kit cha ukulele.

Tutaelezea jinsi ya kukusanya chombo, na kutatua shida tofauti ambazo zinaweza kuonekana.

Hatua ya 1: Vifaa

Vifaa
Vifaa
Vifaa
Vifaa

Vifaa vya muundo:

Kitanda cha kuweka ukelele cha DIY (inaweza kuwa kit kingine tofauti) iliyoundwa na:

1- Mwili.

2-Shingo.

3-Tandiko

Msaada wa 4-Kamba

5-Daraja

6-String nut.

7-Kurekebisha pete ya kichwa cha mashine (x4).

Vichwa vya Mashine 8 (x4).

Vipimo 9 vya kuweka vichwa vya mashine (x8).

Vipuli 10 vya kuweka daraja la mashine (x2).

Vifuniko 11 vya kifuniko cha screws za kupandisha daraja (x2).

Kamba-12 (x4).

Vifaa vya elektroniki:

  • NANO Arduino.
  • Gurudumu la Leds WS2812.
  • Accelerometer BMA220 (hiari).
  • Kiunganishi cha betri.
  • Betri ya 9V.
  • Badilisha.

Wengine

  • Varnish ya kuni.
  • Velcro.
  • Bati ya kulehemu.
  • Plastiki ya kinga ya varnishing.
  • Moto kuyeyuka silicone.

Zana:

  • Mchoro wa laser.
  • Sandpaper
  • Bisibisi ya nyota.
  • Brashi ya rangi.
  • Moto kuyeyuka bunduki.
  • Bati ya kutengeneza chuma.

Hatua ya 2: Badilisha ukulele ikufae

Customize Ukulele
Customize Ukulele
Customize Ukulele
Customize Ukulele
Customize Ukulele
Customize Ukulele

Ili kugharimu ukulele wetu tunaweza kutengeneza engraving ya kuchora na mkata laser kwenye mwili. Katika kesi ya kutokuwa na zana hiyo, tunaweza kuipaka rangi.

Picha ambayo tumechagua ni ya kwanza kuonekana.

Kwanza kabisa, tunapaswa kubuni templeti ya kuchora ili kufanya engraving.

Ili kutekeleza hilo, tutatumia programu inayoitwa 'Inkscape' ambayo tunaweza kupata kutoka kwa kiunga hiki:

Ili kuitumia, lazima turekebishe picha ambayo tunataka kutumia kama tunavyoonyesha kwenye picha ya pili. Unaweza kuangalia kuwa tumebadilisha picha ya awali ili kurekebisha cicle ya mkono na mduara wa chombo. Kama tulivyosema hapo awali, unaweza kuweka picha yoyote.

Hatua ya 3: Vectorize Picha Kutumia Inkscape

Vectorize Picha Kutumia Inkscape
Vectorize Picha Kutumia Inkscape
Vectorize Picha Kutumia Inkscape
Vectorize Picha Kutumia Inkscape
Vectorize Picha Kutumia Inkscape
Vectorize Picha Kutumia Inkscape
Vectorize Picha Kutumia Inkscape
Vectorize Picha Kutumia Inkscape

Tutaona jinsi ya kuunda faili ya vector kutoka kwa pixmap (jpg, png, muundo wowote wa raster ambayo Inkscape inaweza kufungua).

Inkscape Inkscape ni kihariri cha picha ya vector ya chanzo wazi, na kama kichwa kinamaanisha, hiki ndicho chombo ambacho nitatumia kuorodhesha nembo. Vectorising hatua ni kawaida kwa vectorization yoyote ambayo tunataka kufanya.

  1. Fungua picha katika Inkscape
  2. Fungua Njia ya Chombo cha Bitmap ya Trace-> Fuatilia Bitmap
  3. Cheza karibu na chaguzi za Trace Bitmap
  4. Endesha ufuatiliaji
  5. Safisha matokeo (ikiwa ni lazima)

Kumbuka sehemu ya "kucheza karibu". Mimi sio mtaalam wa kutafuta, kwa hivyo mimi huchukua zana hii kama sanduku jeusi na visu na taa, kupinduka na kubadilisha hadi nitakapopata matokeo bora.

Hatua ya 4: Nembo ya kuchora

Image
Image
Nembo ya kuchora
Nembo ya kuchora
Nembo ya kuchora
Nembo ya kuchora

Kwa hili, ni muhimu kuwa na silhouette ya uso ambayo engraving ya kuchora itazalishwa.

Ili kutengeneza engraving, tutatumia programu ya 'T2Laser'. Tunaweza kupata programu hii kutoka:

Mara tu tutakapofungua programu, tunapaswa kupakia picha ambayo tumeunda katika hatua ya mwisho. Kisha, bonyeza kitufe cha "kudhibiti laser", na inaonekana vidhibiti vya cnc. Picha mbili zinaonyesha mchakato na matokeo ya kuchonga na mkataji wetu wa laser.

Hatua ya 5: Mchanga na Varnishing

Mchanga na Varnishing
Mchanga na Varnishing
Mchanga na Varnishing
Mchanga na Varnishing
Mchanga na Varnishing
Mchanga na Varnishing
Mchanga na Varnishing
Mchanga na Varnishing

Kuacha ukulele wetu mkali na kwa safu bila ukali tunaweza kulainisha vizuri sehemu mbili zinazounda ala yetu kwa uangalifu, kwa sababu tunaweza kuharibu mchoro ambao umetengenezwa (ikiwa umechagua kuchora ukulele, lazima mchanga kwanza). Kisha tutapaka sehemu zetu mbili ili waweze kupata rangi nyeusi na kuni inatoa upinzani zaidi. Tunaweza kutumia varnish ya kawaida ya kuni, haiitaji kuwa maalum.

Mara tu tunapokuwa na varnish, tunachanganya na kutengenezea kidogo ili iweze kuyeyuka kidogo. Ifuatayo, tunatumia mchanganyiko na brashi kwenye shingo na mwili wa chombo na uiruhusu ikauke.

Ikiwa tunaona kuwa bidhaa inahitaji kanzu ya pili, tunaweza kupaka sehemu mbili kidogo na tupake tena safu ya varnish iliyochemshwa.

Tahadhari: varnish ni bidhaa ya kemikali, kwa hivyo ni muhimu kutekeleza mchakato huu mahali pa hewa, kuvaa kinyago ili kuepuka kuvuta pumzi na miwani ya kinga.

Vifaa ambavyo tunahitaji kuweza kufanya kazi kwa usahihi ni zile zinazoonekana kwenye picha. Hasa tutafanya kazi na brashi, varnish inaweza (kwa upande wetu rangi nyekundu), kutengenezea kidogo na kinga ya kuona. Na juu ya yote fanya kazi katika nafasi zenye hewa ya kutosha.

Hatua ya 6: Vifaa

Vifaa
Vifaa
Vifaa
Vifaa
Vifaa
Vifaa

Jalada letu na Arduino, acelerometer na gurudumu lenye vichwa vitaletwa kwa bracket kidogo ili kuepusha kwamba vifaa vyote vinahamia kwenye chombo.

Tumeongeza pia mmiliki wa betri na swichi ili kuifanya iwe vizuri zaidi na hatuchoki betri wakati hatutumii chombo. Tutaunganisha msaada huu na kipande cha Velcro (pia ingefanya kazi na silicone na bunduki moto kuyeyuka) kwa uso wa ndani wa mwili wa ukulele. Kwa upande mwingine, gurudumu la LED ni dogo kuliko shimo, kwa hivyo linaweza kuanguka. Msaada umeundwa ili iweze kushikilia vizuri na iweze kutekeleza kazi yake.

Hatua ya 7: Programu

Programu
Programu
Programu
Programu
Programu
Programu

Ili kutoa mapambo maalum kwa ukulele wetu, tunaweza kuongeza athari nyepesi kwa gurudumu la viongo. Tutatumia WS2812, lakini unaweza kutumia nyingine yoyote kufuata maagizo ya data. Tutatumia acelerometer (BMA220) pia, ambayo inatuwezesha kufanya athari ya mvuto.

Kwa kweli, tutakuwa na michezo 4 ya nuru, iliyojumuishwa kwenye maktaba ya kompyuta inayoitwa 'Adafruit' ya Arduino. Kwa hilo, lazima tufanye muunganiko sahihi kati ya vitu hivi vitatu: Arduino NANO, WS2812 na BMA220, kama inavyoonekana kwenye picha ya kwanza.

Waya nyekundu ni ya nguvu, weusi wa GND na zingine ni unganisho muhimu kwa operesheni sahihi. Nambari ambayo tulitumia kwa kitanda cha taa imeambatishwa kwenye faili inayoitwa "play_of_light_v0.ino". Hakikisha umejumuisha maktaba muhimu kwa operesheni sahihi ya programu. Betri ambayo tunaongeza nje kwa mzunguko lazima iwe na kiwango cha chini cha voltage ya 9V na lazima tuhakikishe kuwa ina uwezo wa kutoa kiwango cha chini cha sasa muhimu ili kusonga mzunguko mzima.

// Vigezo vinavyoingiliana na kaunta ya kuingiliana; // Vigezo vya Ejemplo gravedad # pamoja # # pamoja #kujumuisha #fafanua Nambari NUMBERLEDI_ON_RING 16 #fafanua NEOPIXEL_RING_DATA_PIN 9

Toleo la Byte [3];

int8_t x_data; int8_t y_data; int8_t z_data; anuwai = 0x00; kuelea divi = 16; kuelea x, y, z; kuelea pi = 3.14159265359; kuelea nx, ny, angle; int kuongozwa, uliopitaLed; Foleni Orodha ya kuongozwaFoleni; Adafruit_NeoPixel neoring = Adafruit_NeoPixel (NUMBER_OF_LEDS_ON_RING, NEOPIXEL_RING_DATA_PIN, NEO_GRB + NEO_KHZ800);

// Vigezo vya Luces arcoiris

#jumuisha #ifdef _AVR_ # pamoja #endif #fafanua PIN 9 // Parameter 1 = idadi ya saizi kwenye strip // Parameter 2 = Arduino pin number (most valid) // Parameter 3 = bendera za aina ya pikseli, ongeza pamoja inahitajika: // NEO_KHZ800 800 KHz kijito kidogo (bidhaa nyingi za NeoPixel w / WS2812 LEDs) // NEO_KHZ400 400 KHz (classic 'v1' (sio v2) saizi za FLORA, madereva WS2811) // Saizi za NEO_GRB zimepigwa waya kwa GRB bitstream (bidhaa nyingi za NeoPixel) / / Pikseli za NEO_RGB zimefungwa kwa waya wa RGB (saizi za v1 FLORA, sio v2) // Saizi za NEO_RGBW zimefungwa kwa mkondo wa RGBW (bidhaa za NeoPixel RGBW) Adafruit_NeoPixel strip = Adafruit_NeoPixel (16, PIN, NEO_GRB + NEO_KHZ800); // MUHIMU: Ili kupunguza hatari ya kuchomwa na NeoPixel, ongeza capacitor 1000 uF kwenye pikseli ya nguvu ya pixel, ongeza kontena la 300 - 500 Ohm kwenye pembejeo la data ya kwanza ya pikseli // na upunguze umbali kati ya Arduino na pikseli ya kwanza. Epuka kuunganisha // kwenye mzunguko wa moja kwa moja… ikiwa ni lazima, unganisha GND kwanza.

// Vigezo Rueda de colores

// Mchoro rahisi wa Gonga la NeoPixel (c) 2013 Shae Erisson // aliachiliwa chini ya leseni ya GPLv3 ili kulinganisha maktaba yote ya AdaFruit NeoPixel

# pamoja

#ifdef _AVR_ # pamoja #endif

// Je! Ni pini ipi kwenye Arduino iliyounganishwa na NeoPixels?

// Kwenye Trinket au Gemma tunashauri kubadilisha hii kuwa 1 #fafanua PIN 9

// Je, ni NeoPixels ngapi zimeunganishwa na Arduino?

#fafanua NUMPIXELS 16

// Tunapoweka maktaba ya NeoPixel, tunaiambia ni saizi ngapi, na ni pini gani ya kutumia kutuma ishara.

// Kumbuka kuwa kwa vipande vya zamani vya NeoPixel unaweza kuhitaji kubadilisha kigezo cha tatu - angalia strandtest // mfano kwa habari zaidi juu ya maadili yanayowezekana. Saizi za Adafruit_NeoPixel = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); kuchelewesha int = 50; // kuchelewa kwa 50ms

// Vigezo vya rangi

#jumuisha #ifdef _AVR_ # pamoja #endif

#fafanua PIN 9

#fafanua NUM_LEDS 16

#fafanua NURU 200

// Ukanda wa Adafruit_NeoPixel = 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 }; /////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////

/ KUWEKA METODO

kuanzisha batili () {// Código: Dirección de la gravedad neoring.begin (); kuweka mwanga Kuweka (200); Serial. Kuanza (9600); Wire.begin (); Uwasilishaji wa waya (0x0A); // anwani ya mipangilio ya kasi ya upeo // anuwai Wire.write (0x22); // anwani ya usajili Wire.write (masafa); // inaweza kuwekwa kwa "0x00" "0x01" "0x02" "0x03", rejea Datashhet kwenye wiki // kichujio cha chini cha pasi Wire.write (0x20); // anwani ya usajili Wire.write (0x05); // inaweza kuwekwa kwa "0x05" "0x04" …… "0x01" "0x00", rejea Datashhet kwenye wiki Wire.endTransmission ();

// Codigo; Luces Arcoiris

// Hii ni ya Trinket 5V 16MHz, unaweza kuondoa laini hizi tatu ikiwa hutumii Trinket #if defined (_AVR_ATtiny85_) ikiwa (F_CPU == 16000000) clock_prescale_set (clock_div_1); # endif // Mwisho wa trinket ukanda maalum wa nambari. kuanza (); onyesha (); // Anzisha saizi zote ili "kuzima"

// Código Rueda de colores

// Hii ni ya Trinket 5V 16MHz, unaweza kuondoa laini hizi tatu ikiwa hutumii Trinket #if defined (_AVR_ATtiny85_) ikiwa (F_CPU == 16000000) clock_prescale_set (clock_div_1); # endif // Mwisho wa nambari maalum ya trinket

saizi. anza (); // Hii inaanzisha maktaba ya NeoPixel.

// Usumbufu wa Codigo

kaunta = 1;

// Codigo Colores tofauti

// Hii ni ya Trinket 5V 16MHz, unaweza kuondoa laini hizi tatu ikiwa hutumii Trinket #if defined (_AVR_ATtiny85_) ikiwa (F_CPU == 16000000) clock_prescale_set (clock_div_1); # endif // Mwisho wa trinket ukanda maalum wa msimbo.setBrightness (BRIGHTNESS); strip. kuanza (); onyesha (); // Anzisha saizi zote ili "kuzima"}

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

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

/ Infinito ya nyuklia

kitanzi batili () {// Caso 1: Juego de luces de la gravedad; ikiwa (counter == 1) {for (int i = 0; i 0.0) {if (nx 0.0) angle + = 180; pembe nyingine + = 360; } // mwisho mwingine ikiwa (angle == 360.0) angle = 0.0; imesababisha = kuzunguka (pembe / (360 / NUMBER_OF_LEDS_ON_RING)); // fanya harakati iliyoongozwa iwe laini ikiwa (iliyotanguliaLed == imeongozwa) {// hakuna cha kufanya} kingine ikiwa (counterClockwiseDistanceBetweenLeds (previousLed, led) <= 8) led = circularize (previousLed + 1); mwingine aliongoza = mzunguko (uliopitaLed - 1); Kusukuma Swala.sukuma (iliyoongozwa); makeLightShow (); uliopitaLed = kuongozwa; kuchelewesha (25); } kaunta = 2; } // Mwisho ikiwa counter == 1 // Caso 2: Codigo del juego de luces del arcoiris nyingine ikiwa (counter == 2) {for (int j = 0; j <5; j ++) {// Baadhi ya mifano ya mifano inayoonyesha jinsi ya kuonyesha kwa saizi: colorWipe1 (strip. Color (255, 0, 0), 50); // Rangi NyekunduFuta1 (ukanda. Rangi (0, 255, 0), 50); // Rangi ya KijaniFuta1 (ukanda. Rangi (0, 0, 255), 50); // Rangi ya BluuFuta1 (ukanda. Rangi (0, 0, 0, 255), 50); // White RGBW // Tuma pikseli ya ukumbi wa michezo ifukuze… ukumbi wa michezoChase (strip. Color (127, 127, 127), 50); // White ukumbi wa michezo Chase (strip. Rangi (127, 0, 0), 50); // ukumbi wa michezo nyekunduChase (strip. Rangi (0, 0, 127), 50); // Bluu

upinde wa mvua (5);

upinde wa mvua Mzunguko (5); ukumbi wa michezoChaseRainbow (5); } kaunta = 3; } // Mwisho ikiwa counter == 2 // Caso 3: Luces Aleatorias mwingine ikiwa (counter == 3) {for (int k = 0; k <50; k ++) {// Kwa seti ya NeoPixels NeoPixel ya kwanza ni 0, pili ni 1, njia yote hadi hesabu ya saizi ukiondoa moja. int a = nasibu (255); int b = nasibu (255); int c = nasibu (255); kwa (int i = 0; i

Pixels // //. Rangi inachukua maadili ya RGB, kutoka 0, 0, 0 hadi 255, 255, 255

saizi.setPixelColor (i, saizi. Rangi (a, b, c)); // Rangi ya kijani kibichi wastani.

saizi. onyesha (); // Hii inapeleka rangi ya pikseli iliyosasishwa kwenye vifaa.

kuchelewesha (kuchelewesha); // Kuchelewa kwa kipindi cha muda (kwa milliseconds).

} = bila mpangilio (255); b = bila mpangilio (255); c = bila mpangilio (255); kwa (int i = NUMPIXELS; i> 0; i -) {

Rangi huchukua maadili ya RGB, kutoka 0, 0, 0 hadi 255, 255, 255

saizi.setPixelColor (i, saizi. Rangi (a, b, c)); // Rangi ya kijani kibichi wastani.

saizi. onyesha (); // Hii inapeleka rangi ya pikseli iliyosasishwa kwenye vifaa.

kuchelewesha (kuchelewesha); // Kuchelewa kwa kipindi cha muda (kwa milliseconds).

}} kaunta = 4; } vingine ikiwa (counter == 4) {for (int g = 0; g <= 6; g ++) {// Baadhi ya taratibu zinazoonyesha jinsi ya kuonyesha kwa saizi: colorWipe (strip. Color (255, 0, 0), 50); // Rangi Nyekundu Futa (ukanda. Rangi (0, 255, 0), 50); // Rangi ya kijaniFuta (ukanda. Rangi (0, 0, 255), 50); // Rangi ya BluuFuta (ukanda. Rangi (0, 0, 0, 255), 50); // Nyeupe NyeupeOverRainbow (20, 75, 5); pigo Nyeupe (5); // kamiliWhite (); // kuchelewa (2000); upinde wa mvuaFade2White (3, 3, 1);

}

kaunta = 1; }} ////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////// //////////////////

/ Metodos del Ejemplo de la kaburi

batili AccelerometerInit () {Wire.beginTransmission (0x0A); // anwani ya accelerometer // weka upya kasi ya waya. andika (0x04); // X data Wire.endUsambazaji (); Ombi la Wire. Toka (0x0A, 1); // ombi ka 6 kutoka kwa kifaa cha watumwa # 2 wakati (Wire.available ()) // mtumwa anaweza kutuma chini ya ombi {Version [0] = Wire.read (); // pokea baiti kama characte} x_data = (int8_t) Toleo [0] >> 2; Uwasilishaji wa waya (0x0A); // anwani ya accelerometer // weka upya kasi ya waya. andika (0x06); // Y data Wire.endUsambazaji (); Ombi la Wire. Toka (0x0A, 1); // ombi ka 6 kutoka kwa kifaa cha watumwa # 2 wakati (Wire.available ()) // mtumwa anaweza kutuma chini ya ombi {Version [1] = Wire.read (); // pokea baiti kama characte} y_data = (int8_t) Toleo [1] >> 2; Uwasilishaji wa waya (0x0A); // anwani ya accelerometer // weka upya kasi ya waya. andika (0x08); // Z data Wire.endUsambazaji (); Ombi la Wire. Toka (0x0A, 1); // ombi ka 6 kutoka kwa kifaa cha watumwa # 2 wakati (Wire.available ()) // mtumwa anaweza kutuma chini ya ombi {Version [2] = Wire.read (); // pokea baiti kama characte} z_data = (int8_t) Toleo [2] >> 2; x = (kuelea) x_data / divi; y = (kuelea) y_data / divi; z = (kuelea) z_data / divi; Serial.print ("X ="); Printa ya serial (x); // chapisha mhusika Serial.print (""); Serial.print ("Y ="); Printa ya serial (y); // chapisha mhusika Serial.print (""); Serial.print ("Z ="); // chapisha mhusika Serial.println (z); }

int circularize (int pos) {

ikiwa (pos> = NUMBER_OF_LEDS_ON_RING) kurudi (pos - NUMBER_OF_LEDS_ON_RING); vinginevyo ikiwa (pos <0) inarudi (pos + NUMBER_OF_LEDS_ON_RING); kurudi nyingine (pos); }

umbali wa int;

int counterClockwiseDistanceBetweenLeds (int prevPos, int nextPos) {umbali = nextPos - prevPos; ikiwa (umbali <0) umbali + = NUMBER_OF_LEDS_ON_RING; kurudi (umbali); }

int ledPosition, sasaQueueSize;

#fafanua NAMU_INANI_ZINAKUZA_UWANGO 10 ndani ya mwangazaStep = 255 / NUMBER_OF_LEDS_TO_SHINE;

utupu makeLightShow () {

kwa (int j = 0; j <NUMBER_OF_LEDS_ON_RING; j ++) neoring.setPixelColor (j, 0, 0, 0); sasaQueueSize = ledQueue.count (); kwa (int k = 0; k <currentQueueSize; k ++) {ledPosition = ledQueue.pop (); kuweka.setPixelColor (ledPosition, 0, (mwangazaStep * k), 0); ikiwa ((k == 0 && currentQueueSize 0) ledQueue.push (ledPosition);} neoring.show ();}

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

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

/ Metodos del juego de luces del arcoiris

// Jaza nukta moja baada ya nyingine na rangi tupu colorWipe (uint32_t c, uint8_t wait) {for (uint16_t i = 0; i

upinde wa mvua utupu (uint8_t subiri) {

uint16_t i, j;

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

// Tofauti kidogo, hii inafanya upinde wa mvua kusambazwa sawa kote

upinde wa mvua upinde wa mvua (uint8_t subiri) {uint16_t i, j;

kwa (j = 0; j <256 * 5; j ++) {// mizunguko 5 ya rangi zote kwenye gurudumu kwa (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } onyesha (); kuchelewesha (subiri); }}

// Taa za kutambaa za mtindo wa ukumbi wa michezo.

ukumbi wa michezo batiliChase (uint32_t c, uint8_t subiri) {kwa (int j = 0; j <10; j ++) {// fanya mizunguko 10 ya kuwafukuza (int q = 0; q <3; q ++) {for (uint16_t i = 0; i <strip.numPixels (); i = i + 3) {strip.setPixelColor (i + q, c); // kugeuza kila pikseli ya tatu kwenye} strip.show ();

kuchelewesha (subiri);

kwa (uint16_t i = 0; i <strip.numPixels (); i = i + 3) {strip.setPixelColor (i + q, 0); // zima kila pikseli ya tatu}}}}

// Taa za kutambaa za mtindo wa ukumbi wa michezo na athari ya upinde wa mvua

ukumbi wa michezo batiliChaseRainbow (uint8_t subiri) {kwa (int j = 0; j <256; j ++) {// zungusha rangi zote 256 kwenye gurudumu la (int q = 0; q <3; q ++) {for (uint16_t i = 0; i <strip.numPixels (); i = i + 3) {strip.setPixelColor (i + q, Gurudumu ((i + j)% 255)); // kugeuza kila pikseli ya tatu kwenye} strip.show ();

kuchelewesha (subiri);

kwa (uint16_t i = 0; i <strip.numPixels (); i = i + 3) {strip.setPixelColor (i + q, 0); // zima kila pikseli ya tatu}}}}

// Ingiza thamani 0 hadi 255 kupata thamani ya rangi.

// Rangi ni mpito r - g - b - kurudi kwa r. uint32_t Gurudumu (byte WheelPos) {WheelPos = 255 - WheelPos; ikiwa (WheelPos <85) {kurudi strip. Rangi (255 - WheelPos * 3, 0, WheelPos * 3); } ikiwa (WheelPos <170) {WheelPos - = 85; kurudi strip. Rangi (0, WheelPos * 3, 255 - WheelPos * 3); } Magurudumu ya Magurudumu - = 170; kurudi strip. Rangi (WheelPos * 3, 255 - WheelPos * 3, 0); }

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

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

/ Metodos Rueda de colores

// int elegirColor = bila mpangilio (0x000000, 0xffffff); // Tafuta dawa

// CylonEyeColor = HtmlColor (elegirColor); // int elegirColor = nasibu (1, 7); CylonEyeColor = HtmlColor (0x00ff00); // ikiwa (elegirColor == 5) CylonEyeColor = HtmlColor (0x200020); // Morado // ikiwa (elegirColor == 6) CylonEyeColor = HtmlColor (0x00ffff); HtmlColor (0x100010); // Rosa // CylonEyeColor = HtmlColor (0x000000);

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

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

/ Metodos hufaida tofauti

// Jaza nukta moja baada ya nyingine na rangi

utupu colorWipe1 (uint32_t c, uint8_t subiri) {kwa (uint16_t i = 0; i

mapigo batili Nyeupe (uint8_t subiri) {

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

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

kwa (uint16_t i = 0; i

utupu upinde wa mvuaFade2White (uint8_t subiri, int rainbowLoops, int whiteLops) {

kuelea fadeMax = 100.0; int fadeVal = 0; uint32_t gurudumuVal; int nyekunduVal, kijaniVal, bluuVal;

kwa (int k = 0; k <rainbowLoops; k ++) {kwa (int j = 0; j <256; j ++) {// mizunguko 5 ya rangi zote kwenye gurudumu

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

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

redVal = nyekundu (wheelVal) * kuelea (fadeVal / fadeMax);

greenVal = kijani (wheelVal) * kuelea (fadeVal / fadeMax); blueVal = bluu (wheelVal) * kuelea (fadeVal / fadeMax);

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

}

// Kitanzi cha kwanza, fifia!

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

// Kitanzi cha mwisho, fifia!

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

onyesha ();

kuchelewesha (subiri); }}

kuchelewesha (500);

kwa (int k = 0; k <nyeupeLoops; k ++) {

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

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

kuchelewa (2000);

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

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

kuchelewesha (500);

}

utupu nyeupeOverRainbow (uint8_t subiri, uint8_t whiteSpeed, uint8_t whiteLength) {

ikiwa (nyeupeLength> = strip.numPixels ()) nyeupeLength = strip.numPixels () - 1;

kichwa int = nyeupe Urefu - 1;

mkia int = 0;

vitanzi int = 3;

kitanziNum = 0;

tuli isiyosainiwa muda mrefu wa mwisho = 0;

wakati (kweli) {

kwa (int j = 0; j <256; j ++) {kwa (uint16_t i = 0; i = mkia && i kichwa && i> = mkia) || (mkia> kichwa && i <= kichwa)) {strip.setPixelColor (i, strip. Color (0, 0, 0, 255)); } mwingine {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); }}

ikiwa (millis () - Mara ya mwisho> WhiteSpeed) {

kichwa ++; mkia ++; ikiwa (kichwa == strip.numPixels ()) {loopNum ++; } Mara ya mwisho = milimita (); }

ikiwa (loopNum == loops) kurudi;

kichwa% = strip.numPixels (); mkia% = strip.numPixels (); onyesha (); kuchelewesha (subiri); }}} utupu kamiliWhite () {kwa (uint16_t i = 0; i

// Tofauti kidogo, hii inafanya upinde wa mvua kusambazwa sawa kote

upinde wa mvua rainyCycle1 (uint8_t subiri) {uint16_t i, j;

kwa (j = 0; j <256 * 5; j ++) {// mizunguko 5 ya rangi zote kwenye gurudumu kwa (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } onyesha (); kuchelewesha (subiri); }}

upinde wa mvua1 (uint8_t subiri) {

uint16_t i, j;

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

// Ingiza thamani 0 hadi 255 kupata thamani ya rangi.

// Rangi ni mpito r - g - b - kurudi kwa r. uint32_t Wheel1 (byte WheelPos) {WheelPos = 255 - WheelPos; ikiwa (WheelPos <85) {kurudi strip. Rangi (255 - WheelPos * 3, 0, WheelPos * 3, 0); } ikiwa (WheelPos <170) {WheelPos - = 85; kurudi strip. Rangi (0, WheelPos * 3, 255 - WheelPos * 3, 0); } Magurudumu ya Magurudumu - = 170; kurudi strip. Rangi (WheelPos * 3, 255 - WheelPos * 3, 0, 0); }

uint8_t nyekundu (uint32_t c) {

kurudi (c >> 16); } uint8_t kijani (uint32_t c) {kurudi (c >> 8); } uint8_t bluu (uint32_t c) {kurudi (c); }

Hatua ya 8: Ubunifu wa 3D

Ubunifu wa 3D
Ubunifu wa 3D
Ubunifu wa 3D
Ubunifu wa 3D
Ubunifu wa 3D
Ubunifu wa 3D

Kwanza, lazima uongeze vifaa vyako vya vifaa ili kuwa na hakika kuhusu sahihi. Ikiwa ni sawa na yetu, unaweza kutumia faili zile zile tunazokukopesha.

Msaada zote mbili zimetengenezwa na printa ya 3D, ambayo pia imejumuishwa kama:

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

Mwishowe, taa itakuwa kama picha mbili za mwisho.

Hatua ya 9: Kuweka Shingo

Kuweka Shingo
Kuweka Shingo
Kuweka Shingo
Kuweka Shingo

Kwanza tutaweka tundu kwenye shingo. Mashimo ambayo screws inahitaji kuishikilia hayapo, kwa hivyo italazimika kuifanya, kuashiria wapi inapaswa kwenda na kwa uangalifu, nager, na kufanya shimo.

Vile vile hutumika kwa mashimo ambapo screws ambazo zinashikilia shingo yenyewe kwa mwili wa chombo. Sio lazima kuzifanya, kwani hakuna visu za kufunga hii, lakini ikiwa tunataka kuifanya, hakutakuwa na shida.

MUHIMU: acha nafasi ya 5mm kati ya mwanzo wa mlingoti na kuanza kwa uma wa kutengenezea, kwa sababu kwenye shimo hilo nati itawekwa.

Tutashika nati na gundi, kwa mwelekeo ulioonyeshwa na takwimu.

Mwishowe, tutaanzisha pini 4 kwenye mashimo ambayo ni mwanzoni mwa mlingoti, tukishikilia kila pini na visu 2 vifupi kama inavyoonyeshwa kwenye picha.

Hatua ya 10: Kuweka Ndege

Kuweka Ndege
Kuweka Ndege
Kuweka Ndege
Kuweka Ndege

Daraja limewekwa na gluing na kwa screws mbili ndefu katika nafasi kuu kwenye mwili. Inashauriwa kuweka alama na penseli nafasi sahihi katika mwili. Tutachukua umbali ambao umewekwa alama kwenye picha.

Tutatumia gundi kwenye umoja wa vitu viwili. Tunatengeneza sehemu hizo mbili kwa uangalifu kwa msaada wa screw inaimarisha hadi kiungo kikauke. Tutatengeneza mashimo mawili ya visu na kipande cha kuchimba visima 1.5mm kwa kuni. Rekebisha daraja na visu mbili ndefu mwilini. Na mwishowe, tunaweka kofia za kinga kwenye vichwa vya vis.

Hatua ya 11: Mkutano wa Mwili na Shingo

Mkutano wa Mwili na Shingo
Mkutano wa Mwili na Shingo
Mkutano wa Mwili na Shingo
Mkutano wa Mwili na Shingo

Kukusanya sehemu hizo mbili, tuna mashimo kichwani mwa mwili, ambapo shingo itafaa na makadirio mawili ambayo inao. Tunaweza kuziunganisha na gundi au kwa bunduki moto kuyeyuka. Ili kuwa na urekebishaji mkubwa, unaweza kutengeneza mashimo yaliyo mwisho wa uma wa kutengenezea ili kuiunganisha na mwili.

Hatua ya 12: Weka Kamba za Ukulele

Image
Image
Weka Kamba za Ukulele
Weka Kamba za Ukulele
Weka Kamba za Ukulele
Weka Kamba za Ukulele

Mwishowe tunapaswa kuweka masharti ili chombo chetu kimekamilika.

Hapo awali tutaingiza pete za kurekebisha pini katika makadirio ya haya ambayo hupitia mlingoti. Ili kuweka masharti, tulichukua kamba 4 zilizokuja na kit. Kwanza lazima utofautishe kila kamba kwa sababu sio sawa. Lazima ufunge ncha moja ya kila kamba (zile mbili nene zilizo na fundo la kawaida, na zile mbili nyembamba zenye mara mbili) na uweke masharti kwenye vifungo vya daraja.

Kisha tutaweka masharti kwa njia ambayo:

• Nafasi ya kwanza: G kamba (kamba ya pili nene).

• Nafasi ya pili: C kamba (kamba nzito).

• Nafasi ya tatu: Kamba ya E (kamba ya pili nyembamba).

• Nafasi ya nne: Kamba (kamba nyembamba).

Piga masharti ndani ya mashimo ya kuziba iliyotolewa. Jaribu kurekebisha kila kamba kwa kutoa zamu mbili au tatu kwenye pini. Punguza kamba bila kutumia nguvu nyingi na angalia umbali kati ya masharti na tandiko.

Ikiwa una shaka yoyote juu ya jinsi ya kutengeneza hiyo, unaweza kutoa mafunzo gani ambayo yanaelezea jinsi ya kuweka masharti kwa usahihi.

Hatua ya 13: Upimaji

Upimaji
Upimaji
Upimaji
Upimaji

Mwishowe, lazima tuone ikiwa ukulele umekusanywa vizuri kwa njia ambayo umbali mzuri kwenye fret ya kwanza ni 0.1mm na mnamo kumi na mbili ni takriban 1.2mm.

Inahitajika kwamba urekebishe kamba za ukulele. Ninakupendekeza programu hii: GuitarTuna

Hatua ya 14: Furahiya

Sasa, lazima ufurahie ukulele wako tu.

Ikiwa unataka kujua habari zaidi juu yetu, unaweza kutupata katika:

Twitter: @Innovart_cc

Facebook: @Innovartcc

Instagram: @Innovart_cc

Wavuti: Innovart.cc

Ilipendekeza: