- Material yang dibutuhkan:
- Diagram Sirkuit:
- Penjelasan Pemrograman:
- Pengaturan Perangkat Keras untuk Urutan LED Berkedip:
- Mengupload dan Bekerja:
Ini adalah tutorial kedua dari urutan tutorial di mana kita mempelajari MSP430G2 LaunchPad dari Texas Instruments menggunakan Energia IDE. Di tutorial LED Blinky terakhir kami memperkenalkan diri kami ke LaunchPad Development Board dan Energia IDE, kami juga mengunggah program pertama kami yaitu mengedipkan LED on board secara berkala.
Dalam tutorial ini kita akan belajar bagaimana menggunakan opsi Baca Digital dan Tulis Digital untuk membaca status perangkat input seperti sakelar, dan mengontrol beberapa output seperti LED. Di akhir tutorial ini Anda akan belajar bekerja dengan Input dan Output Digital, yang dapat digunakan untuk menghubungkan banyak sensor digital seperti sensor IR, sensor PIR dll dan juga untuk menghidupkan atau mematikan output seperti LED, Buzzer dll. Kedengarannya menarik Baik!!? Mari kita mulai.
Material yang dibutuhkan:
- MSP430G2 LaunchPad
- LED warna apa saja - 8
- Sakelar - 2
- 1k Resistor - 8
- Menghubungkan kabel
Diagram Sirkuit:
Dalam tutorial kami sebelumnya, kami memperhatikan bahwa landasan peluncuran itu sendiri dilengkapi dengan dua LED dan sebuah sakelar di papan. Tetapi dalam tutorial ini kita akan membutuhkan lebih dari itu, karena kita berencana untuk menyalakan delapan lampu LED secara berurutan ketika sebuah tombol ditekan. Kami juga akan mengubah urutan saat tombol lain ditekan hanya untuk membuatnya menarik. Jadi kita harus membangun sebuah rangkaian dengan 8 buah lampu LED dan dua buah saklar, diagram rangkaian lengkapnya dapat dilihat dibawah ini.
Di sini 8 LED adalah output dan dua sakelar adalah input. Kita dapat menghubungkan ini ke pin I / O di papan tetapi saya telah menghubungkan LRD dari pin P1.0 ke P2.1 dan beralih masing-masing 1 dan 2 ke pin P2.4 dan P2.3 seperti yang ditunjukkan di atas.
Semua pin katoda dari LED diikat ke ground dan pin anoda dihubungkan ke pin I / O melalui resistor. Resistor ini disebut resistor pembatas arus, resistor ini tidak wajib untuk MSP430 karena arus maksimum yang dapat di sumber oleh pin I / O itu hanya 6mA dan tegangan pada pin hanya 3,6V. Bagaimanapun, itu adalah praktik yang baik untuk menggunakannya. Ketika salah satu pin digital ini menjadi tinggi, LED masing-masing akan menyala. Jika Anda dapat mengingat program LED tutorial terakhir, maka Anda akan ingat bahwa digitalWrite (LED_pin_name, HIGH) akan membuat LED menyala dan digitalWrite (LED_pin_name, LOW) akan mematikan LED.
Sakelar adalah perangkat input, satu ujung sakelar terhubung ke terminal ground dan ujung lainnya terhubung ke pin digital P2.3 dan P2.4. Ini berarti bahwa setiap kali kita menekan sakelar, pin I / O (2.3 atau 2.4) akan di-ground dan akan dibiarkan bebas jika tombol tidak ditekan. Mari kita lihat bagaimana kita bisa menggunakan pengaturan ini saat memprogram.
Penjelasan Pemrograman:
Program harus ditulis untuk mengontrol 8 LED secara berurutan ketika saklar 1 ditekan dan kemudian ketika saklar 2 ditekan urutannya harus diubah. Program lengkap dan Video demonstrasi dapat ditemukan di bagian bawah halaman ini. Lebih jauh di bawah ini saya akan menjelaskan program baris demi baris sehingga Anda dapat dengan mudah memahaminya.
Seperti biasa kita harus mulai dengan fungsi void setup () di mana kita akan mendeklarasikan pin yang kita gunakan adalah pin input atau output. Dalam program kami, 8 pin LED adalah output dan 2 sakelar adalah input. Ini 8 LED yang terhubung dari P1.0 ke P2.1 yang pin nomor 2-9 di papan tulis. Kemudian sakelar tersebut dihubungkan ke pin P2.3 dan Pin 2.4 yang masing-masing merupakan pin nomor 11 dan 12. Jadi kami telah menyatakan yang berikut di void setup ()
void setup () {for (int i = 2; i <= 9; i ++) {pinMode (i, OUTPUT); } untuk (int i = 2; i <= 9; i ++) {digitalWrite (i, LOW); } pinMode (11, INPUT_PULLUP); pinMode (12, INPUT_PULLUP); }
Seperti yang kita ketahui fungsi pinMode () mendeklarasikan pin sebagai output atau input dan fungsi digitalWrite () membuatnya menjadi tinggi (ON) atau rendah (OFF). Kami telah menggunakan perulangan for untuk membuat deklarasi ini untuk mengurangi jumlah baris. Variabel āiā akan bertambah 2-9 di untuk lingkaran dan untuk setiap kenaikan fungsi di dalam akan dieksekusi. Hal lain yang mungkin membingungkan Anda adalah istilah ā INPUT_PULLUP ā. Pin dapat dideklarasikan sebagai input hanya dengan memanggil fungsi pinMode (Pin_name, INPUT) tetapi di sini kita telah menggunakan INPUT_PULLUP daripada INPUT dan keduanya memiliki perubahan yang nyata.
Saat kita menggunakan pin mikrokontroler, pin harus dihubungkan ke rendah atau tinggi. Dalam hal ini pin 11 dan 12 dihubungkan ke sakelar yang akan terhubung ke ground saat ditekan. Tetapi ketika sakelar tidak ditekan pin tidak terhubung ke apa pun kondisi ini disebut pin mengambang dan itu buruk untuk mikrokontroler. Jadi untuk menghindari hal ini kita bisa menggunakan resistor pull-up atau pull-down untuk menahan pin ke keadaan saat mengambang. Dalam Mikrokontroler MSP430G2553, pin I / O memiliki resistor pull-up built-up. Untuk menggunakan itu yang harus kita lakukan adalah memanggil INPUT_PULLUP daripada INPUT selama deklarasi seperti yang telah dilakukan di atas.
Sekarang mari masuk ke fungsi void loop () . Apapun yang tertulis dalam fungsi ini akan dijalankan selamanya. Langkah pertama dalam program kami adalah memeriksa apakah sakelar ditekan dan jika ditekan kami harus mulai mengedipkan LED secara berurutan. Untuk memeriksa apakah tombol ditekan, baris berikut digunakan
if (digitalRead (12) == LOW)
Di sini fungsi baru adalah fungsi digitalRead () , fungsi ini akan membaca status pin digital dan akan kembali TINGGI (1) saat pin mendapatkan tegangan dan akan kembali rendah RENDAH (0) saat pin di-ground. Di perangkat keras kami, pin akan di-ground hanya ketika kami menekan tombol jika tidak maka akan tinggi karena kami telah menggunakan resistor pull-up. Jadi kami menggunakan pernyataan if untuk memeriksa apakah tombol itu ditekan.
Setelah tombol ditekan kita masuk ke loop sementara (1) yang tak terbatas. Di sinilah kita mulai mengedipkan LED secara berurutan. Sebuah tak terbatas sementara loop ditunjukkan di bawah ini dan apa yang ditulis di dalam loop akan berjalan selamanya sampai istirahat; pernyataan digunakan.
whiel (1) {}
Di dalam infinite sementara kami memeriksa status sakelar kedua yang terhubung ke pin 11.
Jika sakelar ini ditekan, kami mengedipkan LED dalam satu urutan tertentu jika tidak maka kami akan berkedip di urutan lain.
if (digitalRead (11) == LOW) {untuk (int i = 2; i <= 9; i ++) {digitalWrite (i, HIGH); penundaan (100); } untuk (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Untuk mengedipkan LED secara berurutan kita kembali menggunakan for loop, namun kali ini kita menggunakan delay kecil sebesar 100 milidetik dengan menggunakan fungsi delay (100) agar kita dapat melihat LED semakin tinggi. Untuk membuat hanya satu LED menyala pada satu waktu, kami juga menggunakan loop for lainnya untuk mematikan semua LED. Jadi kita nyalakan led tunggu beberapa saat dan kemudian matikan semua LED kemudian tambah hitungan nyalakan LED tunggu beberapa saat dan siklus terus berlanjut. Tetapi semua ini akan terjadi selama sakelar kedua tidak ditekan.
Jika kedua saklar ditekan maka kita ubah urutannya, programnya akan kurang lebih sama mengharapkan urutan dimana LED dinyalakan. Garis-garis yang ditunjukkan di bawah ini mencoba melihat dan mencari tahu apa yang telah diubah.
else {untuk (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); penundaan (100); } untuk (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Ya, loop for telah diubah. Sebelumnya kita membuat LED menyala dari nomor 2 dan terus naik ke 9. Tapi sekarang kita akan mulai dari nomor 9 dan turun ke 2. Dengan cara ini kita bisa melihat apakah saklar ditekan atau tidak.
Pengaturan Perangkat Keras untuk Urutan LED Berkedip:
Oke cukup sekian bagian teori dan software. Mari, dapatkan beberapa komponen dan lihat bagaimana program ini terlihat beraksi. Sirkuit ini sangat sederhana dan karenanya dapat dengan mudah dibangun di atas papan tempat memotong roti. Tetapi saya telah menyolder LED dan mengaktifkan papan perf hanya agar terlihat rapi. Papan kinerja yang saya solder ditunjukkan di bawah ini.
Seperti yang Anda lihat, kami memiliki pin keluaran LED dan sakelar yang diambil sebagai pin konektor. Sekarang kami telah menggunakan kabel konektor wanita ke wanita untuk menghubungkan LED dan sakelar ke papan LaunchPad MSP430 seperti yang ditunjukkan pada gambar di bawah ini.
Mengupload dan Bekerja:
Setelah Anda selesai dengan perangkat kerasnya, cukup hubungkan papan MSP430 Anda ke komputer Anda dan buka Energia IDE dan gunakan program yang diberikan di akhir halaman ini. Pastikan papan kanan dan port COM dipilih di Energia IDE dan klik tombol Unggah. Program harus berhasil dikompilasi dan setelah diunggah akan muncul "Done Uploading".
Sekarang tekan tombol 1 di papan dan LED akan menyala secara berurutan seperti yang ditunjukkan di bawah ini
Anda juga dapat menahan tombol kedua untuk memeriksa apakah urutannya berubah. Pekerjaan lengkap proyek ini ditunjukkan pada video di bawah ini. Jika Anda puas dengan hasilnya, Anda dapat mencoba membuat beberapa perubahan dalam kode seperti mengubah waktu tunda mengubah urutan, dll. Ini akan membantu Anda belajar dan memahami dengan lebih baik.
Semoga Anda memahami tutorial dan mempelajari sesuatu yang bermanfaat dengannya. Jika Anda menghadapi masalah, silakan posting pertanyaan di bagian komentar atau gunakan forum. Mari bertemu di tutorial lain di mana akan belajar cara membaca tegangan analog menggunakan landasan peluncuran MSP30 kami.