goo blog サービス終了のお知らせ 

もんく [とある南端港街の住人になった人]

スペインかポルトガルの港町に住みたい
日本→インドネシア→台湾→マレーシア→日本
since Oct. 2004

スピードメーターを作りたい

2016-06-02 13:26:39 | ABCのAはArduinoのA
またまたあるものを作ろうとしている。

実は、スピードメーターを作ろうとしている。
機械と言うのはなんと無く正確に動きそうなものであるし、
言わばプロ用であるためにあまり人に優しくない面がある。

つまりは、エンジンとタイヤだけで走っているトラックみたいな物なのだ。
これが正しく走るには日頃のメンテ、環境の整備、作業を正しくやる事が絶対に必要。

ただ、ここはマレーシアなので、雷の影響?、アースがいい加減、メンテに至っては…
と言うようなのが日常茶飯事。
全てに手が回らないのである。

と言うわけで、スピードメーター位は付けてやってどう走っているか見ながらやろうよ、
と思っている。

車ではないのでいろいろな所のスピードを一括して表示したい。
スピードはいろいろ変化するわけではないので一定の範囲の中の違いがわかれば十分。
と言うことで、表示はそのスピードを示すLEDが光るだけにする。
横並びのLEDの列を上下に置いておけばビジュアル的に
いつもと調子が違っていた時にだれでもすぐわかるという仕組みだ。

ところで、今日は74HC575を2個だけ使って別々の表示ができるのを確認したところまで。
知っている人なら全然難しくないらしい。

下の図は、この配列を使ってLED列のある1個を点灯させると言う所。
配列に点灯させる1個を全部書いておくと言う、ちょっと幼稚なプログラミングの例。


こちらは2列を別々にシリアル出力しているところ。


1つのArduinoでできるだけ多くの出力を得たいと思ってクロックピンは共用できるかのようなのを
テストしてみたけれど、やっぱりできなかった。
なので1つのデータ出力には必ず1つづつ、ラッチとクロックは必要らしい。

と言う事は、1個のArduino Unoでは4つの列のメーター出力しか出来ないらしい。
(入力はまた別に使うので転用しない。)
そうすると、同じ物を2セット作るか、Megaに替えるかしなければならないけれど、
Mega互換機1個買う値段でUno互換機は3つ買えるからUno2セットの方が良いと思う。


スピードメーターだけれど、自動車のそれみたいにリアルタイムに反応するのを作るつもりはない。
順番にゆっくり測って表示、ゆっくり測って表示のようなのにするつもり。


そう言えば、変数の定義はどこでやるのが正しいんだろう?
いろいろ例を見ていると最初のところにいきなり書く場合、
setup()の中、loop()の中といろいろある。
後で調べよう。

注文パーツ、第2弾来る

2016-05-26 21:32:43 | ABCのAはArduinoのA
昨日の話なのだけど、
Arduino関係パーツ第2弾が来た。

けっこう買ったつもりだったけれど
箱がちっこい。
それにちょっとビックリ。
1週間くらい焼肉食べ放題に通ったティッシュ箱ほどの大きさ。

中を開けてみるとちゃんと注文の品は揃っている。
よく考えたらパーツがそれぞれ小さい。
抵抗とかコンデンサなんていくら入っていても
大した大きさにはならないのだった。

だって一番大きいのがArduino UNOコンパチ基盤、
次に大きいのがブレッドボードなんだから。


ところで、このパーツ、全部中国から来ている。
マレーシアの販売元が注文を受けてから中国に発注する。
中国で数を数えてパッキングして送ってきた物を
中身を確認して納品書を入れて転送するだけ。

なぜそれがわかるかと言うと、
箱がそうだから。

ネットで検索するとそれが出来る中国の販売元がいくつか見つかる。
…これで2週間待つのだったら最初から中国に…
と思わないでもない。
なぜなら、マレーシア国内の送料より中国からの送料の方が安いから。


待っている間にいろいろやりたい事を考えていたら
Arduino5個なんてすぐに使い切ってしまいそう。
だったらもっとたくさん買っておけば良かったな、と。

ま、仕方ない。

マレーシアの秋葉原を探索

2016-05-08 22:12:35 | ABCのAはArduinoのA
マレーシアの秋葉原と言うと、
ローヤットプラザを想像する人が多いかと思うけれど、
今回は違います。


先日、通販でArduinoと必要そうなパーツを買った。
でも、通販サイトだけだと揃わないパーツもある。

それで、街の電器店やそれらしき店も見てみたけれど
抵抗器とかコンデンサとか、そんな物が売られていない。
全然見つからない。

通販サイトだと少しづついろいろな店から買わないといけない。
そうすると送料ばかり高くなってしまってかなり不経済。
だからついでの時にちょっと買える店とか場所を探さないといけない。


と言っても、和食のレストランとかショッピングモールではなくて
トランジスターとか3端子レギュレータのような 物の情報なんて
そう誰もが知っているわけではない。
日本と違ってマレーシアでは、
少なくともそうらしい。

なので、以前設備の設計と施工をお願いしたサプライヤーさんに聞いてみた。
やっぱりある通販をやっている会社から買うらしい。
でも、急ぎの時にある場所へも行くとか。

それが、写真のこの場所。
マレーシアの秋葉原と言っても良いかもしれない。
ここなら、ちょっと電車賃かかるけれど、
ちょっとづつ買える。


今日は休日で休みの店が多かったのは残念だったけれど、
今度は仕事中、平日に来てみよう。

Arduino購入 第2弾 の見積が来る

2016-05-05 13:20:54 | ABCのAはArduinoのA
昨日の夕方にこの前頼んでいたパーツの見積が来た。

さっそく今朝、会社で注文依頼をする。

今回はUNO R3互換機を5台。

それに前回使ったCdS、
汎用品として抵抗器、コンデンサ、トランジスタ、
その他の汎用部品も多めに買ってみた。

値段は値引き7%とGST込みでRM328.6。
日本円にして9000円弱。
Arduino UNO R3互換機は1個あたり450円。

けっこう安い。


内容は、今後何が必要かわからないのでテキトーだ。
高い物は通販で後から買っても送料無料ですぐ来るから入れていない。


個々の部品の値段は日本の秋葉原なんかで買うのと比べて
必ずしも安いわけじゃないらしい。
それに日本に普通にあるパーツと違う型番の物もあるようだ。
でもまあ、使えそうかなと想像して選んだ。

それに、このリストを見てこれで良い悪いと言える人間が
この会社には1人もいないから本当にテキトーに決めるしかない。





さてこれらの使い道なんだけれども、
この前作った製品の位置ズレ検出器の応用編ができそうとわかった。
別の機械3台にインストールする事になるかと思う。

今度はズレ幅がちょっと狭いけれど、
センサー位置を調整するなどで対応することができるだろう。

そして今回は前例を元にテクニシャンに作らせることになる。
その理由はトレーニングと言う事もあるし、
その機械は自分のところに所属していないと言うのが表向きの理由。


それ以外にも2つほど用途を考えているけれど、
実現にはまだちょっと遠いかもしれない。
とりあえず来たらやってみようと思う。


早くLEDレベルから抜け出さなくては!

USBからの給電で動かない理由はホケ~

2016-04-25 20:12:34 | ABCのAはArduinoのA
前の記事で、スケッチのインストール後、
USBを再接続した時に動かない原因がわかった。


USBを接続するとパソコンと通信しようとする。
それは普通そうだろうけれど。

その時、Arduinoは、
何かデータ送ってくれないかな~ホケ~
と待っているらしい。

調べてみると、それはブートローダーがやっている事とか。
でも、こっちはUSBから電気だけ送っているつもり。
Arduinoは、まだかな~とノンビリ、
こっちも、まだ動かないかな~とヤキモキ。

これじゃ永久に何も起こらない。


リファレンスを読むと、
例のデジタル出力ピンの0番を10kΩを介して
GNDに繋ぐか、直接1番につないでみよ、
と書いてある。

やってみた。
ダメだ。
変わらない。

仕方ない、と思って
パソコン側のUSBのコネクタを半分抜いてみた。

半分抜くと通信はできなくてなって
チカチカしていた赤いLEDが点滅しなくなった。
すると、オッ!
動いた。


そうか、パソコンと通信できないようになっていれば動くんだ。
電源プラグ側から電源入れるか
同じUSBでも携帯電話の充電器を使うのが良さそうだ。

ネットを見てみるけれども、
この症状で苦労している人はいないらしい。

と言うことは、中国製互換機特有の問題なのか?
どちらにしても、これでまた少しだけ前に進めそうだね。



ついでに、写真は、
今日の問題解決のためにLEDとCdSの状態を
モニターするように改造したスケッチの一部。
本番では消します。

Arduino、さらに躓いている

2016-04-25 13:30:23 | ABCのAはArduinoのA
Arduinoキットは会社に置いてある。
だった、会社のお金で買ったから。
(ちゃんとお金返してもらった。)

なので土日は触れない。
やっぱり家用にもう1個買おうか?


ところで、このブログでは、
Arduinoに関して正しいやり方とはノウハウ....
なんてものを書くつもりは無いです。

それは検索すればいくらでも出てくるわけですし。

と言うことで、間違ったとか、間違いに気付いた事だけ書くつもりです。



今日もさっそく私は自分の間違いに気付きました。


(1) 変数について誤解していました。

4月22日の記事で、

int ledPin = 8

この"ledPin"について、
プログラムを書いた人が勝手に付けた名前だと気付きました。

でも"8"については、ピンの番号だと思っていましたが、
これは大きな誤解でした。

この後の方の行で、

pinMode(ledPin, OUTPUT) ;

みたいなのを書きますが、
このpinModeのところで初めて"8"がピン番号って事になるのでした。

pinModeが無ければ単に、
"ledPin"と言う入れ物に"8"と言う数字を入れただけだったのです。


これを知るまでは、入力の4番ピンと出力の4番ピンを使ったとき、
どうやって区別してるんだろう?
読み込み命令だと入力、
書き込み命令だと出力みたいに勝手に判断するのだろうか?
などと思いました。
そうじゃなかったのです。




(2)デジタル出力ピンの0番と1番について使い方間違ってました。

LEDを6個光らせようと思ったとき、
Arduinoの基盤からブレッドボードに電線でつなげます。

私のように一般人は最初のピンからきれいに並べたいと思うものです。
(少なくとも私はそうしたい。)

でも、スケッチの例なんかでは8番とか13番とかがよく使われています。
初心者向けに書いている記事では、いや、だからなのか、
その番号を使う理由は説明されていません。

そして、その通りやると確かにできるんです。

少し慣れて、そんな簡単な事なら、と素人は思います。
LEDもっと増やしてたくさん光らせよう、キットにまだあるし、
とも思います。


で、律儀に0番からずっと並べます。

そしてスケッチも描いて、やってみると、
ちょっと変なのです。
0番と1番のLEDだけボーっと点いたりしてます。

おかしいなと思って0と1にどんな信号が出ているのかなと、
ターミナルでモニタできるようにスケッチを変更します。
ちゃんとHIGHとかLOWとか出ています。

でも、ネットで調べると0番と1番はシリアル通信に使われているとか。
あまり普通の用途には使わない方が良いと書いてありました。
(何とかして使えない事はないらしい。)


それで、0番と1番にあったLEDを別のところに動かしてみますと、
あ~ら不思議、ちゃんと動くようになりました。



(3)一度電源OFFしてONすると動かない。

この問題は未解決なままです。

USBで接続してスケッチをArduinoに書き込みます。
ちゃんと意図した通りに動きます。

そのままUSBケーブルを外しますとArduinoは、
もちろん止まります。

再度USBを繋ぎ直します。
電源はONになります。

が、前回書き込んだスケッチは全然動きません。

調べると、(2)で出てきた0番ピンに何も接続していないと
そのピンの信号の値がいい加減になっていて
何か待っている状態になってしまう事があるとか。
10kΩを介してGNDに接地せよと。

やってみた。
変化なし。

なので未解決のままです。
どうしたら自動で動くようになるんだろう?

誰か教えてください。

Arduino、プロトタイプを作って初心者らしいつまづき

2016-04-22 13:34:44 | ABCのAはArduinoのA
ちょっと遅れているけれど、
製品の流れがズレるのを検出するためのユニット
本番と同じようにセンサー6個、LEDも6個にしてやってみた。

問題が2つほど出来てきた。

1.電流が足りない問題。

Arduinoから供給する電流が不足しているらしい。
LEDのうちの2つが点灯しない。
電線を追加してまんべんなく電流が流れるようにバランスを取る。
少し解消。
でも完全じゃない。
ノートパソコンのUSBから取っているのがいけないのか?
それともArduinoの仕様的にダメなのか、
ちょっとわからない。(今のとこ)

なので本番ではDC電源追加してやろうか、
それともCdSに抵抗を追加して
全体の抵抗値のレベルを上げて電流を少なくしようか?


2.プログラムの問題。

前回LEDが1個だったとき、最初の行にこう書いた。

int ledPin = 8

このおまじないは8番のピンがint(整数)になるって事だとは
何となくわかっていた。

でもledPinと言うのが、
これも何かの命令とかそう言うのだろうと、
だから使うピンに全部こう書いておかなきゃいけないのか、
と思っていた。

それで使う6つのピン分だけ、
この6行を書いた。
もちろんコンパイルでエラーになった。
ledPinを何回も定義しているよ、と。


が、大きな間違いだったとわかった。
ledPinはこの元のプログラムを作った人が
勝手に8番ピンにつけた名前だったのだ。
算数で x = ・・、 y = ・・・ の時のxやyと同じなのだ。

初心者らしい間違いだ。


ただ、どうもArduinoではこのint...はあまり重要でもないらしい。
後で出力をHIGHとかLOWとかするので
そのどっちかの値にしかならないからか?
突然それ以外の値を出力しろと命令したら
Arduinoは混乱するんだろうか?



そう言うわけで、これからちゃんとした基盤を作って
機械にセットして、
動かしてみようと思っている。

その前にちゃんとテスター(自分用の)とか
買わないと。



ところで、写真、
よく見ると抵抗の付け方がおかしい。
これは試験してみたままだから。
念のため。

A.. B.. C..のAは、ArduinoのA

2016-04-19 21:26:54 | ABCのAはArduinoのA
昨日注文したArduinoのキットが昼ちょっと前に郵便で届いた。

マレーシアの郵便局、けっこう素早い。いつもそう思う。
昼前に開梱してみる。
お菓子なんかを入れる使い捨てプラ容器にザクザク、
いろいろ入っている。

サイトのリストを見てもどれがどれかわからない物もあり。
だって、子供がロボット作りにつなげるためのキットだから。
床に描いたラインをトレースするセンサーなんて、
世の中であまり見ない。


ちなみに買ったお店はここ。
Lelong.com.myと言うネット上のモールにある
Robot Shopと言う、そのものズバリな名前の店。

これが領収書。
日本と比べて安いか高いかは不明。

さて、今日の午後約3時間での成果は以下のようなもの。
チュートリアルは、初心者なのでちゃんと
Hello World、LEDの点灯までやって
後はラインで使うズレ検出のプロト作成。

CdSと言う素子に光が入る時と遮られている時で
LEDの点灯、消灯が替わる。
実際にはセンサーとLEDの数をいくつか増やす。
それで左右ズレを検出するようになる予定。

プログラムはこんな感じ。
とても簡単。

もし、これを外注に出すと値段は10倍じゃ済まない。
もしかすると、100倍ほど。


ところで、ここまで約3時間の道程だけれど、
途中、と言うより一番最初に引っかかった事が1つ。
ArduinoとパソコンをUSBケーブルでつないだ時、
パソコンがArduino上のUSBーシリアルコントローラーを
認識しなかった。
きっと純正Arduinoだったらそんな事は無かったかも。

Windwsのデバイスマネージャーを見ると、
USBーシリアルデバイスになっているけれども
ドライバーがダメで正常に動いていないと出ている。
ドライバーの更新をしてみてもダメ。
インストールしたArduiniのソフトの中にあるDriverフォルダ
その中にも無し。

デバイスのドライバーを自動検出するソフトで名前を見て、
ネットで何回か検索すると、何と、
新しいバージョンでは名前が変わっていて検出できなかったと
わかった。
やっと見つけてダウンロードしてインストール。
と、ちょっと回り道してしまった。

純正Arduinoでなくて中国製互換機だと
こんな事もつまずきの元なんだね。
でも解決しようとしてできない事ではないです。


と言うことで、今日からArduino入門です。