Tujuan: Tujuan dari proyek ini adalah menggunakan program Majelis yang akan ditanamkan ke dalam lingkungan Arduino C tetapi juga untuk diperkenalkan dalam melakukan input dan output dari papan Arduino. Inputnya akan berupa saklar untuk memulai program dengan resistor pull-up atau pull-down dan outputnya akan menggerakkan LED yang berkedip SOS dalam Kode Morse. Tampaknya ini akan rumit, tetapi Anda diberi petunjuk di setiap langkahnya. Dan Anda dapat menggunakan fungsi penundaan lab sebelumnya dan R16 untuk waktu penundaan yang berbeda.
Pada zaman telegram dan telegrafi radio, sebelum dan bahkan setelah suara dikodekan, alat komunikasinya adalah dengan 'penyadap' atau saklar yang terlihat mewah, menggunakan Kode Morse, dimana pengirim dapat menyadap pesan menggunakan panjang dan pendek. durasi atau 'ketukan'. Di sisi penerima akan ada relay atau nada yang akan mengulangi ketukan sehingga orang bisa mendengarnya dan menerjemahkannya kembali ke dalam kata-kata. Dalam kode Morse, huruf S diberi kode dengan 3 titik atau durasi pendek dan huruf O diberi kode dengan tiga garis atau durasi panjang. Kode Morse untuk mayday atau pertolongan adalah SOS yang bentuknya seperti …---… …---… dan seterusnya.
Lab ini akan mengirimkan SOS dalam kode Morse ke LED saat sakelar menyala dan akan berhenti setelah mengirimkan SOS lengkap saat sakelar mati.
Berikut ini contoh bunyinya: https://www.youtube.com/watch?v=Zsb7stKelq4
Membuat masukan untuk saklar. Operasi yang tampaknya sederhana memerlukan pemikiran saat melakukannya pada mikroprosesor.
Berikut adalah beberapa langkah umum untuk membuat masukan:
Referensi lembar data AVR bagian 14 tentang port I/O. Perhatikan di bawah perangkat keras untuk satu pin I/O di AVR.
Perangkat keras internal untuk pin I/O di AVR
Semua perangkat keras ini diperlukan untuk dapat mengkonfigurasi pin sebagai input atau output, ditambah beberapa fitur lain seperti resistor pullup internal, mode tidur dan sinkronisasi dengan jam. Jelasnya, pin I/O tidak sederhana tetapi kami hanya akan memperhatikan lab ini dengan input atau output sederhana. Untuk ini kita memerlukan register DDR dan Port untuk input atau output yang akan kita gunakan.
Sebelumnya kita melihat bagaimana output dikonfigurasi agar LED pada PORTB bit 5 berkedip.
Anda dapat memilih pin port apa pun yang tersedia untuk ini di Arduino Anda, tetapi kemudian Anda harus menentukan port dan bitnya.
Output: PORTB, register 5, bit 5, digunakan secara internal untuk LED dan juga dibawa ke konektor (pin 13 pada UNO) tetapi jangan digunakan secara eksternal-tidak memiliki kemampuan arus yang cukup untuk menggerakkan dua LED.
• Saran: Gunakan PORTB, daftarkan 5 bit 4 (pin 12 pada UNO) untuk outputnya
Input: Ada banyak pilihan lain yang dapat Anda gunakan (kecuali jangan gunakan pin I/O 0 atau 1 karena diperlukan untuk berkomunikasi dengan komputer). • Saran : PORTB, register 5 bit 3 (pin 11 pada UNO) dapat digunakan sebagai input.
Pengaturan umum: Anda memilih pin untuk input dan output.
Membaca masukan: Untuk membaca masukan dengan mengetahui port, Anda akan menggunakan instruksi IN yang ditunjukkan di bawah ini dan alamat pin untuk port yang Anda gunakan. Misalnya, untuk membaca PORTB, bit 4 (pin 18 UNO) Anda akan menggunakan instruksi ini untuk membaca port.
Lingkaran:
DI r17, 0x03; //baca pin PORTB ke register 17
Sekarang Anda perlu memilih bit 4 dengan meng-AND-kannya dengan 0x10 untuk menutupi semua bit lainnya. Setelah ini tergantung pada konfigurasi input Anda dan apakah Anda menggunakan pull-up atau pull-down. Di sini kita menggunakan resistor pulldown.
Jika Anda menggunakan resistor Pull-up, penutupan sakelar akan menghasilkan angka 0, jika tidak maka akan menghasilkan angka 1, sehingga Anda dapat melakukan instruksi AND dan kemudian melakukan cabang jika hasilnya nol.
ANDI r17, 0x08; //DAN r17 dengan 08 jam
BRNE mulai; //jika saklar tidak ditutup (yaitu 1) maka kembali dan ulangi
Jika menggunakan resistor pull-down, penutupan saklar akan menghasilkan angka 1, jika tidak maka akan menjadi 0:
ANDI r17, 0x08; //DAN r16 dengan 08 jam
BREQ dimulai; //jika saklar tidak ditutup (yaitu 0) maka kembali dan ulangi
Membuat keluaran sangat mirip dengan membuat masukan. Anda harus mengatur pin port menjadi output. Kemudian Anda bisa menggunakan CBI atau SBI untuk menjadikannya nol atau satu.
Berikut adalah beberapa langkah umum untuk membuat keluaran:
Perancangan program Lab ini sangat mirip dengan lab sebelumnya untuk LED yang berkedip-kedip. Sketsa itu dilampirkan sebagai dasar bagi Anda untuk memulai. Anda hanya perlu mengubah struktur untuk membuat SOS sesuai aturan di atas dan menggunakan input untuk sakelar menjalankan SOS dan output untuk menggerakkan LED. Gunakan subrutin penundaan untuk mengatur penundaan yang berbeda untuk titik, garis, dll. seperti yang ditunjukkan dalam kotak di bawah ini.
Lihat dokumen yang mendefinisikan hubungan waktu dan ikuti aturan ini saat merancang program Anda untuk Kode Morse SOS.