Mundarija:
- Ta'minotlar
- 1 -qadam: Algoritmlar 101
- 2 -qadam: Algoritmlar
- 3 -qadam: LED paneli: niqobni 3D chop etish
- 4 -qadam: LED bar alternativlari
- 5 -qadam: LED paneli
- 6 -qadam: Boshqarish paneli
- 7 -qadam: tugmachali jabduqlar
- 8 -qadam: Rotary kodlovchi
- 9-qadam: 7 segmentli displey
- 10 -qadam: Asosiy boshqaruv paneli
- 11 -qadam: yig'ish
- 12 -qadam: kod
- 13 -qadam: Qanday foydalanish kerak
Video: Algoritm mashinasi: 13 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
Men 15 yildan beri kollej darajasida informatika fanidan dars beraman va mening tajribam ko'proq dasturlash sohasida bo'lsa -da, men qidirish va saralash uchun standart algoritmlarni o'rganishga ko'p vaqt sarflayman. O'qitish nuqtai nazaridan, asosiy masala - hisoblash murakkabligi: har bir algoritmga ma'lum hajmdagi ma'lumotlarni kiritish uchun qancha vaqt kerak? Ammo ko'plab nuanslar mavjud. Masalan, algoritmlarning ma'lum kirish qiymatlariga qarab (ish hajmidan farqli o'laroq) har xil ish vaqti bormi? Qaysi hollarda siz bir tartiblash algoritmini boshqasidan afzal ko'rasiz? Garchi biz bu masalalarni mavhum tarzda muhokama qilsak -da, har xil algoritmlarning har xil sharoitda qanday ishlashini ko'rishning oson yo'li yo'qligi meni doim xafa qilgan.
Maqsadlar
Bu loyihaning asosiy maqsadi talabalarga algoritmlarni tasavvur qilish va o'rganish uchun interaktiv displey yaratish edi. Men o'zimni qiymatlar massivida (tamsayılar) ishlaydigan algoritmlar bilan chekladim, shuning uchun qator tarkibini vizualizatsiya qilish uchun RGB LED tasmasidan foydalanishim mumkin. Massiv 100 ta elementdan iborat va har bir butun son kamalak tartibida rangga moslashtirilgan, shuning uchun massiv saralangan, qisman saralangan yoki tasodifiy aniqlanganda aniq bo'ladi. Qiymatlardan tashqari, men algoritmning boshqaruv tomonlarini, masalan, hozirgi vaqtda qaysi elementlarning elementlari solishtirilayotganini yoki almashtirilishini tasavvur qilishni xohlardim.
Maxsus maqsadlar:
- Har xil qidirish va saralash algoritmlarini taqdim eting
- Massivdagi qiymatlarni algoritmning borishini aniqlaydigan tarzda tasavvur qiling
- algoritm boshqaruvini vizualizatsiya qilish; Xususan, ko'rib chiqilayotgan elementlar.
- Foydalanuvchilarga har doim tasodifiy qiymatlarni ishlab chiqarishni emas, balki kirish ma'lumotlarini tanlashga ruxsat bering
- Foydalanuvchilarga tezlikni boshqarishga va algoritmni pauza qilishga ruxsat bering
-Foydalanuvchilarga eng yaxshi, eng yomon, o'rtacha xatti-harakatlarni majburlashga ruxsat berish (algoritmga xos)
- Algoritm davom etar ekan, qadamlar sonini ko'rsating
Vizualizatsiya
Jismoniy dizayn nuqtai nazaridan, ushbu loyihaning eng qiziqarli qismi - bu massivning vizualizatsiyasi. Men qanday qilib ma'lumotlar va boshqaruvni ko'rsatish va displey qurilmasini o'zi qurish bilan kurashdim. Mening maqsadim - ma'lumotlarning qiymatlarini rangli doiralar va boshqaruv nuqtalarini rangli o'qlar sifatida ko'rsatish. Bir oz tajribadan so'ng, men har bir ma'lumot diodasida dumaloq niqobli va har bir boshqaruv LEDida uchburchak niqobli 100 ta RGB LEDli ikkita parallel chiziqli (WS2812) dizaynga qaror qildim. Men 10 juft aylana va uchburchakli niqobning 3D modelini yasadim, so'ngra 3D modullardan 10 tasini jami 100 ta aylana va 100 ta uchburchakda chop etdim. Mening niqobimning o'lchami va oralig'i metrga 100 LEDli chiziqlar uchun mo'ljallangan. 3D modelli fayllar keyinchalik ushbu tavsifda keltirilgan.
Elektronika va korpus
Qolganlari elektronika nuqtai nazaridan tushunarli. Ikkita LED chizig'idan tashqari, bir lahzali tugmalar, aylanuvchi kodlovchi (tezlikni boshqarish uchun) va 7 segmentli displey (qadamlarni ko'rsatish uchun) mavjud. Ko'p tugmalar va boshqaruv elementlari bilan men ESP32 mikrokontroleridan foydalanishni tanladim, chunki u juda ko'p pinlarni ochib beradi va u juda kuchli. Men simlarni ulash strategiyasini ko'rib chiqaman, lekin bu juda oddiy. Agar siz kamroq pinlardan foydalanmoqchi bo'lsangiz, smenali registrlar yordamida aqlli ish qilishingiz mumkin.
Siz ushbu qurilma uchun korpusni turli shakllarda qurishingiz mumkin. Men dastlab uni to'rtburchaklar shaklidagi katta taxtaning tepasida LED tasmasi va o'rtada tugmachalar panjarasi deb tasavvur qilardim. Men tugatgan shakl 1960 yillarning kosmik asr texnologiyasiga bo'lgan qarashidan ilhomlangan. Siz uni LED chiziqlar bilan vertikal yo'nalishda qurishingiz mumkin. Yoki LED qismini ancha kattalashtiring - butun devorni alohida boshqaruv paneli bilan to'ldiring.
Dasturiy ta'minot
Bu qurilmaning kodi GitHub -da erkin mavjud va men uning qanday ishlashini va uni qanday sozlashni hujjatlashtirish uchun qo'limdan kelganini qildim. Sizga kerak bo'lgan yagona tashqi kutubxona WS2812 tasmalarini haydash uchun FastLED.
Ta'minotlar
Elektronika
1 ESP32 ishlab chiqish taxtasi (masalan, 2 ta WS2812 yoki shunga o'xshash LED chiziqlar, har bir metr uchun 100 ta LED (masalan, 1 "boshlash" uchburchagi tugmasi (masalan, 12 lahzali tugmalar (masalan, https://amzn.com/B01N4D4750) - agar xohlasangiz, turli shakllar
Oldindan o'rnatilgan 1 ta (20) tugma ulagichi (masalan, 1 paketli JST ulagichlari (masalan, 1 aylanadigan kodlovchi (masalan, Aylanadigan kodlovchi uchun 1 tugma (masalan, 1 paketli Dupont ulagichlari (masalan, https://amzn.com/B014YTPFT8) - siqish vositasini ham olish kerak.
1 bochka uyasi (quvvat uchun) (masalan, 1 TM1637 7 segmentli raqamli displey (masalan, Lehimlash va payvandlash moslamalari
3D model fayllar
Thingiverse-da 10 yorug'likli modullar uchun 3D modelni topishingiz mumkin:
www.thingiverse.com/thing:4178181
Siz ushbu modelni jami 10 ta modul uchun besh marta chop etishingiz kerak bo'ladi.
Dasturiy ta'minot
github.com/samguyer/AlgorithmMachine
Qoplama
Yog'och, pleksiglas, zanglamaydigan po'latdan yasalgan murvat va vintlar
Tarqatish materiali. Men yoqtirgan Li Filters #216 to'liq oq diffuziya, lekin boshqa variantlar ham bor. Hatto oddiy oq qog'oz ham yaxshi ishlaydi.
1 -qadam: Algoritmlar 101
Ko'p odamlar informatika asosan dasturlashni o'rganadi deb o'ylashadi. Ammo bu sohaning haqiqiy yuragi - bu algoritmlar: muammolarni hal qilishning muntazam tartib -qoidalarini va ularning narxini o'rganish (odatda, ular qancha davom etadi). Alan Turing, Alonzo cherkovi va Edsger Dijkstra kabi sohadagi taniqli shaxslar bu g'oyalar kompyuterdan oldin, biz bilganimizdek, ular haqida o'ylashgan.
Muayyan muammoni hal qilish algoritmining asosiy xususiyati shundaki, u batafsil va aniqdir, shuning uchun kimdir uning qanday ishlashini umuman tushunmasdan yechim olish uchun foydalanishi mumkin; qadamlarni mexanik usulda bajaring, shunda siz to'g'ri javob olasiz. Bu kompyuterlarni dasturlashda qanday yordam berishini ko'rishingiz mumkin, chunki ular bu darajadagi tafsilotlarga muhtoj. Kompyuter etishmayotgan tafsilotlarni to'ldirolmaydi yoki hukm chiqara olmaydi, xuddi shunday.
U qancha vaqt oladi?
Agar biz batafsil protsedurani olsak, tabiiy savol tug'iladi - javobni olish uchun qancha vaqt ketadi? Biz oddiy vaqt birligidan foydalana olmaymiz, chunki bu ishni kim bajarayotganiga bog'liq (odam biror narsani superkompyuter bilan qanchalik tez hisoblashini solishtiring). Bundan tashqari, bu bizda qancha ma'lumot borligiga bog'liq. Shubhasiz, million telefon raqamlari ro'yxatini qidirish yuzdan ko'ra ko'proq vaqtni oladi.
Algoritmning narxini tasvirlash uchun biz birinchi navbatda bitta "qadam" ni ifodalovchi protsedurani tanlaymiz - odatda oddiy sonni, masalan, ikkita raqamni solishtirish yoki qo'shish uchun ma'lum vaqt talab etiladi. Keyin biz bir nechta ma'lumotlar elementlarini hisobga olgan holda algoritm necha bosqichdan o'tishini ta'riflaydigan formulani o'ylab topamiz. Tarixiy sabablarga ko'ra, biz deyarli har doim katta harfli N ma'lumotlar elementlari sonini bildiramiz.
Masalan, N telefon raqamlari ro'yxatini ko'rib chiqish uchun N qadam kerak bo'ladi. Ro'yxatni ikki marta ko'rib chiqish 2N qadamni oladi. Ularning ikkalasi ham chiziqli vaqt algoritmlari deb ataladi - qadamlarning umumiy soni kirish hajmining bir necha barobaridir. Boshqa algoritmlar kvadratik (N kvadrat vaqt) yoki kubik (N kub) yoki logarifmik (log N) yoki ularning kombinatsiyasidir. Ba'zi eng qiyin hisoblash muammolari eksponensial vaqt algoritmlarini talab qiladi (2^N).
OK, nima?
Ma'lumotlar soni N bo'lsa, unchalik muhim emas. Masalan, N = 10 uchun 10N - bu ism N kvadratchadir. Ammo N = 1000 haqida nima deyish mumkin? yoki N = 1000000? Million kvadrat - bu juda katta raqam. Hatto juda tez ishlaydigan kompyuterda ham, agar kirish etarlicha katta bo'lsa, kvadratik algoritm uzoq vaqt talab qilishi mumkin. Ko'rsatkichli algoritmlar ancha murakkab: N = 50 uchun eksponent algoritm har bir qadam bir nanosaniyada (sekundning 1 milliarddan birida) bo'lgan kompyuterda ham tugashiga ikki hafta vaqt ketadi. Voy!
O'lchovning boshqa uchida bizda logarifmik vaqt algoritmlari bor, ular juda tez. Jurnal vaqti eksponensial vaqtga qarama -qarshidir: berilgan kirish o'lchami N, qadamlar soni 2^T = N formuladagi T ko'rsatkichidir. Masalan, agar bizning kirish hajmi bir milliard bo'lsa, u holda log vaqt algoritmi faqat 30 ni talab qiladi. qadamlar, chunki 2^30 = 1, 000, 000, 000. Bu qanday shirin?! ??!
Sizni qiziqtirishi mumkin, kim millionlar yoki milliardlar kiritish hajmi haqida qayg'uradi? O'ylab ko'ring: Facebookda qancha foydalanuvchi bor? Google tomonidan qancha veb -sahifalar indekslanadi? Inson genomida nechta juft juftlik bor? Ob -havo simulyatsiyasiga qancha o'lchovlar kiradi?
2 -qadam: Algoritmlar
Algoritm mashinasi hozirda quyidagi algoritmlarni amalga oshiradi. Ulardan ikkitasi - qidiruv algoritmlari (ro'yxatda ma'lum bir qiymatni toping), qolganlari - tartiblash algoritmlari (qiymatlarni tartibda joylashtiring).
Chiziqli qidiruv
Qiymatlar ro'yxatini boshidan boshlab birma -bir qidiring. Chiziqli vaqtni talab qiladi.
Ikkilik qidiruv
Ro'yxatni bir necha marta yarmiga bo'lish orqali qidiring. Jurnal vaqtini talab qiladi, lekin uning ishlashi uchun ro'yxat tartiblangan bo'lishi kerak.
Pufakchali nav
Tartibda bo'lmagan qo'shni elementlarni bir necha marta almashadigan ro'yxatni saralash. Kvadrat vaqtni talab qiladi.
Qo'shish tartibi
Ro'yxatni saralash, har bir elementni tartiblangan qiymatlar ro'yxatiga o'z joyiga qo'yish. Kvadrat vaqtni talab qiladi.
Quicksort
Ro'yxatni qayta -qayta yarmiga bo'linib, barcha qiymatlarni medianadan birinchi yarmiga, medianadan kattaroq qiymatlarni ikkinchi yarmiga ko'chirish orqali ro'yxatni tartiblang. Amalda biz medianani samarali topa olmaymiz, shuning uchun biz tasodifiy qiymat tanlaymiz. Natijada, bu algoritm eng yomon holatda kvadratik bo'lishi mumkin, lekin odatda N * logN vaqtini talab qiladi.
Saralashni birlashtirish
Ro'yxatni yarmiga bo'lish orqali saralash, ikkita yarmini alohida saralash (birlashtirish tartibidan foydalanib) va keyin qiymatlarni bir -biriga bog'lab, ularni birlashtirish. Har doim N * logN vaqtini talab qiladi.
Yig'ma nav
Jurnal vaqtidagi eng kichik qiymatni topishga imkon beradigan, yig'ma deb nomlangan ma'lumotlar strukturasini tuzish orqali ro'yxatni saralash. Har doim N * logN vaqtini talab qiladi.
Bitonik nav
Saralash va tez yig'ishni birlashtirishga o'xshab, ro'yxatni yarmiga bo'ling, yarmini saralang va ularni birlashtiring. Bu algoritm N * logN * logN vaqtini talab qiladi, lekin uning afzalliklari borki, uni parallellashtirish oson.
3 -qadam: LED paneli: niqobni 3D chop etish
LED barni qurishning birinchi bosqichi - bu niqobni 3D bosib chiqarish, bu chiroqlarga o'z shaklini beradi. Har bir modul qatorning o'n elementini o'z ichiga oladi, 10 qiymat (aylana) va 10 indikator (uchburchak), shuning uchun sizga 10 modul kerak bo'ladi. Men taqdim qilayotgan STL fayli modulning ikkita nusxasini o'z ichiga oladi, shuning uchun siz beshta chop etish davrini bajarishingiz kerak bo'ladi. Menda eng yaxshi 3D printer yo'q, shuning uchun fayl va zımpara yordamida ularni qo'lda tozalashga to'g'ri keldi. Eng muhimi, dumaloq va uchburchak teshiklari toza.
Suratlarda siz mening sinov sozlamamni ko'rasiz: men ikkita LED tasmasini pastga yopishtirib, mikrokontroldorli non paneliga uladim. Bu qadam kerak emas, lekin men korpusni yig'ishni boshlashdan oldin qanday ko'rinishini ko'rishni xohlardim. Men niqob modullarini ikkita LED chizig'iga joylashtirdim va tasodifiy ranglar bilan oddiy eskizni ishga tushirdim. Diffuziya materialining tasmasi bilan shakllar va ranglar chindan ham ochilib ketadi.
4 -qadam: LED bar alternativlari
Men bu loyihani birinchi marta boshlaganimda, LED niqobini yasashning boshqa usullarini sinab ko'rdim. Agar sizda 3D printer bo'lmasa, siz ushbu variantlardan birini ko'rib chiqishingiz mumkin. Rostini aytsam: bu qismlarni yasash juda katta azob.
Davralar uchun men diametri deyarli 1 sm bo'lgan 13/32 guruch naychasini sotib oldim. Men uni 1 sm uzunlikdagi bo'laklarga kesib tashladim va keyin ularni oq rangga bo'yadim.
Uchburchaklar uchun men bir marta pishiriladigan idishdan kesilgan og'ir alyumin folga ishlatardim. Men yog'ochdan uchburchak shakl yasadim, keyin folga qisqa tasmalarini o'rab, lentaga yopishtirdim. Shunga qaramay, sizga yuzta narsa kerak bo'ladi, shuning uchun biroz vaqt va sabr kerak.
5 -qadam: LED paneli
Mening korpusim juda oddiy: yon tomonlari uchun ikkita yog'och tasma va yuqori va pastki qismi uchun ikkita pleksiglas tasmasi. Barcha qismlarning uzunligi taxminan 102 sm (LEDlar uchun 1 metr, shuningdek, simlarni ulash uchun biroz qo'shimcha). LED chiziqlar uchun joy ajratish uchun tomonlar 1 sm dan biroz balandroq bo'lishi kerak. Chiziqlarni kesib bo'lgach, pleksiglas kengligini o'lchash uchun ularning orasiga 3D bosilgan niqob bo'laklarini joylashtirdim. Barning kengligi va uzunligini ikki qismli pleksiglasdan kesib oling. Nihoyat, niqobning ustiga sig'adigan diffuziya materialining tasmasini kesib oling.
Diffuziya uchun menga Li Filters #216 (to'liq oq diffuziya) yoqadi. Bu juda ko'p yorug'likni yo'qotmasdan ham diffuziya beradigan nozik plastmassa varaq. Ammo bu qimmat narsalar. Ba'zida siz Internetda sotiladigan kichikroq varaqlarni topishingiz mumkin, lekin butun rulon sizga taxminan 125 dollar qaytarib beradi. Boshqa variantlar - oq qog'oz yoki boshqa atlas yoki muzli plastmassa. Ommabop tanlov - yupqa plastmassadan yasalgan matlar.
LED panelini yig'ishdan oldin, LED chiziqlariga lehimli mos keladigan ulagichlar borligiga ishonch hosil qiling. Ko'p chiziqlar oldindan lehimlangan simlar bilan ta'minlangan, shuning uchun siz ulardan foydalanishingiz mumkin.
Men yig'ishni pleksiglasning yuqori qismini yog'och tomonlarga burab, boshladim (rasmga qarang). Keyin men uni ag'darib tashladim va diffuzion tasmasini, so'ngra 10 ta niqobni joylashtirdim. Men bo'sh joydan mamnun bo'lganimda, ularni bir necha nuqta issiq elim bilan mahkamladim.
Keyin niqoblar ustiga ikkita LED tasmasini yonma -yon qo'ying. LEDlarning pastga qaraganligiga ishonch hosil qiling va har bir LED niqobning mos keladigan teshigiga to'g'ri kelishiga ishonch hosil qiling. LED chiziqlarini ushlab turish uchun issiq elim yoki lenta qo'shing. Nihoyat, pleksiglasning orqa qismini burab qo'ying.
Sinov namunasini ishga tushiring. Yaxshi ish! Siz eng qiyin ishni qildingiz!
6 -qadam: Boshqarish paneli
Boshqaruv paneli - bu eng ijodiy erkinlikni ta'minlaydigan qism. U faqat LED paneli bilan birga barcha boshqaruv elementlari va elektronikani ushlab turishi kerak. Eng oddiy dizayn - bu to'rtburchaklar taxtalar: tugmalar va boshqaruv elementlari uchun teshiklarni burang va LED panelini ulang. Men yog'och, pleksiglas va boshqa materiallarni birlashtirib, steampunk / retro-zamonaviy ko'rinishga ega bo'lishni yaxshi ko'raman. Bu holda men asosiy algoritmni tanlash tugmachalarini ushlab turish uchun og'ir pleksiglasni kesib tashladim, elektronikaning qolgan qismini ushlab turish uchun yog'och bar. Men arja tugmalarining o'lchamiga mos keladigan teshiklarni burg'uladim. Elektr simlari orqa tomondan ko'rinadi, lekin menga yoqadi!
Men, shuningdek, 7 segmentli displey, aylanadigan kodlovchi va orqa tarafdagi simlar uchun joy ochdim. Men LED panelini ushlab turish uchun tepada dado kesib oldim.
7 -qadam: tugmachali jabduqlar
Ko'p tugmachalarni ulash haqiqiy og'riq bo'lishi mumkin. Yaxshiyamki, arja mashinalari ishlab chiqaradigan odamlar siz foydalanishingiz mumkin bo'lgan ba'zi standart ulagichlarni o'ylab topishdi. Har bir tugma konnektori kabeli ikkita simga ega, bittasi VCC uchun, ikkinchisi esa topraklama uchun. Bir uchida tugmachaning orqa qismidagi simlarga mos keladigan belkurak ulagichlari bor - erni "odatda ochiq" simga, VCCni esa "umumiy" uchiga ulang. Ushbu konfiguratsiyada, foydalanuvchi tugmachani bosganida, kontaktlarning zanglashiga o'tish tugallanadi va mikrokontroller tegishli kirish pimida "YUQORI" ni o'qiydi.
Kabelning boshqa uchida JST ulagichi (kichik oq narsa) mavjud. Bu ulagichlarning yaxshi tomoni shundaki, ular faqat bitta uskuna ichiga kiradi, shuning uchun tasodifan VCC va erni teskari burishning iloji yo'q.
Men qilgan ishim - bu ulagichlar uchun kichik jabduqlar yasash. Men bir qator JST idishlarini protoboardga lehimlayman, keyin simlarni Dupont ulagichlariga qaytaraman, ular mikrokontrollerga ulanadi. Qizil sim VCC liniyasi bo'lib, u barcha JST prizlariga ulanadi. Moviy simlar - har bir tugma uchun alohida.
8 -qadam: Rotary kodlovchi
Aylanadigan kodlovchi foydalanuvchi algoritm tezligini boshqarishga imkon beradi. Men ikkita ma'lumot uzatish liniyasi (sariq simlar) uchun tortishish qarshiligini o'z ichiga olgan uzilish taxtasi sifatida keladigan moduldan foydalanaman. Bu ham tugma bo'ladi, lekin men bu imkoniyatdan foydalanmayapman. Qolgan ikkita sim VCC va topraklama. Menda ham yaxshi semiz tugma bor.
Potentsiometrdan farqli o'laroq, aylanadigan kodlovchi menga yoqadi, bu faqat mikrokontrollerga aylanish (soat sohasi farqli o'laroq, teskari) signalini beradi, shuning uchun qiymatni qanday izohlanishini o'zgartirish oson. Misol uchun, foydalanuvchi tez aylanayotganda, unga tezlik hissi (sichqoncha kabi) bera olasiz.
9-qadam: 7 segmentli displey
Bu erda ko'p gapirish mumkin emas. Bu narsalar hamma joyda. LEDlar TM1637 deb nomlangan chip tomonidan boshqariladi, u oddiy ketma -ket protokol orqali mikrokontroller bilan aloqa o'rnatadi. Men mavjud raqamli kutubxonadan foydalanaman, bu menga qaysi raqamni ko'rsatishni xohlayotganimni aytishga imkon beradi, qolganini esa.
Orqa tomonda to'rtta pin bor: VCC, topraklama va ketma -ket protokol uchun ikkita sim. Men 4-pinli sarlavhani lehimladim, u mikrokontrollerga ulangan mos keladigan Dupont ulagichiga ulanadi.
10 -qadam: Asosiy boshqaruv paneli
Asosiy boshqaruv panelida mikrokontrollerning o'zi va boshqaruv elementlarining barcha ulagichlari (tugmalar, displey, LEDlar) joylashgan. Mikrokontroller - bu ESP32 bo'lib, u ko'p hisoblash kuchi va xotirasini ta'minlaydi va ko'plab pinlarni ochib beradi. Ulanish juda standart, lekin men bir nechta qiziqarli qismlarni ko'rsataman.
QAYD: Asosiy kartani ulashni boshlashdan oldin siz kodni (https://github.com/samguyer/AlgorithmMachine) ko'rib chiqishingiz mumkin, shunda sizning pin konfiguratsiyangiz meniki bilan mos keladi.
Men taxtaga bochka krikosini lehimladim va ikkita mis simni taxtaning quvvat va er relslariga uladim. Sababi shundaki, agar yorug'lik balandligi o'rnatilgan bo'lsa, LED paneli juda ko'p quvvat sarflay oladi va men bu quvvatni mikrokontroldagi USB ulagichi orqali tortib olmoqchi emasman.
Tugmachani ulashni soddalashtirish uchun men erkakdan ayolga to'g'ri burchakli sarlavha chizig'ini mikrokontrolderning butun yonidan lehimlab qo'ydim (rasmning yuqori qismi). Dupont tugmachalari ulagichlari to'g'ridan -to'g'ri ushbu sarlavhaga ulanadi.
MUHIM: tugmachalarning quvvati (qizil sim) mikrokontroldagi 3.3V kuchlanishli tarmoqqa ulangan bo'lishi kerak. ESP32 - bu 3,3V kuchlanishli chip, shuning uchun faqat 3.3V manbalar ma'lumot pinlariga ulanishi kerak.
Mikrokontroller 5V USB pimi va tuproq orqali relslarga (taxtaning pastki tomoni) quvvat oladi (yoki quvvat beradi). Boshqa qizil/qora simlarning hammasi VCC va topraklama.
Ikkita ko'k sim - bu LED chiziqlar uchun ma'lumot uzatish liniyalari (WS2812s). Sariq/yashil juftlik-aylanuvchi kodlovchi uchun ma'lumotlar chizig'i, sariq juftlik-7 segmentli displeyga ketma-ket ulanish.
11 -qadam: yig'ish
Ushbu fotosuratlar seriyasida oxirgi yig'ilish va simlar ko'rsatilgan. Bundan tashqari, men yuqori boshqaruv panelini orqa tomonga biriktirdim.
Quvvatni yoqishdan oldin, men kutilmagan hodisalardan saqlanish uchun bir nechta tekshiruv o'tkazdim. Ayniqsa, menda hech qanday quvvat/topraklama ulagichlari yo'qligiga ishonch hosil qilish uchun va qisqa tutashuvlar yo'q. Multimetrni uzluksizligini tekshirish uchun o'rnating - bu ikkita sim o'rtasida elektr yo'li bo'lganida signal beradi. Tugmalarga umumiy VCC chizig'iga bitta simni ulang. Keyin boshqa simni jabduqlarning har bir piniga birma -bir ulang. Multimetr faqat tugmani bosganingizda signal berishi kerak. Agar boshqa signal eshitilsa, bu sizda teskari yoki qisqa signal borligini bildiradi. Quvvatni yoqishdan oldin uni kuzatib boring va tuzating!
12 -qadam: kod
Birinchidan, Arduino IDE -ni oching va FastLED kutubxonasi o'rnatilganligiga ishonch hosil qiling.
Algoritm mashinasi kodini GitHub -dan yuklab oling:
github.com/samguyer/AlgorithmMachine.git
Siz uni Arduino papkasiga to'g'ridan -to'g'ri klonlashingiz yoki qo'lda nusxalashingiz mumkin.
Yuklamasdan oldin, pin sozlamalari sizning apparat konfiguratsiyangizga mos kelishiga ishonch hosil qiling. Men barcha pin sozlamalarini faylning yuqori qismiga joylashtirdim.
Yuklab oling va zavqlaning!
13 -qadam: Qanday foydalanish kerak
Algoritm mashinasidan foydalanish oson va tugmalarning deyarli har qanday kombinatsiyasi yaxshi!
Birinchidan, ma'lumotlar tugmalaridan foydalanib, massivdagi qiymatlarni ishga tushiring. Uchta variant bor: (1) tasodifiylashtirish, (2) bitta tasodifiy qiymat qo'shish va (3) qatorni teskari yo'naltirish. E'tibor bering, qiymatlar doimiydir, shuning uchun siz avval ularni saralash, keyin shovqin qo'shish, keyin boshqa tartiblash yoki qidirish algoritmini ishga solish kabi narsalarni qilishingiz mumkin.
Boshqa tugmalar tanlovidan qidirish yoki saralash algoritmini tanlang. Hozirgi vaqtda bu tanlovni amalga oshirishda hech qanday teskari aloqa yo'q (kelajakdagi ish uchun biror narsa). Keyin "o'ynash" tugmasini bosing.
Tugma tezlikni boshqaradi. Algoritmni pauza qilish va to'xtatish uchun siz "o'ynash" tugmasini bosishingiz mumkin.
Ish tugagandan so'ng u avtomatik ravishda to'xtaydi. Istalgan vaqtda boshqa algoritm tugmachasini bosishingiz mumkin. Mashina joriy algoritmni to'xtatadi va yangisini ishga tushiradi, lekin ma'lumotlarni avvalgi algoritm qoldirganidek saqlaydi.
STEM tanlovida bosh mukofot
Tavsiya:
Batareya bilan ishlaydigan tuman mashinasi: 5 qadam (rasmlar bilan)
Batareya bilan ishlaydigan tuman mashinasi: Menga bo'lajak loyiha uchun batareyadan ishlaydigan kichik tuman mashinasi kerak edi. Tarmoq bilan ishlaydigan tumanlar umuman qimmat emas (~ 40 dollar). Lekin akkumulyator bilan ishlaydigan portativ - men tushunmagan sabablarga ko'ra, juda katta 800 dollar (yoki hatto 1850 dollar!). Va bor
Koka mashinasi darajasini aniqlovchi - endi nutq bilan !: 6 qadam (rasmlar bilan)
Coke Machine Level Detector-Endi Nutq bilan !: Bu loyiha mening Coke Machine Can Level detektorining remiksi, (https://www.instructables.com/id/Coke-Machine-Can-Level-Detector/) yangi sensorlar bilan va ovozli ovoz qo'shilishi! Men birinchi darajali detektorni yaratganimdan so'ng, men piezo signalini qo'shdim
Aqlli odam bilan superkondensatorning foydasiz mashinasi yoki dialogi: 7 qadam (rasmlar bilan)
Superkondansatör foydasiz mashina yoki aqlli yigit bilan muloqot: aqlli yigit. Nima?! Yaroqsiz mashina! Yana! Yuzlab, minglab odamlarning YouTube kanallarini yopib qo'yishi etarli emasmi? Ularning ko'pchiligi o'tish tugmasi bilan qilingan, bu rokka ega.SG. Xo'sh? Hamma bir xil ishlashini biladi. Va siz allaqachon
Raspberry Pi bilan ishlaydigan arzimas baraban mashinasi: 15 qadam (rasmlar bilan)
Raspberry Pi bilan ishlaydigan arzimas baraban mashinasi: Bu ko'rsatma sizga Raspberry Pi bilan ishlaydigan robot baraban mashinasini yasashni ko'rsatib beradi. Bu, albatta, qiziqarli, ijodiy, interaktiv loyihadir. Men sizga ichki ishlarni qanday qilishni ko'rsataman, lekin barabanlar sizga bog'liq bo'lib, sizga
Raspberry PI, RetroPie va uy qurilishi qutisi bilan retro-o'yin mashinasi: 17 qadam (rasmlar bilan)
Raspberry PI, RetroPie va Homemade Case bilan Retro-o'yin mashinasi: Bir muncha vaqt oldin men Raspberry Pi uchun Linux tarqatilishini topdim, u RetroPie. Men zudlik bilan aniqladimki, bu ajoyib g'oya, uni amalga oshirish juda yaxshi. Keraksiz funktsiyalarsiz bir maqsadli retro-o'yin tizimi. Ko'p o'tmay, men qaror qildim