Mundarija:

Qiziqarli magnit devor soati: 24 qadam (rasmlar bilan)
Qiziqarli magnit devor soati: 24 qadam (rasmlar bilan)

Video: Qiziqarli magnit devor soati: 24 qadam (rasmlar bilan)

Video: Qiziqarli magnit devor soati: 24 qadam (rasmlar bilan)
Video: Nilufar Hamidova || Nilufar Xamidova || Nilufar Hamidova rasmlari 2024, Noyabr
Anonim
Qiziqtiradigan magnit devor soati
Qiziqtiradigan magnit devor soati
Qiziqtiradigan magnit devor soati
Qiziqtiradigan magnit devor soati

Mexanik soatlar har doim meni o'ziga jalb qilgan. Ichki tishli uzatmalar, buloqlar va qochmalarning birgalikda ishlashi, natijada doimiy ishonchli soatga ega bo'lish, mening mahoratim cheklangan. Yaxshiyamki, zamonaviy elektronika va 3D bosilgan qismlar kichik metall qismlarga tayanmaydigan oddiy narsalarni yaratish uchun bo'shliqni to'ldirishi mumkin.

Bu minimalist devor soati magnitlarni klassik yong'oq qoplamasi orqasida aylantiradigan, arzon pog'onali dvigatellar tomonidan boshqariladigan 3D bosma halqali tishli g'ildiraklarni yashiradi.

Dastlab STORY Clock -dan ilhomlanib, men bilyli rulmanlardan foydalanadigan kunning vaqtini, faqat raqamli o'qish va o'z mahsulotidan foydalanadigan sekin harakatlanuvchi to'pni ko'rsatishni xohlardim.

Rasm
Rasm

1 -qadam: asboblar va materiallar

Asboblar va materiallar
Asboblar va materiallar
Asboblar va materiallar
Asboblar va materiallar
Asboblar va materiallar
Asboblar va materiallar
Asboblar va materiallar
Asboblar va materiallar

Materiallar:

  • 13 x 13 x 2 dyuymli kontrplak/zarracha taxtasi (men 3 dona yog'och qoldiqlarini yopishtirdim)
  • 13 x 13 dyuymli qattiq taxta
  • Arduino Nano
  • Haqiqiy vaqt soati
  • Stepper motorlar va haydovchilar
  • Zal effekti sensori
  • Magnitlar
  • Quvvat kabeli
  • AC adapteri
  • Plug
  • Mashinaning turli xil vintlari
  • Har xil yog'och vintlardek
  • 3D bosilgan qismlar (oxirgi qadam)
  • Veneer (12 x 12 dyuym - yuz, 40 dyuymli uzun chiziq)
  • Spray lak
  • Qora purkagichli bo'yoq

Asboblar:

  • 3D printer
  • Kompas
  • X-akto pichoq
  • Yelim
  • Qisqichlar
  • Doira kesish dastgohi
  • Hack Saw
  • Disk Sander
  • Ratchet qisqichi
  • Chiziq
  • Hukmdor
  • Sander
  • Matkaplar
  • Tornavidalar
  • Lehimlash temir
  • Issiq yopishtiruvchi qurol

2 -qadam: yog'och ramkani yopishtiring

Yog'och ramkani bir -biriga yopishtiring
Yog'och ramkani bir -biriga yopishtiring
Yog'och ramkani bir -biriga yopishtiring
Yog'och ramkani bir -biriga yopishtiring
Yog'och ramkani bir -biriga yopishtiring
Yog'och ramkani bir -biriga yopishtiring
Yog'och ramkani bir -biriga yopishtiring
Yog'och ramkani bir -biriga yopishtiring

Soat ramkasini tashkil etadigan uchta yog'och bo'lakni yopishtiring. Men eski ko'rpa -to'shakdan qayta ishlangan zarrachalar taxtasidan foydalandim.

3 -qadam: Doira kesish dastagidan foydalanib ramkani kesib oling

Doira kesish dastagidan foydalanib ramkani kesing
Doira kesish dastagidan foydalanib ramkani kesing
Doira kesish dastagidan foydalanib ramkani kesing
Doira kesish dastagidan foydalanib ramkani kesing
Doira kesish dastagidan foydalanib ramkani kesing
Doira kesish dastagidan foydalanib ramkani kesing
Doira kesish dastagidan foydalanib ramkani kesing
Doira kesish dastagidan foydalanib ramkani kesing

Taxtaning o'rtasini belgilang va aylana kesish moslamasiga joylashtiring. Quyidagi diametrli beshta doirani kesib oling:

  • 12 dyuym
  • 11 1/4 dyuym.
  • 9 1/4 dyuym.
  • 7 1/4 dyuym.
  • 5 3/8 dyuym.

4 -qadam: viteslarni chop etish va yig'ish

Viteslarni chop etish va yig'ish
Viteslarni chop etish va yig'ish
Viteslarni chop etish va yig'ish
Viteslarni chop etish va yig'ish

Halqa tishli qismlari bo'laklarga bo'linadi, shuning uchun ularni kichik printerda chop etish va bir -biriga ulash mumkin. Barcha qismlar keyingi bosqichda ko'rsatilgan eritish jarayoniga yordam berish uchun ABS -da chop etilgan. Parchalarning barcha qirralarini va yuzalarini qumlang.

22 -qadamda topilgan quyidagi qismlarni chop eting:

  • 1 - soat uzukli tishli segment magnit
  • 6 - soatlik uzukli uzatmalar segmentining asosiy qismi
  • 1 - soatni ushlab turuvchi halqa segmentini qadam o'rnatish
  • 6 - soatni ushlab turuvchi halqa segmenti asosiy
  • 1 - Soat zali effekt sensori ushlagichi
  • 1 - daqiqali halqa tishli segment magnit
  • 7 - Minute Ring Gear Segment Basic
  • 1 - Daqiqali ushlab turuvchi halqa segmentini qadam o'rnatish
  • 6 - Minute Retaining Ring Segment Basic
  • 1 - Daqiqali Zal effekti sensori ushlagichi
  • 2 - Spur Gear
  • 1 - Elektron tog'i

5 -qadam: Bo'limlarni "yopishtiring"

Rasm
Rasm
Rasm
Rasm
Rasm
Rasm

Bir oz asetonli shisha idishda, eskirgan eski materiallarni bosib chiqaring. Qismlarni bir -biriga yopishtirish uchun har bir tikuvga aseton aralashmasini bo'yab qo'ying. Sog'aygandan so'ng, har bir tikuvni tekis tekislang.

6 -qadam: Rölyeflarni ramkaga kesib oling

Rölyeflarni ramkada kesib oling
Rölyeflarni ramkada kesib oling
Rölyeflarni ramkada kesib oling
Rölyeflarni ramkada kesib oling
Rölyeflarni ramkada kesib oling
Rölyeflarni ramkada kesib oling

Halqa tishli va ushlab turuvchi halqalarni ramkaga joylashtiring va pog'onali dvigatellar uchun bo'rttirmalarni kesib oling. Men ichki halqani juda katta o'lchadim va kesib tashladim, shuning uchun uni do'kon atrofidagi chinorning chekkalari yordamida o'lchamiga qarab o'zgartirdim.

7 -qadam: Hall effektli sensorlar uchun bo'sh joy

Zal effekti sensori uchun kesilgan bo'sh joy
Zal effekti sensori uchun kesilgan bo'sh joy
Hall effekti sensori uchun kesilgan bo'sh joy
Hall effekti sensori uchun kesilgan bo'sh joy
Hall effekti sensori uchun kesilgan bo'sh joy
Hall effekti sensori uchun kesilgan bo'sh joy

Mineral zali effekti sensori uchun ichki halqadan bo'sh joyni va soat zali effekti sensori uchun uyani kesib oling. Men bu bo'shliqlarni kesish uchun pichoq, fayl va kichik qo'lda ishladim.

8 -qadam: tashqi halqani yopishtiring

Tashqi halqa yopishtiruvchi
Tashqi halqa yopishtiruvchi

Tashqi halqani bir daqiqa ushlab turuvchi halqaning o'lchamiga yopishtiring va yopishtiring.

9 -qadam: Hall effekti sensori sozlash vintlarini kesib oling

Zal effekti sensori sozlash vintlarini kesib oling
Zal effekti sensori sozlash vintlarini kesib oling

Mashina vintlarini kesish arra bilan kesib oling, shunda ular ushlab turuvchi halqa va datchik effekti ushlagichining qalinligidan uzunroq bo'ladi. Iplardan yivni kesib oling, shunda u yivli uchidan tekis tornavida bilan sozlanishi mumkin.

10 -qadam: Uzuklarni qattiq taxtaga yopishtiring

Uzuklarni qattiq taxtaga yopishtiring
Uzuklarni qattiq taxtaga yopishtiring
Uzuklarni qattiq taxtaga yopishtiring
Uzuklarni qattiq taxtaga yopishtiring
Uzuklarni qattiq taxtaga yopishtiring
Uzuklarni qattiq taxtaga yopishtiring

Tashqi halqadan kattaroq qattiq taxta doirasini kesib oling. Qatlamli yuzga tashqi va ichki halqani yopishtiring. Ichki halqani joylashtirish uchun ushlab turuvchi halqa va uzuk uzatmalaridan foydalaning. Ichki halqani orqaga yopishtirmaslikka qaraganda, menga ko'proq e'tibor bering. Ikkinchi rasmda zalning effekt sensori uchun yangi uyasi ko'rsatilgan.

Qattiq taxtani tashqi halqaning o'lchamiga qadar kesish uchun disk silliqlash moslamasidan foydalaning.

11 -qadam: Ichki diskni yopishtiring

Ichki disk yopishtiruvchi
Ichki disk yopishtiruvchi
Ichki disk yopishtiruvchi
Ichki disk yopishtiruvchi

Ichki diskni joylashtirish uchun soatni ushlab turuvchi halqa va uzuk tishli yordamida ichki diskni yopishtiring.

12 -qadam: Veneerni biriktiring

Veneerni biriktiring
Veneerni biriktiring
Veneerni biriktiring
Veneerni biriktiring
Veneerni biriktiring
Veneerni biriktiring
Veneerni biriktiring
Veneerni biriktiring

Sochni o'rab oladigan chuqur va uzunligidan ko'ra kengroq shpon tasmasini kesib oling (soat diametri 3.14 *, kerakli uzunlikni qaytaradi. Sizda yetarli ekanligiga ishonch hosil qilish uchun bir dyuym qo'shing.) uzunlikka kesing. Qoplamaga qisqich bilan mahkamlang va shponga etarlicha elim qo'llang. Yopishqoqlikni ta'minlash uchun bir necha soat quriting.

13 -qadam: Veneerni kesing

Qoplama qoplamasi
Qoplama qoplamasi

O'tkir pichoq yordamida soatning old va orqa qismidagi ortiqcha qoplamani kesib oling.

14 -qadam: Veneerni kesib oling

Veneerni kesib oling
Veneerni kesib oling
Veneerni kesib oling
Veneerni kesib oling

Mening shponimda bir nechta yoriqlar bor edi. U bilan ishlashni osonlashtirish uchun men uni yopishtirish uchun rassomlar tasmasini qo'lladim. Kompasda x-akto pichog'idan foydalanib, shponni soat yuzidan kattaroq qilib kesib oling.

15 -qadam: yopishtiruvchi qoplama

Yelim qoplamasi
Yelim qoplamasi
Yelim qoplamasi
Yelim qoplamasi

Bosimni soat yuziga tarqatish uchun kesilgan halqalardan foydalaning. Qoplamaning yopishtirilmagan tomoniga ko'p miqdorda elim surting. Donni soat yuziga vertikal yo'naltiring va har birini birdaniga qisib turadigan ko'plab qisqichlarni qo'llang. Bu qoplamaning siljishining oldini oladi va hatto yuzga bosim o'tkazadi.

Men soatning o'ng tomonida ikkita tekis taxtadan va orqada bir nechta tirnoqlardan foydalanardim.

16 -qadam: Qum va tugatish

Qum va tugatish
Qum va tugatish
Qum va tugatish
Qum va tugatish

Zımpara qog'ozidan foydalanib, soatning yuqori qismidagi ortiqcha qoplamani ehtiyotkorlik bilan olib tashlang va 220 gritdan 600 gacha qumni boshlang.

10 dan 20 tagacha lak surting. Bu bilyali rulman o'tadigan sirtni hosil qiladi. Muqarrar ravishda chang va havodagi boshqa zarralar tufayli, menimcha, har bir rulman yo'li bo'ylab chiziqlar paydo bo'ladi. Ko'proq qatlamlarni qo'llash, buni iloji boricha kechiktirishi kerak. Bu, shuningdek, kelajakda qayta ishlashni osonlashtiradi. Agar soatimda chiziqlar paydo bo'lsa, men bu qadamni yangilayman.

17 -qadam: Quvvatni o'rnating

Quvvatni o'rnating
Quvvatni o'rnating
Quvvatni o'rnating
Quvvatni o'rnating

27/64 dyuymli matkap yordamida soatning pastki qismida teshik oching va vilkasini burab qo'ying.

18 -qadam: Elektronikani yig'ing

Elektronikani yig'ish
Elektronikani yig'ish
Elektronikani yig'ish
Elektronikani yig'ish
Elektronikani yig'ish
Elektronikani yig'ish
Elektronikani yig'ish
Elektronikani yig'ish

Bosqichli haydovchilar va real vaqtda soatni elektron taxtaga ulang. Menga Arduino -ni mahkamlash uchun yo'l topishim kerak edi, shuning uchun teshiklar ochildi va fermuar taqish uchun uyasi kesildi. Bu xususiyatlar 22 -qadamda topilgan faylga qo'shilgan.

19 -qadam: Lehim va ulanish elektronikasi

Lehim va ulanish elektronikasi
Lehim va ulanish elektronikasi
Lehim va ulanish elektronikasi
Lehim va ulanish elektronikasi
Lehim va ulanish elektronikasi
Lehim va ulanish elektronikasi

Blok -sxemaga muvofiq, barcha qismlarni bir -biriga lehimlang. Uzuklarni joyiga issiq yopishtiring va simlarni issiq elim bilan mahkamlang.

Rasm
Rasm

20 -qadam: Orqa plastinka

Orqa plastinka
Orqa plastinka
Orqa plastinka
Orqa plastinka
Orqa plastinka
Orqa plastinka

Soat yuzidan 1/2 dyuym kattaroq boshqa doira va ichki diametri soatning orqa qismi bilan bir xil bo'lgan halqani kesib, orqa plastinkani yarating. Halqa va aylanani bir nechta kamon qisqichlari bilan yopishtiring.

Quriganidan so'ng, ichki halqadan 1/8 dyuym kattaroq chiziq yozing va tasma arra yoki disk silliqlash mashinasi yordamida o'lchamiga qirqing.

Orqa tomonning yuqori qismida kengligi 1 dyuymli 1/4 dyuymli yo'lakchani yoki matkap uchlarini kesib oling. Orqa tomonni soat ramkasiga mahkamlash uchun to'rt teshikni teskari burab qo'ying.

Qora buzadigan amallar bo'yoqini qo'llang va quriganidan keyin soatga mahkamlang.

21 -qadam: Arduino kodi

Arduino kodi iloji boricha izohlanadi. Shuni yodda tutingki, men dasturchi emasman, menda minimal arduino tajribasi bor (mehribon bo'ling). Kod doimiy ravishda "Vaqtni tiklash" ga mos keladimi -yo'qligini tekshiradi. Chunki men hozirgi vaqtni bosqichlarga aylantirishning yo'lini o'ylay olmadim, u har kuni bir marta tuzatadi (sukut bo'yicha yarim tunda). Yarim tunda viteslar yarim tunda aylanadi, keyin soat 00: 01gacha kuting va shu vaqtga qadar davom eting. Hozirgi vaqtda soat 24 soat davomida atigi 5 soniyani yo'qotadi.

Sizga Stepper va RTClib kutubxonalari o'rnatilgan bo'lishi kerak.

Bilaman, kodni o'zimdan ko'ra ko'proq tajribaga ega bo'lgan kishi optimallashtirishi mumkin. Agar siz qiyinchiliklarga duch kelsangiz, iltimos, ushbu loyihani o'zingiz uchun qayta yarating va o'z bilimlaringiz bilan o'rtoqlashing.

#qo'shing

#"RTClib.h" ni qo'shing RTC_DS1307 rtc; #Devine oneRotation 2038 // 28BYJ-48 qadamli dvigatelning bitta aylanishdagi qadamlar soni StepperHand (oneRotation, 3, 5, 4, 6); StepperHand (oneRotation, 7, 9, 8, 10); #define hourStopSensor 12 #define minutesStopSensor 11 int endStep = 0; // Vaqt soat tezligiga mos keladi. int setDelay1 = 168; int setDelay2 = 166; int setDelay3 = 5; // Matematikani bajarish vaqti. float hr = 0; float mn = 0; float sc = 0; // Soatni tiklash uchun kunning vaqtini belgilang (24 soatlik format). int resetHour = 0; int resetMinute = 0; // Ishga tushirish va tiklash vaqtida to'g'ri vaqtni belgilash uchun o'zgaruvchilar. float setTimeStepHour = 0; float setTimeStepMinute = 0; float handDelay = 0; float hourTest = 0; float minutesTest = 0; void setup () {Serial.begin (115200); // Haqiqiy vaqtda soatni sozlash va zal effektli sensorlarni qayta o'rnatish. pinMode (hourStopSensor, INPUT_PULLUP); pinMode (minutesStopSensor, INPUT_PULLUP); rtc.begin (); // Vaqtni belgilash uchun quyida izoh qoldirmang. // rtc.adjust (DateTime (2020, 2, 19, 23, 40, 30)); // rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))))); // Bosqichli motorlarning maksimal tezligini belgilang. hourHand.setSpeed (15); daqiqaHand.setSpeed (15); // Loop minut va soat qo'llari peshin vaqtida (digitalRead (hourStopSensor) == LOW || digitalRead (minutesStopSensor) == LOW) {if (digitalRead (hourStopSensor) == LOW) {hourHand.step (2); } boshqa {kechiktirish (3); } if (digitalRead (minutesStopSensor) == LOW) {minutesHand.step (3); } boshqa {kechiktirish (4); }} while (digitalRead (hourStopSensor)! = LOW || digitalRead (minutesStopSensor)! = LOW) {if (digitalRead (hourStopSensor)! = LOW) {hourHand.step (2); } boshqa {kechiktirish (3); } if (digitalRead (minutesStopSensor)! = LOW) {minutesHand.step (3); } boshqa {kechiktirish (4); }} // Joriy vaqtni oling DateTime now = rtc.now (); hr = hozir.soat (); mn = hozir.minute (); sc = hozir.sekund (); // 12 soatlik formatga o'zgartirish, agar (hr> = 12) {hr = hr - 12; } // Qarang, qaysi qo'l yuz bo'ylab yurishi kerak va shu vaqtni mos ravishda sozlash uchun // hourTest = soat / 12; daqiqaTest = mn / 60; if (hourTest> minutesTest) {handDelay = hourTest; } boshqa {handDelay = minutesTest; } // Joriy soatni belgilash setTimeStepHour = (soat * 498) + (mn * 8,3) + ((sc + (handDelay * 36)) *.1383); // Joriy daqiqani o'rnating setTimeStepMinute = (mn * 114) + ((sc + (handDelay * 45)) * 1,9); // Qaysi qo'lga ko'proq qadam kerak bo'lishini tekshiring va for loop uchun eng uzun qadamlarni belgilang. agar (setTimeStepHour> setTimeStepMinute) {endStep = setTimeStepHour; } boshqa {endStep = setTimeStepMinute; } uchun (int i = 0; i <= endStep; i ++) {if (i <setTimeStepHour) {hourHand.step (2); } boshqa {kechiktirish (3); } agar (i <setTimeStepMinute) {minutesHand.step (3); } boshqa {kechiktirish (4); }} // RPM bilan ishlaydigan soatni sozlash hourHand.setSpeed (1); daqiqaHand.setSpeed (1); } void loop () {// Soat ishlaydigan tsiklni ishga tushirish. for (int i = 0; i <22; i ++) {minutesHand.step (1); kechikish (setDelay1); // Qayta tiklash vaqtini sinab ko'ring, agar tiklashga tayyor bo'lsa, uzing. if (rtc.now (). hour () == resetHour && rtc.now (). daqiqa () == resetMinute) {tanaffus; }} kechikish (setDelay3); for (int i = 0; i <38; i ++) {hourHand.step (1); kechikish (setDelay1); // Qayta tiklash vaqtini sinab ko'ring, agar tiklashga tayyor bo'lsa, uzing. if (rtc.now (). hour () == resetHour && rtc.now (). daqiqa () == resetMinute) {tanaffus; } uchun (int i = 0; i <20; i ++) {minutesHand.step (1); kechikish (setDelay2); // Qayta tiklash vaqtini sinab ko'ring, agar tiklashga tayyor bo'lsa, uzing. if (rtc.now (). hour () == resetHour && rtc.now (). daqiqa () == resetMinute) {tanaffus; }}} // Qayta tiklash vaqtida soatni qayta o'rnatish, agar (rtc.now (). Soat () == resetHour && rtc.now (). Daqiqa () == resetMinut) {// Soat soatining tezligini o'zgartirishHand.setSpeed (10); daqiqaHand.setSpeed (10); // Dumaloq va soat qo'llari tushga yetguncha. while (digitalRead (hourStopSensor) == LOW || digitalRead (minutesStopSensor) == LOW) {if (digitalRead (hourStopSensor) == LOW) {hourHand.step (2); } boshqa {kechiktirish (3); } if (digitalRead (minutesStopSensor) == LOW) {minutesHand.step (3); } boshqa {kechiktirish (4); }} while (digitalRead (hourStopSensor)! = LOW || digitalRead (minutesStopSensor)! = LOW) {if (digitalRead (hourStopSensor)! = LOW) {hourHand.step (2); } boshqa {kechiktirish (3); } if (digitalRead (minutesStopSensor)! = LOW) {minutesHand.step (3); } boshqa {kechiktirish (4); }} // Qayta tiklash vaqti tugaguncha shu erda kuting. while (rtc.now (). minutes () == resetMinute) {kechiktirish (1000); } // Hozirgi vaqtni oling DateTime now = rtc.now (); hr = hozir.soat (); mn = hozir.minute (); sc = hozir.sekund (); // 12 soatlik formatga o'zgartirish, agar (hr> = 12) {hr = hr - 12; } // Qarang, qaysi qo'l yuz bo'ylab harakatlanishi kerak va shu vaqtni mos ravishda sozlash uchun //. hourTest = soat / 12; daqiqaTest = mn / 60; if (hourTest> minutesTest) {handDelay = hourTest; } boshqa {handDelay = minutesTest; } // Joriy soatni belgilash setTimeStepHour = (soat * 498) + (mn * 8,3) + ((sc + (handDelay * 36)) *.1383); // Joriy daqiqani o'rnating setTimeStepMinute = (mn * 114) + ((sc + (handDelay * 45)) * 1,9); // Qaysi qo'lga ko'proq qadam kerak bo'lishini tekshiring va for loop uchun eng uzun qadamlarni belgilang. agar (setTimeStepHour> setTimeStepMinute) {endStep = setTimeStepHour; } boshqa {endStep = setTimeStepMinute; } uchun (int i = 0; i <= endStep; i ++) {if (i <setTimeStepHour) {hourHand.step (2); } boshqa {kechiktirish (3); } agar (i <setTimeStepMinute) {minutesHand.step (3); } boshqa {kechiktirish (4); }} hourHand.setSpeed (1); daqiqaHand.setSpeed (1); }}

22 -qadam: STL fayllari

Siz quyidagi hajmdagi fayllarni chop etishingiz kerak bo'ladi:

  • 1 - soat uzukli tishli segment magnit
  • 6 - soatlik uzukli uzatmalar segmentining asosiy qismi
  • 1 - soatni ushlab turuvchi halqa segmentini qadam o'rnatish
  • 6 - soatni ushlab turuvchi halqa segmenti asosiy
  • 1 - Soat zali effekt sensori ushlagichi
  • 1 - daqiqali halqa tishli segment magnit
  • 7 - Minute Ring Gear Segment Basic
  • 1 - Daqiqali ushlab turuvchi halqa segmentini qadam o'rnatish
  • 6 - Minute Retaining Ring Segment Basic
  • 1 - Daqiqali Zal effekti sensori ushlagichi
  • 2 - Spur Gear
  • 1 - Elektron tog'i

23 -qadam: Solidworks fayllari

Bu oldingi qadamda topilgan STLlarni yaratish uchun ishlatiladigan asl Solidworks fayllari. O'z xohishingizga ko'ra, fayllarimni tahrirlash va o'zgartirish uchun o'zingizni erkin his eting.

24 -qadam: Xulosa

Bu soat men kutganimdan yaxshiroq chiqdi. Arduino -da minimal tajribaga ega bo'lganimdan, bu qanday amalga oshganidan va qanchalik aniqligidan xursandman. Bu ajoyib ko'rinadi va men kutganimdek ishlaydi.

Tavsiya: