当ブログをご覧いただき、ありがとうございます。
ご注意事項:
記載内容には、十分注意しておりますが、勘違い、記憶違い、理解不足、思い込み等が無いとは限りませんので、申し訳ありませんが、 記載内容の正確性は保障致しません(出来ません)。
従いまして、このブログの内容を参考にする事に起因して生じる、または 生じた、いかなる事態にも、当方は何の責任も取れませんので、 参考にされる場合は、自己責任にてお願い致します。
このブログのC言語に関する説明には、PICで電子工作するのに必要な事柄以外(私のレベルで)は出てきません、出てこないことの方が多いと思いますので、ご了承願います。

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に出力する。

下の動画は、実験の様子です。

youtu.

さて、下の回路図では、スイッチと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に接続するのにも、アクティブハイの回路とアクティブローの回路があるということです。