MATLAB®経由でポテンショメーターによるPWM出力制御

UNO R3に接続しているLEDをMATLAB®で制御する方法を学びます。


Author:Mohammed Hussain JahangiriLast revision:2026/04/08

はじめに

このチュートリアルでは、外部のLEDを点灯するのにMATLAB®を使い、出力を調整するのに、MATLAB® Support Package for Arduino® Hardwareを使います。

目的

このプロジェクトの目的は以下の通りです。

  • MATLAB®でUNO R3のLEDを制御します
  • MATLAB®でUNO R3のPWM出力を制御します
  • ポテンショメーターで調光可能なライトを作ります

必要なソフトウェアとハードウェア

i
有効なMATLAB®ライセンスが必要です。職場や教育機関がサブスクリプションを持っているかもしれません。あるいは、Arduino Engineering Kit R2にMATLAB®の1年間の試用ライセンスが含まれています。

MATLAB®を使う理由

MATLAB®は、教育や産業プログラミングプラットフォームで、データ解析やシミュレーションの実行、モデルベース設計の実行に使われています。Arduinoボードでの対話型の通信を通じて、MATLAB®の機能を拡張することができ、同時に、数学やエンジニアリング、描画機能も得ることができます。MathWorksのウェブサイトで、MATLAB®の機能を確認してください。このチュートリアルでは、USBとWi-Fi接続でMATLAB®と接続します。PC上のMATLAB®ソフトウェアとArduinoボードが通信するために、MATLAB® Support Package for Arduino Hardwareをインストールする必要があります(MathWorks®のアカウントが必要です)。

ボードをMATLAB®に接続する

  1. ボードとPCをUSB 2.0タイプA/Bケーブルで接続します。
  1. MATLAB®を起動し、コマンドウインドウでarduinosetup()コマンドを実行します。
  1. GUIが表示され、MATLAB®とArduinoの接続設定を補助します。USBケーブル経由で接続するには、USBのラジオボックスをチェックしNextをクリックします。
  1. ドロップダウンメニューから"UNO"を選択し、適切なCOMポートを選択します。そして、青いProgramボタンをクリックし、Arduinoサーバーをボードにuploadします。完了したら、Nextをクリックします。
  1. このステップでは、接続タイプとポート、ボード、ロードされたライブラリを確認できます。ArduinoとMATLAB®の接続を確認するために、テスト接続することもできます。すると、以下の図に示すように、接続成功したことを示す緑のチェックマークが現れます。
  1. これでUNO R3がMATLAB®と接続するよう設定されました。MATLAB®でオブジェクトを作成し、a = arduino()コマンドを実行します。以下の示すように、COMポートを含むオブジェクトのプロパティが表示されます。
  1. writeDigitalPin(a, 'D13', 1);コマンドを入力します。このコマンドは、Arduinoプログラミング言語のdigitalWrite(D13, HIGH)と似ています。D13は内蔵LEDに接続されているデジタルピンの13番、aは作成したArduinoオブジェクト、1はHIGHあるいはオンを示します。1を0に、0を1に変えて、LEDをつけたり消したりしてみてください。
i
Arduino IDEとは異なり、LED_BUILTINマクロを使って内蔵LEDを示すことはできません。
  1. whileループ内に以下のコマンドを記述することで、LEDを連続して点滅させることができます。以下のスクリプトを入力してみてください。
1
2
3
4
5
6
while (1)
      writeDigitalPin(a, 'D13', 0);
      pause(0.5);
      writeDigitalPin(a, 'D13', 1);
      pause(0.5);
end

回路

左のブレッドボードには、ポテンショメーターに5Vを供給するジャンプワイヤーがあります。オレンジのケーブルはGNDに接続されています。灰色のケーブルはA0への入力です。A0は、ポテンショメーターを通じて調整された13番ピンから来る変化する電圧を読み取ります。右のブレッドボードには、11番ピンから出力される赤いワイヤーと抵抗、LED、最終的には緑のワイヤーでGNDに接続される、簡単なLED回路を構成しています。

i
LEDの長い端子(アノード)を抵抗に接続し、短い端子(カソード)をGNDに接続してください。

ボードのプログラミング

  1. 先ほど紹介した方法であるwriteDigitalPin(a, 'D13', 1);で、出力を1にします。前述したとおり、1はオンあるいはHIGHで、デジタルピン13(D13)を5Vにし、LEDに電流を流します。アナログピン0(A0)が実際に読み取っている変化する電圧を、ループ内でreadVoltage(a, 'A0');を使い、確認します。その後、display(Volts)を使い、Voltsの値をコマンドウインドウに表示します。
1
2
3
4
5
6
7
a = arduino();
writeDigitalPin(a, 'D13', 1)
while(1)
  Volts = readVoltage(a, 'A0');
  display(Volts);
  pause(0.5)
end

ポテンショメーターのつまみの回す量に従い、Voltsに割り当てられる値が変化するはずです。

  1. writePWMVoltage()を使い、Volts`の値をデジタルピンの11番(D11)に設定します。このコマンドは0から5ボルトの間を設定します。引数の値をデジタルピンのPWM信号の値に変換します。
1
2
3
4
5
6
7
8
a = arduino();
writeDigitalPin(a, 'D13', 1)
while(1)
  Volts = readVoltage(a, 'A0');
  writePWMVoltage(a, 'D11', Volts)
  display(Volts);
  pause(0.5)
end

トラブルシュート

  • コードが固まったり、動作していない場合は、デバイスに接続されている前の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

inserted by FC2 system