これは、私たちがされているチュートリアルの配列の第二のチュートリアルですMSP430G2ランチパッドを学習使用しTexas Instruments社からエネルギアIDEを。前回のBlinkyLEDチュートリアルでは、LaunchPad開発ボードとEnergia IDEを紹介しました。また、オンボードLEDを定期的に点滅させる最初のプログラムもアップロードしました。
このチュートリアルでは、デジタル読み取りおよびデジタル書き込みオプションを使用して、スイッチなどの入力デバイスのステータスを読み取り、LEDなどの複数の出力を制御する方法を学習します。このチュートリアルの最後に、デジタル入力と出力の操作方法を学びました。これを使用して、IRセンサー、PIRセンサーなどの多くのデジタルセンサーをインターフェースし、LED、ブザーなどの出力をオンまたはオフにすることができます。正しい!!?始めましょう。
必要な材料:
- MSP430G2 LaunchPad
- 任意の色のLED– 8
- スイッチ– 2
- 1k抵抗– 8
- 接続線
回路図:
前のチュートリアルでは、発射台自体に2つのLEDとボード上のスイッチが付属していることに気づきました。ただし、このチュートリアルでは、ボタンが押されたときに8つのLEDライトを順番に点灯させることを計画しているため、それ以上のものが必要になります。また、面白くするために、別のボタンが押されたときの順序も変更します。したがって、8つのLEDライトと2つのスイッチを備えた回路を構築する必要があります。完全な回路図は以下にあります。
ここでは、8つのLEDが出力で、2つのスイッチが入力です。これらはボード上の任意のI / Oピンに接続できますが、上記のように、LRDをピンP1.0からP2.1に接続し、スイッチ1と2をそれぞれピンP2.4とP2.3に接続しました。
LEDのすべてのカソードピンはグランドに接続されており、アノードピンは抵抗を介してI / Oピンに接続されています。この抵抗は電流制限抵抗と呼ばれます。I/ Oピンが供給できる最大電流はわずか6mAであり、ピンの電圧は3.6Vのみであるため、この抵抗はMSP430には必須ではありません。ただし、それらを使用することをお勧めします。これらのデジタルピンのいずれかがハイになると、それぞれのLEDが点灯します。最後のチュートリアルのLEDプログラムを思い出すことが できれ ば、 digitalWrite(LED_pin_name、HIGH) がLEDを点灯させ、 digitalWrite(LED_pin_name、LOW) がLEDを オフに することを思い出して ください 。
スイッチは入力デバイスであり、スイッチの一方の端はアース端子に接続され、もう一方の端はデジタルピンP2.3およびP2.4に接続されています。これは、スイッチを押すたびにI / Oピン(2.3または2.4)が接地され、ボタンが押されない場合は空いたままになることを意味します。プログラミング中にこの配置をどのように使用できるかを見てみましょう。
プログラミングの説明:
プログラムは、スイッチ1が押されたときに8つのLEDをシーケンス方式で制御するように作成する必要があり、次にスイッチ2が押されたときにシーケンスを変更する必要があります。完全なプログラムとデモビデオは、このページの下部に見つけることができます。以下では、わかりやすいようにプログラムを1行ずつ説明します。
いつものように、使用しているピンが入力ピンまたは出力ピンであることを宣言する void setup() 関数から始める必要があります。私たちのプログラムでは、8つのLEDピンが出力され、2つのスイッチが入力です。これらの8個のLEDは、ボードのピン番号2〜9であるP1.0〜P2.1に接続されています。次に、スイッチはそれぞれピン番号11と12であるピンP2.3とピン2.4に接続されます。したがって、 void setup()で 次のように宣言しました。
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); }
我々が知っているよう pinMode() 関数は、ピンが出力または入力される宣言し digitalWrite() 関数は、それが(ON)ハイ又はロー(OFF)を行います。 for ループを使用してこの宣言を行い、行数を減らしました。変数 「i」 は for ループで2から9にインクリメントされ、インクリメントごとに内部の関数が実行されます。あなたを混乱させるかもしれないもう一つのことは、「 INPUT_PULLUP 」という用語です。ピンは、関数 pinMode(Pin_name、INPUT)を 呼び出すだけで入力として宣言できますが、ここではINPUTの代わりに INPUT_PULLUP を使用しており、どちらも顕著な変化があります。
マイクロコントローラのピンを使用する場合、ピンはローまたはハイに接続する必要があります。この場合、ピン11と12はスイッチに接続されており、スイッチを押すとグランドに接続されます。しかし、スイッチが押されていない場合、ピンは何にも接続されていません。この状態はフローティングピンと呼ばれ、マイクロコントローラーには適していません。したがって、これを回避するには、プルアップ抵抗またはプルダウン抵抗を使用して、ピンがフローティング状態になったときの状態に保持します。でMSP430G2553マイクロコントローラI / Oピンは内蔵プルアップ抵抗を持っています。これを使用するには、上記で行ったように、宣言中にINPUTではなくINPUT_PULLUPを呼び出すだけです。
それでは、 void loop() 関数に足を踏み入れましょう。この関数に記述されているものはすべて、永久に実行されます。プログラムの最初のステップは、スイッチが押されているかどうかを確認することです。押されている場合は、LEDを順番に点滅させます。ボタンが押されているかどうかを確認するには、次の行を使用します
if(digitalRead(12)== LOW)
ここで、新しい関数は digitalRead() 関数です。この関数は、デジタルピンのステータスを読み取り、ピンに電圧がかかると HIGH(1) を返し、ピンが接地されると LOW(0) を返します。私たちのハードウェアでは、ピンはボタンを押したときにのみ接地されます。それ以外の場合は、プルアップ抵抗を使用しているため、ピンは高くなります。したがって、 if ステートメントを使用して、ボタンが押されたかどうかを確認します。
ボタンが押されると、無限の while(1) ループに入ります。ここから、LEDを順番に点滅させ始めます。ループは以下のようになりながら、無限と何がループの内側に書かれているがブレークするまで永遠に実行されます。ステートメントが使用されます。
whiel(1){}
ピン11に接続されている2番目のスイッチのステータスを確認しながら無限の内部。
このスイッチを押すと、特定の順序でLEDが点滅します。それ以外の場合は、別の順序で点滅します。
if(digitalRead(11)== LOW){for(int i = 2; i <= 9; i ++){digitalWrite(i、HIGH); delay(100); } for(int i = 2; i <= 9; i ++)digitalWrite(i、LOW); }
するために順番にLEDを点滅我々は再び使用 するために ループが、今回は使用して100ミリ秒のわずかな遅延を使用して 遅延(100) 私たちはLEDなっハイに気づくことができるように機能を。一度に1つのLEDだけを点灯させるために、別の for ループを使用してすべてのLEDをオフにします。したがって、LED待機をしばらくオンにしてから、すべてのLEDをオフにしてから、カウントをインクリメントしてLEDをオンにし、しばらく待機すると、サイクルが続行されます。しかし、これはすべて、2番目のスイッチが押されていない限り発生します。
2番目のスイッチが押された場合、 シーケンスを変更します。プログラムは、LEDがオンになっているシーケンスに対してほぼ同じ期待値になります。以下に示す行は、何が変更されたかを調べて理解してみてください。
else {for(int i = 9; i> = 2; i-){digitalWrite(i、HIGH); delay(100); } for(int i = 2; i <= 9; i ++)digitalWrite(i、LOW); }
はい、 for ループが変更されました。以前は、LEDを2番から9番まで点灯させていましたが、今度は9番から始めて、2番までデクリメントします。これにより、スイッチが押されているかどうかを確認できます。
LEDシーケンスを点滅させるためのハードウェア設定:
理論とソフトウェアのすべての部分で十分です。いくつかのコンポーネントを入手して、このプログラムがどのように動作するかを見てみましょう。回路は非常に単純であるため、ブレッドボード上に簡単に構築できます。しかし、私はそれをきれいに見せるために、パフォーマンスボードのLEDとスイッチをはんだ付けしました。はんだ付けしたパフォーマンスボードを以下に示します。
ご覧のとおり、LEDの出力ピンとスイッチがコネクタピンとして取り出されています。これで、下の図に示すように、メスからメスへのコネクタワイヤを使用して、LEDとスイッチをMSP430LaunchPadボードに接続しました。
アップロードと作業:
ハードウェアの使用が完了したら、MSP430ボードをコンピューターに接続し、Energia IDEを開いて、このページの最後にあるプログラムを使用します。Energia IDEで正しいボードとCOMポートが選択されていることを確認し、[アップロード]ボタンをクリックします。プログラムは正常にコンパイルされ、アップロードされると 「 アップロードが 完了し ました 」 と表示され ます。
ボード上のボタン1を押すと、以下に示すようにLEDが順番に点灯します。
2番目のボタンを押したままにして、シーケンスが変更されているかどうかを確認することもできます。プロジェクトの完全な動作は、以下のビデオに示されています。結果に満足したら、シーケンスの変更など、遅延時間を変更するなど、コードにいくつかの変更を加えることができます。これにより、学習と理解が深まります。
チュートリアルを理解し、チュートリアルで役立つことを学んだことを願っています。問題が発生した場合は、コメントセクションに質問を投稿するか、フォーラムを使用してください。MSP30発射台を使用してアナログ電圧を読み取る方法を学ぶ別のチュートリアルで会いましょう。