マイコン作例
あると便利なマイクロコントローラの作例をご紹介します。
一つのスイッチで自作ドアを開閉する回路
通常のスライドドアは大きく使いづらい…なのでヒンジドアを使用しようと思った人は多いと思う。
しかしあの扉は何故か緑信号(アナログ入力)しか受け付けないのである。
じゃあスロットルレバーを使えばいいじゃないかというのも道理ではあるが
やはりボタンを押したら開いたり閉じたりするドアの方が楽だよね、という原理のもと回路を組みました。
I/O | 用途 |
---|---|
◯ Switch | 開閉スイッチ。トグルボタンを使う。 |
● Locking | ドアロック |
● Door open close | ドア開閉 |
燃料タンクの値を集計する回路
タンク残量の集計自体はADD回路を使えば簡単にできる。
しかしタンクの数が増えれば増えるほど、船に仕込むADD回路が増えてしまう。
だったらADD回路をマイコンに押し込んでしまえばいい、という原理のもと回路を組みました。
タンクの数が増えれば増えるほど劇的な省スペース化が期待できます。
I/O | 用途 |
---|---|
◯ Input1~4 | それぞれのタンクのタンク内容(中に入っている液体の量。リットル単位)の値 |
● Output | 合計 |
Inputは、大中小タンクのタンク内容の値だけでなく、カスタムタンクに付けた液体メーターの液体レベルの値でも機能する。
Inputの数が増えてきたら、この作例のAddロジックゲートの代わりにARITHMETICのf(x,y,z,w,a,b,c,d)ロジックゲート*1で作ってみよう。その場合の式は、x+y+z+w+a+b+c+d で同じように加算できる。
スロットルを0.00へ簡単に戻せる回路
スロットルを1~-1の振れ幅で使用する際、必ずイライラするのがスロットルを零点に戻すという作業。
これをマイコンで制御してどんな値からでもスロットル値を0.00に戻せるようにする回路を作りました。
I/O | 用途 |
---|---|
◯ Throttle | スロットルレバーのスロットル値 |
◯ Switch | 0.00に戻す時に押すスイッチ。プッシュボタンがよいでしょう。 |
● plus input | スロットルレバーのアップ入力 |
● minus input | スロットルレバーのダウン入力 |
X秒毎に1Pulse/tickだけ出力する回路
メモリレジスタなどで、この秒間の瞬間の値が欲しい!といった際に使える回路です。
プロパティの値を10秒とセットしておけば、10秒ごとに1/60秒だけONを出力します。
I/O | 用途 |
---|---|
● Output | 1/60秒だけON信号出力 |
● Timer | おまけ。内部のカウンタがカウントアップする値[秒]が出力されます。 |
Property | 設定値 |
Interval [s] | 動作間隔[秒] |
一度スタートしたら放置できるタイマー
ロジックゲートに用意されているTimer4種類は、いずれもTimer Enable端子にON信号を送り続けないと時間を計測してくれません。
実際のキッチンタイマーのようにON信号を1回ぽちっと送れば、勝手に時間を計ってくれる回路を作ってみました。
I/O | 用途 |
---|---|
◯ TRIG | トリガー。ON信号が入力された瞬間から計測を開始する。 |
● OUT | タイマーが計測中の間ONになる。計測が終了するとOFFになる。 |
Property | 設定値 |
Time [s] | 計測する時間[秒] |
計測終了時までずっとTRIG端子にON信号を入力しっぱなしにしたり、計測中に複数回ON/OFFをしてもそれらは無視され、最初の計測が継続されます。
OUT端子の直前にPulseロジックゲートをON→OFF動作で挿入すると、計測中はOFF、計測が完了した瞬間に1 Tick(1/60秒)だけONになる動作にできます。
実際のキッチンタイマーのように一時停止やリセットの機能をつけてみるのもよいでしょう。
プッシュボタンでトグルボタンを切り替える回路
トグルボタンのON/OFFを、別に用意したプッシュボタンで切り替える回路です。
操作したいトグルボタンが別のビークルにある時に無線で操作するために作りました。
操作したいトグルボタンのON/OFF状態はプッシュボタン側には表示されないので、例えばドアの開閉をするトグルボタンなのでドアを見れば分かる等、何らかの状態が分かる手段がある前提です。
I/O | 用途 |
---|---|
◯ Toggle In | 操作したいトグルボタンのToggled出力端子に接続 |
◯ Ctrl In | 操作する側のプッシュボタン等、ON立ち上がりで操作する信号を入力 |
● Ctrl Out | 操作したいトグルボタンのExternal Input入力端子に接続 |
Ctrl In端子へON信号が入力される度に、操作したいトグルボタンのON/OFFが切り替わります。
Ctrl In端子への入力は、ON立ち上がりだけが有効です。どれだけ長い間ONにしていても、素早くOFFにしても何も影響がありません。
Ctrl In端子への入力がタイマーなどの自動操作の場合、トグルボタンとの同時押しによる誤動作が発生する可能性があります。
無線で操作する時は:
プッシュボタン→Composite Write(on/off)回路→アンテナ(送信)─[電波]→アンテナ(受信)→Composite Read(on/off)回路→この回路⇔操作したいトグルボタン→操作される装置
のように繋ぎます。
アンテナはコンポジット信号を送受信できますが、送受信するためには周波数 Frequencyと送信モード Transmit Mode(ONが送信/OFFが受信)の情報をこれとは別に与える必要があります。
この回路に含まれるSRラッチは、ゲームのセーブ&ロードを跨いでONの状態を保持できません。*2トグルボタンがONの状態でセーブし、そのセーブデータをロードすると、場合によってはカチカチカチカチカチとすごい速さでONとOFFが繰り返される発振を起こします。これは回路内のSRラッチ(ロード後ONの状態を忘れ、必ずOFFになってしまいます)とトグルボタンが記憶している内容(トグルボタンは忘れないのでONの状態です)に齟齬が生じるためです。OFFの状態でセーブすると、SRラッチの状態は変わらない(OFFを忘れてもOFFになる)ので発振は起きないはずです。*3
これを回避するには、回路の内部のSRラッチロジックゲートの代わりに、回路の外にSRラッチのパーツを繋いでください。SRラッチパーツのための入出力端子が計4個増え、このマイコンの大きさも大きくなります。SRラッチのNOT Output端子は、Output端子からの入力をNOTに通せば等価なので、増やす端子の数は3個でも実現可能です。
燃費を計算する回路及び航続距離を計算する回路
現状で燃料を気にするミッションは北海のミッションくらいのものですが
「燃料1kLあたりどのくらい進むのか?」を出力する回路を組んでみました。
付随して「残りの燃料から何km先までいけるのか?」を計算する回路を組みました。
Workshop
A/D | 赤 | 緑 | 用途 |
---|---|---|---|
入力 | 0個 | 2個 | 速度[km/h]、燃料の合算値 |
出力 | 0個 | 2個 | 燃費[km/1kL]、残り航続距離[km] |