Мазмұны:

DIY ақылды электронды Ukulele Arduino көмегімен: 14 қадам (суреттермен)
DIY ақылды электронды Ukulele Arduino көмегімен: 14 қадам (суреттермен)

Бейне: DIY ақылды электронды Ukulele Arduino көмегімен: 14 қадам (суреттермен)

Бейне: DIY ақылды электронды Ukulele Arduino көмегімен: 14 қадам (суреттермен)
Бейне: Crypto Pirates Daily News – 31 января 2022 г. – последнее обновление новостей о криптовалютах 2024, Қараша
Anonim
DIY ақылды электронды Ukulele Arduino көмегімен
DIY ақылды электронды Ukulele Arduino көмегімен

Біз біртіндеп өзіңіздің укулелеңізді қалай жобалау керектігін түсіндіреміз және оны бірегей ететін эффектілерді қосамыз, мысалы, укулеле бетіне қалаған нәрсені салу немесе жарық эффекттерін қосу.

Ол үшін укулеле жинағын сатып алу қажет.

Біз аспапты қалай жинау керектігін және пайда болуы мүмкін түрлі мәселелерді шешеміз.

1 -қадам: материалдар

Материалдар
Материалдар
Материалдар
Материалдар

Құрылымдық материалдар:

DIY үкеле монтаждау жинағы (бұл басқа жиынтық болуы мүмкін):

1- Дене.

2-мойын.

3-ер-тоқым

4-арқанды қолдау

5-көпір

6-бұрандалы гайка.

7-Машина басына арналған бекіту сақинасы (x4).

8-Машина бастары (x4).

9-Машина бастарына арналған бекіту бұрандалары (x8).

10-Машиналық көпірге бекітетін бұрандалар (x2).

11-Көпірді бекіту бұрандаларына арналған қақпақ қақпақтары (x2).

12-жолдар (x4).

Электронды материалдар:

  • NANO Arduino.
  • Led дөңгелегі WS2812.
  • BMA220 акселерометрі (міндетті емес).
  • Батарея қосқышы.
  • 9В батарея.
  • Ауыстыру.

Басқалар

  • Ағаш лак.
  • Velcro.
  • Пісіру қалайы.
  • Лакпен қаптауға арналған қорғаныш пластик.
  • Ыстық балқытылған силикон.

Құралдар:

  • Лазерлік гравировка.
  • Қағаз
  • Жұлдызды бұрағыш.
  • Бояу щеткасы.
  • Ыстық балқытылған мылтық.
  • Қалайы дәнекерлейтін темір.

2 -қадам: Укулелені баптаңыз

Укулеланы реттеңіз
Укулеланы реттеңіз
Укулеланы реттеңіз
Укулеланы реттеңіз
Укулеланы реттеңіз
Укулеланы реттеңіз

Укулелемізді сәндеу үшін денеге лазерлік кескішпен суреттің гравюрасын жасауға болады. Егер бұл құрал болмаса, оны бояуға болады.

Біз таңдаған сурет бірінші болып шығады.

Ең алдымен, оюды жасау үшін біз сурет үлгісін жобалауымыз керек.

Ол үшін біз осы сілтемеден алуға болатын 'Inkscape' бағдарламалық жасақтамасын қолданамыз:

Оны пайдалану үшін біз екінші суретте көрсетілгендей қолданғымыз келетін суретті реттеуіміз керек. Бізде құралдың шеңберімен қолдың қабықшасын реттеу үшін бастапқы суретті айналдырғандай көрінуі мүмкін. Жоғарыда айтқанымыздай, кез келген суретті қоюға болады.

3 -қадам: Inkscape көмегімен суретті векторизациялау

Inkscape көмегімен суретті векторизациялау
Inkscape көмегімен суретті векторизациялау
Inkscape көмегімен суретті векторизациялау
Inkscape көмегімен суретті векторизациялау
Inkscape көмегімен суретті векторизациялау
Inkscape көмегімен суретті векторизациялау
Inkscape көмегімен суретті векторизациялау
Inkscape көмегімен суретті векторизациялау

Біз pixmap -тен векторлық файлды қалай құруға болатынын көреміз (jpg, png, Inkscape ашатын кез келген растрлық формат).

Inkscape Inkscape-бұл векторлық графиканың ашық көзі редакторы, және тақырыпта айтылғандай, мен бұл логотиптерді векторизациялау үшін қолданатын құрал. Векторизация қадамдары Қадамдар біз жасағымыз келетін кез келген векторизацияға ортақ.

  1. Суретті Inkscape -те ашыңыз
  2. Trace Bitmap Tool Path-> Trace Bitmap құралын ашыңыз
  3. Trace Bitmap опциялары бойынша ойнаңыз
  4. Бақылауды іске қосыңыз
  5. Нәтижелерді тазалаңыз (қажет болса)

«Ойнау» бөліміне назар аударыңыз. Мен бақылау бойынша маман емеспін, сондықтан мен бұл құралды тұтқалары мен шамдары бар қара жәшік ретінде қарастырамын, ең жақсы нәтижеге жеткенше бұралып, өзгеріп отырады.

4 -қадам: логотипті ою

Image
Image
Логотиптік ою
Логотиптік ою
Логотиптік ою
Логотиптік ою

Ол үшін сызбаның гравюрасы шығарылатын бетінің силуэтінің болуы маңызды.

Оюды жасау үшін біз 'T2Laser' бағдарламалық жасақтамасын қолданамыз. Біз бұл бағдарламалық жасақтаманы мына жерден ала аламыз:

Бағдарламалық жасақтаманы ашқаннан кейін, біз соңғы қадамда жасаған суретті жүктеуіміз керек. Содан кейін «басқару лазері» түймесін басыңыз, онда cnc басқару элементтері пайда болады. Екі суретте біздің лазерлік кескішпен гравировка процесі мен нәтижесі көрсетілген.

5 -қадам: тегістеу және лактау

Тегістеу және лактау
Тегістеу және лактау
Тегістеу және лактау
Тегістеу және лактау
Тегістеу және лактау
Тегістеу және лактау
Тегістеу және лактау
Тегістеу және лактау

Біздің укулелені жарқын және кедір -бұдырсыз қабатта қалдыру үшін біз құралды құрайтын екі бөлікті ұқыпты тегістей аламыз, өйткені біз сызылған сызбаны зақымдауы мүмкін (егер сіз укулелені бояуды таңдаған болсаңыз, сізге алдымен құм). Содан кейін біз екі бөлікті лакпен бояймыз, олар қараңғы түске ие болады, ал ағаш көбірек қарсылық көрсетеді. Біз әдеттегі ағаш лак қолдануға болады, ол ерекше болуы қажет емес.

Бізде лак болғаннан кейін, оны аздап еритін етіп аздап еріткішпен араластырамыз. Содан кейін біз қоспаны мойынға және құралдың корпусына щеткамен жағамыз және оны құрғатамыз.

Егер біз өнімге екінші қабат қажет екенін көретін болсақ, онда біз екі бөлікті аздап тегістеп, сұйылтылған лак қабатын қайта жағуға болады.

** САҚТЫҚ ШАРАЛАРЫ: лак - химиялық өнім, сондықтан бұл процесті желдетілетін жерде орындау қажет, иіс пен қорғаныс көзілдірігін жұтып қоймас үшін бетперде киіңіз.

Дұрыс жұмыс істеу үшін бізге қажет материалдар - бұл фотосуреттер. Негізінен біз щеткамен, лакпен (біздің жағдайда қызыл түсті), сәл еріткішпен және визуалды қорғаныспен жұмыс жасаймыз. Ең бастысы жақсы желдетілетін кеңістікте жұмыс жасаңыз.

6 -қадам: Жабдық

Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал
Аппараттық құрал

Біздің барлық тақталар құралда қозғалмауы үшін Arduino тақтасы, акелерометр мен жарықдиодты доңғалақ жақшаға енгізіледі.

Біз сондай -ақ ыңғайлы болу үшін батарея ұстағыш пен қосқышты қостық, және біз құралды пайдаланбаған кезде батареяны тоздырмаймыз. Біз бұл тіреуішті укулеле корпусының ішкі бетіне Velcro (ол сондай -ақ силиконмен және ыстық балқытылған мылтықпен жұмыс істейтін) бөлігін бекітеміз, екінші жағынан, жарықдиодты доңғалақ тесіктен кішірек, сондықтан ол құлап кетеді.. Қолдау жақсы сақталатын және өз функциясын орындай алатын етіп жасалған.

7 -қадам: Бағдарламалық қамтамасыз ету

Бағдарламалық қамтамасыз ету
Бағдарламалық қамтамасыз ету
Бағдарламалық қамтамасыз ету
Бағдарламалық қамтамасыз ету
Бағдарламалық қамтамасыз ету
Бағдарламалық қамтамасыз ету

Укулелеге ерекше әшекей беру үшін, жарықдиодты дөңгелектің арқасында жарық эффектілерін қосуға болады. Біз WS2812 қолданамыз, бірақ сіз деректер кестесінің нұсқауларына сәйкес кез келген басқа әдісті қолдана аласыз. Біз ауырлық күшінің әсерін жасауға мүмкіндік беретін акелерометрді де (BMA220) қолданамыз.

Бізде Ардуиноның «Адафрут» атты компьютерлік кітапханасына енгізілген 4 жарық пьесасы болады. Ол үшін біз үш компонент арасында дұрыс байланыс орнатуымыз керек: Arduino NANO, WS2812 және BMA220, бірінші суретте көрсетілгендей.

Қызыл сымдар қуатқа арналған, GND қара және қалғандары дұрыс жұмыс істеу үшін қажет қосылымдар. Біз жарық жинағына қолданған код «play_of_light_v0.ino» деп аталатын файлға бекітілген. Бағдарламаның дұрыс жұмыс істеуі үшін қажетті кітапханаларды қосқаныңызға көз жеткізіңіз. Біз тізбеге сырттан қосатын батареяның кернеуі 9В болуы керек және біз оның бүкіл тізбекті қоректендіру үшін қажетті ең аз ток беретініне көз жеткізуіміз керек.

// Айнымалылар contador e interrupciónint counter; // Айнымалылар Ejemplo gravedad #қосу #қосу #қосу #қосу #NUMBER_OF_LEDS_ON_RING_NEOPIXEL_RING_DATA_PIN 9 анықтау

байт нұсқасы [3];

int8_t x_data; int8_t y_data; int8_t z_data; байт диапазоны = 0x00; float divi = 16; өзгермелі x, y, z; float pi = 3.14159265359; қалқымалы nx, ny, бұрыш; int led, previousLed; LedQueue QueueList; Adafruit_NeoPixel неоринг = Adafruit_NeoPixel (NUMBER_OF_LEDS_ON_RING, NEOPIXEL_RING_DATA_PIN, NEO_GRB + NEO_KHZ800);

// Айнымалылар Luces arcoiris

#include #ifdef _AVR_ #include #endif #PIN 9 анықтаңыз // Параметр 1 = жолақтағы пиксель саны // Параметр 2 = Arduino түйреуішінің нөмірі (көбі жарамды) // Параметр 3 = Пиксель түріндегі жалаушалар, қажетіне қарай қосыңыз: // NEO_KHZ800 800 КГц биттік ағыны (WS2812 жарық диодты NeoPixel өнімдерінің көпшілігі) // NEO_KHZ400 400 КГц (классикалық 'v1' (v2 емес) FLORA пиксельдері, WS2811 драйверлері) // NEO_GRB пиксельдері GRB бит ағыны үшін (NeoPixel өнімдерінің көпшілігі)/ / NEO_RGB пиксельдері RGB бит ағыны үшін сымды (v1 емес FLORA пикселдері, v2) // NEO_RGBW пиксельдері RGBW ағыны үшін сымды (NeoPixel RGBW өнімдері) Adafruit_NeoPixel жолағы = Adafruit_NeoPixel (16, PIN, NEO_KB + NHOO_GRB) // МАҢЫЗДЫ: NeoPixel -тің күйіп қалу қаупін азайту үшін, // пиксельдік қуат сымдарына 1000 uF конденсаторды қосыңыз, бірінші пиксельдегі деректерді енгізуге 300 - 500 Ом резисторды қосыңыз // Arduino мен бірінші пиксель арасындағы қашықтықты азайтыңыз. Тікелей тізбекте // қосудан аулақ болыңыз … егер қажет болса, алдымен GND қосыңыз.

// Rueda de colores айнымалылары

// NeoPixel Ring қарапайым эскизі (c) 2013 Shae Erisson // GPLv3 лицензиясымен AdaFruit NeoPixel кітапханасының қалған бөлігіне сәйкес келу үшін шығарылды.

#қосу

#ifdef _AVR_ #қосу #endif

// Arduino -дағы қандай түйреуіш NeoPixels -ке қосылған?

// Trinket немесе Gemma -де біз мұны 1 #анықтайтын PIN 9 мәніне өзгертуді ұсынамыз

// Arduino -ға қанша NeoPixels бекітілген?

#анықтау NUMPIXELS 16

// NeoPixel кітапханасын орнатқанда, біз оған қанша пиксель және сигнал жіберу үшін қандай түйреуішті қолдану керектігін айтамыз.

// Ескі NeoPixel жолақтары үшін үшінші параметрді өзгерту қажет болуы мүмкін екенін ескеріңіз-мүмкін мәндер туралы қосымша ақпарат алу үшін strandtest // мысалын қараңыз. Adafruit_NeoPixel пиксельдері = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); int delayval = 50; // 50 м кідіріс

// Айнымалылар aleatorios colores

#қосу #ifdef _AVR_ #include #endif

#PIN кодын анықтаңыз 9

#анықтау NUM_LEDS 16

200

// Adafruit_NeoPixel жолағы = Adafruit_NeoPixel (NUM_LEDS, PIN, NEO_GRBW + NEO_KHZ800);

байт 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 ОРНАТУ

void setup () {// Codigo: Dirección de la gravedad neoring.begin (); neoring.setBrightness (200); Serial.begin (9600); Wire.begin (); Wire.beginTransmission (0x0A); // акселерометрдің адресі // ауқым параметрлері Wire.write (0x22); // тіркеу мекенжайы Wire.write (диапазон); // «0x00» «0x01» «0x02» «0x03» деңгейінде орнатуға болады, викидегі Даташетке жүгініңіз // Wire.write төмен өту сүзгісі (0x20); // Wire.write тіркеу мекенжайы (0x05); // «0x05» «0x04» …… «0x01» «0x00» деңгейінде орнатуға болады, Wire.endTransmission () wiki -дегі деректер қорын қараңыз;

// Кодиго; Люкс Аркойрис

// Бұл Trinket 5V 16MHz үшін, егер сіз Trinket #if (_AVR_ATtiny85_) егер (F_CPU == 16000000) clock_prescale_set (clock_div_1) пайдаланбасаңыз, осы үш жолды алып тастай аласыз; #endif // Trinket соңының арнайы коды strip.begin (); strip.show (); // Барлық пикселдерді «өшіру» күйіне келтіріңіз

// Codigo Rueda de colores

// Бұл Trinket 5V 16MHz үшін, егер сіз Trinket #if (_AVR_ATtiny85_) егер (F_CPU == 16000000) clock_prescale_set (clock_div_1) пайдаланбасаңыз, осы үш жолды алып тастай аласыз; #endif // Арнайы кодтың соңы

piksel.begin (); // Бұл NeoPixel кітапханасын инициализациялайды.

// Codigo үзілуі

санауыш = 1;

// Codigo Colores нұсқалары

// Бұл Trinket 5V 16MHz үшін, егер сіз Trinket #if (_AVR_ATtiny85_) егер (F_CPU == 16000000) clock_prescale_set (clock_div_1) пайдаланбасаңыз, осы үш жолды алып тастай аласыз; #endif // Сыйақының соңы арнайы код strip.setBrightness (BRIGHTNESS); strip.begin (); strip.show (); // Барлық пикселдерді «өшірулі» күйге келтіріңіз}

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

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

/Букс шексіз

void loop () {// Caso 1: Juego de luces de la gravedad; if (counter == 1) {for (int i = 0; i 0.0) {if (nx 0.0) бұрыш+= 180; басқа бұрыш += 360; } // end else if (бұрыш == 360.0) бұрыш = 0.0; led = circularize (бұрыш / (360 / NUMBER_OF_LEDS_ON_RING)); // егер алдыңғы қозғалыс қозғалысын біркелкі етсе (алдыңғыLed == led) {// ештеңе жасамаса} else if if (counterClockwiseDistanceBetweenLeds (previousLed, led) <= 8) led = circularize (previousLed + 1); else led = circularize (алдыңғыLed - 1); ledQueue.push (led); makeLightShow (); previousLed = led; кешіктіру (25); } санауыш = 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 ++) {// Көрсететін кейбір процедуралық мысалдар пикселдерге қалай көрсету керек: colorWipe1 (strip. Color (255, 0, 0), 50); // Қызыл түсWipe1 (жолақ. Color (0, 255, 0), 50); // Жасыл түсWipe1 (жолақ. Color (0, 0, 255), 50); // Көк түсWipe1 (жолақ. Color (0, 0, 0, 255), 50); // White RGBW // Theatre пиксельді қуып жіберу… театрChase (жолақ. Түс (127, 127, 127), 50); // Ақ театрChase (жолақ. Color (127, 0, 0), 50); // Қызыл театрChase (жолақ. Color (0, 0, 127), 50); // Көк

кемпірқосақ (5);

кемпірқосақ циклы (5); театрChaseRainbow (5); } санауыш = 3; } // End if counter == 2 // Caso 3: Luces Aleatorias else if (counter == 3) {for (int k = 0; k <50; k ++) {// NeoPixels жиынтығы үшін бірінші NeoPixel 0, екіншісі - 1, минус бір пиксель санына дейін. int a = кездейсоқ (255); int b = кездейсоқ (255); int c = кездейсоқ (255); үшін (int i = 0; i

// пиксельдер. Түс RGB мәндерін қабылдайды, 0, 0, 0 -ден 255, 255, 255 -ке дейін

piksel.setPixelColor (i, piksel. Color (a, b, c)); // Орташа ашық жасыл түс.

пиксель.шоу (); // Бұл жаңартылған пиксель түсін аппараттық құралға жібереді.

кідіріс (кідіріс); // Белгілі бір уақытқа кідіріс (миллисекундтарда).

} a = кездейсоқ (255); b = кездейсоқ (255); c = кездейсоқ (255); үшін (int i = NUMPIXELS; i> 0; i-) {

// пикселдер. Түс RGB мәндерін қабылдайды, 0, 0, 0 -ден 255, 255, 255 -ке дейін

piksel.setPixelColor (i, piksel. Color (a, b, c)); // Орташа ашық жасыл түс.

пиксель.шоу (); // Бұл жаңартылған пиксель түсін аппараттық құралға жібереді.

кідіріс (кідіріс); // Белгілі бір уақытқа кідіріс (миллисекундтарда).

}} есептегіш = 4; } else if (counter == 4) {for (int g = 0; g <= 6; g ++) {// Пиксельдерге шығаруды көрсететін кейбір процедуралық процедуралар: colorWipe (strip. Color (255, 0, 0), 50); // Red colorWipe (жолақ. Color (0, 255, 0), 50); // Green colorWipe (жолақ. Color (0, 0, 255), 50); // Blue colorWipe (жолақ. Color (0, 0, 0, 255), 50); // Ақ ақOverRainbow (20, 75, 5); pulseWhite (5); // fullWhite (); // кешігу (2000); кемпірқосақFade2White (3, 3, 1);

}

санауыш = 1; }}/ /// /// //////////////////

/Әдістемелік құралдар

жарамсыз AccelerometerInit () {Wire.beginTransmission (0x0A); // акселерометрдің адресі // акселерометрді қалпына келтіру Wire.write (0x04); // X деректер Wire.endTransmission (); Wire.requestFrom (0x0A, 1); // (Wire.available ()) // қосалқы құрылғыдан 6 байтты сұраңыз // құл сұралғаннан аз жіберуі мүмкін {Version [0] = Wire.read (); // байтты characte ретінде алу} x_data = (int8_t) Нұсқа [0] >> 2; Wire.beginTransmission (0x0A); // акселерометрдің адресі // акселерометрді қалпына келтіру Wire.write (0x06); // Y деректері Wire.endTransmission (); Wire.requestFrom (0x0A, 1); // (Wire.available ()) // қосалқы құрылғыдан 6 байтты сұраңыз // құл сұралғаннан аз жіберуі мүмкін {Version [1] = Wire.read (); // байтты characte ретінде алу} y_data = (int8_t) Нұсқа [1] >> 2; Wire.beginTransmission (0x0A); // акселерометрдің адресі // акселерометрді қалпына келтіру Wire.write (0x08); // Z деректері Wire.endTransmission (); Wire.requestFrom (0x0A, 1); // (Wire.available ()) // қосалқы құрылғыдан 6 байтты сұраңыз // құл сұралғаннан аз жіберуі мүмкін {Version [2] = Wire.read (); // байтты characte ретінде алу} z_data = (int8_t) Нұсқа [2] >> 2; x = (өзгермелі) x_data/divi; y = (өзгермелі) y_data/divi; z = (өзгермелі) z_data/divi; Serial.print («X =»); Serial.print (x); // Serial.print («») таңбасын басып шығару; Serial.print («Y =»); Serial.print (y); // Serial.print («») таңбасын басып шығару; Serial.print («Z =»); // Serial.println (z) таңбасын басып шығару; }

int circularize (int pos) {

егер (pos> = NUMBER_OF_LEDS_ON_RING) оралу (pos - NUMBER_OF_LEDS_ON_RING); else if (pos <0) return (pos + NUMBER_OF_LEDS_ON_RING); else қайтару (pos); }

int қашықтығы;

int counterClockwiseDistanceBetweenLeds (int prevPos, int nextPos) {қашықтық = nextPos - prevPos; егер (қашықтық <0) қашықтық += NUMBER_OF_LEDS_ON_RING; қайту (қашықтық); }

int ledPosition, currentQueueSize;

#анықтаңыз NUMBER_OF_LEDS_TO_SHINE 10 int жарықтығыҚадам = 255/NUMBER_OF_LEDS_TO_SHINE;

жарамсыз 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, (жарықтықStep * k), 0); if ((k == 0 && currentQueueSize 0) ledQueue.push (ledPosition);} neoring.show ();}

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

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

/Metodos del juego de luces del arcoiris

// Нүктелерді бірінен соң бірін түссіз бос түспен толтырыңызWipe (uint32_t c, uint8_t күту) {for (uint16_t i = 0; i

жарамсыз кемпірқосақ (uint8_t күтіңіз) {

uint16_t i, j;

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

// Аздап өзгеше, бұл кемпірқосақты барлық жерде бірдей таратады

жарамсыз кемпірқосақ циклы (uint8_t күту) {uint16_t i, j;

for (j = 0; j <256*5; j ++) {// дөңгелектегі барлық түстің 5 циклы үшін (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); кешіктіру (күту); }}

// Театр стиліндегі жорғалайтын шамдар.

void teatrChase (uint32_t c, uint8_t күту) {for (int j = 0; j <10; j ++) {// (int q = 0; q <3; q ++) {for (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, c); // әрбір үшінші пиксельді қосу} strip.show ();

кешіктіру (күту);

for (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // әрбір үшінші пикселді өшіру}}}}

// Кемпірқосақ әсері бар театр стиліндегі жорғалайтын шамдар

void театрChaseRainbow (uint8_t күту) {for (int j = 0; j <256; j ++) {// дөңгелектегі барлық 256 түстерді цикл үшін; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, Wheel ((i+j) % 255))); // әрбір үшінші пиксельді қосу} strip.show ();

кешіктіру (күту);

for (uint16_t i = 0; i <strip.numPixels (); i = i+3) {strip.setPixelColor (i+q, 0); // әрбір үшінші пикселді өшіру}}}}

// Түс мәнін алу үшін 0 -ден 255 -ке дейінгі мәнді енгізіңіз.

// Түстер r - g - b - r -ге ауысу болып табылады. uint32_t Wheel (байт WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {қайтару жолағы. Color (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; қайтару жолағы. Color (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; қайтару жолағы. Color (WheelPos * 3, 255 - WheelPos * 3, 0); }

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

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

/Rueda de colores әдісі

// int elegirColor = кездейсоқ (0x000000, 0xffffff);

// CylonEyeColor = HtmlColor (elegirColor); // int elegirColor = random (random 1, 7); 2) CylonEyeColor = HtmlColor (0x00ff00); // Verde // if (elegirColor == 3) CylonEyeColor = HtmlColor (0x0000ff); // Azul // if (elegirColor == 4) CylonEyeColor = HtmlColor (0) // if (elegirColor == 5) CylonEyeColor = HtmlColor (0x200020); // Morado // if (elegirColor == 6) CylonEyeColor = HtmlColor (0x00ffff); // Azul Claro // if (elegirColorE = = 7C) Cylon HtmlColor (0x100010); // Роза // CylonEyeColor = HtmlColor (0x000000);

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

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

/Metodos әртүрлілікке әкеледі

// Нүктелерді бірінен соң бірін түспен толтырыңыз

жарамсыз colorWipe1 (uint32_t c, uint8_t күту) {үшін (uint16_t i = 0; i

бос импульсАқ (uint8_t күте тұрыңыз) {

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

үшін (int j = 255; j> = 0; j-) {

үшін (uint16_t i = 0; i

void rainbowFade2White (uint8_t күте тұрыңыз, кемпірқосақ ілмектері, ақ ақ ілмектер) {

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 циклы

үшін (int i = 0; i <strip.numPixels (); i ++) {

wheelVal = Дөңгелек (((i * 256 / strip.numPixels ()) + j) & 255);

redVal = қызыл (wheelVal) * өзгермелі (fadeVal/fadeMax);

greenVal = жасыл (wheelVal) * өзгермелі (fadeVal/fadeMax); blueVal = көк (wheelVal) * өзгермелі (fadeVal/fadeMax);

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

}

// Бірінші цикл, жоғалады!

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

// Соңғы цикл, жоғалады!

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

strip.show ();

кешіктіру (күту); }}

кешіктіру (500);

үшін (int k = 0; k <whiteLoops; k ++) {

үшін (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.show (); }

кешіктіру (2000);

үшін (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.show (); }}

кешіктіру (500);

}

void whiteOverRainbow (uint8_t күту, uint8_t ақ жылдамдық, uint8_t ақ ұзындық) {

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

int head = whiteLength - 1;

int tail = 0;

int ілмектері = 3;

int loopNum = 0;

statik unsigned long lastTime = 0;

while (true) {

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

if (millis () - lastTime> whiteSpeed) {

бас ++; құйрық ++; if (head == strip.numPixels ()) {loopNum ++; } lastTime = millis (); }

if (loopNum == ілмектер) қайтару;

бас%= strip.numPixels (); құйрық%= strip.numPixels (); strip.show (); кешіктіру (күту); }}} void fullWhite () {for (uint16_t i = 0; i

// Аздап өзгеше, бұл кемпірқосақты барлық жерде бірдей таратады

void rainbowCycle1 (uint8_t күту) {uint16_t i, j;

for (j = 0; j <256 * 5; j ++) {// дөңгелектегі барлық түстің 5 циклы үшін (i = 0; i <strip.numPixels (); i ++) {strip.setPixelColor (i, Wheel (((i * 256 / strip.numPixels ()) + j) & 255)); } strip.show (); кешіктіру (күту); }}

жарамсыз кемпірқосақ1 (uint8_t күту) {

uint16_t i, j;

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

// Түс мәнін алу үшін 0 -ден 255 -ке дейінгі мәнді енгізіңіз.

// Түстер r - g - b - r -ге ауысу болып табылады. uint32_t Wheel1 (байт WheelPos) {WheelPos = 255 - WheelPos; if (WheelPos <85) {қайтару жолағы. Color (255 - WheelPos * 3, 0, WheelPos * 3, 0); } if (WheelPos <170) {WheelPos -= 85; қайтару жолағы. Color (0, WheelPos * 3, 255 - WheelPos * 3, 0); } WheelPos -= 170; қайтару жолағы. Color (WheelPos * 3, 255 - WheelPos * 3, 0, 0); }

uint8_t қызыл (uint32_t c) {

қайтару (c >> 16); } uint8_t жасыл (uint32_t c) {қайтару (c >> 8); } uint8_t көк (uint32_t c) {қайтару (c); }

8 -қадам: 3D дизайны

3D дизайны
3D дизайны
3D дизайны
3D дизайны
3D дизайны
3D дизайны

Алдымен, дұрыс екеніне көз жеткізу үшін аппараттық компоненттердің өлшемін анықтау керек. Егер олар біздікімен бірдей болса, сіз бізге берген файлдарды пайдалана аласыз.

Екі тірек те 3D принтермен жасақталған, олар сонымен қатар:

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

Ақырында, жарық соңғы екі суретке ұқсайды.

9 -қадам: мойынды бекіту

Мойынды бекіту
Мойынды бекіту
Мойынды бекіту
Мойынды бекіту

Алдымен біз седлоны мойынға қоямыз. Бұрандалар бекітетін тесіктер ол жерде жоқ, сондықтан біз оларды қайда бару керектігін белгілеп, тесік жасап, шнекпен жасауымыз керек.

Бұл мойынның аспаптың корпусына бекітілген бұрандалары болатын тесіктерге де қатысты. Оларды жасаудың қажеті жоқ, өйткені бұл бекітуге арналған бұрандалар жоқ, бірақ егер біз мұны істегіміз келсе, ешқандай проблема болмас еді.

МАҢЫЗДЫ: мачтаның басталуы мен шанышқының басталуы арасында 5 мм бос орын қалдырыңыз, себебі бұл тесікке гайка қойылады.

Біз жаңғақты суретте көрсетілген бағытта желіммен жабыстырамыз.

Ақырында, біз тіреуіштің басында орналасқан тесіктерге 4 түйреуішті енгіземіз, суретте көрсетілгендей әрбір түйреуішті 2 қысқа бұрандамен ұстаймыз.

10 -қадам: Құсты орнату

Құсты орнату
Құсты орнату
Құсты орнату
Құсты орнату

Көпір желімдеу арқылы бекітіледі және екі ұзын бұранда корпустың орталық күйінде. Қарындашпен дененің дұрыс орналасуын белгілеген жөн. Біз суретте белгіленген қашықтықты аламыз.

Біз екі компоненттің қосылуында желім қолданамыз. Біз екі бөлікті тығыздау бұрандасының көмегімен түйісу құрғағанша мұқият бекітеміз. Біз бұрандалар үшін екі тесікті ағашқа арналған 1,5 мм бұрғымен жасаймыз. Көпірді корпустағы екі ұзын бұрандамен бекітіңіз. Соңында біз бұрандалардың бастарына қорғаныс қақпақтарын кигіздік.

11 -қадам: Дене мен мойынның жиналуы

Дене мен мойынның жиналуы
Дене мен мойынның жиналуы
Дене мен мойынның жиналуы
Дене мен мойынның жиналуы

Екі бөлікті жинау үшін бізде дененің басында тесіктер бар, онда мойын екі проекциямен сәйкес келеді. Біз оларды желіммен немесе ыстық балқымамен жабыстыра аламыз. Үлкен бекіту үшін сіз корпустың соңындағы тесіктерді корпусқа қосу үшін жасай аласыз.

12 -қадам: Укулеле жолдарын салыңыз

Image
Image
Ukulele жолдарын салыңыз
Ukulele жолдарын салыңыз
Ukulele жолдарын салыңыз
Ukulele жолдарын салыңыз

Ақырында біз аспапты аяқтау үшін ішектерді орналастыруымыз керек.

Бұрын біз түйреуіштердің бекітетін сақиналарын тіреуіштен өтетін проекцияларға енгіземіз. Жіптерді орналастыру үшін біз жиынтықпен бірге келген 4 жіпті алдық. Алдымен сіз әр жолды ажыратуыңыз керек, себебі олар бірдей емес. Сіз әр жіптің бір ұшын байлап қоюыңыз керек (екі жуан түйін қалыпты түйінмен, ал екі жіңішке қос жіппен) және жіпті көпірдің ойықтарына салыңыз.

Содан кейін біз жолдарды келесідей орналастырамыз:

• Бірінші позиция: G жіп (екінші жуан жол).

• Екінші позиция: C жіп (қалың жіп).

• Үшінші позиция: E жіп (екінші жұқа жіп).

• Төртінші позиция: жіп (жіңішке жіп).

Жіптерді берілген ашаның тесіктеріне бекітіңіз. Ілмекті екі немесе үш рет бұру арқылы әр арқанды жөндеуге тырысыңыз. Жіптерді тым көп күш түсірместен тартыңыз және жіп пен седла арасындағы қашықтықты тексеріңіз.

Егер сізде мұны қалай жасауға болатындығына күмәніңіз болса, сіз жолдарды қалай дұрыс қою керектігін түсіндіретін оқулықты қолдана аласыз.

13 -қадам: тестілеу

Сынақ
Сынақ
Сынақ
Сынақ

Ақырында, біз укулеле бірінші қабаттағы идеалды қашықтық 0,1 мм, ал он екіншіде шамамен 1,2 мм болатындай етіп дұрыс жиналғанын көруіміз керек.

Укулеле жолдарын реттеу қажет. Мен сізге бұл қосымшаны ұсынамын: GuitarTuna

14 -қадам: ләззат алыңыз

Енді сіз тек укулеле ләззат алуыңыз керек.

Біз туралы қосымша ақпарат алғыңыз келсе, бізді мына жерден таба аласыз:

Twitter: @Innovart_cc

Facebook: @Innovartcc

Инстаграм: @Innovart_cc

Веб: Innovart.cc

Ұсынылған: