ご覧いただきありがとうございます。
子供のころからものづくりが好きな
50代のおじさんです。
「PICマイコン」を使った電子工作や、
「Unity」というゲームエンジンを使った
遊びについて書いています。
ものづくりで悪戦苦闘している様子を
見て行ってください。
いよいよ明日で
24年の折り返しです
半年で少しは成長したのだろうか
こぼれ種で芽を出した
ニチニチソウは
この1週間で2倍ぐらいに急成長
半年前のブログを見ると
ブログの書き方は
成長してなさそう
技術的な面でいうと
すぐに忘れてしまうのは
仕方ないとして
過去記事を読み返せば
先に進むのが早くなっているので
よしとしましょう
製作中の回路へ追加
前回お試し回路を組んで使えそうなことが判った表示器(OLED)ですが、これまでサーボモーターの動作確認を行っていたブレッドボードへ追加実装しました。
無計画に部品実装していたので空いてるスペースがあまり残っていなくて苦労しました。
思いつきでいろいろ機能追加するのも趣味でやってる醍醐味ですもんね。
ついでにジャンパ線を最短で配線できるU字タイプに置き換えました。少しスッキリ!
見やすさ改善
while (1)ループ内で
表示器のクリア ⇒ 最新の値表示
のような処理をしていたのですが、チカチカして見づらかったのでif文で値が変わった時だけ上記の処理をするようにしたことで見やすくなりました。
はまった点
今さらなんですが、基本を守らないことで「はまった」点が2点ほど。
1点目はPICへの書き込みしようとしてエラーが出てPICを認識しませんでした。
回路が簡単な段階ではなくても運よくPICを認識していたのですが、表示器(OLED)を追加してジャンパ線を張り替えるなどしたことで状態が変わったのでしょう。
プルアップ抵抗を追加してからは安定してPICへ書き込みできています。
2点目は押しボタンスイッチで設定値の増減ができるようにしていたのですが、ボタンを押していない時に勝手に増減することがあり、こちらもプルアップ抵抗(10kΩ)を入れることでボタンを押した時だけ反応するようになりました。
当初はボタンを押した時だけVccに接続する(Highになる)ようにしていただけで、プルアップやプルダウン抵抗は入れていなかったのでPICの入力ピンの電位がふらついていたのが原因と思われます。
プログラムでも1点はまり点が...
表示器に設定値として初期値「750」を表示したかったのですが、なぜか「7」しか表示されずかなり悩みました。
当初は
printf("%d",Duty);
のように書いていたのですが、これだと「7」しか表示されません。Dutyというのが設定値が入る変数でint型として指定していました。
printf()で文字列は問題なく表示できていたので、いきなりint型の変数を表示させようとするのがいけないのか?ということで一旦文字列に変換してからPrintfで表示するようにしたところ上の動画のようにうまくいきました。
sprintf(str, "%d", Duty); ⇐ 文字列(str)に変換
font12_posi(1, 70);
printf(str);
設定値が表示可能となったので
現物(壁スイッチ)合わせで
サーボモーターの稼働範囲を
決められそうです
次の週末かな?
ではまた。