目次 [ Contents ]
Arduino機種やパーツによって設定を変えたほうがいい場合があります。defineでその定数をスケッチの最初の方に集めているので、自分の状況に合わせてチューニングしてください。
入出力ピンの設定
入出力のピンの設定です。状況に合わせて変更できます。ただし、LEDはanalogWriteとして、エンコーダは割り込み用で使っているので、気をつけて下さい。
//------------------------- pins defines --------------------- #define VOL A0 #define ENC_A 2 #define ENC_B 3 #define ALT_SW 7 #define AUTO_SW 13 #define LED_R 5 #define LED_G 6 #define LED_B 11
スイッチの押し時間
AR-FOCUSではスイッチのON/OFF判定をゲージ判定方式で行っているので、機種によってはその判定値が大きかったり小さかったりする可能性があります。 その場合、スケッチの
#define PUSH_SHORT 700 #define PUSH_LONG 45000
値を変更してください。 普通の押しの値がSHORTで長押しの値がLONGになります。 これは秒数ではないので、短かったら増やす、長く感じたら減らす、という風に感覚的に調整してください。
スイッチの論理値
このスケッチではALT SWがプルダウン、AUTO SWが内蔵プルアップになっていますが、変更したい場合は、
#define ALT_LGC 1 #define AUTO_LGC 0
をそれぞれtrue、falseに設定してください。
可変抵抗器の可動範囲
可変抵抗器の揺らぎを無くすために工夫しているんですが、その代償にフルビット(1024段階)拾えてません。 そしてこの最大値が結構パーツで変わってしまうみたいなので、実装するパーツに合わせて微調整する必要が出てくるかと思います。 起動後の「Ready?」画面中に出ている数値が出ています。可変抵抗の両極端はどうなっていますか?その値が可変抵抗器で読み取っている最小、最大値になります。 デフォルトのスケッチでは最大値が1004になっていますが、もしその値が自分の使っている数値と異なっている場合はその値に修正してください。
#define VOL_VAL 1004 // VR max value
モータースピード
AUTO MOVEはモータの最速スピードより早い指定はポイントtoポイントで スキップするようにしています。自分の用意したモータのスペックに変更してください。デフォルトは、「230ミリセコンドで60度移動する」サーボモータとしての値を入れています。
#define MOTOR_SPD 230/60 // motor speed millis seconds per 1 degree
ジッター低減
モーターの種類によっては同じポジションに停止していても、うまく静止してくれない場合があります。多分PWMの信号がうまく動作してないからだと思いますが、そんなときは「JITTER_DEC」をtrueにすると安定するかもしれません。
#define JITTER_DEC 0 // detach servo PWM each 1.5sec idle
これは一定以上数値が変化しなければ、サーボをdetachする機能です。 ただし、スケッチ容量の都合でデフォルトでは切ってあります。pro mini ではギリギリアウトだった気がします。また、じっくり検証をしていないので、何か不具合が出てくるかもしれません。応急処置的な感じで使ってください。
サーボPWMの設定
‘Servo’ライブラリでは通常PWMの周波数を544μsecから2400μsecでサーボ制御しています。一部サーボの個体差で、この範囲外の場合があります。スケッチ上でその数値を変えることができます。
//-- motor arguments -- short srv_lmt[2] = {544, 2400};
また、AR−FOCUSのメニューから直接変更できるようになる拡張機能もあります。
#define SRV_CAB 0 // activate calibration servo mode
但し、この機能もスケッチ容量上の問題で切っています。入らない可能性もあるので、気をつけて下さい。変更した場合は、最初の起動時に初期化することをお勧めします。
ディスプレイのフレームレート
OLEDの画面リフレッシュレートを設定できます。デフォルトでは35msごとの更新にしています。操作のもたつきは多分ここに由来しているので、つまみなどの反応の遅さに耐えられなかったらこの数値を大きくすると、改善するかもしれません。ただし、表示は鈍くなります。
#define FRATE 35 // OLED refresh frame rate