- Bahan yang Diperlukan:
- Rajah Litar:
- Penjelasan Pengaturcaraan:
- Persediaan Perkakasan untuk Urutan LED Berkelip:
- Memuat naik dan Bekerja:
Ini adalah tutorial kedua dari urutan tutorial di mana kita mempelajari MSP430G2 LaunchPad dari Texas Instruments menggunakan Energia IDE. Dalam tutorial LED Blinky yang lalu, kami memperkenalkan diri kami ke LaunchPad Development Board dan Energia IDE, kami juga memuat naik program pertama kami iaitu mengedipkan papan LED pada selang waktu yang tetap.
Dalam tutorial ini kita akan belajar bagaimana menggunakan pilihan Digital Baca dan Digital Tulis untuk membaca status peranti input seperti suis, dan mengendalikan beberapa output seperti LED. Pada akhir tutorial ini, anda akan belajar bekerja dengan Input dan output Digital, yang boleh 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 betul !!? Mari kita mulakan.
Bahan yang Diperlukan:
- Pelancaran MSP430G2
- LED warna apa pun - 8
- Suis - 2
- Perintang 1k - 8
- Menyambung wayar
Rajah Litar:
Dalam tutorial sebelumnya, kami melihat bahawa peluncur itu sendiri dilengkapi dengan dua LED dan suis di papan. Tetapi dalam tutorial ini kita akan memerlukan lebih dari itu, kerana kita berencana untuk menyalakan lapan lampu LED secara berurutan apabila butang ditekan. Kami juga akan mengubah urutan apabila butang lain ditekan hanya untuk menjadikannya menarik. Oleh itu, kita harus membina litar dengan 8 lampu LED dan dua suis, gambarajah litar lengkap boleh didapati di bawah.
Di sini 8 LED adalah output dan dua suis adalah input. Kita boleh menyambungkannya ke mana-mana pin I / O di papan tetapi saya telah menghubungkan LRD dari pin P1.0 ke P2.1 dan beralih 1 dan 2 ke pin P2.4 dan P2.3 masing-masing seperti yang ditunjukkan di atas.
Semua pin katod LED diikat ke tanah dan pin anod disambungkan ke pin I / O melalui perintang. Perintang ini dipanggil perintang penghad arus, perintang ini tidak wajib untuk MSP430 kerana arus maksimum yang dapat sumber pin I / O hanya 6mA dan voltan pada pin hanya 3.6V sahaja. Walau bagaimanapun, adalah amalan yang baik untuk menggunakannya. Apabila mana-mana pin digital ini naik tinggi, LED masing-masing akan menyala. Sekiranya anda dapat mengingat program LED tutorial terakhir, maka anda akan ingat bahawa digitalWrite (LED_pin_name, HIGH) akan menjadikan LED menyala dan digitalWrite (LED_pin_name, LOW) akan menyalakan LED.
Suis adalah peranti input, satu hujung suis disambungkan ke terminal pembumian dan yang lain dihubungkan ke pin digital P2.3 dan P2.4. Ini bermaksud bahawa setiap kali kita menekan suis, pin I / O (2.3 atau 2.4) akan dibumikan dan dibiarkan bebas jika butang tidak ditekan. Mari kita lihat bagaimana kita dapat menggunakan susunan ini semasa memprogram.
Penjelasan Pengaturcaraan:
Program mesti ditulis untuk mengawal 8 LED secara berurutan semasa suis 1 ditekan dan kemudian apabila suis 2 ditekan, urutan harus diubah. The program lengkap dan demonstrasi Video boleh didapati di bahagian bawah laman ini. Di bawah ini saya akan menerangkan program demi baris agar anda dapat memahaminya dengan mudah.
Seperti biasa kita harus mulai dengan fungsi setup void () di mana kita akan menyatakan pin yang kita gunakan adalah pin input atau output. Dalam program kami, 8 pin LED adalah output dan 2 suis adalah input. Ini 8 LED disambungkan dari P1.0 untuk P2.1 yang pin nombor 2 hingga 9 di atas kapal. Kemudian suis disambungkan ke pin P2.3 dan Pin 2.4 yang masing-masing adalah nombor pin 11 dan 12. Oleh itu, kami telah menyatakan perkara berikut dalam persediaan tidak sah ()
batal persediaan () {untuk (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 tahu fungsi pinMode () menyatakan pin menjadi output atau input dan fungsi digitalWrite () menjadikannya tinggi (ON) atau rendah (OFF). Kami telah menggunakan loop for untuk membuat deklarasi ini untuk mengurangkan bilangan baris. Pembolehubah "i" akan incremented 2-9 dalam untuk gelung dan bagi setiap kenaikan dalam majlis itu akan dilaksanakan. Perkara lain yang mungkin membingungkan anda adalah istilah " INPUT_PULLUP ". Pin boleh dinyatakan sebagai input dengan hanya memanggil fungsi pinMode (Pin_name, INPUT) tetapi di sini kita telah menggunakan INPUT_PULLUP dan bukannya INPUT dan mereka berdua mempunyai perubahan yang ketara.
Apabila kita menggunakan pin mikrokontroler, pin harus disambungkan ke rendah atau tinggi. Dalam kes ini pin 11 dan 12 disambungkan ke suis yang akan disambungkan ke tanah semasa ditekan. Tetapi apabila suis tidak ditekan, pin tidak dihubungkan dengan apa-apa keadaan ini dipanggil pin apungan dan tidak baik untuk mikrokontroler. Oleh itu, untuk mengelakkan ini, kita menggunakan resistor pull-up atau pull-down untuk menahan pin ke keadaan ketika ia terapung. Dalam MSP430G2553 Mikrokontroler pin I / O mempunyai perintang penarik di dalam. Untuk menggunakan semua yang harus kita lakukan ialah memanggil INPUT_PULLUP dan bukannya INPUT semasa pengisytiharan seperti yang telah kita lakukan di atas.
Sekarang mari masuk ke fungsi gelung void () . Apa sahaja yang ditulis dalam fungsi ini akan dilaksanakan selama-lamanya. Langkah pertama dalam program kami adalah untuk memeriksa apakah suis ditekan dan jika ditekan kita harus mula mengedipkan LED secara berurutan. Untuk memeriksa apakah butang ditekan baris berikut digunakan
jika (digitalRead (12) == RENDAH)
Di sini fungsi baru adalah fungsi digitalRead () , fungsi ini akan membaca status pin digital dan akan mengembalikan TINGGI (1) apabila pin mendapat voltan dan akan kembali rendah RENDAH (0) ketika pin dibumikan. Dalam perkakasan kami, pin akan dibumikan hanya apabila kami menekan butang jika tidak, ia akan tinggi kerana kami menggunakan perintang penarik. Oleh itu, kami menggunakan pernyataan if untuk memeriksa apakah butang ditekan.
Setelah butang ditekan, kita masuk ke gelung sementara (1) . Di sinilah kita mula mengedipkan LED secara berurutan. Yang tidak ditetapkan manakala gelung ditunjukkan di bawah dan apa sahaja yang tertulis di dalam gelung ini akan berlangsung selama-lamanya sehingga rehat; penyataan digunakan.
whiel (1) {}
Di dalam tak terhingga semasa kami memeriksa status suis kedua yang disambungkan ke pin 11.
Sekiranya suis ini ditekan, kita akan mengedipkan LED dalam satu urutan yang lain, kita akan mengedipkannya mengikut urutan yang lain.
if (digitalRead (11) == RENDAH) {untuk (int i = 2; i <= 9; i ++) {digitalWrite (i, TINGGI); kelewatan (100); } untuk (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Untuk mengedipkan LED secara berurutan, kami sekali lagi menggunakan gelung untuk , tetapi kali ini kita menggunakan kelewatan kecil 100 milisaat menggunakan fungsi penundaan (100) sehingga kita dapat melihat LED semakin tinggi. Untuk membuat hanya satu cahaya LED pada satu masa kami juga menggunakan satu lagi untuk gelung untuk mematikan semua LED. Oleh itu, kami menghidupkan penantian LED untuk beberapa waktu dan kemudian mematikan semua LED kemudian menaikkan jumlah kiraan pada menunggu LED untuk beberapa waktu dan kitarannya berterusan. Tetapi semua ini akan berlaku selagi suis kedua tidak ditekan.
Sekiranya suis kedua ditekan maka kita mengubah urutan, program akan lebih kurang sama dengan urutan LED yang dihidupkan. Garis-garis ditunjukkan di bawah cuba lihat dan cari tahu apa yang telah diubah.
lain {untuk (int i = 9; i> = 2; i--) {digitalWrite (i, TINGGI); kelewatan (100); } untuk (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Ya, gelung untuk telah diubah. Sebelum ini kami membuat LED menyala dari nombor 2 dan hingga ke 9. Tetapi sekarang kita akan mulai dari nombor 9 dan penurunan hingga ke 2. Dengan cara ini kita dapat melihat jika suis ditekan atau tidak.
Persediaan Perkakasan untuk Urutan LED Berkelip:
Baiklah dari semua teori dan bahagian perisian. Mari, dapatkan beberapa komponen dan lihat bagaimana program ini kelihatan dalam tindakan. Litarnya sangat mudah dan dengan itu boleh dibina dengan mudah di atas papan roti. Tetapi saya telah menyolder LED dan menghidupkan papan perf agar ia kelihatan lebih kemas. Papan perf yang saya solder ditunjukkan di bawah.
Seperti yang anda lihat, kami mempunyai pin output LED dan suis dikeluarkan sebagai pin penyambung. Sekarang kita telah menggunakan wayar penyambung wanita ke wanita untuk menyambungkan LED dan beralih ke papan LaunchPad MSP430 seperti yang ditunjukkan dalam gambar di bawah.
Memuat naik dan Bekerja:
Setelah selesai menggunakan perkakasan, sambungkan 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 pada butang Muat Naik. Program harus berjaya disusun dan setelah dimuatkan akan menunjukkan "Selesai Memunggah".
Sekarang tekan butang 1 di papan dan LED akan menyala mengikut urutan seperti di bawah
Anda juga boleh menahan butang kedua untuk memeriksa apakah urutannya sudah berubah. Kerja projek yang lengkap ditunjukkan dalam video di bawah. Sekiranya anda berpuas hati dengan hasilnya, anda boleh mencuba membuat beberapa perubahan dalam kod seperti mengubah masa kelewatan mengubah urutan dll. Ini akan membantu anda belajar dan memahami dengan lebih baik.
Harap anda telah memahami tutorial dan mempelajari sesuatu yang berguna dengannya. Sekiranya anda menghadapi masalah, sila hantarkan pertanyaan di bahagian komen atau gunakan forum. Mari berjumpa di tutorial lain di mana akan belajar bagaimana membaca voltan analog menggunakan pad pelancaran MSP30 kami.