MATLABは、さまざまなアプリケーションに使用できる多用途のソフトウェアです。MATLABの以前のチュートリアルでは、MATLABを使用してDCモーター、サーボモーター、および家電製品を制御する方法について説明しました。このチュートリアルでは、シリアル通信にMATLABを使用する方法を学習します。シリアル通信の受信側には、Arduinoを使用しています。
MATLABとArduino間のシリアル通信をセットアップする方法は2つあります。1つはコマンドウィンドウを使用する方法、もう1つはMATLABGUIを使用する方法です。両方の方法のArduinoコードは同じままです。MATLABを初めて使用する場合は、MATLABを使用した単純なLED点滅プログラムを開始し、MATLABで使用される基本的な用語を学習することをお勧めします。
必要なコンポーネント
- MATLABがインストールされたラップトップ(設定:R2016a以降のバージョン)
- Arduino UNO
- LED(任意の色)
- 抵抗器(330オーム)
回路図
上記の回路図は、MATLABとArduino間のシリアル通信を確立する両方の方法で同じままです。
MATLABコマンドウィンドウを使用したシリアル通信
これは、ArduinoとMATLAB間のシリアル通信をセットアップする簡単な方法です。ここでは、コマンドウィンドウを使用してMATLABからArduinoにデータをシリアルに送信し、Arduinoが受信シリアルデータを読み取ります。次に、このシリアル送信されたデータを使用して、Arduinoに接続されているすべてのものを制御できます。ここでは、LEDをArduinoに接続しました。これは、Arduinoがシリアルに受信したデータに応じてオンとオフを切り替えます。
まず、指定されたArduinoコードをArduino UNOにアップロードしてから、MATLABエディターウィンドウでコーディングを開始します。新しいエディタスクリプトを開くには、下の画像に示すように「 新しいスクリプト」 をクリックします。
次に、MATLABとArduino間のシリアル通信用に、以下の完全なMATLABコードをコピーしてエディターウィンドウに貼り付けます。
ArduinoとMATLAB間のシリアル通信用の%MATLABコード x = serial( 'COM18'、 'BAUD'、9600); fopen(x); go = true; while go a = input( '1を押してLEDをオンにし、0を押してオフにします:'); fprintf(x、a); if(a == 2)go = false; エンドエンド
与えられたコードでは、MATLABでシリアル通信を定義するために以下のコマンドが使用されています。comポート番号がArduinoが接続されているポート番号であることを確認し、ボーレートはArduinoとMATLABの両方のコードで同じに設定する必要があります。
x = serial( 'COM18'、 'BAUD'、9600);
シリアルポートを開くには、次のコマンドを使用します。
fopen(x);
以下のコマンドは、MATLABからArduinoにデータをシリアルに送信するために使用されます。ここで、xは シリアル を呼び出すためのもので、aはユーザーが入力した値です。
fprintf(x、a);
while 関数を使用 し て無限ループを作成し、ユーザーが数値「2」を入力するとループが中断します。
while go a = input( '1を押してLEDをオンにし、0を押してオフにします:'); fprintf(x、a); if(a == 2)go = false; エンドエンド
「上のMATLABエディタスクリプトのクリックをコーディング完了後、 RUN 画像の下に示すように、あなたのプログラムを実行します」
以下の画像に示すように、MATLABはコードの処理とシリアル通信の開始に数秒かかります。MATLABがソフトウェア画面の左下隅に「BUSY」メッセージを表示するまで待ちます。
これで、ユーザー入力を送信するためのコマンドウィンドウが表示されます。デフォルトのメッセージを設定しました。
「1を押してLEDをオンにし、0を押してオフにします:」
「1」を送信してLEDをオンにし、「0」を送信してLEDをオフにし、「2」を送信して操作を中断します。任意のタスクに任意の数を設定できます。必要なのは、それに応じてArduinoコードを変更することだけです。完全なArduinoコードは最後にあります。
コマンドウィンドウを使用してMATLABからArduinoにシリアルデータを送信する完全なプロセスを理解するには、以下のビデオをチェックしてください 。
MATLABGUIを使用したシリアル通信
MATLAB GUIを使用したシリアル通信を示すために、MATLABを使用してArduinoに接続されたLEDのオンとオフを切り替える2つのグラフィカルボタンを作成します。これらのボタンをクリックしてLEDをオンまたはオフにすると、データがMATLABからArduinoにシリアルに送信されます。Arduinoには、MATLABからシリアルデータを受信し、受信したシリアルデータに従ってLEDを制御するためのコードが含まれています。Arduinoコードは前のコードと同じままですが、違いは、以前はMATLABのコマンドウィンドウからシリアルデータ「1」と「0」を送信していたのに対し、2つのグラフィカルボタンをクリックすると同じデータが送信されることです。
GUIを起動するには、 コマンドウィンドウに 次のコマンドを 入力します
ガイド
ポップアップウィンドウが開き、下の画像に示すように、新しい 空白のGUI を選択します。
次に、以下に示すように、LEDをオンまたはオフにするための2つのプッシュボタンを選択します。
ボタンのサイズを変更したり、ボタンの形状を変更したりするには、ボタンをクリックするだけで、ボタンの角をドラッグできます。押しボタンをダブルクリックすると、その特定のボタンの色、文字列、タグを変更できます。下の写真に示すように、2つのボタンをカスタマイズしました。
あなたはあなたの選択に従ってボタンをカスタマイズすることができます。これを保存すると、MATLABの エディターウィンドウ にコードが生成され ます 。MATLAB GUIを使用して、Arduinoで実行するタスクに応じてこのコードを編集します。以下では、MATLABコードを編集しました。コマンドウィンドウ、エディターウィンドウなどの詳細については、MATLABチュートリアルの開始を参照してください。
このプロジェクトの最後に、MATLABとArduino間のシリアル通信を確立するための完全なMATLABコードを示します。さらに、ダウンロード用のGUIファイル(.fig)とコードファイル(.m)をここに含めます(リンクを右クリックして[名前を付けてリンクを保存…]を選択します)。これを使用して、要件に応じてボタンをカスタマイズできます。以下は、Arduinoに接続されたLEDを制御するために行ったいくつかの調整です。
以下のコードをコピーして、行番号に貼り付けます。74シリアルポートとボーレートを設定します。
すべてクリア; グローバルx; x = serial( 'COM18'、 'BAUD'、9600); %ボーレートとCOMポートが %Arduino IDE fopen(x)と同じであることを確認してください。
ここで、 fopen(x) は、シリアル通信用のシリアルポートを開くために使用されます。
下にスクロールすると、GUIの両方のボタンに対して2つの関数が作成されていることがわかります。次に、クリック時に実行するタスクに応じて、両方の関数にコードを記述します。
で ON-LED ボタンの機能、コピーおよびLEDをONするだけで、関数の終了前に、コードの下に貼り付けます。以下のコードでわかるように、 fprintf(x、1) は、MATLABからArduinoシリアルにシリアルデータを送信するために使用されます。ここでは、Arduinoシリアルに「1」を送信しています。Arduinoコードを確認すると、Arduinoがシリアルポートで「1」を受信すると、13番目のピンをHIGHにすることでLEDが点灯することがわかります。
グローバルx; fprintf(x、1);
では LED-OFFの ボタンの機能、コピーやLEDをオフにするだけの機能の終了前に、コードの下に貼り付けます。以下のコードでわかるように、 fprintf(x、0) は、MATLABからArduinoシリアルにシリアルデータを送信するために使用されます。このパートでは、Arduinoシリアルに「0」を送信しています。Arduinoコードを確認すると、Arduinoがシリアルポートで「0」を受信すると、13番目のピンをLOWにしてLEDをオフにすることがわかります。 。
グローバルx; fprintf(x、0);
MATLAB GUIコーディングを完了し、回路図に従ってハードウェアをセットアップした後、実行ボタンをクリックするだけで、編集したコードを.mファイルで実行できます。
MATLABが応答するまでに数秒かかる場合があります。以下に示すように、画面の左下隅に表示されるBUSY表示が表示されるまで、GUIボタンをクリックしないでください。
すべての準備ができたら、LED-ONおよびLED-OFFボタンをクリックして、LEDのオンとオフを切り替えます。押すと LED-ONボタン 、13番目のArduinoのピンがHIGHとLEDが光って開始され、あなたが押したときに、このピンに接続行く LED-OFFボタンを 、13番目のArduinoのピンはLEDがオフになりLOWになります。
以下のビデオをチェックして、MATLABGUIを使用してMATLABからArduinoにシリアルデータを送信する完全なプロセスを理解でき ます。