Pada artikel ini diuraikan membuat sistem mikrokontroler untuk mengendalikan lampu berdasarkan sebuah sakelar. Lampu dinyalakan dengan menekan tombol satu kali. Lampu dimatikan dengan cara menekan tombol agak lama.
Daftar Isi
Kebutuhan Sistem
- Input switch push-button
- Output 1 buah LED
- Tombol ditekan sekali secara singkat untuk menyalakan lampu
- Tombol ditekan dan ditahan selamat 1 detik untuk mematikan lampu
Diagram Blok Sistem secara umum sebagai berikut
Skenario sistem
Untuk memperjelas sistem yang akan dibuat, perlu dibuat dulu beberapa skenario yang dapat terjadi pada sistem ini.
- LED mati: ditekan 1x pendek (kurang dari 1 detik) maka LED menyala
- LED mati: ditekan 1x panjang (lebih dari 1 detik) -> LED menyala
- LED menyala: ditekan & ditahan selama 1 detik -> LED mati
- LED menyala: ditekan kurang dari 1 detik -> LED tetap menyala
- LED menyala: ditekan & ditahan selama lebih dari 1 detik -> LED mati dalam 1 detik, setelah itu tetap mati
- LED menyala: switch ditekan berkali-kali pendek -> LED tetap menyala (frekuensi di bawah batas tertentu)
- LED mati: switch ditekan berkali-kali pendek -> LED menyala dan tidak mati (frekuensi di bawah batas tertentu)
Hal-hal yang tidak diperhatikan pada sistem ini:
- prosedur mematikan/menyalakan sistem
- keadaan baterai habis. Untuk sistem yang menggunakan baterai isi ulang (rechargeable), seharusnya ada mekanisme untuk mencegah baterai betul-betul habis.
Berikut ini Diagram Skenario 1
LED mati: ditekan 1x pendek (kurang dari 1 detik) maka LED menyala
Diagram Skenario 2: LED mati: ditekan 1x panjang (lebih dari 1 detik) -> LED menyala
Diagram skenario 3: LED menyala: ditekan & ditahan selama 1 detik -> LED mati
Skenario 4 LED menyala: ditekan kurang dari 1 detik -> LED tetap menyala
LED menyala: ditekan & ditahan selama lebih dari 1 detik -> LED mati dalam 1 detik, setelah itu tetap mati
Skenario Ekstra 6
Skenario Ekstra 7
Strategi/Algoritma:
- Kondisi awal mati
- Tunggu ada tombol ditekan. Jika ada , nyalakan lampu.
- Tunggu tombol ditekan lama. Jika ada, matikan lampu. Abaikan input lain.
- Kembali ke (2)
Model State Chart
Sketsa state chart
State diagram sistem versi final
Implementasi Perangkat Keras
Implementasi Perangkat Lunak
Kode implementasi dapat dilihat di https://github.com/waskita/embedded/blob/master/on-off-switch/nano-on-off/nano-on-off.ino
Pengujian