Isi kandungan:
- Langkah 1: Bahan dan Pembinaan
- Langkah 2: Memateri AVR ke LED dan Pembesar suara
- Langkah 3: Pengaturcaraan Attiny13a
- Langkah 4: Membuat Firmware untuk Marioman
- Langkah 5: Membiarkan Marioman Longgar
Video: Berkelip, Menyanyi, Marioman: 5 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:13
Gunakan attiny13a, dua LED dan pembesar suara kad ucapan untuk membuat Marioman yang berkedip yang memainkan lagu tema Super Mario Brothers. Ini boleh menjadi projek kos rendah yang mudah bagi sesiapa sahaja yang mencari cara yang menyeronokkan untuk masuk ke dalam pengaturcaraan AVR! nota lagu dihasilkan oleh gelombang persegi yang dikeluarkan pada satu pin mikrokontroler AVR. LED yang bergantian pada setiap nota disambungkan ke 2 pin setiap cip yang sama.
Langkah 1: Bahan dan Pembinaan
1 attiny13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3dKos: $ 1.40
- 2 LED - mana-mana LED akan berfungsi
- 1 bateri sel syiling litium
www.sparkfun.com/commerce/product_info.php?products_id=338 Kos: $ 2.00
1 pemegang sel duit syiling
www.sparkfun.com/commerce/product_info.php?products_id=8822 Kos: $ 1,25
1 pembesar suara kecil dari kad ucapan muzik
Jumlah kos bahan ~ $ 5Dua LED dipasang terus ke dua pin masing-masing attiny13A. Dua pin digunakan untuk setiap LED, pin kedua ditetapkan rendah untuk digunakan sebagai sambungan tanah. Had semasa pin I / O pada AVR akan menghalang LED daripada menarik terlalu banyak sehingga perintang tidak diperlukan untuk menyambung siri. Pembesar suara yang digunakan adalah khas dari yang terdapat dalam kad ucapan muzik, mana-mana pembesar suara kecil akan melakukannya, memandangkan ini mengeluarkan nada gelombang persegi, tidak perlu risau untuk menggerakkan pembesar suara atau kualiti suara.
Langkah 2: Memateri AVR ke LED dan Pembesar suara
Untuk LED boleh menjangkau seperti lengan, satu pin dibengkokkan di atas AVR di setiap sisi. Mengarahkan AVR dengan cara ini memudahkan penyambungan ke pembesar suara (gambar kedua) kerana sambungannya berada pada dua pin bawah. Untuk estetika anda mahu bahagian depan cip menghadap ke luar, pastikan pembesar suara menghadap ke arah yang sama ketika ia dilampirkan.
Langkah 3: Pengaturcaraan Attiny13a
Terdapat banyak pilihan yang berbeza untuk memprogram AVR. Untuk projek ini USBtiny digunakan yang tersedia sebagai kit dari laman web ladyada https://www.ladyada.net/make/usbtinyisp/index.htmlUntuk menghubungkan AVR ke pengaturcara, sama ada pasangkan wayar ke soket wanita dan pasangkannya ke papan roti atau lebih baik lagi dapatkan penyesuai pengaturcaraan AVR yang murah seperti ini.
Langkah 4: Membuat Firmware untuk Marioman
Attiny13A mempunyai 1K flash yang dapat diprogramkan, dan 64 bytes SRAM. Fail tar yang dilampirkan mempunyai fail sumber serta firmware yang disusun untuk dimuat turun. Tiga tatasusunan dalam kod c digunakan untuk menghasilkan muzik
- freq - frekuensi setiap nota
- panjang - panjang setiap nota
- kelewatan - berhenti sebentar antara setiap nota
Array frekuensi tidak mempunyai frekuensi sebenar tetapi lebih baik nilai yang dimasukkan ke dalam daftar TTCROB untuk menghasilkan gelombang persegi dari pin PB0. Berikut adalah ringkasan ringkas pengiraan dan konfigurasi pin untuk penjanaan gelombang persegi:
- Attiny13A mempunyai pengayun dalaman yang ditetapkan hingga 9.6MHz
- Jam dalaman untuk IO adalah pengayun dibahagi dengan 8 atau 1.2MHz
- Pemasa dalaman disiapkan dalam daftar 8bit untuk menghitung setiap pusingan jam dengan preskala 8.
- Ini menghasilkan satu tanda sama dengan 1 / (1.2MHz / 8) =.006667ms
- Attiny13A dikonfigurasikan untuk membandingkan apa yang ada di daftar Tbit 8bit TCCR0B dengan pemasa dan beralih pin apabila sesuai.
- Sebagai contoh, untuk menghasilkan gelombang persegi pada 524Hz (satu oktaf di atas tengah C) yang mempunyai jangka masa 1.908ms.
1.908ms = 286 jam berdetak (1.908 /.0067) Bahagikan 286 dengan 2 untuk menukar pin pada t / 2 (286/2 = 143) Masukkan 143 dalam daftar TTCR0B untuk menghasilkan nota ini. Inilah semua kod yang diperlukan untuk mengatur pemasa, lakukan perbandingan dan keluarkan gelombang persegi:
TCCR0A | = (1 << WGM01); // konfigurasikan pemasa 1 untuk mod CTC TCCR0A | = (1 << COM0A0); // togol OC0A pada pertandingan perbandingan TCCR0B | = (1 << CS01); // clk / 8 preskala TTCR0B = 143; // menjana gelombang persegi pada 524HzUntuk melambatkan nada dan jeda di antara mereka, fungsi kelewatan sederhana digunakan
kekosongan tidur (int ms) {int cnt; untuk (cnt = 0; cnt <(ms); cnt ++) {int i = 150; sementara (i--) {_asm ("NOP"); }}}Ini dikira dari 150 di mana setiap kitaran NOP adalah kira-kira.006667ms. Perkara terakhir yang dilakukan kod adalah gelung melalui tatasusunan, menjana muzik dan mengedipkan dua LED. Ini dilakukan secara berterusan untuk gelung dengan kod berikut
const uint8_t freq PROGMEM = {… data}; const uint8_t length PROGMEM = {… data}; const uint8_t delay PROGMEM = {… data};… sementara (1) {untuk (cnt = 0; cnt < 156; cnt ++) {OCR0A = pgm_read_byte (& freq [cnt]); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); tidur (pgm_read_byte (& panjang [cnt])); output_toggle (PORTB, PB3); output_toggle (PORTB, PB4); // berhenti pemasa TCCR0B = 0; tidur (pgm_read_word (& tunda [cnt])); // mula pemasa TCCR0B | = (1 << CS01); // clk / 8 preskala}}Terdapat 156 elemen dalam susunan frekuensi / panjang / kelewatan, gelung ini melintasi mereka. Pin PB3 dan PB4 masing-masing ditukar sehingga mereka akan bergantian dengan setiap nota. Tidur pertama adalah panjang nota yang kita mainkan setelah menetapkan daftar OCR0A ke nilai yang sesuai. Tidur kedua adalah jeda antara nota yang kita mainkan. Dalam kod di atas, anda mungkin menyedari dua fungsi pgm_read_byte () dan pgm_read_word () dan juga kata kunci PROGMEM. Dengan cip tertanam seperti pengukuran, jumlah SRAM sangat terhad, dalam kes ini hanya 64 bait. Susunan yang kami gunakan untuk semua data frekuensi / kelewatan / panjang jauh lebih besar daripada 64 bait dan oleh itu tidak dapat dimuat ke dalam memori. Dengan menggunakan arahan PROGMEM avr-gcc khas, susunan data besar ini tidak dapat dimuatkan ke dalam memori, sebaliknya dibaca dari flash.
Langkah 5: Membiarkan Marioman Longgar
Video di atas menunjukkan Marioman beraksi. Penggunaan kuasa rata-rata sekitar 25mA sehingga dia dapat berkedip dan bersuara selama kira-kira 10 jam sebelum menguras sel syiling lithium. Satu-satunya cara untuk menghidupkan dan mematikannya adalah dengan mengeluarkan bateri sel duit syiling, yang kuat yang disenaraikan dalam bahan adalah sangat sesuai untuk ini. Suis boleh ditambah tetapi ada sesuatu yang boleh dikatakan untuk memastikannya mudah.
Disyorkan:
Hiasan Pokok Berkelip PCB: 5 Langkah (dengan Gambar)
Hiasan Pokok Berkedip PCB: Dalam tutorial ini, anda akan belajar bagaimana membuat projek elektronik dengan berkesan. Sebagai contoh, saya akan membuat PCB dengan lampu berkelip dari awal hingga akhir. Semua elektronik dijalankan sendiri tanpa memerlukan pengekodan. Yang mesti anda buat ialah pasangkan
StickC M5Stack LED Berkelip: 7 Langkah
StickC M5Stack LED Blink: Dalam projek ini kita akan belajar bagaimana menghubungkan dan membuat LED Blink menggunakan modul M5StickC ESP32. Tonton Video
Labah-labah LED Berkelip Giant: 13 Langkah
Giant Flashing LED Spider: Danger adalah nama tengah saya dan saya ingin membuat sesuatu yang hebat dan berteknologi untuk peraduan Halloween - kami berturut-turut jurutera, jadi kami fikir kita harus dapat mengumpulkan sesuatu yang keren. Yang kami hasilkan ialah: labah-labah dengan lapan mata LED
LED Berkelip Kecil Gambar: 6 Langkah
LED Berkelip Kecil Gambar: Anda boleh mengedipkan LED dengan mudah dengan pemasa arduino atau 555. Tetapi Anda boleh membuat rangkaian berkelip tanpa IC seperti itu. Ini adalah sosok berkelip sederhana yang dibuat dari bahagian diskrit
Lencana Robot Berkelip LED Lencana Elektronik - Kit Pematerian: 11 Langkah
Electronic Badge LED Blinking Robot Badge - Soldering Kit: Artikel ini dengan bangga ditaja oleh PCBWAY.PCBWAY membuat prototaip PCB berkualiti tinggi untuk orang di seluruh dunia. Cubalah untuk diri anda sendiri dan dapatkan 10 PCB dengan harga hanya $ 5 di PCBWAY dengan kualiti yang sangat hebat, Terima kasih PCBWAY. Robadge # 1 yang saya kembangkan untuk