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

Arduino & Neopixel Coke Bottle Солонго үдэшлэгийн гэрэл: 7 алхам (зурагтай)
Arduino & Neopixel Coke Bottle Солонго үдэшлэгийн гэрэл: 7 алхам (зурагтай)

Видео: Arduino & Neopixel Coke Bottle Солонго үдэшлэгийн гэрэл: 7 алхам (зурагтай)

Видео: Arduino & Neopixel Coke Bottle Солонго үдэшлэгийн гэрэл: 7 алхам (зурагтай)
Видео: Arduino & Neopixel Coke Bottle Party Light 2024, Долдугаар сарын
Anonim
Image
Image

Миний хүү Доон хуучин коксжуулсан шилнүүд болон Glow Sticks -ийн өтгөн дотогш хийсэн маш сайхан үдэшлэгт гэрэл олж хараад, удахгүй болох сургуулийн шалгалт нь дуусах болно уу гэж асууж байна PartAYYY !!! Би баттай хэлж байна, гэхдээ бидний уншиж байсан Адафрутын неопиксел бөгжнүүдийн заримыг авахыг та хүсэхгүй байна уу … Тэр надад хоосон харцаар харна. Учир нь тэр миний юу яриад байгааг мэддэггүй, гэхдээ аав нь түүний уншиж байсан неопикселийн бөгжнүүдтэй тоглох боломжийг олж харсан бөгөөд хачин аавуудын үржүүлдэг хамгийн сайн 10 шалтгааны нэг нь бид байх ёстой гэдгийг бид бүгд мэднэ. Хүүхдүүддээ зориулагдсан гэж хэлдэг гайхалтай хэрэгслүүдээр тоглохыг уучлах.

Энэ бол үнэхээр гайхалтай харагдаж байгаа супер энгийн төсөл юм. Бид хуучны коксын 3 шил, модон таваг, тоглоомын талбайн шонгоос - подвалд хэвтэж буй эд зүйлсийг Ардуино (бидний хувьд Леонардо, гэхдээ ямар ч Genuino хавтан хийх болно!), Гурван неопикселийн бөгжнүүдээс бүтээсэн.. Би 9 LED-ийн бөгж захиалсан боловч ижил үнээр 12 LED бөгжтэй болсон. Энэ нь чихэрлэг байсан боловч худгийн нүхийг хийх ёстой гэсэн үг юм-12 LED цагираг нь 23 мм-ээс ялгаатай нь 35 мм өргөн юм. Танд хэрэгтэй зүйл:

  • Genuino/Arduino самбар (Бид Леонардог ашигласан, гэхдээ бараг бүх самбар үүнийг хийх болно)
  • 3 неопиксел цагираг (тус бүр 12 LED): тэдгээрийг Adafruit -аас аваад эдгээр сайн хүмүүсийг дэмжээрэй
  • 1000 µf 6.3v ба түүнээс дээш конденсатор
  • 300-500 ом эсэргүүцэл
  • Модон таваг, эсвэл дөрвөлжин хуссан мод, эсвэл неопикселийг байрлуулж коксын шилийг дээр нь тавьж болох бүх зүйл
  • Тоглоомын талбайн бэхэлгээ нь бидний хувьд маш сайн ажилладаг
  • 9v хананы warts
  • 40 мм-ийн нүхтэй
  • Боолт, самар, угаагч, зай
  • Хатуу судалтай утас
  • Гагнуурын төмөр ба гагнуур
  • Талхны самбар
  • Arduino -д зориулсан хуванцар хайрцаг. Та нар гадагш гарч, ямар нэгэн эмзэг орчинд газрын гадаргаас өрөмдөж, дэлхийн нөгөө талд үйлдвэрлэж, саванд хийж өөртэйгөө ойролцоох агуулах руу илгээсэн сая жилийн настай газрын тосноос гаргаж авсан үнэхээр төгс тохирсон хуванцар хайрцгийг худалдаж авах боломжтой. Боомтууд нь төгс тохируулагдсан бөгөөд нүүрстөрөгчийн давхар ислийг агаар мандалд цацаж буй фургон машинаар хаалгандаа хүргэж өгнө. Эсвэл та миний хийсэн зүйлийг хийж, хуучин хаягдсан хуванцар хайрцгийг ашиглаж болно.. энэ тохиолдолд эмийн шүүгээнд хэвтэж буй Мадагаскарын туузны тусламжийн хайрцгийг ашиглаж, дотор нь хэдэн нүх өрөмдөж болно. Энд лекц өндөрлөж байна. Хийцгээе…

Алхам 1: Суурийг бий болгох

Суурийг бий болгох
Суурийг бий болгох
Суурийг бий болгох
Суурийг бий болгох

Та өөрийн хонгилд байгаа хогноос өөрийн баазыг импровиз хийх эсвэл бүр модон хайрцаг эсвэл электрон бараагаа нуух зүйл ашиглаж болно.

Эхлээд бид модон хавтан дээр тэгшхэн зайтай гурван нүх өрөмдсөн бөгөөд энэ нь неопикселийн цагиргуудыг суулгахад хангалттай том хэмжээтэй байв. Зураг дээр нүхнүүд нь хүрзээр өрөмдсөн өрөмдлөг юм. Эцэст нь 12 LED цагираг илүү том хэмжээтэй байсан тул бид цооног өрөмдөх цооног өрөмдөх шаардлагатай болсон. Энэ нь хавтангаар дамжин өнгөрөх гэсэн үг бөгөөд бөгжийг 2 мм-ийн гүнтэй нарийн хийцтэй жижиг худаг руу нь сайтар уяхын оронд төв нүхтэй болгож, цагиргуудыг бэхлэв. хавтангийн. Шүүж болохгүй. Та миний дизайн дахь хавтангийн ёроолыг яаж ч харж чадахгүй. Тэгээд асаалттай байхад харанхуй болно. Үүнээс гадна - наалдамхай туузны буруу юу вэ?

Надад хавтан ба хаалт хоёрын хооронд талхны хавтан ба нэг бүрэлдэхүүн хэсэг болох конденсатор, талхны хавтангаас Arduino руу явах ёстой утаснуудын хувьд би хаалтанд оруулахаар төлөвлөж байсан. Ойролцоогоор 3см, талхны хавтангийн өндөр, бага зэрэг зай авахын тулд би боолтны босоо аманд хэсэг зуурсан зайг байрлуулсан. Би нэг буланд хоёр модон зангуу боолт ашигласан, учир нь тэд зөв өндөртэй байсан бөгөөд эрэгтэй шургуулганд хэвтэж байв … тэр хайрцаг нь шураг, боолт, хадаас, зэвэрсэн гинж, хоолойны холболт, хуучин зоос, гэнэтийн хурц зүйл, янз бүрийн хэлбэр Тоног төхөөрөмжийн дэлгүүрээр аялах явдлыг ид шидийн байдлаар аварч чадах бит, бобс нь танд яг хэрэгтэй зүйл биш бол зүгээр л сайн хийх болно.

Тоглоомын талбайн шонгын талаар хонгилоос олсон аз жаргалтай осол нь хавтан дээр аль хэдийн нэвтэрч байсан нүх байсан юм. Төмөр өрөмдөх шаардлагагүй! Суурь нь дөрвөн боолтны нүхтэй байсан бөгөөд бид тааруулахын тулд модон хавтан дээр живсэн эсрэг дөрвөн цооног өрөмдсөн.

Дараа нь бид Gothic Black-ийг бүхэлд нь шүршиж будсан.

Алхам 2: Neopixel Rings бэлтгэх

Неопикселийн бөгж бэлтгэх
Неопикселийн бөгж бэлтгэх

Та неопикселийн цагираг дээр утас гагнах хэрэгтэй болно: бүгдэд нь өгөгдөл оруулах утас, хоёр хэсэгт өгөгдөл дамжуулах утас, тус бүрт хүч, газардуулга. Танд хэрэгтэй гэж бодож байгаа уртыг нь нэмээрэй. Та илүүдэл утсыг үргэлж таслах боломжтой, хэт богино утсыг сунгаж чадахгүй. Адафрутын анхааруулгыг мэдэж аваарай.

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

Би фронт руу гагнахаасаа өмнө үүнийг уншсан ч болоосой. Би ямар ч LED гэрлээ шатааж чадаагүй ч асаах хүртлээ хөлсөө урсгасан байдлаар нэг ирмэгийг нь шатаасан. Түүнчлэн, хэрэв би нарийн гарын авлагыг уншсан бол LED дээр матрын хавчаар хийхгүй байх тухай анхааруулгыг уншсан болно. Миний хөлөг онгоцны ойролцоох сүйрэл таны гэрэлт цамхаг болог.

Neopixel нь Daisy-гинжин хэлхээтэй байдаг бөгөөд энэ нь та нэг LED-ийн бүх LED-ийг Arduino-аас нэгэн цагирган дээрх OUT-ээс нөгөө бөгжний IN руу холбож удирдах боломжтой гэсэн үг юм. Бөгж бүрт хүч, газардуулгын утас хэрэгтэй болно.

Алхам 3: Цахилгааны утас

Утас
Утас

Дээрх Фритзинг шиг утсыг холбоно уу-Arduino-ийн 6-р зүү нь өгөгдлийг эхний бөгж рүү аваачаад, энэ цагиргаас гарсан өгөгдөл нь дараагийн өгөгдөл рүү, өгөгдөл нь гаралт руу ордог. Сүүлийн бөгжний мэдээлэл. Эцсийн бөгжний өгөгдөл дамжуулах утас танд хэрэггүй.

1000 μf багтаамж нь талхны хавтангийн эерэг ба сөрөг төмөр замын хооронд явдаг. Энэхүү таг нь бөгжийг хүчдэлийн огцом өсөлтөөс хамгаалдаг бөгөөд Adafruit NeoPixel Uberguide-ийн хамгийн сайн туршлагын хэсгээс санал болгож байна. Эхний неопикселийн өгөгдөл дээрх резисторыг Adafruit санал болгодог-энэ нь Fritzing-д 1K боловч санал болгож буй эсэргүүцэл нь 300-500 ом байна.

Би бүтээхдээ Neopixels -ээс утаснуудыг хавтангийн араар голд нь байрлуулсан талхны тавцан руу холбосон. Ингэснээр та үндсэн нэгж рүү хүч, газардуулга, өгөгдөл гэсэн гурван урт утсыг оруулах хэрэгтэй болно. Би эдгээр утаснуудыг маш урт болгосон. Суурь дээр хадгалах зай хангалттай байгаа бөгөөд энэ нь самбарыг дахин програмчлах зориулалтаар сугалж авахад тохиромжтой болгодог.

Алхам 4: Код

"loading =" залхуу "миний хүү үүнийг хөгжимд зориулагдсан хувилбарыг авахыг хүсч байгаагаа дурдлаа. Үүнийг 18 нас хүрэх хүртэл нь авч үзсэн боловч энд байна!

Нэмэлт тоног төхөөрөмж:

1 Нэг туйл, Давхар шидэх унтраалга 1 Автомат ашиглалтыг хянах микрофон (Би AdaFruit-ийн MAX9184-ийг ашигласан) 1 1uF-100uF конденсатор (Ямар ч утга)

Энэ нь зөв ажиллахын тулд микрофон үнэхээр автоматаар ашиг олох хяналттай байх ёстой. AGC нь хүрээлэн буй орчны дуу чимээг байнга туршиж, арын дэвсгэр гэж үздэг босгыг дээшлүүлж, бууруулдаг тул таны гэрэл энэ дэвсгэр дээрх огцом өсөлтөд хариу өгөх болно. AdaFruit-ийн микрофон маш гайхалтай: та ганц дуу хоолойны чимээ гарч буй чимээгүй өрөөнөөс өсвөр насны хүүхдүүд, хөгжим эгшиглэх өрөөтэй бүтэн үдэшлэгийн горимд шилжих боломжтой бөгөөд энэ нь хөгжмийн хэмнэлийг олж авах болно. зүгээр Өөр сонголт болох Тохируулах боломжтой микрофон нь самбар дээр маш жижигхэн потенциометр байдаг бөгөөд энэ нь үнэхээр нарийн бөгөөд бүдүүлэг юм. Төхөөрөмжийг ашиггүй болгохын тулд хүрээлэн буй орчны дуунд тийм ч их өөрчлөлт орохгүй: гэрэл байнга асдаг эсвэл тас харанхуй байдаг. AGC нь ид шид шиг ажилладаг.

Би эргэлдэж буй туршилтын загвар эсвэл хөгжим ашиглах сонголтыг хүсч байсан тул би гол утсыг нь VIN рүү, нэгийг нь 4 -р зүү рүү, нөгөө нь Леонардогийн 8 -р зүүгээр холбосон. Эдгээр тээглүүрийг HIGH эсвэл LOW гэж шалгаснаар бид унтраалга аль төлөвт байгааг, үүний дагуу салбарын кодыг мэдэх боломжтой болно.

Алхам 7: Микрофоныг холбох

Микрофон залгах
Микрофон залгах

Микрофон оролтыг 1-100µF конденсатороор дамжуулан аналоги Пин 0-д оруулна уу. Хэрэв таны конденсатор туйлширсан бол гаралтын зүү эерэг тал руу орно (Ногоон утас).

Би доор тохируулсан Trinket-Color-by-Sound горимыг хэрэгжүүлсэн CodeGirlJP-д баярлалаа.

// Arduino болон NeoPixels бүхий дууны идэвхжүүлсэн LED

#оруулах

#define MIC_PIN A0 // Леонардо дээр a0 зүү зүүсэн микрофоныг хавсаргасан болно

#LED_PIN 6 -г тодорхойлох // Леонардо дээрх 6 -р зүүнд бэхлэгдсэн NeoPixel LED туузыг #define N_PIXELS 36 // LED хэлхээний пикселийн тоог !!!!!! Тохиргоондоо пикселийн тоог тохируулна уу. Энэ нь 3 Neopixel бөгжний хувьд зөв юм !!!!!! #тодорхойлох N 100 // Унших бүрт авах дээжийн тоог Дээжийг #тодорхойлох бүдгэрүүлэх гэж нэрлэдэг Орой 5 // бүдгэрсэн хэмжээ тус бүрийн саатал хугацаа #дуу чимээг тодорхойлох 30 -р түвшин // дуугүй микрофоны дундаж чимээ

// NeoPixel зурвасыг дээр дурдсан утгуудаар эхлүүлнэ үү.

Adafruit_NeoPixel зурвас = Adafruit_NeoPixel (N_PIXELS, LED_PIN, NEO_GRB + NEO_KHZ800);

int дээж [N]; // дээж цуглуулах багцыг хадгалах

int periodFactor = 0; // хугацааны тооцоог хийх мс тоог хянаж байх int t1 = -1; // налуугийн цаг> 100 илэрсэн. int T; // миллисекунд хүртэл хэмжигдэх цагийн хоорондох завсрын налуу; // цуглуулсан хоёр өгөгдлийн түүврийн цэгийн налуу байтын хугацааChanged = 0; const int SwitchPinMusic = 4; // Шилжүүлэгчийн байрлал хөгжим-мэдрэмтгий const int SwitchPinSwirl = 8; // Шилжүүлэгчийн байрлалын зүү Туршилтын загвар (эргэх) int MusicbuttonState = 0; // Хөгжмийн мэдрэмжийн хувьд унтраах логик хувьсагч

// Arduino тохируулах арга

хүчингүй тохиргоо () {

strip.begin ();

ledsOff (); саатал (500); displayColor (Дугуй (100)); strip.show (); саатал (500); oddWheel (Wheel (100)); strip.show (); саатал (500); pinMode (SwitchPinMusic, INPUT); pinMode (SwitchPinSwirl, INPUT); // attachInterrupt (4, Сэлгэсэн, УНАХ);

}

// Arduino давталтын арга

void loop () {SwirlbuttonState = digitalRead (SwitchPinSwirl); // Шилжүүлэгчийг Хөгжмийн мэдрэмжийн хувьд MusicbuttonState = digitalRead (SwitchPinMusic) гэж тохируулсан бол HIGH; // Шилжүүлэгчийн туршилтын загварыг тохируулсан бол HIGH (SwirlbuttonState == LOW) {readSamples (); // SwirlbuttonState = digitalRead (SwitchPinSwirl) хөгжмийн дээж авах горимыг ажиллуулах; // Шилжүүлэгч өөрчлөгдсөн эсэхийг шалгана уу} SwirlbuttonState = digitalRead (SwitchPinSwirl); MusicbuttonState = digitalRead (SwitchPinMusic); while (SwirlbuttonState == HIGH) {Бүжиг (); // SwirlbuttonState = digitalRead (SwitchPinSwirl) эргэлддэг туршилтын хэв маягийг ажиллуулах; // Шилжүүлэгч солигдсон эсэхийг шалгана уу

}

}

хоосон бүжиг () {

while (SwirlbuttonState == HIGH) {colorWipe (strip. Color (255, 0, 0), 50); // Улаан SwirlbuttonState = digitalRead (SwitchPinSwirl); colorWipe (зурвас Өнгө (0, 255, 0), 50); // Green SwirlbuttonState = digitalRead (SwitchPinSwirl); colorWipe (зурвас Өнгө (0, 0, 255), 50); // Blue SwirlbuttonState = digitalRead (SwitchPinSwirl); //colorWipe (зурвас. Color(0, 0, 0, 255), 50); // Цагаан RGBW // Театрын пикселийн хөөцөлдөөнийг илгээнэ үү … SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChase (зурвас Өнгө (127, 127, 127), 50); // White SwirlbuttonState = digitalRead (SwitchPinSwirl); TheaterChase (зурвас Өнгө (127, 0, 0), 50); // Улаан SwirlbuttonState = digitalRead (SwitchPinSwirl); театрChase (зурвас Өнгө (0, 0, 127), 50); // Blue SwirlbuttonState = digitalRead (SwitchPinSwirl); солонго (20); SwirlbuttonState = digitalRead (SwitchPinSwirl); солонго тойрог (20); SwirlbuttonState = digitalRead (SwitchPinSwirl); театрChaseRainbow (50); SwirlbuttonState = digitalRead (SwitchPinSwirl); }} // Микрофоноос авсан өгөгдлийг унших ба боловсруулах void readSamples () {for (int i = 0; i0) {slope = дээжүүд - дээжүүд [i -1]; } өөр {налуу = дээж - дээж [N -1]; } // Налуу нь noiseLevel -ээс их эсэхийг шалгана уу - хэрэв (abs (налуу)> noiseLevel) {if (налуу <0) {тооцохХугацаа (i); if (periodChanged == 1) {displayColor (getColor (T)); }}} өөр {ledsOff (); // театрChaseRainbow (50); } periodFactor += 1; саатал (1); }}

хүчин төгөлдөр бус тооцоолох үе (int i)

{if (t1 == -1) {// t1 тохируулагдаагүй t1 = i; } өөр {// t1 гэж тохируулсан тул calc period int period = periodFactor*(i - t1); periodChanged = T == хугацаа? 0: 1; T = хугацаа; //Serial.println(T); // t1 -ийг шинэ i утга руу дахин тохируулах t1 = i; periodFactor = 0; }}

uint32_t getColor (int үе)

{if (period == -1) return Wheel (0); өөрөөр бол (хугацаа> 400) Дугуй (5) буцаана; else буцах Дугуй (газрын зураг (-1*хугацаа, -400, -1, 50, 255)); }

void fadeOut ()

{for (int i = 0; i <5; i ++) {strip.setBrightness (110 - i*20); strip.show (); // Туузны саатлыг шинэчлэх (fadeDelay); periodFactor += fadeDelay; }}

void fadeIn ()

{strip.setBrightness (100); strip.show (); // Туузыг шинэчлэх // өнгийг бүдгэрүүлэх (int i = 0; i <5; i ++) {//strip.setBrightness(20*i+30); // зурвас.шоу (); // Туузны саатлыг шинэчлэх (fadeDelay); periodFactor+= fadeDelay; }}

void ledsOff ()

{ арилгах(); for (int i = 0; i

void displayColor (uint32_t өнгө)

{for (int i = 0; i

void oddWheel (uint32_t өнгө)

{for (int j = 0; j <256; j ++) {// дугуй дахь бүх 256 өнгийг (int q = 0; q <3; q ++) {-д (uint16_t i = 24; i <36; i = i+3) {strip.setPixelColor (i+q, Wheel ((i+j) % 255))); // гурав дахь пиксел бүрийг} strip.show () дээр асаана уу;

саатал (1);

for (uint16_t i = 24; i <36; i = i+3) {strip.setPixelColor (i+q, 0); // гурав дахь пиксел бүрийг унтраах}}} fadeIn (); }

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

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

хүчин төгөлдөр бус шилжсэн () {

strip.show (); readSamples (); }

Сэтгэгдлүүдэд нядалахаасаа өмнө (Be Nice бодлогыг санаарай !!) Үүнийг байршуулсны дараа би өөрийн кодын зарим хэсэг нь ямар утгагүй болохыг ойлгосон. Pin 4 ба Pin 8 хоёуланг нь HIGH дээр байнга туршиж үзэх шаардлагагүй. Шилжүүлэгч нь нэг туйлтай хоёр шидэлт тул нэгийнх нь утгыг нөгөөгөөс нь дүгнэж болно: та зөвхөн нэгийг турших хэрэгтэй. Тиймээс та MusicButtonState -ийг унших, бичих талаархи бүх лавлагааг устгаж, санах ой муутай эсвэл бусад горимыг ашиглах боломжтой бол SwirlButtonState -ийг туршиж үзээд бүх зүйлийг илүү үр дүнтэй ажиллуулж болно. Гэхдээ дээрх код ажилладаг.

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

Зугаацаарай!

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