Daftar Isi:
- Langkah 1: Bahan dan Konstruksi
- Langkah 2: Menyolder AVR ke LED dan Speaker
- Langkah 3: Memprogram Attiny13a
- Langkah 4: Membuat Firmware untuk Marioman
- Langkah 5: Membiarkan Marioman Longgar
Video: Berkedip, Bernyanyi, Marioman: 5 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:59
Gunakan attiny13a, dua LED dan speaker kartu ucapan untuk membuat Marioman berkedip yang memainkan lagu tema Super Mario Brothers. Ini bisa menjadi proyek murah yang mudah bagi siapa saja yang mencari cara yang menyenangkan untuk masuk ke pemrograman AVR! nada lagu dihasilkan oleh gelombang persegi yang dikeluarkan pada satu pin mikrokontroler AVR. LED yang bergantian pada setiap nada terhubung ke 2 pin masing-masing chip yang sama.
Langkah 1: Bahan dan Konstruksi
1 attiny13a
www.mouser.com/Search/ProductDetail.aspx?qs=sGAEpiMZZMvu0Nwh4cA1wRKJzS2Lmyk%252bEP0e%2f7dEeq0%3dBiaya: $1,40
- 2 LED - LED apa pun bisa digunakan
- 1 baterai sel koin lithium
www.sparkfun.com/commerce/product_info.php?products_id=338Biaya: $2,00
1 pemegang sel koin
www.sparkfun.com/commerce/product_info.php?products_id=8822Biaya: $1,25
1 speaker kecil dari kartu ucapan musik
Total biaya bahan ~ $5Dua LED dipasang langsung ke dua pin masing-masing attiny13A. Dua pin digunakan untuk setiap LED, pin kedua disetel rendah untuk digunakan sebagai koneksi ground. Batas arus pin I/O pada AVR akan mencegah LED menggambar terlalu banyak sehingga resistor tidak perlu disambungkan seri. Speaker yang digunakan adalah tipikal dari yang ditemukan di kartu ucapan musik, setiap speaker kecil akan melakukannya, mengingat ini mengeluarkan nada gelombang persegi, tidak terlalu penting untuk khawatir tentang mengemudikan speaker atau kualitas suara.
Langkah 2: Menyolder AVR ke LED dan Speaker
Agar LED menjangkau seperti lengan, satu pin ditekuk di atas AVR di setiap sisi. Mengorientasikan AVR dengan cara ini memudahkan untuk menyambungkan ke speaker (gambar kedua) karena sambungan berada di dua pin bawah. Untuk estetika Anda ingin bagian depan chip menghadap ke luar jadi pastikan speaker menghadap ke arah yang sama saat itu dilampirkan.
Langkah 3: Memprogram Attiny13a
Ada banyak pilihan berbeda untuk memprogram AVR. Untuk proyek ini digunakan USBtiny yang tersedia sebagai kit dari situs ladyadahttps://www.ladyada.net/make/usbtinyisp/index.htmlUntuk menghubungkan AVR ke programmer, Anda dapat pasang kabel ke soket wanita dan hubungkan ke papan tempat memotong roti atau lebih baik lagi dapatkan adaptor pemrograman AVR murah seperti inihttps://www.sparkfun.com/commerce/product_info.php?products_id=8508bersama dengan header pria 3x2 untuk menghubungkan steker.
Langkah 4: Membuat Firmware untuk Marioman
attiny13A memiliki 1K flash yang dapat diprogram, dan 64bytes SRAM. File tar terlampir memiliki file sumber serta firmware yang dikompilasi untuk diunduh. Tiga array dalam kode c digunakan untuk menghasilkan musik
- freq - frekuensi setiap nada
- panjang - panjang setiap nada
- delay - jeda di antara setiap nada
Array frekuensi tidak memiliki frekuensi aktual melainkan nilai untuk dimasukkan ke dalam register TTCROB untuk menghasilkan gelombang persegi dari pin PB0. Berikut adalah ringkasan singkat dari perhitungan dan konfigurasi pin untuk pembangkitan gelombang persegi:
- attiny13A memiliki osilator internal yang disetel ke 9.6MHz
- Jam internal untuk IO adalah osilator dibagi 8 atau 1.2MHz
- Timer internal diatur dalam register 8bit untuk menghitung setiap siklus clock dengan skala awal 8.
- Ini menghasilkan satu centang sama dengan 1 / (1.2MHz / 8) =.006667ms
- Attiny13A dikonfigurasi untuk membandingkan apa yang ada di register TCCR0B 8bit dengan timer dan mengganti pin saat cocok.
- Misalnya, untuk menghasilkan gelombang persegi pada 524Hz (satu oktaf di atas C tengah) yang memiliki periode 1.908ms.
1.908ms = 286 clock ticks (1.908/.0067) Bagi 286 dengan 2 untuk mengganti pin pada t/2 (286/2 = 143) Masukkan 143 ke dalam register TTCR0B untuk menghasilkan catatan ini. Ini semua kode yang diperlukan untuk mengatur timer, lakukan perbandingan dan keluaran gelombang persegi:
TCCR0A |= (1<<WGM01); // konfigurasikan timer 1 untuk mode CTC TCCR0A |= (1<<COM0A0); // alihkan OC0A pada kecocokan perbandingan TCCR0B |= (1<<CS01); // clk/8 praskala TTCR0B = 143; // menghasilkan gelombang persegi pada 524HzUntuk menunda nada dan jeda di antara mereka, fungsi penundaan sederhana digunakan
batal tidur(int ms) { int cnt; untuk (cnt=0; cnt<(ms); cnt++) { int i = 150; while(i--) { _asm("NOP"); } }}Ini menghitung mundur dari 150 di mana setiap siklus NOP kira-kira.006667ms. Hal terakhir yang dilakukan kode adalah mengulang array, menghasilkan musik dan mengedipkan dua LED. Ini dilakukan dalam loop terus menerus dengan kode berikut
const uint8_t freq PROGMEM = { … data };const uint8_t length PROGMEM = { … data };const uint8_t delay PROGMEM = { … data };… while (1) { for (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); // hentikan pengatur waktu TCCR0B = 0; tidur (pgm_read_word(&delay[cnt])); // mulai pengatur waktu TCCR0B |= (1<<CS01); // clk/8 skala awal }}Ada 156 elemen dalam frekuensi/panjang/delay array, loop ini melintasi mereka. Pin PB3 dan PB4 masing-masing di-toggle sehingga akan bergantian dengan setiap not. Sleep pertama adalah panjang not yang kita mainkan setelah mengatur register OCR0A ke nilai yang sesuai. Tidur kedua adalah jeda di antara nada yang kita mainkan. Pada kode di atas Anda mungkin telah memperhatikan dua fungsi pgm_read_byte() dan pgm_read_word() serta kata kunci PROGMEM. Dengan chip yang disematkan seperti attiny jumlah SRAM sangat terbatas, dalam hal ini hanya 64byte. Array yang kami gunakan untuk semua data frekuensi/penundaan/panjang jauh lebih besar dari 64byte dan oleh karena itu tidak dapat dimuat ke dalam memori. Dengan menggunakan direktif PROGMEM avr-gcc khusus, larik data besar ini dicegah untuk dimuat ke dalam memori, alih-alih dibaca dari flash.
Langkah 5: Membiarkan Marioman Longgar
Video di atas menunjukkan Marioman beraksi. Konsumsi daya rata-rata adalah sekitar 25mA sehingga ia dapat berkedip dan membuat suara selama sekitar 10 jam sebelum menguras sel koin lithium. Satu-satunya cara untuk menyalakan dan mematikannya adalah dengan melepas baterai sel koin, yang kokoh yang tercantum dalam bahan adalah sangat cocok untuk ini. Sakelar dapat ditambahkan tetapi ada sesuatu yang bisa dikatakan untuk membuatnya tetap sederhana.
Direkomendasikan:
Dekorasi Pohon Berkedip PCB: 5 Langkah (dengan Gambar)
Dekorasi Pohon Berkedip PCB: Dalam tutorial ini, Anda akan belajar cara membuat proyek elektronik secara efektif. Sebagai contoh, saya akan membuat PCB dengan lampu berkedip dari awal sampai akhir. Semua elektronik berjalan sendiri tanpa perlu pengkodean. Yang harus Anda lakukan adalah memasang
Video Tutorial De Tecnologias Creativas 01: Halo Dunia! Berkedip, Hacemos Parpadear Nuestro Primer Led Con Arduino: 4 Langkah
Video Tutorial De Tecnologias Creativas 01: Halo Dunia! Blink, Hacemos Parpadear Nuestro Primer Led Con Arduino: En este tutorial vamos a aprender como hacer parpadear (blink) un diodo LED con una placa Arduino Uno. Este ejercicio lo realizaremos mediante simulación y para ello utilizaremos Sirkuit Tinkercad (utilizando una cuenta gratuita).A continuación se
Arduino: Kotak Ulang Tahun Bernyanyi untuk Hadiah: 14 Langkah
Arduino: Kotak Ulang Tahun Bernyanyi untuk Hadiah: Kotak Ulang Tahun Bernyanyi ini dibuat untuk tujuan mengemas hadiah ulang tahun, dibantu oleh Arduino untuk menyediakan fungsi khusus, termasuk bernyanyi dan menyalakan Lilin LED. Dengan kemampuan menyanyikan Lagu Selamat Ulang Tahun dan menyalakan lampu LED
Berkedip Caos: Mapa Logístico Para Berkedip Acak: 5 Langkah
Berkedip Cao: Mapa Logístico Para Acak Berkedip: Este es un instructable untuk generator de aleatoredad, utilizando un mapa logístico, que ahora explico que es. Con el mapa logístico, se enciende y apaga un led de forma aleatoria. Este puede service simplemente de ejemplo de como a
Bernyanyi Bust Prop: 7 Langkah
Singing Bust Prop: Pernahkah Anda bertanya-tanya bagaimana cara kerja Singing Busts di Haunted Mansion atau bahkan ingin mencoba membuatnya dengan baik. Instruksi ini akan menunjukkan cara membuatnya dan itu sangat sederhana