PICの、入力を使う、スイッチでの入力の1回目。
今回から、PICの入力を使う方法を勉強します。
今回は、プッシュスイッチの入力で、LEDの点灯と消灯をコントロールします。
スイッチによる、LED点灯回路、アクティブハイの回路。
上の回路図が、プッシュスイッチの入力で、LEDの点灯と消灯をコントロールする回路です。
回路の説明;右側のプッシュスイッチが押されていない時は、RA0がR2を通して接地されているので、RA0の端子電圧は0vで、スイッチを押すと、RA0がVccとつながって5vになります、デジタルで言うと、OFFが0でONが1になります。
従って、プッシュスイッチで、0または1のデータを入力することができます。
次は、RB0の端子に、抵抗R3を通してLEDのアノード側が接続されカソード側がGNDに落ちています。
このLEDは、RB0に0が出力されると、RB0の端子電圧は0vですから、LEDに電流は流れず消灯します、RB0に1が出力されると、RB0の端子電圧は5vですから、LEDに電流が流れ点灯します。
プログラム(下記プログラム);この回路を、スイッチがONの時に、LEDが点灯するように、プログラムを作ると、スイッチでLEDの点灯消灯をコントロールする事ができます。
上のプログラムが、その上の回路を制御するプログラムです。
プログラムの説明;
23~27行目;初期設定、TRISAが0x01になっているのは、RA0を入力に指定するため(使用しないビットは出力に指定する、不必要な入力を防止します)。
28行目;入力したデータを入れる変数の定義。
29行目;31~32行目を永久に繰り返す。
31行目;AポートRA0のスイッチの現在の、H(1)またはL(0)の状態を変数INdetaに取り込む。
32行目;INdetaの内容を、ポートBのRB0に出力する。
下の動画は、実験の様子です。
さて、下の回路図では、スイッチとLEDのPICへの接続方法を変えてみました。
スイッチによる、LED点灯回路、アクティブローの回路。
回路の説明;右側のプッシュスイッチが押されていない時は、RA0がR2を通してVccに接続されているので、RA0の端子電圧は5vで、スイッチを押すと、RA0がGNDとつながって0vになります、デジタルで言うと、OFFが1でONが0になります。
次は、RB0の端子に、抵抗R3を通してLEDのカソード側が接続されアノード側がVccに接続されています。
このLEDは、RB0に0が出力されると、RB0の端子電圧は0vで、Vccは5vですからLEDに電流が流れ点灯します、RB0に1が出力されると、RB0の端子電圧は5vで、Vccも5vですから、LEDに電流が流ず消灯します。
プログラム(上記プログラム);この回路を、スイッチがONの時に、LEDが点灯するように、プログラムを作ると、スイッチでLEDの点灯消灯をコントロールする事ができます、プログラムも前回のプログラムで動作します。
上の2つの回路は、外見の動作は同じですが、内部動作は、データが1の時点灯と、データが0の時点灯と異なっています、この回路の動作を、データが1の時回路が動作す時、アクティブハイといい、データが0の時回路が動作す時、アクティブローといいます。
従って、スイッチをPICに接続するのに、アクティブハイの回路とアクティブローの回路があり、LEDをPICに接続するのにも、アクティブハイの回路とアクティブローの回路があるということです。