Isi kandungan:

Mesin Algoritma: 13 Langkah (dengan Gambar)
Mesin Algoritma: 13 Langkah (dengan Gambar)

Video: Mesin Algoritma: 13 Langkah (dengan Gambar)

Video: Mesin Algoritma: 13 Langkah (dengan Gambar)
Video: #1 Pengantar Algoritma | DASAR DASAR PEMROGRAMAN 2024, November
Anonim
Image
Image
LED Bar: 3D Cetak Topeng
LED Bar: 3D Cetak Topeng

Saya telah mengajar sains komputer di peringkat kolej selama 15 tahun, dan walaupun kepakaran saya lebih banyak dari aspek pengaturcaraan, saya masih menghabiskan banyak masa untuk merangkumi algoritma standard untuk mencari dan menyusun. Dari sudut pandang pengajaran, persoalan utamanya adalah kerumitan komputasi: berapa lama masa yang diperlukan oleh setiap algoritma, diberi input dari ukuran tertentu? Tetapi terdapat banyak nuansa. Sebagai contoh, adakah algoritma mempunyai jangka masa yang berbeza bergantung pada nilai input tertentu (berbanding dengan ukuran)? Dalam kes manakah anda memilih satu algoritma penyortiran daripada yang lain? Walaupun kita membincangkan isu-isu ini secara abstrak, selalu menyusahkan saya bahawa tidak ada cara mudah untuk melihat bagaimana algoritma berbeza berfungsi dalam pelbagai keadaan.

Matlamat

Tujuan utama saya untuk projek ini adalah untuk membuat paparan interaktif bagi pelajar untuk menggambarkan dan meneroka algoritma. Saya mengehadkan algoritma yang berfungsi pada susunan nilai (bilangan bulat), jadi saya boleh menggunakan jalur LED RGB yang dapat dialamatkan untuk memvisualisasikan isi array. Array mempunyai 100 elemen, dan setiap bilangan bulat dipetakan ke warna dalam urutan pelangi, sehingga dapat dilihat dengan jelas ketika susunan disusun, disusun sebagian, atau secara rawak. Sebagai tambahan kepada nilai, namun, saya mahukan cara untuk memvisualisasikan aspek kawalan algoritma - sebagai contoh, elemen array yang sedang dibandingkan atau ditukar.

Matlamat khusus adalah:

- Menyediakan pelbagai algoritma mencari dan menyusun

- Visualisasikan nilai dalam array dengan cara yang menyoroti kemajuan algoritma

- Visualisasikan kawalan algoritma; khususnya, unsur-unsur yang sedang dipertimbangkan.

- Benarkan pengguna memilih corak data input daripada selalu menghasilkan nilai rawak

- Benarkan pengguna mengawal kelajuan dan menjeda algoritma

- Benarkan pengguna memaksa tingkah laku kes terbaik, terburuk, rata-rata (khusus algoritma)

- Tunjukkan bilangan langkah semasa algoritma berjalan

Visualisasi

Dari sudut reka bentuk fizikal bahagian yang paling menarik dari projek ini adalah visualisasi susunan. Saya bergelut dengan cara menunjukkan data dan kawalan, dan bagaimana membina peranti paparan itu sendiri. Tujuan saya adalah untuk menunjukkan nilai data sebagai lingkaran berwarna dan titik kawalan sebagai anak panah berwarna yang menunjuk pada nilai data. Selepas beberapa percubaan, saya membuat reka bentuk dengan dua jalur selari 100 LED RGB (WS2812) dengan topeng bulat di atas setiap LED data dan topeng segitiga pada setiap LED kawalan. Saya membuat model topeng 3D dengan 10 pasang bulatan dan segitiga, dan kemudian 3D mencetak 10 modul ini untuk jumlah 100 bulatan dan 100 segitiga. Ukuran dan jarak topeng saya direka untuk jalur dengan 100 LED per meter. Fail model 3D disediakan kemudian dalam keterangan ini.

Elektronik dan lampiran

Selebihnya peranti mudah, dari sudut elektronik. Sebagai tambahan kepada dua jalur LED, terdapat sekumpulan butang sesaat, pengekod putar (untuk kawalan kelajuan), dan paparan 7 segmen (untuk menunjukkan langkah). Dengan begitu banyak butang dan kawalan, saya memilih untuk menggunakan mikrokontroler ESP32 kerana mengeluarkan banyak pin dan kerana ia cukup kuat. Saya akan membahas strategi pendawaian, tetapi cukup asas. Anda mungkin boleh melakukan sesuatu yang pintar dengan register shift jika anda ingin menggunakan pin yang lebih sedikit.

Anda boleh membina kandang untuk peranti ini dalam pelbagai bentuk. Pada mulanya saya membayangkannya sebagai papan segi empat besar dengan jalur LED di bahagian atas, dan grid butang di tengahnya. Bentuk yang saya hasilkan diilhamkan oleh semacam teknologi 1960-an mengenai teknologi zaman angkasa. Anda juga boleh membuatnya dengan jalur LED dalam orientasi menegak. Atau buat bahagian LED jauh lebih besar - isi keseluruhan dinding - dengan panel kawalan yang berasingan.

Perisian

Kod untuk peranti ini tersedia secara percuma di GitHub, dan saya telah melakukan yang terbaik untuk mendokumentasikan cara kerjanya dan cara mengkonfigurasinya. Satu-satunya perpustakaan luaran yang anda perlukan ialah FastLED untuk memacu jalur WS2812.

Bekalan

Elektronik

1 papan pengembangan ESP32 (mis., 2 jalur LED WS2812 atau serupa, ketumpatan 100 LED per meter (mis., 1 butang "mulakan" Segitiga (mis., 12 Butang sesaat (mis., Https://amzn.com/B01N4D4750) - bentuk yang berbeza jika anda mahu

Penyambung butang 1 paket (20) (mis., 1 pek penyambung JST (mis., 1 Pengekod putar (mis., 1 Kenop untuk pengekod putar (mis., Penyambung 1 Pack Dupont (mis., Https://amzn.com/B014YTPFT8) - ada baiknya mendapatkan alat kelim juga.

1 tong tong (untuk kuasa) (mis., 1 paparan numerik 7 segmen TM1637 (mis., Alat pematerian dan pendawaian

Fail model 3D

Anda boleh mendapatkan model 3D untuk sepasang modul 10-cahaya di Thingiverse:

www.thingiverse.com/thing:4178181

Anda perlu mencetak model ini lima kali untuk keseluruhan 10 modul.

Perisian

github.com/samguyer/AlgorithmMachine

Pagar

Kayu, plexiglass, bolt keluli tahan karat dan skru

Bahan penyebaran. Kegemaran saya ialah Penyaring Lee penuh # 216 putih penuh, tetapi ada pilihan lain. Malah kertas putih biasa berfungsi dengan baik.

Langkah 1: Algoritma 101

Sebilangan besar orang berpendapat bahawa sains komputer pada dasarnya adalah kajian pengaturcaraan. Tetapi hati dan jiwa sebenar bidang ini adalah algoritma: kajian prosedur sistematik untuk menyelesaikan masalah dan kosnya (biasanya, berapa lama masa yang diperlukan). Tokoh mani di lapangan, seperti Alan Turing, Gereja Alonzo, dan Edsger Dijkstra, memikirkan idea-idea ini sebelum komputer kerana kita tahu ia bahkan wujud.

Ciri utama algoritma untuk menyelesaikan masalah tertentu adalah terperinci dan tepat, sehingga seseorang dapat menggunakannya untuk mendapatkan penyelesaian tanpa memahami bagaimana ia berfungsi sama sekali; ikuti langkah-langkah secara mekanikal dan anda akan mendapat jawapan yang tepat. Anda dapat melihat bagaimana ini membantu pengaturcaraan komputer, kerana mereka memerlukan tahap perincian ini. Komputer tidak dapat mengisi butiran yang hilang atau membuat penilaian, seperti yang dilakukan seseorang.

Berapa lama ia akan mengambil masa?

Sebaik sahaja kita mempunyai prosedur terperinci, persoalan semula jadi adalah berapa lama masa yang diperlukan untuk mendapatkan jawapannya? Kami tidak dapat menggunakan unit waktu biasa, kerana bergantung pada siapa yang melakukan pekerjaan (bandingkan seberapa cepat seseorang dapat mengira sesuatu berbanding komputer super). Di samping itu, ia bergantung pada berapa banyak data yang kita ada. Jelas, memerlukan lebih lama untuk mencari senarai sejuta nombor telefon daripada senarai seratus.

Untuk menerangkan kos algoritma, pertama-tama kita memilih beberapa operasi dalam prosedur yang mewakili satu "langkah" - biasanya sesuatu yang mudah, seperti membandingkan atau menambahkan dua nombor, yang memerlukan banyak masa untuk dilakukan. Kemudian kami membuat formula yang menerangkan berapa banyak langkah yang akan diambil algoritma dengan memberikan sebilangan item data. Atas sebab sejarah, kami hampir selalu menunjukkan bilangan item data dengan modal N.

Contohnya, melihat senarai nombor telefon N memerlukan langkah N. Melihat senarai dua kali mengambil langkah 2N. Kedua-dua ini disebut algoritma masa linear - jumlah langkah adalah beberapa gandaan dari ukuran input. Algoritma lain adalah kuadratik (N kuadrat waktu) atau kubik (N kubus) atau logaritmik (log N) atau beberapa kombinasi dari ini. Beberapa masalah pengiraan yang paling sukar memerlukan algoritma masa eksponensial (2 ^ N).

OK, jadi apa?

Apabila bilangan item data N kecil tidak banyak masalah. Sebagai contoh, untuk N = 10, 10N adalah nama itu sebagai N kuasa dua. Tetapi bagaimana dengan N = 1000? atau N = 1000000? Sejuta kuasa dua adalah bilangan yang cukup besar. Walaupun pada komputer yang sangat pantas, algoritma kuadratik memerlukan masa yang lama jika inputnya cukup besar. Algoritma eksponen jauh lebih menyusahkan: untuk N = 50, algoritma eksponensial memerlukan masa dua minggu untuk diselesaikan walaupun pada komputer di mana setiap langkah hanya satu nanodetik (1 bilion saat). Aduh!

Di hujung skala yang lain, kami mempunyai algoritma masa logaritma, yang sangat pantas. Waktu log adalah kebalikan dari masa eksponensial: memandangkan ukuran input N, jumlah langkahnya adalah eksponen T dalam formula 2 ^ T = N. Sebagai contoh, jika ukuran input kita adalah satu bilion, maka algoritma masa log hanya memerlukan 30 langkah, sejak 2 ^ 30 = 1, 000, 000, 000. Betapa manisnya itu?! ??!

Anda mungkin tertanya-tanya, siapa yang peduli dengan ukuran input berjuta-juta atau berbilion? Fikirkan: berapa banyak pengguna di Facebook? Berapa banyak laman web yang diindeks oleh Google? Berapakah bilangan pasangan asas dalam genom manusia? Berapa banyak pengukuran yang dilakukan dalam simulasi cuaca?

Langkah 2: Algoritma

Mesin Algoritma pada masa ini menerapkan algoritma berikut. Dua daripadanya adalah algoritma carian (cari nilai tertentu dalam senarai), selebihnya adalah algoritma penyortiran (susun nilainya).

Pencarian linear

Cari melalui senarai nilai satu persatu bermula dari awal. Memerlukan masa linear.

Pencarian binari

Cari senarai dengan berulang kali membahagikannya menjadi dua. Memerlukan masa log, tetapi senarai mesti disusun agar berfungsi.

Jenis gelembung

Susun senarai bertukar unsur jiran yang berulang kali tidak sesuai. Memerlukan masa kuadratik.

Jenis sisipan

Susun senarai dengan meletakkan setiap elemen di tempatnya yang betul dalam senarai nilai yang sudah disusun. Memerlukan masa kuadratik.

Quicksort

Susun senarai dengan membahagi senarai berulang kali pada separuh dan pindahkan semua nilai kurang daripada median ke separuh pertama, dan semua nilai lebih besar daripada median ke separuh kedua. Dalam praktiknya, kita tidak dapat mencari median dengan cekap, jadi kita memilih nilai secara rawak. Akibatnya algoritma ini dapat kuadratik dalam keadaan terburuk, tetapi biasanya memerlukan masa N * logN.

Gabungkan jenis

Susun senarai dengan membahagikannya menjadi dua, menyusun dua bahagian secara berasingan (menggunakan penggabungan jenis), dan kemudian menggabungkannya bersama-sama dengan memasukkan nilai. Sentiasa memerlukan masa N * logN.

Jenis timbunan

Susun senarai dengan membina struktur data yang disebut timbunan, yang membolehkan anda mencari nilai terkecil dalam masa log. Sentiasa memerlukan masa N * logN.

Jenis bitonik

Sama seperti menggabungkan urutan dan pintasan, bahagikan senarai menjadi dua, urutkan bahagian, dan kumpulkan semula. Algoritma ini memerlukan masa log * N * logN *, tetapi mempunyai kelebihan bahawa ia mudah untuk diselaraskan.

Langkah 3: Bar LED: 3D Cetak Topeng

LED Bar: 3D Cetak Topeng
LED Bar: 3D Cetak Topeng
LED Bar: 3D Cetak Topeng
LED Bar: 3D Cetak Topeng

Langkah pertama dalam membina bar LED adalah mencetak topeng 3D yang memberikan bentuknya kepada lampu. Setiap modul merangkumi sepuluh elemen array, 10 nilai (bulatan) dan 10 petunjuk (segitiga), jadi anda memerlukan 10 modul sama sekali. Fail STL yang saya sediakan di sini mengandungi dua contoh modul, jadi anda perlu melakukan lima kitaran cetak. Saya tidak mempunyai pencetak 3D terbaik, jadi saya perlu melakukan pembersihan manual menggunakan fail dan kertas pasir. Perkara yang paling penting ialah lubang bulat dan segitiga bersih.

Dalam foto, anda akan melihat persediaan ujian saya: Saya mengetuk kedua jalur LED ke bawah dan menyambungkannya ke papan roti dengan mikrokontroler. Langkah ini tidak perlu, tetapi saya ingin melihat bagaimana keadaannya sebelum saya mula memasang kandang. Saya membariskan modul topeng pada dua jalur LED dan menjalankan lakaran ringkas dengan warna rawak. Dengan jalur bahan penyebaran, bentuk dan warna benar-benar muncul.

Langkah 4: Alternatif Bar LED

Alternatif Bar LED
Alternatif Bar LED
Alternatif Bar LED
Alternatif Bar LED
Alternatif Bar LED
Alternatif Bar LED

Semasa mula-mula memulakan projek ini, saya bereksperimen dengan kaedah lain untuk membuat topeng LED. Sekiranya anda tidak mempunyai pencetak 3D, anda mungkin mempertimbangkan salah satu pilihan ini. Saya akan jujur: sangat menyakitkan untuk membuat bahagian ini.

Untuk kalangan, saya membeli tiub tembaga 13/32, yang berdiameter hampir 1cm. Saya memotongnya menjadi seratus 1cm segmen dan kemudian menyemburkannya berwarna putih.

Untuk segitiga, saya menggunakan kerajang aluminium berat dari pot pembakar sekali pakai. Saya membuat bentuk segitiga dari kayu, kemudian membungkus helai foil pendek di sekitar bentuk dan mengetuknya. Sekali lagi, anda memerlukan seratus perkara ini, jadi memerlukan sedikit masa dan kesabaran.

Langkah 5: Kandang Bar LED

Kandang Bar LED
Kandang Bar LED
Kandang Bar LED
Kandang Bar LED
Kandang Bar LED
Kandang Bar LED

Kandang saya cukup sederhana: dua helai kayu untuk sisi dan dua jalur plexiglass untuk bahagian atas dan bawah. Semua bahagiannya kira-kira 102cm panjang (1 meter untuk LED, ditambah sedikit tambahan untuk menampung pendawaian). Bahagian sisi harus lebih tinggi sedikit dari 1cm untuk memberi ruang pada jalur LED. Setelah memotong helai, saya memasangkan kepingan topeng bercetak 3D di antara mereka untuk mengukur lebar plexiglass. Potong dua kepingan plexiglass lebar dan panjang palang. Akhirnya, potong sehelai bahan penyebaran agar sesuai dengan topeng.

Untuk penyebaran, saya sangat menyukai Lee Filters # 216 (penyebaran putih penuh). Ia adalah kepingan plastik nipis yang memberikan penyebaran merata tanpa kehilangan banyak cahaya. Tetapi ia adalah barang yang mahal. Kadang-kadang anda dapat menjumpai helaian yang lebih kecil untuk dijual dalam talian, tetapi keseluruhan gulungan akan memberi anda pulangan sekitar $ 125. Beberapa pilihan lain adalah kertas putih atau jenis satin atau plastik buram yang lain. Pilihan yang popular adalah tikar pemotong plastik nipis.

Sebelum memasang bar LED, pastikan anda mempunyai penyambung yang sesuai yang dipateri pada jalur LED. Sebilangan besar jalur dilengkapi dengan plumbum yang dipateri, jadi anda boleh menggunakannya.

Saya memulakan pemasangan dengan mengacukan bahagian atas plexiglass ke sisi kayu (lihat foto). Kemudian saya membalikkannya dan meletakkan jalur penyebaran ke dalamnya, diikuti dengan 10 keping topeng. Setelah saya berpuas hati dengan jarak, saya meletakkannya di tempat dengan beberapa titik gam panas.

Seterusnya, letakkan dua jalur LED bersebelahan di atas topeng. Pastikan LED menghadap ke bawah dan pastikan setiap LED berbaris dengan lubang yang sesuai pada topeng. Tambahkan sedikit gam panas atau pita untuk menahan jalur LED di tempatnya. Akhirnya, skru pada bahagian belakang plexiglass.

Jalankan corak ujian. Kerja bagus! Anda telah melakukan bahagian yang paling sukar!

Langkah 6: Panel Kawalan

Panel kawalan
Panel kawalan
Panel kawalan
Panel kawalan
Panel kawalan
Panel kawalan
Panel kawalan
Panel kawalan

Panel kawalan adalah bahagian yang memberikan kebebasan paling kreatif. Ia hanya perlu menahan semua kawalan dan elektronik, bersama dengan bar LED. Reka bentuk paling mudah adalah papan segi empat tepat: lubang gerudi untuk butang dan kawalan, dan pasangkan bar LED. Saya suka menggabungkan kayu, plexiglass, dan bahan-bahan lain untuk memberikan rupa steampunk / retro-moden. Dalam kes ini, saya memotong sekeping plexiglass tugas berat untuk memegang butang pilihan algoritma utama, dan palang kayu untuk memegang sisa elektronik. Saya menggerudi lubang untuk memadankan saiz butang arked. Pendawaian menunjukkan di bahagian belakang, tetapi saya suka!

Saya juga menghabiskan ruang untuk paparan 7 segmen, pengekod putar, dan beberapa pendawaian di bahagian belakang. Saya memotong dado di bahagian atas untuk memegang bar LED.

Langkah 7: Harness Butang

Harness butang
Harness butang
Harness butang
Harness butang
Harness butang
Harness butang

Memasang banyak butang boleh menjadi kesakitan yang nyata. Nasib baik, orang yang membuat mesin arked telah hadir dengan beberapa penyambung standard yang boleh anda gunakan. Setiap kabel penyambung butang mempunyai dua wayar, satu untuk VCC dan satu untuk pembumian. Satu hujung mempunyai penyambung sekop yang sesuai dengan plumbum di bahagian belakang butang - pasangkan tanah ke plumbum "biasanya terbuka", dan VCC ke plumbum "biasa". Dalam konfigurasi ini, apabila pengguna menekan butang, litar selesai dan mikrokontroler akan membaca TINGGI pada pin input yang sesuai.

Hujung kabel yang lain mempunyai penyambung JST (benda putih kecil). Apa yang baik mengenai penyambung ini ialah mereka hanya masuk ke dalam wadah dengan satu cara, jadi tidak ada cara untuk membalikkan VCC dan ground secara tidak sengaja.

Apa yang saya buat adalah membina sedikit memanfaatkan untuk penyambung ini. Saya memasangkan serangkaian bekas JST ke sekeping protoboard dan kemudian jalankan wayar kembali ke penyambung Dupont yang akan saya pasangkan ke mikrokontroler. Kawat merah adalah garis VCC, dan ia menghubungkan ke semua wadah JST. Kabel biru adalah yang terpisah untuk setiap butang.

Langkah 8: Pengekod Rotary

Pengekod Putar
Pengekod Putar

Pengekod putar membolehkan pengguna mengawal kelajuan algoritma. Saya menggunakan modul yang hadir sebagai papan pemecah yang merangkumi perintang penarik untuk dua baris data (wayar kuning). Yang ini juga kebetulan butang, tetapi saya tidak menggunakan ciri itu. Dua wayar lain adalah VCC dan ground. Saya juga mendapat tombol lemak yang bagus.

Apa yang saya sukai mengenai pengekod putar, berbanding dengan potensiometer, ialah ia hanya memberi isyarat putaran (mengikut arah jam vs lawan arah jam) ke mikrokontroler, jadi mudah untuk mengubah bagaimana nilainya ditafsirkan. Contohnya, anda boleh memberikan percepatan (seperti tetikus) apabila pengguna memusingkannya dengan pantas.

Langkah 9: Paparan 7 segmen

Paparan 7 segmen
Paparan 7 segmen

Tidak banyak yang boleh diperkatakan di sini. Perkara-perkara ini ada di mana-mana. LED dikendalikan oleh cip yang disebut TM1637, yang berkomunikasi dengan mikrokontroler melalui protokol bersiri sederhana. Saya menggunakan perpustakaan yang ada yang membolehkan saya memberitahu nombor apa yang ingin saya tunjukkan, dan selebihnya.

Bahagian belakang mempunyai empat pin: VCC, ground, dan dua wayar untuk protokol bersiri. Saya menyolder kepingan 4-pin, yang menyambung ke penyambung Dupont yang sesuai yang disambungkan ke mikrokontroler.

Langkah 10: Papan Pengawal Utama

Papan Pengawal Utama
Papan Pengawal Utama
Papan Pengawal Utama
Papan Pengawal Utama
Papan Pengawal Utama
Papan Pengawal Utama

Papan pengawal utama menempatkan mikrokontroler itu sendiri dan semua penyambung ke kawalan (butang, paparan, LED). Mikrokontroler adalah ESP32, yang memberikan banyak kuasa dan memori pengkomputeran, dan memaparkan banyak pin. Pendawaiannya cukup standard, tetapi saya akan menunjukkan beberapa bit menarik.

CATATAN: Anda mungkin ingin melihat kodnya (https://github.com/samguyer/AlgorithmMachine) sebelum anda mula memasang kabel papan utama, supaya konfigurasi pin anda sesuai dengan saya.

Saya menyolder jack laras ke papan untuk mendapatkan kuasa, dan menyambungkan dua wayar tembaga yang kuat ke rel elektrik dan landasan papan. Sebabnya ialah bar LED dapat menarik banyak tenaga jika kecerahan diatur tinggi, dan saya tidak mahu menarik semua daya itu melalui penyambung USB pada mikrokontroler.

Untuk mempermudah pendawaian butang, saya menyolder helai header sudut kanan lelaki-wanita ke seluruh sisi mikrokontroler (bahagian atas papan seperti yang ditunjukkan). Penyambung Dupont dari harness butang terus ke header ini.

PENTING: kuasa untuk butang (wayar merah) mesti disambungkan ke saluran kuasa 3.3V pada mikrokontroler. ESP32 adalah cip 3.3V, jadi hanya sumber 3.3V yang mesti dilampirkan pada pin data.

Mikrokontroler menarik daya (atau mendorong daya) ke rel (bahagian bawah papan seperti yang ditunjukkan) melalui pin dan ground USB 5V. Semua wayar merah / hitam yang lain adalah VCC dan ground.

Dua wayar biru adalah garis data untuk jalur LED (WS2812s). Pasangan kuning / hijau adalah garis data untuk pengekod putar, dan pasangan kuning adalah sambungan bersiri ke paparan 7 segmen.

Langkah 11: Perhimpunan

perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan
perhimpunan

Rangkaian gambar ini menunjukkan pemasangan dan pendawaian terakhir. Saya juga melekatkan papan pengawal utama di bahagian belakang di bahagian atas.

Sebelum menghidupkannya, saya melakukan beberapa pemeriksaan untuk mengelakkan kejutan buruk. Khususnya, untuk memastikan saya tidak mempunyai penyambung kuasa / arde ke belakang, dan tidak ada litar pintas. Tetapkan multimeter anda untuk menguji kesinambungan - ia akan berbunyi apabila terdapat jalan elektrik di antara kedua-dua plumbum. Pasang satu petunjuk ke garis VCC biasa ke butang. Kemudian pasangkan timbal yang lain ke setiap pin abah-abah satu demi satu. Multimeter hanya boleh berbunyi apabila anda menekan butang. Sekiranya anda mendapat bunyi bip lain, ini bermakna anda mempunyai pembalikan atau kekurangan. Jejaki dan perbaiki sebelum anda menghidupkan kuasa!

Langkah 12: Kod

Pertama, buka Arduino IDE anda dan pastikan anda memasang perpustakaan FastLED.

Muat turun kod Mesin Algoritma dari GitHub:

github.com/samguyer/AlgorithmMachine.git

Anda boleh mengklonnya terus ke folder Arduino anda, atau menyalinnya dengan tangan.

Sebelum memuat naiknya, pastikan tetapan pin sesuai dengan konfigurasi perkakasan anda. Saya telah meletakkan semua tetapan pin di bahagian atas fail.

Muat naik dan nikmati!

Langkah 13: Cara Penggunaan

Mesin Algoritma mudah digunakan dan hampir semua kombinasi butang ok!

Pertama, gunakan butang data untuk memulakan nilai dalam array. Terdapat tiga pilihan: (1) mengacak, (2) menambahkan satu nilai rawak, dan (3) membalikkan susunan. Perhatikan bahawa nilainya berterusan, jadi anda boleh melakukan perkara seperti menyusunnya terlebih dahulu, kemudian menambahkan sedikit bunyi, kemudian jalankan algoritma penyortiran atau carian yang berbeza.

Pilih algoritma mencari atau menyusun dari pilihan butang lain. Pada masa ini, tidak ada maklum balas semasa anda membuat pilihan ini (sesuatu untuk pekerjaan masa depan). Kemudian tekan butang "main".

Tombol mengawal kelajuan. Anda juga boleh menekan "main" untuk menjeda dan menghentikan sementara algoritma.

Ia akan berhenti secara automatik apabila selesai. Anda juga boleh menekan butang algoritma lain pada bila-bila masa. Mesin akan menghentikan algoritma semasa dan memulakan yang baru, tetapi menyimpan data dengan tepat seperti algoritma sebelumnya meninggalkannya.

Peraduan STEM
Peraduan STEM
Peraduan STEM
Peraduan STEM

Hadiah Utama dalam Peraduan STEM

Disyorkan: