Arduino用の8ビットIOポートライブラリ
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 |
アプリとオンラインサービス
> |
|
このプロジェクトについて
8ビットIOポート用のArduinolibrary
<図> <図> <図>
誰もが知っていることですが、arduinoは「 digitalWrite()」を使用してデジタル出力を提供します 」関数を使用し、「 digitalRead()」を介してデジタル入力を取得します " 関数。ただし、これら2つの機能を使用すると、任意の1つのピンに出力または入力を取得できます。つまり、一度に1つのピンにのみ出力または入力を取得できます。 7セグメントディスプレイ、DIPスイッチまたはDAC(デジタルからアナログへのコンバーター)などの8ビットIOデバイスをarduinoとインターフェイスさせたい場合、デバイスに直接8ビットデジタル出力を提供することはできませんが、代わりに8つの異なるピンに出力を提供する必要があります。データバイト(8ビット)パターンは1と0の形式で異なるピンに送信されます。たとえば、データバイトが37h(0011 0111)の場合、digitalWrite()関数を使用してこれらの0 n1パターンを8つの異なるピンに送信する必要があります。 。
そこで、ここでこの状況を克服するために、arduino用の8ビットIOポート(入出力ポート)ライブラリを紹介します。このライブラリを使用すると、結合された8ビットポートとして構成されたanyarduinoボードピンに直接8ビットデータを送信したり、これらの構成されたピンから8ビット入力を取得したりできます。このライブラリは、8ビットのIOポートとして機能するようにarduinoの任意の8ピンを一緒にクラブします。 8ビットポートとして組み合わせる8つのarduinoピンを選択するだけで、データ方向を入力または出力として構成する必要があります。データの方向は、出力の場合は文字「O」、入力の場合は「I」で設定されます。
ライブラリには5つの機能しかありません。ポートオブジェクトを作成するコンストラクターは2つあり、1つは8ビットデジタル出力をポートピンに送信する関数、1つはポートピンから8ビットデジタル入力を取得する関数、もう1つはポートのIO方向を変更/設定する関数です。ここでは、5つの機能すべてを簡単に説明し、その後、いくつかの例を説明とともに示します。
1. IO_Port_8bit(int pin1、intpin2、int pin3、int pin4、int pin5、int pin6、int pin7、int pin8、char dir)
これはコンストラクターです。このクラスのオブジェクトを作成するため、個別のarduinoピンを組み合わせて1つまたは複数の8ビットポートを作成します。入力または出力としてのデータ方向とともに、ポートとして組み合わせる8つの異なるarduinoピンを指定する必要があります。これは、入力または出力としてのポートワークを意味します。このコンストラクターの最後の引数dirは、portを入力または出力として機能します。 dir ='O'がポートが出力として機能することを意味し、ifdir ='I'の場合、ポートは入力として機能します。同じポートを入力と出力の両方として同時に、または交互に機能させることはできません。また、データ方向が選択されていない場合はエラーを示します
2. IO_Port_8bit(int pin1、intpin2、int pin3、int pin4、int pin5、int pin6、int pin7、int pin8)
これは別のコンストラクターです。また、このクラスのオブジェクトを作成するため、個別のarduinoピンを組み合わせて1つまたは複数の8ビットポートを作成します。ポートとして組み合わせる8つの異なるarduinoピンを指定する必要があります。ただし、データの方向を入力または出力として指定していません。このコンストラクターを使用してポートオブジェクトを作成した後、 set_IO_direction を使用してポートの方向を設定する必要があります。 関数。したがって、このコンストラクターを使用すると、プログラマーはこのコンストラクターを使用して実行時にポートデータの方向を変更できます。同じポートを入力または出力として(同時にではなく)代替的に機能させることができます。
3. set_IO_direction(char dir)
この関数は、ポートの入出力方向を指定します。これには、入力としてのポートの場合は「I」、出力としてのポートの場合は「O」の1つの特性引数があります。 datadirectionが選択されていない場合、arduinoのシリアルモニターにエラーが表示されます
4. send_8bit_data(int byt)
この関数は、指定されたピンに8ビットデータを送信します。 8つの異なるピンに直接与えられる引数としてintデータ(<255でなければなりません)を与えるだけです。データが> 255の場合、arduinoのシリアルモニターにエラーが表示されます。
5. get_8bit_data(void)
この関数は、指定されたピンから8ビットのデータを取得します。 8つの異なるピンのステータスを読み取ることにより、8ビットのintデータを返します
例1:1Hzの速度で8つのLEDを交互に点滅させる
#include
IO_Port_8bitmyport(2、3、4、5、6、7、8、9、 ’O’); //出力ポートを作成
void setup()//セットアップには何も必要ありません
{
}
void loop()
{
myport.send_8bit_data(85); //データを送信してすべての奇数のLEDを点滅させる
delay(500);
myport.send_8bit_data(170);データを送信してすべてのLEDを点滅させる
delay(500);
}
例2:0からFまでのLEDにバイナリカウントパターンを表示する
#include
IO_Port_8bitmy8bitport(2、3、4、5、6、7、8、9); //ポートオブジェクトを作成
void setup()
{
my8bitport.set_IO_direction( 'O'); //ポート方向を設定
}
void loop()
{
int i;
for(i =0; i <16; i ++)//表示するデータ0〜15を送信
{//バイナリパターン
myport.send_8bit_data(i);
delay(200);
}
}
例3:8ビットLED棒グラフ表示でアナログ入力電圧レベルを示す
#include
IO_Port_8bitmyport(2、3、4、5、6、7、8、9、 ’O’); //出力ポートオブジェクトを作成します
void setup()
{
myport.send_8bit_data(255); //棒グラフのすべてのLEDを1回点滅
delay(500);
myport.send_8bit_data(0);
}
void loop()
{
intレベル;
レベル=analogRead(A0); //アナログ入力電圧を読み取ります
level =map(level、0、1023、0、80); //電圧を0から80に制限
//入力ごとに棒グラフレベルを増減します
if((level <80)&&(level> 70))myport.send_8bit_data(255);
elseif((level <=70)&&(level> 60))myport.send_8bit_data(127);
elseif((level <=60)&&(level> 50))myport.send_8bit_data(63);
elseif((level <=50)&&(level> 40))myport.send_8bit_data(31);
elseif((level <=40)&&(level> 30))myport.send_8bit_data(15);
elseif((level <=30)&&(level> 20))myport.send_8bit_data(7);
elseif((level <=20)&&(level> 10))myport.send_8bit_data(3);
elseif((level <=10)&&(level> 0))myport.send_8bit_data(1);
elseif(level ==0)myport.send_8bit_data(0);
}
例4:DIPスイッチから8ビットのデジタル入力を取得し、シリアルモニターに値を表示する
#include
IO_Port_8bitmyport(2、3、4、5、6、7、8、9); //ポートオブジェクトを作成
void setup()
{
Serial.begin(9600); //シリアル通信を初期化します。
myport.set_IO_direction( ‘I’); //ポートの方向を設定します
Serial.println( "8ビット入力ポートテスト");
}
void loop()
{
int input_byt;
input_byt =myport.get_8bit_data(); // DIPスイッチのステータスを読み取ります
Serial.print( "受信した入力="); //および
Serial.println(input_byt); //その値を表示します
delay(1000);
}
コード
- 8ビットIOポート用のArduinoライブラリ
8ビットIOポート用のArduinoライブラリ C / C ++
ライブラリはarduinoピンから8ビットIOポートを作成し、8ビットデジタル出力/入力を送信/取得しますプレビューなし(ダウンロードのみ)。
回路図
IOポートは、異なるピンから直接8ビットデータを送信または取得します 製造プロセス