Агуулгын хүснэгт:

DIY ухаалаг электрон Ukulele Arduino: 14 алхам (зурагтай)
DIY ухаалаг электрон Ukulele Arduino: 14 алхам (зурагтай)

Видео: DIY ухаалаг электрон Ukulele Arduino: 14 алхам (зурагтай)

Видео: DIY ухаалаг электрон Ukulele Arduino: 14 алхам (зурагтай)
Видео: Marlin Firmware - VScode PlatformIO Install - Build Basics 2024, Долдугаар сарын
Anonim
DIY ухаалаг электрон Ukulele Arduino
DIY ухаалаг электрон Ukulele Arduino

Укулелийн гадаргуу дээр хүссэн зүйлээ зурах эсвэл гэрлийн эффект нэмэх гэх мэт өвөрмөц эффектийг хэрхэн яаж өөрийн гараар бүтээх талаар бид алхам алхмаар тайлбарлах болно.

Үүнийг хийхийн тулд укулеле хэрэгсэл худалдаж авах шаардлагатай.

Бид багажийг хэрхэн угсрах, гарч болох янз бүрийн асуудлыг шийдвэрлэх талаар тайлбарлах болно.

Алхам 1: Материал

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

Бүтцийн материал:

DIY ukelele холбох хэрэгсэл (энэ нь өөр өөр иж бүрдэл байж болно):

1- Бие.

2-хүзүү.

3-Эмээл

4-олс дэмжлэг

5-гүүр

6 утастай самар.

7-Машины толгойд бэхлэх бөгж (x4).

8 машины толгой (x4).

9-Машины толгойд бэхлэх эрэг (x8).

10-Машины гүүрийг бэхлэх эрэг (x2).

11-Гүүрийг бэхлэх эрэгний тагны таг (x2).

12 мөр (x4).

Цахим материал:

  • NANO Arduino.
  • Leds дугуй WS2812.
  • BMA220 хурдасгуур (заавал биш).
  • Батерейны холбогч.
  • 9V батерей.
  • Шилжүүлэх.

Бусад

  • Модон лак.
  • Velcro.
  • Гагнуурын цагаан тугалга.
  • Лакаар хучих зориулалттай хамгаалалтын хуванцар.
  • Халуун хайлмал силикон.

Хэрэгсэл:

  • Лазер сийлбэр.
  • Зүлгүүр
  • Оддын халив.
  • Бийр.
  • Халуун хайлсан буу.
  • Цагаан тугалга гагнуурын төмөр.

Алхам 2: Укулелийг тохируулна уу

Укулелийг тохируулах
Укулелийг тохируулах
Укулелийг тохируулах
Укулелийг тохируулах
Укулелийг тохируулах
Укулелийг тохируулах

Укулелээ гоёмсог болгохын тулд биен дээрээ лазер таслагчаар зургийн сийлбэр хийж болно. Хэрэв ийм хэрэгсэл байхгүй бол бид үүнийг будаж болно.

Бидний сонгосон зураг бол хамгийн анхных юм.

Юуны өмнө бид сийлбэр хийхийн тулд зургийн загвар зохион бүтээх ёстой.

Үүнийг хийхийн тулд бид https://inkscape.org/es/descargas/ линкээс авах боломжтой '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' програмыг ашиглах гэж байна. Бид энэ програм хангамжийг https://descargar.cnet.com/windows/t2-laser/3260-2… дээрээс авах боломжтой.

Програм хангамжийг нээсний дараа бид сүүлийн алхам дээр үүсгэсэн дүрсийг ачаалах ёстой. Дараа нь "хяналтын лазер" товчийг дарахад cnc удирдлага гарч ирнэ. Хоёр зураг нь бидний лазер таслагчаар сийлбэр хийх явц, үр дүнг харуулж байна.

Алхам 5: Зүлгүүр, өнгөлгөө

Зүлгүүр, өнгөлгөө
Зүлгүүр, өнгөлгөө
Зүлгүүр, өнгөлгөө
Зүлгүүр, өнгөлгөө
Зүлгүүр, өнгөлгөө
Зүлгүүр, өнгөлгөө
Зүлгүүр, өнгөлгөө
Зүлгүүр, өнгөлгөө

Укулелегээ тод, барзгаргүй давхаргаар үлдээхийн тулд багажийг бүрдүүлдэг хоёр хэсгийг болгоомжтой зүлгэж болно. эхлээд элсээр). Дараа нь бид хоёр хэсгийг лакаар будаж, илүү бараан өнгөтэй болгож, мод илүү эсэргүүцэлтэй болно. Бид ердийн модон лак хэрэглэж болно, энэ нь онцгой байх шаардлагагүй.

Лактай болсны дараа бид бага зэрэг уусгагчтай хольж, бага зэрэг уусдаг. Дараа нь бид хольцыг багажны хүзүү, биед сойзоор түрхээд хатаана.

Хэрэв бид бүтээгдэхүүнийг хоёр дахь давхаргад оруулах шаардлагатай гэж үзвэл бид хоёр хэсгийг бага зэрэг зүлгэж, шингэрүүлсэн лакны давхаргыг дахин түрхэж болно.

** СЭРЭМЖЛҮҮЛЭГ: Лак нь химийн бүтээгдэхүүн тул агааржуулалттай газар хийж, үнэр, хамгаалалтын шил зүүхгүйн тулд амны хаалт зүүх шаардлагатай.

Зөв ажиллахын тулд бидэнд хэрэгтэй материал бол зураг дээрх материалууд юм. Үндсэндээ бид сойз, лак лааз (бидний хувьд улаан өнгөтэй), бага зэрэг уусгагч, харааны хамгаалалттай ажиллах болно. Хамгийн гол нь агааржуулалт сайтай газарт ажиллана.

Алхам 6: Техник хангамж

Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж
Техник хангамж

Багажны бүх бүрэлдэхүүн хэсгүүд хөдлөхгүйн тулд Arduino, acelerometer, leds бүхий дугуйтай самбарыг бага зэрэг хаалтанд оруулах гэж байна.

Мөн бид илүү тохь тухтай байлгахын тулд батерей эзэмшигч, унтраалгыг нэмж өгсөн бөгөөд багажийг ашиглахгүй байгаа үед батерейг элэгдүүлдэггүй. Бид уг дэмжлэгийг угелеле биеийн дотор талд Velcro (мөн силикон болон халуун хайлмал буугаар ажиллах боломжтой) хавсаргах болно. Нөгөө талаас LED дугуй нь нүхнээс бага тул унах болно.. Дэмжлэгийг сайн барьж, үүргээ гүйцэтгэж чадахаар зохион бүтээсэн.

Алхам 7: Програм хангамж

Програм хангамж
Програм хангамж
Програм хангамж
Програм хангамж
Програм хангамж
Програм хангамж

Укулелэд онцгой чимэглэл өгөхийн тулд бид гэрлийн эффектийг LED дугуйны ачаар нэмж болно. Бид WS2812 -ийг ашиглах гэж байна, гэхдээ та мэдээллийн хүснэгтийн зааврыг дагаж бусад зүйлийг ашиглаж болно. Бид таталцлын нөлөөг бий болгох боломжийг олгодог acelerometer (BMA220) төхөөрөмжийг бас ашиглах болно.

Үнэн хэрэгтээ бид Ардуиногийн 'Adafruit' нэртэй компьютерийн номын санд багтсан 4 гэрлийн жүжэгтэй болно. Үүнийг хийхийн тулд бид Arduino NANO, WS2812, BMA220 гэсэн гурван бүрэлдэхүүн хэсгийн хоорондох зөв холболтыг хийх ёстой.

Улаан утаснууд нь тэжээлд зориулагдсан, GND харууд, бусад нь зөв ажиллахад шаардлагатай холболтууд юм. Бидний гэрлийн хэрэгсэлд ашигладаг кодыг "play_of_light_v0.ino" файлд хавсаргасан болно. Програмыг зөв ажиллуулахын тулд шаардлагатай номын санг оруулсан эсэхээ шалгаарай. Бидний хэлхээнд гаднаас оруулдаг батерей нь хамгийн бага 9V хүчдэлтэй байх ёстой бөгөөд бүхэл бүтэн хэлхээг тэжээхэд шаардлагатай хамгийн бага гүйдлийг өгөх чадвартай байх ёстой.

// Variables contador e interrupciónint counter; // Хувьсагчууд Ejemplo gravedad #оруулах #оруулах #оруулах #оруулах #NUMBER_OF_LEDS_ON_RING 16 -ийг тодорхойлох #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; QueueList ledQueue; Adafruit_NeoPixel neoring = Adafruit_NeoPixel (NUMBER_OF_LEDS_ON_RING, NEOPIXEL_RING_DATA_PIN, NEO_GRB + NEO_KHZ800);

// Хувьсагчууд Luces arcoiris

#include #ifdef _AVR_ #include #endif #define PIN 9 // Параметр 1 = тууз дахь пикселийн тоо // Параметр 2 = Arduino зүү дугаар (ихэнх нь хүчинтэй) // Параметр 3 = Пикселийн төрлийн тугуудыг шаардлагатай бол нэмж оруулаарай. // NEO_KHZ800 800 KHz битийн урсгал (ихэнх NeoPixel бүтээгдэхүүнүүд/WS2812 LED) // NEO_KHZ400 400 KHz (сонгодог 'v1' (v2 биш) FLORA пикселүүд, WS2811 драйверууд) // NEO_GRB Пикселүүд нь GRB bitstream (ихэнх NeoPixel бүтээгдэхүүн)/ / NEO_RGB пикселүүд нь RGB bitstream -д утастай байдаг (v2 биш v1 FLORA пиксел) // ЧУХАЛ: 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 -д хэдэн NeoPixel хавсаргасан бэ?

NUMPIXELS -ийг тодорхойлох 16

// Бид NeoPixel номын санг тохируулахдаа хэдэн пиксел, ямар зүү ашиглан дохио илгээхийг хэлдэг.

// Хуучин NeoPixel туузны хувьд та гуравдахь параметрийг өөрчлөх шаардлагатай болж магадгүйг анхаарна уу. Боломжит утгуудын талаар дэлгэрэнгүй мэдээллийг strandtest // жишээнээс үзнэ үү. Adafruit_NeoPixel пиксел = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); int delayval = 50; // 50 м -ийн саатал

// Хувьсагчууд aleatorios colores

#incdele #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); Цуваа эхлэх (9600); Wire.begin (); Wire.beginTransmission (0x0A); // акселерометрийн хаяг // хүрээний тохиргоо Wire.write (0x22); // бүртгүүлэх хаяг Wire.write (муж); // "0x00" "0x01" "0x02" "0x03" гэж тохируулж болно, вики дэх Datashhet -ийг үзнэ үү // Wire.write бага нэвтрүүлэх шүүлтүүр (0x20); // бүртгүүлэх хаяг Wire.write (0x05); // "0x05" "0x04" …… "0x01" "0x00" гэж тохируулж болно, wire.endTransmission wiki дээрх Datashhet -ийг үзнэ үү;

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

// Энэ нь Trinket 5V 16MHz -д зориулагдсан бөгөөд хэрэв та Trinket #if (_AVR_ATtiny85_) хэрэв (F_CPU == 16000000) clock_prescale_set (clock_div_1) ашигладаггүй бол эдгээр гурван мөрийг устгах боломжтой; #endif // trinket -ийн төгсгөлийн тусгай кодын зурвас.begin (); strip.show (); // Бүх пикселийг "унтраах" болгож эхлүүлэх

// Codigo Rueda de colores

// Энэ нь Trinket 5V 16MHz -д зориулагдсан бөгөөд хэрэв та Trinket #if (_AVR_ATtiny85_) хэрэв (F_CPU == 16000000) clock_prescale_set (clock_div_1) ашигладаггүй бол эдгээр гурван мөрийг устгах боломжтой; #endif // trinket тусгай кодын төгсгөл

пиксел.begin (); // Энэ нь NeoPixel номын санг эхлүүлдэг.

// Codigo тасалдал

тоолуур = 1;

// Codigo Colores хувилбарууд

// Энэ нь Trinket 5V 16MHz -д зориулагдсан бөгөөд хэрэв та Trinket #if (_AVR_ATtiny85_) хэрэв (F_CPU == 16000000) clock_prescale_set (clock_div_1) ашигладаггүй бол эдгээр гурван мөрийг устгах боломжтой; #endif // trinket төгсгөлийн тусгай код зурвас.setBrightness (BRIGHTNESS); strip.begin (); strip.show (); // Бүх пикселийг "унтраах" болгож эхлүүлэх}

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

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

/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) өнцөг+= 180; өөр өнцөг += 360; } // end else if (өнцөг == 360.0) өнцөг = 0.0; led = дугуйруулах (өнцөг / (360 / NUMBER_OF_LEDS_ON_RING)); // удирдсан хөдөлгөөнийг жигд болгох if (previousLed == led) {// хийх зүйл байхгүй} өөр тохиолдолд (counterClockwiseDistanceBetweenLeds (previousLed, led) <= 8) led = circularize (previousLed + 1); else led = circularize (previousLed - 1); ledQueue.push (удирдсан); makeLightShow (); өмнөх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 (зурвас. Өнгө (0, 255, 0), 50); // Ногоон өнгөWipe1 (зурвас. Өнгө (0, 0, 255), 50); // Blue colorWipe1 (зурвас. Өнгө (0, 0, 0, 255), 50); // Цагаан RGBW // Театрын пикселийн араас хөөж илгээх … театрChase (strip. Color (127, 127, 127), 50); // Цагаан театрChase (зурвас. Өнгө (127, 0, 0), 50); // Улаан театрChase (зурвас. Өнгө (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); for (int i = 0; i

// пиксел. Color нь RGB утгыг 0, 0, 0 -ээс 255, 255, 255 хүртэл авдаг

piksel.setPixelColor (i, piksel. Color (a, b, c)); // Дунд зэргийн тод ногоон өнгөтэй.

пиксел.шоу (); // Энэ нь шинэчлэгдсэн пикселийн өнгийг техник хангамж руу илгээдэг.

саатал (хойшлуулах хугацаа); // Тодорхой хугацаагаар хойшлуулах (миллисекундээр).

} a = санамсаргүй (255); b = санамсаргүй (255); c = санамсаргүй (255); for (int i = NUMPIXELS; i> 0; i-) {

// пиксел. Color нь 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); // Улаан colorWipe (зурвас. Өнгө (0, 255, 0), 50); // Ногоон өнгө Арчих (зурвас. Өнгө (0, 0, 255), 50); // Blue colorWipe (зурвас. Өнгө (0, 0, 0, 255), 50); // Цагаан цагаанOverRainbow (20, 75, 5); pulseWhite (5); // fullWhite (); // саатал (2000); солонгоFade2Witite (3, 3, 1);

}

тоолуур = 1; }} /////////////////////////////////////////////////// ////////////////////////////////////////////////////// ///////////////////////////////////////////////////// ///////////////////

/Metodos del Ejemplo de la gravedad

хүчингүй AccelerometerInit () {Wire.beginTransmission (0x0A); // акселерометрийн хаяг // хурдатгал хэмжигчийг дахин тохируулах Wire.write (0x04); // X өгөгдөл Wire.endTransmission (); Wire.requestFrom (0x0A, 1); // 2 -р боолын төхөөрөмжөөс 6 байт хүсэх (Wire.available ()) // боол хүссэн хэмжээнээс бага хэмжээгээр илгээх боломжтой {Хувилбар [0] = Wire.read (); // байтыг characte байдлаар хүлээн авах} x_data = (int8_t) Хувилбар [0] >> 2; Wire.beginTransmission (0x0A); // акселерометрийн хаяг // хурдатгал хэмжигчийг дахин тохируулах Wire.write (0x06); // Y өгөгдөл Wire.endTransmission (); Wire.requestFrom (0x0A, 1); // 2 -р боол төхөөрөмжөөс 6 байт хүсэх (Wire.available ()) // боол хүссэн хэмжээнээс бага хэмжээгээр илгээх боломжтой {Хувилбар [1] = Wire.read (); // байтыг characte байдлаар хүлээн авах} y_data = (int8_t) Хувилбар [1] >> 2; Wire.beginTransmission (0x0A); // хурдатгал хэмжигчийн хаяг // хурдатгал хэмжигчийг дахин тохируулах Wire.write (0x08); // Z өгөгдөл Wire.endTransmission (); Wire.requestFrom (0x0A, 1); // 2 -р боол төхөөрөмжөөс 6 байт хүсэх (Wire.available ()) // боол хүссэн хэмжээнээс бага хэмжээгээр илгээх боломжтой {Хувилбар [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 ="); Цуваа.хэвлэх (x); // Serial.print ("") тэмдэгтийг хэвлэх; Serial.print ("Y ="); Цуваа.хэвлэх (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); өөр бол (pos <0) буцах (pos + NUMBER_OF_LEDS_ON_RING); өөр буцах (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, (тод байдлын алхам * 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 театрChase (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 өнгийг (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))); // гурав дахь пиксел бүрийг} 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) {буцах зурвас. Өнгө (255 - WheelPos * 3, 0, WheelPos * 3); } if (WheelPos <170) {WheelPos -= 85; буцах зурвас Өнгө (0, WheelPos * 3, 255 - WheelPos * 3); } WheelPos -= 170; буцах зурвас Өнгө (WheelPos * 3, 255 - WheelPos * 3, 0); }

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

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

/Metodos Rueda de colores

// int elegirColor = санамсаргүй (0x000000, 0xffffff); // Өнгө нь 0x000000 y 0xFFFFFF

// CylonEyeColor = HtmlColor (elegirColor); // int elegirColor = санамсаргүй (1, 7); 2) CylonEyeColor = HtmlColor (0x00ff00); // Верде // 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 (elegirColor == 7) Cylon HtmlColor (0x100010); // Роза // CylonEyeColor = HtmlColor (0x000000);

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

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

/Metodos нь олон янз байдлыг бий болгодог

// Цэгүүдийг дараалан өнгөөр дүүргэ

void colorWipe1 (uint32_t c, uint8_t хүлээх) {for (uint16_t i = 0; i

хоосон импульс Цагаан (uint8_t хүлээх) {

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; i

void rainbowFade2White (uint8_t wait, 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 мөчлөг

for (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 ++; }

// Сүүлчийн гогцоо алга болно!

өөр бол (k == rainbowLoops - 1 && j> 255 - fadeMax) {fadeVal--; }

strip.show ();

хойшлуулах (хүлээх); }}

саатал (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]))); } strip.show (); }

саатал (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]))); } strip.show (); }}

саатал (500);

}

void whiteOverRainbow (uint8_t хүлээх, uint8_t whiteSpeed, uint8_t whiteLength) {

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

int head = whiteLength - 1;

int сүүл = 0;

int гогцоо = 3;

int loopNum = 0;

static unsigned long lastTime = 0;

байхад (үнэн) {

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 (); }

хэрэв (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) {буцах зурвас. Өнгө (255 - WheelPos * 3, 0, WheelPos * 3, 0); } if (WheelPos <170) {WheelPos -= 85; буцах зурвас Өнгө (0, WheelPos * 3, 255 - WheelPos * 3, 0); } WheelPos -= 170; буцах зурвас Өнгө (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 string (хоёр дахь нимгэн утас).

• Дөрөв дэх байрлал: Уяа (нимгэн утас).

Өгөгдсөн залгуурын нүхэнд утсыг холбоно. Зүүг хоёр, гурван эргүүлээд олс бүрийг засахыг хичээ. Хэт их хүч хэрэглэхгүйгээр утсыг чангалж, уяа болон эмээлийн хоорондох зайг шалгана.

Хэрэв та үүнийг хэрхэн яаж хийх талаар эргэлзэж байвал мөрүүдийг хэрхэн зөв байрлуулахыг тайлбарлах хичээлийг зааж өгч болно.

Алхам 13: Туршилт

Туршилт
Туршилт
Туршилт
Туршилт

Эцэст нь хэлэхэд, угулелийг зөв угсарсан эсэхийг эхний шатанд хамгийн тохиромжтой зай нь 0.1 мм, арван хоёрдугаарт ойролцоогоор 1.2 мм байх ёстой.

Укулеле мөрүүдийг тааруулах шаардлагатай байна. Би танд энэ програмыг санал болгож байна: GuitarTuna

Алхам 14: Үүнийг сайхан өнгөрүүлээрэй

Одоо та зөвхөн укулелегаа эдлэх хэрэгтэй.

Хэрэв та бидний талаар илүү их мэдээлэл авахыг хүсвэл дараах хаягаар биднийг олж болно.

Твиттер: @Innovart_cc

Фэйсбүүк: @Innovartcc

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

Вэб: Innovart.cc

Зөвлөмж болгож буй: