UNO R3に接続しているLEDをMATLAB®で制御する方法を学びます。
はじめに
このチュートリアルでは、外部のLEDを点灯するのにMATLAB®を使い、出力を調整するのに、MATLAB® Support Package for Arduino® Hardwareを使います。
目的
このプロジェクトの目的は以下の通りです。
- MATLAB®でUNO R3のLEDを制御します
- MATLAB®でUNO R3のPWM出力を制御します
- ポテンショメーターで調光可能なライトを作ります
必要なソフトウェアとハードウェア
- UNO R3
- USB 2.0ケーブル Type A/B
- スルーホールのポテンショメーター
- MATLAB® Support Package for Arduino® Hardware
MATLAB®を使う理由
MATLAB®は、教育や産業プログラミングプラットフォームで、データ解析やシミュレーションの実行、モデルベース設計の実行に使われています。Arduinoボードでの対話型の通信を通じて、MATLAB®の機能を拡張することができ、同時に、数学やエンジニアリング、描画機能も得ることができます。MathWorksのウェブサイトで、MATLAB®の機能を確認してください。このチュートリアルでは、USBとWi-Fi接続でMATLAB®と接続します。PC上のMATLAB®ソフトウェアとArduinoボードが通信するために、MATLAB® Support Package for Arduino Hardwareをインストールする必要があります(MathWorks®のアカウントが必要です)。
ボードをMATLAB®に接続する
- ボードとPCをUSB 2.0タイプA/Bケーブルで接続します。

PCとUSB接続
- MATLAB®を起動し、コマンドウインドウで
arduinosetup()コマンドを実行します。

Arduinoセットアップ
- GUIが表示され、MATLAB®とArduinoの接続設定を補助します。USBケーブル経由で接続するには、USBのラジオボックスをチェックしNextをクリックします。

接続タイプの選択
- ドロップダウンメニューから"UNO"を選択し、適切なCOMポートを選択します。そして、青い
Programボタンをクリックし、Arduinoサーバーをボードにuploadします。完了したら、Nextをクリックします。
- このステップでは、接続タイプとポート、ボード、ロードされたライブラリを確認できます。ArduinoとMATLAB®の接続を確認するために、テスト接続することもできます。すると、以下の図に示すように、接続成功したことを示す緑のチェックマークが現れます。
- これでUNO R3がMATLAB®と接続するよう設定されました。MATLAB®でオブジェクトを作成し、
a = arduino()コマンドを実行します。以下の示すように、COMポートを含むオブジェクトのプロパティが表示されます。

Arduinoのプロパティ
writeDigitalPin(a, 'D13', 1);コマンドを入力します。このコマンドは、Arduinoプログラミング言語のdigitalWrite(D13, HIGH)と似ています。D13は内蔵LEDに接続されているデジタルピンの13番、aは作成したArduinoオブジェクト、1はHIGHあるいはオンを示します。1を0に、0を1に変えて、LEDをつけたり消したりしてみてください。
LED_BUILTINマクロを使って内蔵LEDを示すことはできません。whileループ内に以下のコマンドを記述することで、LEDを連続して点滅させることができます。以下のスクリプトを入力してみてください。
|
|
回路
左のブレッドボードには、ポテンショメーターに5Vを供給するジャンプワイヤーがあります。オレンジのケーブルはGNDに接続されています。灰色のケーブルはA0への入力です。A0は、ポテンショメーターを通じて調整された13番ピンから来る変化する電圧を読み取ります。右のブレッドボードには、11番ピンから出力される赤いワイヤーと抵抗、LED、最終的には緑のワイヤーでGNDに接続される、簡単なLED回路を構成しています。

設定した回路全体
ボードのプログラミング
- 先ほど紹介した方法である
writeDigitalPin(a, 'D13', 1);で、出力を1にします。前述したとおり、1はオンあるいはHIGHで、デジタルピン13(D13)を5Vにし、LEDに電流を流します。アナログピン0(A0)が実際に読み取っている変化する電圧を、ループ内でreadVoltage(a, 'A0');を使い、確認します。その後、display(Volts)を使い、Voltsの値をコマンドウインドウに表示します。
|
|
ポテンショメーターのつまみの回す量に従い、Voltsに割り当てられる値が変化するはずです。
writePWMVoltage()を使い、Volts`の値をデジタルピンの11番(D11)に設定します。このコマンドは0から5ボルトの間を設定します。引数の値をデジタルピンのPWM信号の値に変換します。
|
|
トラブルシュート
- コードが固まったり、動作していない場合は、デバイスに接続されている前のArduinoオブジェクトをクリアしてみてください。これは、
clear <object>を実行することで可能です。例えば、clear aはArduinoオブジェクトをクリアします。 Unrecognized function or variable 'arduinosetup'というメッセージが出たら、MATLAB® Support Package for Arduino Hardwareがインストールされているか確認してください。
おわりに
変化する入力を使って出力を制御し、デバイスの制御と科学計算とエンジニアリングアプリケーションの開発という強力な機能を利用できるようになりました。MATLAB®が提供する様々ツールボックスによって処理されるポテンショメーターに似た入力の変化で、LEDの明るさだけではなく、無限の種類の出力を生成することができます。
さらなるアイデア
arduino()コマンドで、コマンドライン引数を使いMATLAB®サーバーをArduino® UNOにアップロードすることができます。この関数についての詳細は、MathWorks® documentationを参照してください。- 明るさを調整するのではなく、点滅の速度をゆっくりと速くし、その後、遅くするMATLAB®コードを書いてください。
- 例えば、光センサーといって、ポテンショメーターとLEDとは異なるセンサーや部品を使ってください。
オリジナルのページ
https://docs.arduino.cc/tutorials/uno-rev3/matlab-pwm-blink/
最終更新日
August 16, 2026