- Gerekli Materyal:
- Devre şeması:
- Programlama Açıklaması:
- Yanıp Sönen LED Sırası için Donanım Kurulumu:
- Yükleme ve Çalışma:
Bu, Energia IDE'yi kullanarak Texas Instruments'tan MSP430G2 LaunchPad'i öğrendiğimiz bir dizi öğreticinin ikinci öğreticisidir. Son Blinky LED eğitiminde kendimizi LaunchPad Geliştirme Panosu ve Energia IDE'ye tanıttık, ayrıca yerleşik LED'i düzenli aralıklarla yanıp sönen ilk programımızı da yükledik.
Bu eğitimde, bir giriş cihazının durumunu bir anahtar gibi okumak ve LED'ler gibi birden fazla çıkışı kontrol etmek için Dijital Okuma ve Dijital Yazma seçeneğini nasıl kullanacağımızı öğreneceğiz. Bu eğitimin sonunda, IR sensörü, PIR sensörü vb. Gibi birçok dijital sensörle arabirim oluşturmak ve ayrıca LED, Buzzer gibi çıkışları açmak veya kapatmak için kullanılabilen Dijital Girişler ve çıkışlarla çalışmayı öğrenmiş olacaksınız. sağ!!? Başlayalım.
Gerekli Materyal:
- MSP430G2 LaunchPad
- Herhangi bir renkteki LED - 8
- Anahtar - 2
- 1k Direnç - 8
- Bağlantı telleri
Devre şeması:
Önceki eğitimimizde, fırlatma rampasının kendisinin iki LED ve kart üzerinde bir anahtarla geldiğini fark ettik. Ancak bu eğitimde , bir düğmeye basıldığında sırayla sekiz LED ışığı yakmayı planladığımız için bundan daha fazlasına ihtiyacımız olacak. Sırf ilginç hale getirmek için başka bir düğmeye basıldığında da sıralamayı değiştireceğiz. Bu yüzden 8 LED ışıklı ve iki anahtarlı bir devre inşa etmeliyiz, tam devre şeması aşağıda bulunabilir.
Burada 8 LED çıkışlar ve iki anahtar da girişlerdir. Bunları karttaki herhangi bir I / O pinine bağlayabiliriz ancak yukarıda gösterildiği gibi LRD'leri P1.0'dan P2.1'e ve 1. ve 2. anahtarı sırasıyla P2.4 ve P2.3'e bağladım.
LED'in tüm katot pimleri toprağa bağlanır ve anot pimi bir direnç üzerinden I / O pimlerine bağlanır. Bu dirence Akım sınırlama direnci denir, bu direnç bir MSP430 için zorunlu değildir çünkü G / Ç pininin sağlayabileceği maksimum akım sadece 6mA'dır ve pin üzerindeki voltaj sadece 3.6V'dur. Ancak bunları kullanmak iyi bir uygulamadır. Bu dijital pinlerden herhangi biri yükseldiğinde ilgili LED yanacaktır. Son öğretici LED programını hatırlayabiliyorsanız, digitalWrite'ın (LED_pin_name, HIGH) LED'i parlatacağını ve digitalWrite'ın (LED_pin_name, LOW) LED'i kapatacağını hatırlayacaksınız .
Anahtarlar giriş cihazıdır, anahtarın bir ucu topraklama terminaline, diğeri ise P2.3 ve P2.4 dijital pinlerine bağlıdır. Bu, anahtara her bastığımızda G / Ç pini (2.3 veya 2.4) topraklanacak ve düğmeye basılmazsa boş bırakılacağı anlamına gelir. Programlama yaparken bu düzenlemeyi nasıl kullanabileceğimize bakalım.
Programlama Açıklaması:
Anahtar 1'e basıldığında 8 LED'i sırayla kontrol etmek için program yazılmalıdır ve ardından anahtar 2'ye basıldığında sıra değiştirilmelidir. Programın tamamı ve tanıtım videosu bu sayfanın alt kısmında bulunabilir. Aşağıda, programı kolayca anlayabilmeniz için satır satır açıklayacağım.
Her zaman olduğu gibi, içinde kullandığımız pinlerin giriş veya çıkış pini olduğunu ilan edeceğimiz void setup () işlevi ile başlamalıyız. Programımızda 8 LED pini çıkış ve 2 anahtar giriştir. Bu 8 LED, panodaki 2'den 9'a pin olan P1.0'dan P2.1'e bağlanır. Daha sonra anahtarlar sırasıyla 11 ve 12 numaralı pin olan P2.3 ve 2.4 pinlerine bağlanır. Bu nedenle, void kurulumunda ()
void setup () {for (int i = 2; i <= 9; i ++) {pinMode (i, OUTPUT); } for (int i = 2; i <= 9; i ++) {digitalWrite (i, LOW); } pinMode (11, INPUT_PULLUP); pinMode (12, INPUT_PULLUP); }
Bildiğimiz gibi pinMode () fonksiyonu çıkış veya giriş ve olmaya pimi beyan digitalWrite () fonksiyonu bunu yüksek (ON) ya da düşük (KAPALI) yapar. Satır sayısını azaltmak için bu bildirimi yapmak için bir for döngüsü kullandık. "İ" değişkeni, for döngüsünde 2'den 9'a yükseltilecek ve her artış için içerideki işlev çalıştırılacaktır. Kafanızı karıştırabilecek başka bir şey de " INPUT_PULLUP " terimidir . Bir pin, sadece pinMode (Pin_name, INPUT) fonksiyonunu çağırarak girdi olarak ilan edilebilir , ancak burada bir INPUT yerine bir INPUT_PULLUP kullandık ve her ikisinde de gözle görülür bir değişiklik var.
Herhangi bir mikrodenetleyici pini kullandığımızda, pim ya alçak ya da yükseğe bağlanmalıdır. Bu durumda pim 11 ve 12, basıldığında toprağa bağlanacak olan anahtara bağlanır. Ancak anahtara basılmadığında, pim hiçbir şeye bağlı değildir, bu duruma kayan pim denir ve mikrodenetleyiciler için kötüdür. Bu nedenle, bundan kaçınmak için, pimi yüzer duruma geldiğinde bir durumda tutmak için bir yukarı çekme veya aşağı çekme direnci kullanıyoruz. In MSP430G2553 Mikrodenetleyici I / O pinleri inşa in-bir pull-up direnç vardır. Bunu kullanmak için tek yapmamız gereken, yukarıda yaptığımız gibi, bildirim sırasında INPUT yerine INPUT_PULLUP çağırmaktır.
Şimdi void loop () işlevine geçelim. Bu işlevde yazılan her şey sonsuza kadar yürütülecektir. Programımızın ilk adımı , anahtara basılıp basılmadığını kontrol etmektir ve basıldığında LED'leri sırayla yanıp sönmeye başlamalıyız. Düğmeye basılıp basılmadığını kontrol etmek için aşağıdaki satır kullanılır
eğer (digitalRead (12) == LOW)
Burada yeni işlev digitalRead () işlevidir, bu işlev dijital bir pinin durumunu okuyacak ve pim bir miktar voltaj aldığında YÜKSEK (1) döndürür ve pim topraklandığında düşük DÜŞÜK (0) döndürür. Donanımımızda pim sadece butona bastığımızda topraklanacaktır, aksi takdirde pull-up direnci kullandığımız için yüksek olacaktır. Bu nedenle, düğmeye basılıp basılmadığını kontrol etmek için if ifadesini kullanıyoruz.
Düğmeye basıldığında sonsuz süre (1) döngüsüne giriyoruz. LED'leri sırayla yanıp sönmeye başladığımız yer burasıdır. Bir döngü aşağıda gösterilmiştir iken sonsuz ve her ne bir mola kadar sonsuza çalışacaktır döngü içine yazılır; ifadesi kullanılır.
whiel (1) {}
Sonsuz içinde, pim 11'e bağlı olan ikinci anahtarın durumunu kontrol ederken.
Bu düğmeye basılırsa, LED'i belirli bir sırayla yanıp söneriz, aksi takdirde başka bir sırayla yanıp söneriz.
eğer (digitalRead (11) == LOW) {for (int i = 2; i <= 9; i ++) {digitalWrite (i, HIGH); gecikme (100); } for (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
To sırayla LED yanıp tekrar kullanmak için döngü, ama bu sefer kullandığımız 100 milisaniye küçük bir gecikme kullanmak gecikme (100) böylece fonksiyon biz LED alma en yüksek fark olabilir. Bir seferde yalnızca bir LED'in parlaması için, tüm LED'leri kapatmak için başka bir for döngüsü kullanırız. Bu yüzden bir süre led yakıyoruz ve sonra tüm ledleri kapatıyoruz, sonra sayacı artırıyoruz, led üzerinde bir süre bekleyip döngü devam ediyor. Ancak ikinci anahtara basılmadığı sürece tüm bunlar olacaktır.
İkinci anahtara basılırsa , sırayı değiştiririz, program, LED'in yanma sırası için aşağı yukarı aynı olacaktır. Çizgiler aşağıda gösterilmiştir, bir göz atmayı ve neyin değiştiğini anlamayı deneyin.
else {for (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); gecikme (100); } for (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
Evet, for döngüsü değiştirildi. Daha önce LED'in 2 numaradan 9'a kadar parlamasını sağlamıştık. Ama şimdi 9 numaradan başlayıp 2'ye kadar ineceğiz. Bu şekilde anahtara basılı olup olmadığını görebiliriz.
Yanıp Sönen LED Sırası için Donanım Kurulumu:
Tamam, tüm teori ve yazılım kısmı yeter. Hadi, bazı bileşenleri alalım ve bu programın nasıl çalıştığını görelim. Devre çok basittir ve bu nedenle bir devre tahtası üzerine kolayca kurulabilir. Ama düzgün görünmesini sağlamak için mükemmel kart üzerindeki LED ve anahtarları lehimledim. Lehimlediğim performans kartı aşağıda gösterilmiştir.
Gördüğünüz gibi led'in çıkış pinleri ve konnektör pinleri olarak çıkarılmış switch var. Şimdi, LED'leri ve anahtarları MSP430 LaunchPad kartını aşağıdaki resimde gösterildiği gibi bağlamak için dişi-dişi konektör kablolarını kullanıyoruz.
Yükleme ve Çalışma:
Donanımla işiniz bittiğinde, sadece MSP430 kartınızı bilgisayarınıza bağlayın ve Energia IDE'yi açın ve bu sayfanın sonunda verilen programı kullanın. Energia IDE'de doğru panonun ve COM bağlantı noktasının seçildiğinden emin olun ve Yükle düğmesine tıklayın. Program başarıyla derlenmeli ve yüklendikten sonra "Yükleme Bitti" mesajı görünecektir .
Şimdi panodaki düğmeye 1 basın ve LED aşağıda gösterildiği gibi sırayla yanmalıdır.
Sıranın değişip değişmediğini kontrol etmek için ikinci düğmeyi de basılı tutabilirsiniz. Projenin tam çalışması aşağıdaki videoda gösterilmektedir. Sonuçlardan memnunsanız, gecikme süresini değiştirmek gibi kodda bazı değişiklikler yapmayı deneyebilirsiniz. Bu, daha iyi öğrenmenize ve anlamanıza yardımcı olacaktır.
Umarım öğreticiyi anladınız ve onunla faydalı bir şeyler öğrendiniz. Herhangi bir sorunla karşılaştıysanız, lütfen soruyu yorum bölümüne göndermekten veya forumları kullanmaktan çekinmeyin. MSP30 başlatma pedimizi kullanarak analog voltajların nasıl okunacağını öğreneceğiniz başka bir öğreticide buluşalım.