Altair EmbedとArduinoで電子工作(その1)LEDの点灯

Kosuke_IKEDA
Kosuke_IKEDA
Altair Employee

Altair Embedはブロックダイアグラムベースのアプリケーションで、自動コード生成により簡単にハードウェアを動作させることができます。Arduino、Raspberry Pi、Texas InstrumentsおよびST Micro社の製品を含む1200以上のターゲットをサポートしています。

今回はArduinoを例に、Altair Embedからの信号でArduinoデバイスに接続されたLEDを点灯させてみます。

 

準備

Arduinoのドライバが必要ですので、Arduino IDEを下記ページからダウンロードしてインストールしてください。

https://www.arduino.cc/en/software

 

Arduinoデバイスの接続

USBでArduinoデバイスとPCを接続します。今回はArduino Unoの互換ボードを使用します。image

 

Embedの動作モード

Embedでは、以下2種類の方法でハードウェアを動作させることができます。今回は両パターンでLEDを点灯させてみます。

Standalone Mode

Embedで生成したコードをハードウェアデバイスにダウンロードし、ハードウェア単体で実行させます。

image

Interactive Mode

EmbedをインストールしたPCとハードウェアデバイスを接続したまま相互にデータを交換しながら動作させます。

image

 

配線

DIGITALの2番 - LED - 1kオームの抵抗 - GND と接続しました。

LEDには向きがありますのでご注意ください。反対向きだと電流が流れず点灯しません。

 

 

Standalone Modeでの動作

SquareWaveで矩形波を生成し、Arduinoデバイスに入力したモデルを作成しました。使用したモデルはこちらです。

今回は2番ピンに接続していますので、Digital Outputの番号をPD2としてください。

ほか、Arduino Configでポート番号を指定してください。

image

 ToolsのCodeGenより、コード生成を行います。

Compileでコードが生成され、DownloadでコードをArduinoデバイスに転送します。

image

 コードの転送が完了すると、LEDが点灯し始めます。SquareWaveが1Hzの矩形波を出力していますので、1Hzで点滅していることがわかります。USBで接続されていますが、これは電力供給のみで、1HzのLEDの点滅処理はArduinoデバイス単体で行われています。


SquareWaveを10Hzに変更してみます。再度Compile、Downloadを実行すると、今度はLEDが10Hzで点滅します。


  

Interactive Modeでの動作

今度はInteractive Modeで動作させてみます。Interactive Modeで動作させるには、デバイスで動作させたい箇所をCompound Blockという機能を用いて、一つのブロックにまとめる必要があります。今回のモデルでは、Blink Logicと名前を付けました。使用したモデルはこちらです。

image

Blink Logicの中身を確認します。周波数の異なるSquareWaveを3つ用意しています。10Hz、0.2Hz、1Hzです。Blink Logicの外側にあるButtonブロックからの信号により、Caseブロックを用いて信号を切り替えることができます。この切り替えた信号をArduinoデバイスの2番ピンに送信しています。

image

 Blink Blockを選択した状態でCodeGenよりCompileを行い、コードを生成します。Use selected ...にチェックを入れることで、Blink Blockのみのコードを生成できます。

image

 コードが生成されると、.elfというファイルが生成されます。

あとは、Target Interfaceブロックを配置し、生成した.elfファイルを読み込むと、Interective Modeの設定は完了です。

image

 あとは、System PropertiesのRun in real Timeにチェックを入れて、実行してください。

image

Embed側のボタンで周波数を切り替えると、それに応じてLEDが点滅します。


 Altair EmbedとArduinoを用いたStandalone Mode / Interactive Modeの動作方法を紹介しました。

次回は、Arduinoデバイスからの信号をEmbedに取り込んでみたいと思います。