節分とか言ってっけど、「分かれて」いるから「節」なんじゃないだろうか。いや、節は厳密にはくっついているのか。「ここで分ける」的な目印、それが「節」。つまり、「節分」とは「節目を分ける」行為に他ならず、世の中の「なんかここで分けられそうだなー」ってやつをバッサリ分けるのが本来の節分ではなかろうか?たとえば切手のあのなんかついてる点々とか、バッサリ分けちゃう。板チョコの、なんだかいまいち精度が出せない感じの節目とか、きっちり分ける。こう、ニクロム線を熱く熱して溶かしながら慎重に。だって節分だから!!。タイガーウッズと妻のエリンさんとか、もう節目がバッチリついてますよね、これもバッサリ分けまs(5番アイアン) (頭から血を流しながら)あーえっと、前置きがうっかり長くなってしまいましたが、Arduinoのライブラリを作る際に、ライブラリ内でpinレジスタを使う方法とか。 <---------------- ここから本文です ---------------->
Arduinoのデジタル入力には関数「digitalRead()」が用意されています。ピン番号を指定すればそこの値をゼロイチで返してくれるという、大変わかりやすいものなのです。ですが、これを使ってタクトスイッチの値を読み込む場合、「バウンジング」っていう、スイッチ特有のノイズに対応しなくちゃいけないらしい。詳しくは『Arduinoをはじめよう』のp037~を参照のこと。 まあ、平たく言えば「機械なんでどうしてもノイズが乗るから、ソフト側で読み捨てて」ってこと。それはまあ、やるべきなんだろうなあって思うんですが、これをdigitalRead()でやるとなると結構めんどくさい。一個一個読み込んでバウンジング解消とか、やってらんない。 ピンの値を一括で読み込むことができれば、バウンジングも一括でできる。そいで、Arduinoにはそれができる機能がある。それが、PINレジスタ。ATmegaのpin入力を、複数同時に読込/設定できる。(『Arduinoをはじめよう』p111) さて、これを使えばハウジング対処を一括でやるクラスが作れる!!!って思ったんだけど、コンパイルエラー。どうやら、クラスで使うためにはincludeを追加する必要がある様子。まあ、「[Arduino]ライブラリ/クラスを作ってみる」でも書いた「クラス内で既存ライブラリを使う方法」と同じなんですけどね。includeの置いてある場所が、「[Arduinoディレクトリ]/hardware/tools/avr/avr/include/avr」になってます。 ソースにするとこんな感じ
ついでに、ビット定数が使えなかったので、これのヘッダも。 ツイート Recent Entries from Same Category
|
コメント
|