3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

なでしこでPICマイコン制御

Last updated at Posted at 2020-12-21

日本語プログラミング言語「なでしこ」を使って制御できるPICマイコンボードがあります。これを使うと,センサ入力の仕方を勉強したり,Lチカやモータドライブの制御等ができます。ひょっとしたら,「なでしこ」で制御をしたいと思っている人が(一人くらいは…)いると思うので,そんな万が一のためにメモをまとめます。

この記事は、なでしこv1 Windows版で実行できるようにしています。他のバージョンでは動きません。

なでしこで計測・制御

制御ボードの準備

まだ1つしか出ていませんが(それでも貴重ですが…),PICマイコンボードと,それに添付するDLLファイルがあれば,なでしこで制御ができます。
nadesiko-board-1s.png
入力は,センサ入力ポートが3つ。
出力は,ボード上のLEDとスピーカ(ブザーが鳴ります),出力端子4つ(約5V),モータドライブ1個です。

とりあえずLチカ!

制御ボードを使うときの「Hello, World!」みたいなものですが,とりあえずLEDをON/OFFさせます。

board1.nako
オンの間
  LEDオン。
  1秒待つ。
  LEDオフ。
  1秒待つ。
ここまで。

これで,ボード上のLEDを点灯・消灯させることができます。
出力1端子にLEDを差しこんで,Lチカもできます。

board2.nako
オンの間
  出力1オン。
  1秒待つ。
  出力1オフ。
  1秒待つ。
ここまで。

ltika.gif

明るさによって反応を変える

ボードの入力端子1にCdS(光センサ)を差しこんで,センサ1測定という命令を使うと,CdSの測定値を取得できます。このボードは明るいと最小値0,暗いと最大値1023で測定値を返します。

board3.nako
明るさラベルとはラベル。

オンの間
  明るさ=センサ1測定。  // #1
  明るさラベルのテキスト=明るさ。

  もし,明るさ>600ならば  // #2
    LEDオン。
  違えば
    LEDオフ。
  ここまで。
  0.5秒待つ。
ここまで。

#1では,変数明るさに,測定値を代入しています。#2で,明るさ>600(周囲が暗い)ならば,LEDを点灯させるようにしています。これは,夜間に自動点灯するライトの動作に似ています。

より細かく反応を変える

もちろん別のセンサも使えますが,CdSが一番単純で分かりやすいので,これを応用して,自動車の衝突防止アラームを作ってみます。

board4.nako
明るさラベルとはラベル。

オンの間
  明るさ=センサ1測定。
  明るさラベルのテキスト=明るさ。
  0.1秒待つ。
	
  もし,明るさ>600ならば          // #1 とても近いとき
    LEDオン。
    音長(1)。発音(2)。
    違えば,もし,明るさ>200ならば  // #2 やや近いとき
    LEDオン。
    音長(1)。発音(1)。
    違えば                           // #3 離れているとき
    LEDオフ。
    1秒待つ。
    ここまで。
ここまで。

動作している様子はこちらの動画で。

音長(n)で,ブザーが鳴る長さをn秒にしています。発音(n)で,ブザーの音の高さをnにしています。#1のときはやや高い音が,#2の時はやや低い音が鳴ります。

こうすることで,

  • 離れているとき(#3)は,LEDは消灯し,音も鳴らない。
  • やや近づいたとき(明るさが600~200のとき,#2)は,LEDが点灯して低い音が鳴る。
  • とても近いとき(明るさが600~1023のとき,#1)は,LEDが点灯して高い音が鳴る。

という動作になります。

モータドライブを制御する

出力端子2はモータドライブになっています。外部の回路(3V程度)までならON/OFF制御できます。
試しに,外部回路としてLEDとオルゴールICを出力端子2につないで制御してみました。
nadesiko-board-2s.png

board5.nako
明るさラベルとはラベル。

オンの間
  明るさ=センサ1測定。
  明るさラベルのテキスト=明るさ。
  0.1秒待つ。

  もし,明るさ>500ならば
    出力2オン。    // #1
    2秒待つ。
  違えば
    出力2オフ。
  ここまで。
  1秒待つ。
ここまで。

動作している様子はこちらの動画で。出力2オン出力2オフで,モータドライブを制御しています。

最後に

こうやってサンプルを並べると,やっぱり命令が分かりやすいなー。さらに,あるサンプルの一部の命令を置きかえるだけで,次のステップへ進むことができます。プログラムの構造が変わらないことが,ひと目で分かる。日本語で作る「なでしこ」ならではの分かりやすさのような気がします。

このボートは,残念ながらボードのメモリにプログラムを記憶できないため,常にパソコンとボードを接続している必要がありますが,それでも日本語で制御できるボードがあるのは,とても面白いと思います。

参考

3
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?