ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

arduinoコミュの質問:ライブラリ追加方法

  • mixiチェック
  • このエントリーをはてなブックマークに追加
arduinoでGPS座標を取得し、液晶に座標表示しようとしています。
そこで寄稿ライブラリである「TextString」を使いたいのですが、うまくいきません。

1. http://www.arduino.cc/en/uploads/Tutorial/TextString.zip をダウンロードしました。
2.ダウンロードしたものを解凍しました。
3. c:\Program Files\arduino-0017\hardware\libaries\ 内に、解凍した TexstString フォルダをコピーしました。
4.「arduinoIDEの再起動」 の意味が解らなかったので、念の為Windows自体を再起動しました(笑)
5.そのまま TextString myText[] = TextString(10); と書いてコンパイルしたらエラーがでました。
6. #include <TextString.h> を付け加えたら、それだけでエラーが出まくりコンパイルが出来ません(泣)

と、現状ここまでです。

TextStringライブラリを使っている人がいらっしゃいましたら、お助け下さいませ。

因みに液晶に文字表示したり、アナログ入力に距離センサを繋ぎ距離測定をしたりは動かせている感じです。
#液晶は20桁*4行を買ったので、表示まわりは自分で作るはめになりました...

コメント(24)

追記報告

以下だけでコンパイルするとエラーが出ません(あたりまえですね...)
void setup() {}
void loop() {}

しかし以下にしてコンパイルするとエラーが出ます。
#include <TextString.h>
void setup() {}
void loop() {}

出るエラーは以下の通りです。
c:/program files/arduino-0017/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:111: error: expected unqualified-id before 'int'
c:/program files/arduino-0017/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:111: error: expected `)' before 'int'
c:/program files/arduino-0017/hardware/tools/avr/lib/gcc/../../avr/include/stdlib.h:111: error: expected `)' before 'int'

なにを怒られているのかサッパリです...
オレはMacなので手に取るようには判らないんですが、手順は合ってるように見えます。自分の思いつく点としては:

・ライブラリを使わないプログラムは今もちゃんとロードできますか?
たまにチップのヒューズビットがヘンな風に書き変わってるような場合があるので、ハードウェアの状態を再確認してください。

・MacではArduino17からライブラリパスが変わりました。
ウェブとかは更新されず、開発環境付属のドキュメントにしかそのことが書いてなかったので混乱しました。Windowsでもにたようなことがあるかも。

あたりですかね。
わかにゃんさん ->
My Documents\Arduino\libraries\TextString ディレクトリにTextString.cpp, TextString.hがありますか?
もしかしたら、このディレクトリ内にさらにTextStringディレクトリがありませんか?

Arduino IED > Sketch > Import Library にTextStringがない場合は上記の点を確認して下さい。
カモサワ逃げ道マサオ様
#include <TextString.h> を外せば問題なくコンパイルが出来ます。
付いてるとコンパイルが通らないので、ボードには転送していません。
念の為、違うプログラムをボードに転送したのですが問題なく動きます。
他のライブラリ(EEPROMやEtherなど)と同様のフォルダに入れているので問題ないと思われますが...

nori (^-^)v様
今迄は自分の手でincludeを書いていましたが、ImportLibraryで指定すると
自動的にinclude文が付け加えられるのですね!
と言う事でImportLibraryにはEEPROMやEtherなんかと一緒にTextStringは存在します。
マイドキュメントのarduinoフォルダには、自分の作ったソース類しかありません。
(マイドキュメント)\Arduino\test1\test1.pde
(マイドキュメント)\Arduino\test1\applet\test1.cpp
(マイドキュメント)\Arduino\test1\applet\(いくつかの).o
.o ファイルにTextString関連は存在しません。

ImportLibraryでincludeされても同様のエラーが出てコンパイルされません...
わかにゃんさん ->
↓ライブラリのインストールは下記のサイトが参考になります。
http://www.alpacagarage.com/cq/support.html
わかにゃんさん、こんにちは。

こちらでも試してみようと思って今ダウンロードしたのですが、
どうもきちんと展開できていないようです。
2台のWindowsXPマシンでやってみましたが、
そもそもダウンロードしたZipファイルのファイルサイズが合わないし(^^;
8.01Kと5.01K
で、中身もそれぞれ別のものが見えていて、
一方で全部が揃っていないのか、圧縮した別バージョンが見えているのか、という感じです。
8.01Kの方は、TextString.h,TextString.cpp等で2006/10/20のタイムスタンプ
5.01Kの方は、WString.cpp,WString.h等で2009/02/08のタイムスタンプ
わかにゃんさんのStringフォルダには何が入っていますか?
nori (^-^)v様
参考サイト、今から見てみます!
#アリガトゴザイマス

まりす様
私が展開したものはTextString.cppとTextString.hともに2006/10/20ですね。
nori (^-^)v様
ご指摘のライブラリインストールサイトを確認しました。
1.マイドキュメントのarduinoフォルダ内にlibrariesフォルダを作り、そちらにTextStringフォルダを移しました。
2.ページに書かれているようにFileのPreferencesでマイドキュメントを指定しました。
この状況でSketchのImportLibraryを開いたら、通常のライブラリとは別扱いっぽく線が引かれて別途TextStringが存在するっぽく見えました!
そこで新しいTextStringを選び、includeが登録されたのですが...

残念ながら同症状でした。

なんでだろー?
因みにnori (^-^)v様はTextStringライブラリが使えている感じですか?
わかにゃんさん ->
大変失礼しました。私のところでもtextstring.hはエラーをはきました。

どうも最近は、string.hを使うようです。
http://www.arduino.cc/en/Tutorial/TextString

こちらは、サンプルプログラムの動作確認ができました。

GPSモジュールの作例でもstring.hを使用しています。
http://www.arduino.cc/playground/Tutorials/GPS
タイムスタンプが2006/10/20のファイルは、
どうもバージョンが古そうですね。
こちらをダウンロード・展開したPCで、もう一度ダウンロードしてみたら
2009/02/08のファイルが出てきました。
ファイルサイズは506Kでした。(6に書いたサイズは間違ってました。失礼しました)

もしかすると、サーバーでファイルの差し替え中に古いファイルが混ざってしまったのかも。
わかにゃん、もう一度ダウンロードしてみてはどうでしょう?
nori (^-^)v さん、
string.hは、AVR用の基礎的なヘッダーファイルの様な気がします。
nori (^-^)v様
たぶん解決出来たと思います。
#まだincludeしてエラーが出ないことしか確認していません

皆様、今回は私の質問のご協力いただき誠に有り難う御座いました。

私はArduinoを知った時、最初にO'REILLYの「Arduinoをはじめよう」と言う本を買いました。
http://www.oreilly.co.jp/books/9784873113982/
その本にも「TextStringライブラリ」が紹介されており、今後も同様の悩みを持つ人が現れると思われます。
その時の為にも、このコミュニティに「TextStringはString(WString)で代用する事」と
Stringライブラリの日本語ドキュメントを作成したら良いかと思います。

ただ、私はmixiのコミュニティにはほとんど参加しておりません。
Wikiもほとんど使った事が無いです...。
よって、このような件を「どのように皆様に公開したら良いか」を知りません。
もし良い方法があったら、どなたか実行していただけませんでしょうか?

その際には、新規情報のアップなどには協力させていただきます!

最後に
Stringライブラリを使ったらもう一度「使い勝手」を書き込みます。

今回ご協力いただいた方、本当に有り難う御座いました!
すみません、私、勘違いしてましたね。
トピックストップのリンク(「Arduinoをはじめよう」に掲載のリンク)
http://www.arduino.cc/en/uploads/Tutorial/TextString.zip 

リファレンス(http://www.arduino.cc/en/Tutorial/TextString)からのリンク
http://arduino.cc/en/uploads/Tutorial/String.zip
がごっちゃになっていました。

で、リファレンスからのリンクは
 圧縮ファイル:String.zip
 圧縮ファイル中のライブラリのフォルダ名:String
 ライブラリの本体ファイル:WString.cpp,WString.h
ですね。
結論としては、WStringを使うことが推奨される解決法ってことでしょうかね。

ですがあえてTextStringを確認してみました。
どうやら、TextString.hの中にある、
#include "WConstants.h"
を消せば大丈夫なようです。

WConstant.h は wiring.h をインクルードしているだけです。
wiring.h は WProgram.h の中からインクルードされ、スケッチをコンパイルする時に自動的に #include "WProgram.h" が追加されます。
つまり #include "WConstants.h" を消してもwireing.hはインクルードされるので大丈夫のようです。

その先は詳細まで調べてませんが、どうやら abs() マクロに仕様変更があったのでしょうか…。wiring.hの中に、
#ifdef abs
#undef abs
#endif
(中略)
#define abs(x) ((x)>0?(x):-(x))
という部分があり、他のヘッダファイルとインクルードする順番に影響がありそうです。
皆様色々と有難うございます。

途中経過...と言うかの報告です。

残念ながらGPSとのarduinoの回路が微妙な感じでレポートはマダ出来ていません。
#今しばらくお待ち下さい。

と同時にTextStringは日本語説明があるので、jtakao様の方法でTextStringが使えるなら
TextStringを使いたい感じですね。

言い出しっぺなので時間を見付けて両方試しておきます。
とか...

#このコメント(16番)はレポート出来次第消させていただきます。
ちなみに…
#液晶は20桁*4行を買ったので、表示まわりは自分で作るはめになりました...
との事ですが、現在のLiquidCrystalライブラリは20桁×4行もサポートしてます。

ただし古いライブラリとは若干使い方が異なると思うので(begin()が必要とか)、古いライブラリを前提に解説している本の記載のままでは動かない可能性もあるので御注意を。
jtakao様
古い本だと思われるので動きませんでした。
と言うか表示のアドレスが同じである偶数行だけ表示された気がするので
なにか初期設定をしてやらないといけないかと思います。

begin()って...なんでしょう!?

私の本でbegin()を調べると
Ethernet.begin()とserver.begin()しか載っておりませぬ。
たぶんどちらもLCD関係だとは思わないので見ておりませんが...

ぶっちゃけ日本語のコマンドリファレンスって、どこかに上がっていたりしますか?
私は全て本だよりなもので...紙媒体が手元に無いのは苦手です!
コマンドリファレンスのWEBページがあったら即プリントアウトします!(笑)
LCD関係はたしか、この前変わりましたね。

僕はもっぱら船田さんのリファレンスを参考にしてます。
http://www.musashinodenpa.com/arduino/ref/
begin()についても書いてあります。

引用====================
ディスプレイの桁数と行数を指定します。
【構文】
lcd.begin(cols, rows)
【パラメータ】
lcd: LiquidCrystal型の変数
cols: 桁数(横方向の字数)
rows: 行数
======================
最近、Arduino使ってないので外してたらごめんなさい^^
おおきさん、ありがとうございます。
船田さんにも感謝(^^)

だけど、
>char charAt(int position) - 文字の位置を返します

 char charAt(int position) - 指定した位置の文字を返します
ではないかと(^^;
なんてこった...船橋さん最高です!

LiquidCrystalのbegin()もわかりました!
と言うか、これで自分の汚いプログラムが少しは綺麗になります。

GPSは秋葉原の秋月電子で「GT-720F」と言うのを買ったのですが
http://akizukidenshi.com/catalog/g/gM-02711/
RS232Cレベルコンバータの回路で色々苦戦していたのですが
GPSユニット本体の5番と6番のピンがNCと書かれているにも関わらず
TTLレベルの信号が出ていてarduinoのRXに直結したら信号が取れ
「今迄の苦労は...?」な感じです。

とにかくGPSから信号が取れ、文字列表示でも目視確認出来たので
ふたたびString関係に復活です!

...と、その前に船橋様のページに一通り目を通してみます。

皆様、有難うございます。
わかにゃんさん ->
Arduino 日本語リファレンスの管理をされているのは船田さんです。

「マイコンと電子工作 No.1」の記事だとGT-720FのRS232C出力をTTLレベルに変換してますけど、ネット上の情報では5,6番ピンからTTLレベルの信号が出力されているという記述がありますね。

http://jm7muu.com/index.php?GT-720F
http://arduino-gps.blogspot.com/2009/09/gpsgt-720f.html

書籍の情報がどんどん古くなっちゃうようですな。

ログインすると、残り3件のコメントが見れるよ

mixiユーザー
ログインしてコメントしよう!

arduino 更新情報

arduinoのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング