Arduino—再び(4)–LCD Keypad Shield

あれこれやって、思った動作ができるようになりました。やろうとしてたのは、arduinoで、リニアステージの
ステッピングモーターをパルスを送ることで動かすことでした。今回は、TB6600というドライバーを経由し
て、制御しました。結線等は、例によって、諸兄のHPを参考にしました。
このドライバーには、

     ENA- ⇒⇒デジタル11番ピン
     ENA+ ⇒⇒5V

     DIR- ⇒⇒デジタル12番ピン
     DIR+ ⇒⇒5V

     PUL- ⇒⇒デジタル13番ピン
     PUL+ ⇒⇒5V

の6本の接続が必要ですが、プラス側に接続してもマイナス側に接続しても動くようでしたが、aruduinoで
は、+端子は一律5Vに落として、-の端子の方をそれぞれに結線しました。TB6600の内部配線がどうなって
るのか気になるところです。

動作させているところです。パルスを設定して、SELECTボタンで動かしてます。パルスの数値を+と-の設定にすることで、反対の方向に移動させてます。

今回は、別な面で苦労しました。YouTubeの設定が変わったのが、埋め込みリンクの書いてあるところが分からず、時間ばかりかかりました。分かるとなんのことはない、自分の動画の再生画面で、右クリックをするとその項目があり、分かった時は、がっかりしました。

とりあえず動いたarduinoのスケッチアップします。例によってデバックように入れておいたserial.print等の残ったままのものです。

Arduino—再び(3)–LCD Keypad Shield

ほぼ目的のプログラム(スケッチ--arduinoではこう呼ぶみたいですね。)ができました。難しいものではな
く、入門編によくあるようなLチカ(LEDを点灯させる)のプログラムと大差ありません。ただ、キーの読み取
りをアナログの変化で読み取っているので、安定しない部分があるのか、長押しの判別がどうしても、できま
せんでした。

               押されたキーの判別
                    │
          ┌───────────────────────┐
    UPキーが押された⇒⇒ +1の処理    UPキーが長押しされた⇒⇒+10の処理

のようにしたかったのですが、あきらめて、+10の処理は、RIGHTキーに割り当てました。 スケッチでは、

   キー判別の関数の呼び出し
      
   呼び出されたそれぞれキーの回数をカウントする
      
   カウントが一定以上になったら、キーに応じた処理をする。

という単純なことを、メインのLOOPのなかで、繰り返してるだけです。「回数をカウント」の部分はなくても
いいのですが、一応チャタリングの対策です。
入力した数字をLCDに表示するのに数字の桁数が違ってしまうと、正しい表示がされないので、左詰めで表示
できるように簡単な関数を作りました。文字数を取得する関数が準備されてますが、その書式がどちらかとい
うとエクセルのVBAのような感じで、ちょっと戸惑いました。PICのC言語だと目的の文字を括弧の中にいれる
のですが、ピリオドで連結するようでした。このへんの細かい文法は、その都度調べないとだめですね。

   arduinoの記述  s.length( )  (sが長さを求める文字)
   PICのC言語記述 sterlen(s)   (sが長さを求める文字) 

“Arduino—再び(3)–LCD Keypad Shield” の続きを読む

Arduino—再び(2)–LCD Keypad Shield

LCD Keypad Shield が届いたので、あれこれはじめました。

諸兄のプログラムをお借りして、動かしてみました。すんなりと動きましたが、LCDの表示で、明るさの調整がボリュームで必要でした。
 ただ、KEYの読み取りで、判別条件の調整が必要でした。諸兄の物と届いた物では、抵抗値が違うのだと思いますが、下記赤字部分のように、アナログの読み込みの値の修正をしました。

     int read_LCD_buttons(int adc_key_in){
          if (adc_key_in > 1000) return btnNONE;
          if (adc_key_in < 50) return btnRIGHT;
          if (adc_key_in < 150) return btnUP;
          if (adc_key_in < 300) return btnDOWN;
          if (adc_key_in < 600) return btnLEFT;
          if (adc_key_in < 750) return btnSELECT;
          return ERRORR;
     }

この辺は、メーカーの違い、個体値の違い、等によって調整が必要なようです。このアナログ値の調整をする
にあたっては、諸兄の作成されたプログラムが都合がよかったです。キーごとの電圧が表示されますので、そ
れをみながら、調整ができます。私はそのまま使いましたが、表示が電圧ではなくて、アナログの読み取り値
だともっと楽だと思います。また、標準のライブラリーとは、LCDのピンの配置が多少違うので、下記のよう
に、ピンの表示の部分の変更も必要でした。これは、別の諸兄のHPに記載がありました。

     #include LiquidCrystal
      lcd(8, 9, 4, 5, 6, 7);

LCDの表示用にデジタルの、8,9,4,5,6、7、キーの判別ようにアナログのA0のピンを使用していますので、ユーザーはそれ以外のピンしかつかえません。基盤の裏のパターンをたどってみると、

写真の緑黄色矢印から、

 13,12,11,3,2,1,0

の並びで、デジタルのピンを取り出せるようです。また、アナログは、本体右下のピンヘッダーから、

のように、

 1,2,3,4,5

のアナログのピンを取り出せるようです。

大捜索をするようですが、部品を収納した、ケースにピンヘッダーがあったように記憶してますので、探しだして、取り付けたいと思ってます。

Arduino—再び(1)–LCD Keypad Shield

しばらく前にArduinoを使って、フライス用にDROの表示用のものを作成しました。また、備忘録をかねて、
Arduinoをいじりはじめました。LCDと外部入力(キーパッド)のものがほしかったので、いろいろ調べまし
た。
スイッチサイエンスのLCDシールドは手元にあったのですが、これは、

外部入力ができないので、〇zonで、LCD Keypad Shieldくぐると、600円~5000円のものが引っかかりました。LCD 1602でくぐると、600円から30000円と幅広いものが引っかかります。30000円のもの買う方いるのかなと疑問に思ってしまいますが、もちろん、安い物をポチリました。

ただ、ポチったものには、ピンへダーがついてないので、後付けするようかなと思います。2700円だいのものには、ピンヘッダーが付いていますが、高いですね。

これらのシールドには、5個のkeyが付いていますが、どうやって、判別をしてるのかと思いましたが、
keyの配線図がのってました。

抵抗を介して一つのポートに接続しているようですが、どうやって判別するのか、くぐってみると、どうや
ら、電圧の違いで判別してるようでした。
KeyPad用のライブラリーには、

  iuint8_t LiquidCrystal::readButtons(void) {
    int adc_key_in = analogRead(0);
     // read the value from the sensor
    // my buttons when read are centered at these valies: 0, 144, 329, 504, 741
    // we add approx 50 to those values and check to see if we are close
    if (adc_key_in > 1000) return 0x00;
    if (adc_key_in < 50) return BUTTON_RIGHT;
    if (adc_key_in < 195) return BUTTON_UP;
    if (adc_key_in < 380) return BUTTON_DOWN;
    if (adc_key_in < 555) return BUTTON_LEFT;
    if (adc_key_in < 790) return BUTTON_SELECT;
    return 0x1F; // when all others fail, return this…   }

のように記述があり、アナログで電圧の変化によって、判別してるようでした。使用上の注意に接点経年劣化やチャタリング等の対策がソフトの方で必要だとの記述もありました。

arduino+Android端末+bluetooth で DRO (TouchDRO)

 やっと長い冬眠から目覚めました(笑)
 ちょっと面倒になって,ブログの更新をしていませんでした。
 その間も,いろいろあさってましたが,ある海外のサイトで,
 arduinoを使って,Android端末をDROにする記事がありました。
 いろいろくぐって,オープンソースでプロジェクトを作成してる

 HPにたどりつきました。

 まねしてみようと思い,あれこれもがきました。ブレッドボードで,

 

 写真のような回路で実験しましたが,次の動画のような
 結果がでましたので,また,備忘録がてらまとめておこうと
 思います。

 回路図は,前掲のHPの冒頭にありますので,簡単に作成できる
 はずです。

 

  (HPよりお借りしました。)

 部品は下記の記述がありました。

   R1-R3   Resistor, 10K 3
    R4      Resistor, 330 Ohm 1
    R5      Resistor, 220 Ohm 1
    C1-C3   Capacitor, ceramic, 0.1uF 3

 思うようにいかなかったのは,USBのコネクターもピンアサインで。
 あれこ調べました。

 

 写真と回路図は,VCCとGNDが逆なので,注意が必要でした。
 それと,

    「D+」・・・・・・・・「Z-3」(データ)
    「D-」・・・・・・・・・「Z-2」(クロック)

 ようになってますので,ここも要注意かなと思います。

 写真の「ID」は,無結線です。
 それと,BLUETOOTHのアダプターですが,当初 HM-18 という
 のを使いましたが,Android端末と接続が持続できないので,
 HC-5 という物に交換しました。aruduinoとの接続で,分圧等
 で,電圧落とす必要があるのかなと思いましたが,直結で
 大丈夫でした。

 

 USBのコネクターも,HC-5のBLUETOOTHも●ZONから購入
 しました。

 プログラムは,MSP430LaunchPad用とarduino用があるようで,
 記載されているHPも違うようです。

     MSP430用プログラム
     aruduino用スケッチ
  スケッチは,HPの下の方にあります。

  Android端末用のアプリは,
  Google Play

 から入手できます。
 私は,フライスのZ軸に使ってたDROが調子悪くなり,
 時々数値が飛ぶようになったので,新しい物に交換しましたので,
 調子の悪いものて実験しました。また,Android端末は,家の
 が前に使ってたArrows NX なる古い携帯をつかいました。

 AndroidのエミュレータをPCに入れてやってみましたが,
 BLUETOOTHの設定がうまくいかず,動きませんでした。
 実験で使ったスケールはiGagingの古いものですが,新しいものにも対応し
 ているようで,基盤そのものの販売もあるようです。
 基盤を購入して,つなげばそれでできますので,
 その方がてっとりばやいかもですね。でも高い。
 互換品等使えば,DROが安く設置できるかもですね。

ラインレーザーの作成

 いろいろネットサーフィンをしていたら,前にも目にとまりましたが,
 ラインレーザーの自作
 自作テーブルソー
 のHPが目にとまりました。
 ラインレーザー制作では,◯月のレーザーモジュールを使ってる
 ようでした。レーザーモジュールやアルミ角材は,容易に手に
 はいりますが,ガラス棒が難関でした。
 ネットで検索すると,アロマのお店にあるということで,
 「生活の木」というブランドのアロマのお店で購入しました。

 

 ネットで調べましたが,販売単位が10本とかで,送料を入れると,
 2000円程度になるので,使えるかどうかはわかりませんが,
 160円程度で購入できたので,よかったです。
 残念ながら,◯華製でした。

 

 ガラス棒というと,学校の理科室にたてかけてあった長い
 ものを思いうかべてしたが,両端が処理されているせいか,
 割高のような気がします。

センサーライトの修理 (3)

 やはりセンサー部分をアクリルで囲ってしまうと,感度が落ちて
 しまうようです。
 当初の予定通り,切り欠きの部分にセンサーがくるように,
 設置しなおしました。

 

 こうすることで,
 以前と同じように,車庫入れの時に車の通過で,ライトが
 点灯するようになりました。

センサーライトの修理 (2)

 雨の影響で,センサー部分や本体に影響がありましたので,
 全体をカバーすることにしました。

 

 計画の段階で,センサー部分を覆ってしまうと,感度に影響
 あるかもしれないということで,運用してみて,センサー部分
 だけ,カバーが掛からないようにもできるように,わざと切り
 欠きを作ってあります。
 本日夜,運用試験したところ,やはり,感度が落ちるよう
 なので,切りかけ部分にセンサーがくるようにしてみたいと
 思います。
 ただ,そうすると,雨の影響があるかと思いますが,
 カバーなしよりは,ましかなと考えました。
 カバーの透明部分は,アクリル板で作りました。
 接合部分が隙間なく合わせることができると,接着剤がスーッと
 入って,あっと言う間に強度がでますが,接合部分が密着
 しないと,なかなか強度がでません。
 ぴったり接合するには,ミニテーブルソー等の道具使う必要

 

 があるようですね。

センサーライトの修理 (1)

 PIXONのPX-910というワイヤレスシリーズのセンサーライト
 を便利に使ってました。

 

 しかし,一週間ほど前に突然,動作しなくなりました。
 メーカーに修理を依頼しようと思い連絡しましたが,代替え品が
 ないため修理不可能ということで,もしやと思い,◯オクをみると,
 中古ですが,同じものが二つだされていました。
 二つとも落札しようと思いましたが,一つしか落札できません
 でした。
 早速手元に届いた落札品をいままでのものと入れ替えてみまし
 たが動作しませんでした。
 もしやと思い,今まで使っていたもののセンサーを,落札品の
 センサーと交換してみました。見事に動作しましたので,
 落札品の基盤を今まで使っていたものと換装しました。

 

 赤矢印が動作しない基盤で,黄色矢印が言うまでもなくセンサー
 部分です。
 センサー部分は,表面のカバーが劣化しひびが入って,そこから,
 雨水が回路のトリマー部分にかかり,動作しなくなったように
 思います。

 

 写真は,カバーが欠けています分解したためで,分解する前は,
 経年劣化でひびが入っただけでした。

 

 右側のものが,動作するようになったものです。
 今までものの基盤は,アンテナ部分から水漏れしたのか,
 所々錆がでていましたので,落札品の基盤を使いたかったの
 ですが動作しなかったので,今まで基盤の錆を気持ち落として
 利用することにしました。
 もし,動作しなかったら,センサー部分を◯月で購入して,
 小さなリモコンスイッチがあるので,その基盤を使い,簡単
 なプログラム作って,動作させようかなと思いましたが,
 大丈夫だったので,ひとまず安心です。
 ただ,新しいものには,直接雨水等がかからないように,
 アクリル等で,カバーを作ろうかと思います。

PWM信号発生器のシリアル通信

 過日,いろいろ試すのに◯mazonkから,PWM信号発生器を購入し,
 便利に使ってました。

 

 商品の説明にもシリアル通信ができると記述があり,基盤の裏
 にも TXD RXD の記述があるので,外部からコントロール
 できるのかなと思ってました。
 手持ちのシリアル通信のアダプターに接続し,PCから,あれこれ
 やってみました。
 最初「テラターム」でやりましたが, FAIL の文字が帰ってくる
 だけで,通信はできているようでしたが,うまくいかないようでした。
 「シリアル通信ソフト」というソフト名のプログラムをベクターから
 DLして,試してみると,あっけなく通信ができました。
 (起動にあたっては,管理者権限で起動しないとだめでした。)
 難しいプロトコルが必要かとおもいましたが,簡単なコマンドで,
 制御できるようです。

 

 写真は, ”read” のコマンドで,設定の状態を読んでいます。

   F055 → 周波数
   D090 → DUTY%

 と,表示されている数値を読み取ることができました。
 ちなみに,設定するには,

  周波数 001→999     F*** (ex F090 →90Hz)
  周波数 1.00→9.99   F*.**(ex F1.45 →1.45KHz)
  周波数 10.00→99.9  F**.*(ex F10.45 →10.45KHz)
  周波数 1.0.0→1.5.0 F*.*.*(ex F1.4.6 →146KHz)
  DUTY  1→100       D***(ex D090 →90%)
  read    設定データの読み取り

 でした。まだ,やっていませんが,PICからもコントロールでき
 そうなので,これを使った方が,手軽にPWMの信号のコントロール
 できるかもですね。