諸兄のプログラムをもとに、多少変更を加えて、PCの
キーボードから、LEDのコントロールをするプログラムをつく
りました。
キーボードから、1~7の数字を押すことで、それに応じた
場所のLEDを点灯するプログラムです。
プログラムです。
ヘッダーファイルの「uart.h」と「uart.c」諸兄の作られたものを
そのまま使わせていただいています。
今回はポーリングのプログラムなので、次は、割込を使った
プログラムを作ってみようと思います。
mabo個人のサイトです。いろんなことを日記風に書いてます。場合によっては,間違った記載もあるということをご承知おきください。表題をクリックして,個別のページの最下部からコメントをお願いします。
諸兄のプログラムをもとに、多少変更を加えて、PCの
キーボードから、LEDのコントロールをするプログラムをつく
りました。
キーボードから、1~7の数字を押すことで、それに応じた
場所のLEDを点灯するプログラムです。
プログラムです。
ヘッダーファイルの「uart.h」と「uart.c」諸兄の作られたものを
そのまま使わせていただいています。
今回はポーリングのプログラムなので、次は、割込を使った
プログラムを作ってみようと思います。
新しい環境で、諸兄の書いてくれたシリアル通信のプログ
ラムを自分の環境で実現するべくもがいていました。
コンパイルはすんなり通るのに思った動作をしてくれません。
全部疑って、一つ一つつぶして、やっと思うような動作ができ
るようになりました。
まず、はまったのが、デバックのために、プログラムの間に
書き込んだ書式です。
int count=1000;
RA0=1;
RA1=0;
while(count>0){count--;}
count=1000;
RA0=0;
RA1=1;
while(count>0){count--;}
LEDが交互に点滅するはずですが、RA1に当てはまるLED
の変化がありません。
もしやと思い
PORTA=0b00000001;
PORTB=0b00000000;
・・・・・・・・・・・・・・・・・・・
・・・・・・・・・・・・・・・・・・・
PORTA=0b00000000;
PORTB=0b00000001;
のように変更したら動きました。「RA」の表記では、ポート
全体の値を書き換えてしまってるようでした。
よく見てみるとポートのビットの操作の記述が変更に変更に
なってました。
RA1→→PORTAbits.RA1
のように書かないとだめでした。
次にはまったのが、外部オシレーターの使用でした。
これは、デバックの方法の手落ちでした。外部オシレーター
でプログラムがうまく動いているのか確かめるのに、LEDの
点滅プログラムを挿入しましたが、ウエイトタイムが短くて
点灯しっぱなしで、うまく動いてないように見えてしまいま
した。何回、書き直したことか。
丸一日かかって、諸兄のプログラムの再現ができました。
PICのUART機能を使って、PCからのキー入力を
エコーバックするプログラムです。
それから、とんでもないミスをしてました。RXとTXのピンアサ
インを私の教科書(キットで遊ぼう電子回路シリーズNo9)で
確認しながらしてましたが、これが間違いでした。
教科書のPICは、16F627AというPICで、今回使ったのは、
16F88というPICでした。同じ18ピンのICなので、同じだろう
たたかをくっくってたのが間違いでした。なんと、
16F627
TX--8ピン(RB2)
RX--7ピン(RB1)
16F88
TX--11ピン(RB5)
RX-- 8ピン(RB2)
なんと、TXとRXが入れ替わってました。これでは、動きません
ね。やはり、データシートみないとだめなんですねえ。
X IDEの開発環境で、いくつかプログラムを書いて見ました。
驚いたのは、「あまりにも親切過ぎる」でした。
最近の一太郎やWORDのように、やろうとしていることを
先読みして、自動でやってくれます。
一太郎等では、冒頭に句読点がくると、行間をつめて、
句読点を行の終わりの位置にもってくるということを自動
でやってくれます。これと同じように、いろいろ、自動でや
ってくれます。ただ、この「親切」がくせ者で、時に、意図し
たことと違う結果になってしまいます。行頭の禁則処理を
自動でやると、行ごとの文字間隔がちがって、見栄えが
悪くなるので、この辺が、一番いやなところです。
この意味で、最近のワープロソフトは、嫌いでした。さすが
使わなくなりましたが、PCになってからも、OASYSという
ワープロソフトを使い続けたのも、この親切さがなかった
からです。
さて、X IDEですが、使ってみて、ことのほか便利なようです。
何よりも、作成途中で、シンタックスエラーがあると、その都度
知らせてくれます。
黄矢印の行に「;」がないシンタックスエラーがありますが、
次の行の緑矢印の所にきちんと、「びっくりマーク」が表示
され、エラーのあることを示してくれます。
「;」をつけてやると、ちょっとタイムラグがありますが、
びっくりマークは、すぐに消えます。
未定義の変数等についても同じように知らせてくれますの
ので、開発時間が短縮されるかもしれません。
PICのプログラムを作るにあたって、初めて使った、
MPLAB IDE V8.8という古典的な環境を使い続けてきまし
た。
ただ、世の中がどんどん進んでいて、このv8.8は古い
アーカイブに残っているだけで、メジャーなDLのリストには、
ありませんでした。
また、新しいことを覚えるのはしんどいのですが、諸兄の
プログラム古い環境に移植しようと思いましたが、あっさり
断念しました。
新しい環境のMPLAB® X IDEをインストール。この環境で
コンパイルしたら、一発でOKでした。
新しい環境では、一番の難物のCONFIGの設定も半自動で
おこなえるようで、なれれば、こちらの方がいいかもしれま
せん。
例によって、諸兄のHPを参考にしながら、プログラムの環境
を作ります。詳細は、arduino ide等で検索するといろいろあ
ります。私は、
を参考にしました。
詳細は、参考になる諸兄のHPがありますので、はまって
しまった所だけを書きます。
arduinoの公式HPに行って、WINのインストーラーをDLします。
黄色矢印をクリックします。
すると次のような画面になります。
この画面で、黄色矢印をおすと、寄付の金額を入力しなければ
ならなくなります。どのHPを見ても有料だとは書いてありま
せん。有料なのかと思いましたが、なんのことはない、
赤の矢印を押せばよかったのです。赤矢印を押せば、すんなり、
DLできました。
DLしたファイルをインストールしました。本体がないままに
インストールしました。同時にドライバーもインストールしよ
としましたが、本体がないので、途中でキャンセルしました。
本体がきてから、本体をUSBに接続すると、すんなりとドライ
バーもインストールできました。デバイスマネージャーで確認
しても、びっくりマークはでていませんでした。
以前から気になってましたが、PICを使えば事足りるという
ことで、手を出していませんでした。
ハンダを使わなくても、簡単に回路の試験等ができそうなの
で、「arduino」をいじってみることにしました。
入門キットなるものを購入しました。
NETであさると、PICとはそもそも考え方が違うようで、やは
り細かい制御をするには、PICにはかなわないようです。
Q&Aのサイトで、以下のような記述を見かけました。
当を得た解説だと思います。以下、抜粋です。
>arduinoは、ハードウエアの事を全く知らなくても、
>拡張シールドと、公開されたスケッチを組み合わ
>せる事により、マイコンで目的を達成する為の大
>変優れたシステムです。
>いかにも合理主義のヨーロッパ人が考えつきそう
>な発想です。
>しかも、誠に残念な事にarduinoのスケッチ言語は、
>C言語「風」なのであって、決してC言語では有りません。
>他の汎用のC言語を習得する事が目的の場合には、
>実は全く役に立ちません。
>内部に使用されている、AVRマイコンの汎用のC言語に
>移植して使う事すら不可能であり、細かな制御を行う為
>の言語としては出来ない事は有りませんが、細かな制
>御を行う場合には、汎用のC言語を使った方が遥かに
>簡単に記述が可能です。
マイコンのことを知らなくても、必要なシールド(拡張基盤)
を使い、公開されているスケッチ(プログラム)を使うことで、
比較的簡単に目的を果たすことができることで、広まった
ようです。
しかし、内部に使われている、AVRマイコンの日本語の書籍
は一冊しかなく、日本語の資料を得ることは、ほとんど不可能
のようです。
ということで、限界を見極めながら、いろいろ遊んでみようと
思います。
基板上のLEDを点滅させるスケッチ(プログラム)は、
#define LED_PIN 13
void setup() {
pinMode(LED_PIN, OUTPUT);
}
void loop() {
digitalWrite(LED_PIN, HIGH);
delay(3000);
digitalWrite(LED_PIN, LOW);
delay(3000);
}
これだけですんでしまうようです。まあ、手軽と言えば
お手軽です。一般のC言語では、main()に当たる関数が
loop()になってます。
---アドバイスをいただきました。コンパイルの過程で
main()関数が追加されるようで、使用者はただ、
意識はしなくてもいいとのことのようです。
細部については不明ですが、define等の記述は、c言語
と同じですね。
自作のPCを作って居た頃は、道具箱に転がっていた基盤の
ジャンパーピンだが、SmoothSteppeの設定の変更をするのに
必要になったので、近くのPCDEPOTに買いに行った、
本来なら、基盤に付属のような気もするが、残念ながら、付属
していなかったので。
行ってみて、高いのびっくり。こんなことなら、時間かかって
も○月電子で購入した方がよかった。
ちなみに値段を比べてみると、
○月 250個-----450円
PCDEPOT 10個----614円
ピンヘッダーもついているので、もっと安くなるが、一個、約2円。
それにくらべ、PCDEPOTは、一個約60円。なんと
約30倍の高額。
ただ、需要のことを考えると,一般のお店では、かなり少ない
はずなので、割高になるのは仕方ないことだと思うが。
時間がかかっても、送料かかっても、○月電子での購入の方が
よかったかなあとしきりに思う。
PF管の埋設が終わったので、ガレージに電気の配線をしまし
た。とりあえず、1本だけ配線をしましたが、とんでもない配線
をしました。
最初、写真のような結線をしました。不安になって、調べてみ
ると、間違いの配線でした。もし、これが実技試験でしたら、
致命的な欠陥ということで、一撃で不合格でした。
通常、100Vのブレーカーには、2P1Eのものが使われますが、
これは、過電流引きはずし素子が一つしかついてないもので、
Nの表記のある端子には、それがついていません。
ですから、黒の線をN(右側)につなぐと、ブレーカーの役目
を果たさなくなります。
工房の工事では、覚えていて、きちんと配線ができましたが、
今回は、間違ってしまいました。一日たって、直しました。
この写真が正解です。
もっとも、私が使ってるブレカーは、200V/100V兼用の
2P2Eのもので、過電流引きはずし素子が両極についてい
ますので、結線を間違えても、きちんと動作すると思うので
すが・・・・・・。
ペーパーの工事士には、こまったものです。
工房から車庫に電気を引くのに、PF管をつかいました。
PF管にVVFケーブルを入れて、埋設します。
写真を掲載する必要もないのですが、このような方法で、
よかったのかどうか、有資格者としては恥ずかしいです。
車庫側の引き込みボックス(正式な名前が分かりません。)です。
工房側の引き込みボックスです。
VVFケーブルを通し、PF管を接続します。
サドルで固定し、地面部分を埋設して、完了です。
資格があっても、仕事にしているわけではないので、何よりも
経験少ないです。経験を積んでいる仕事でなさってた方だと
いろんなノウハウが身についてるので、要領よく作業できる
はずですが、いかんせん、素人は、ノウハウがありません。
それに、だいたいの作業が一回こっきりのことが多いので、
経験の積みようがありません。この辺がDIYの限界でしょうね。
でも、やはり自分でいろいろやるのは、楽しいです。