マンチェスター図書館はAttiny85のためにコンパイルされません


8

Attiny85を使用してワイヤレスセンサーを作成しています。arduino unoにデータを送信したいので、315 MHzのRFリンクキットをSpark Funから購入しました。Attiny85にはTXがないため、マンチェスターライブラリを使用することにしましたが、Attiny85ではコンパイルできません。

私はこのブログの手順に従いました:http : //mchr3k-arduino.blogspot.mx/2012/01/wireless-sensor-node-part-2.html?showComment=1338749638806#c853067277980266192

これが私が使用しているコードです:

    #include <WProgram.h> //otherwise it says it can't find Arduino.h
    #include <Manchester.h> //include the library to comunicate
    #define TxPin 2 //the pin that is used to send data

 int sensorPin = 4;
 int ledPin = 3;
 int count = 50;

 void setup(){
  pinMode (ledPin, OUTPUT);
  man.workAround1MhzTinyCore(); //add this in order for transmitter to work with 1Mhz Attiny85/84
  man.setupTransmit(TxPin, MAN_1200); //set transimt pin
}

void loop(){
  if (count == 50){
   digitalWrite (ledPin, HIGH);
   count = 0;
   }
   int data = analogRead(sensorPin);
   man.transmit(data); //transmits and reads the data
   delay (100);
   count ++;
 }

エラーメッセージは次のとおりです。

/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp: In function 'void MANRX_SetupReceive(uint8_t)':
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:366: error: 'TCCR2A' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:366: error: 'WGM21' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:368: error: 'TCCR2B' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:368: error: 'CS21' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:369: error: 'OCR2A' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:379: error: 'TIMSK2' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:379: error: 'OCIE2A' was not declared in this scope
/Users/joelsimonoff/Documents/Arduino/libraries/MANCHESTER/Manchester.cpp:380: error: 'TCNT2' was not declared in this scope

ATtinyX5 Arduinoサポートにどのパッケージを使用していますか?
Ignacio Vazquez-Abrams

私が参照したブログの1つを試しましたが、グーグル検索の後でMIT High Low Tech Groupに1つあることがわかりましたので、それも試しました。MIT High Low Techからのものは、このページからですhighlowtech.org/?p=1695
Joel

私は、MITのハイローテックグループページのattinyマスターの代わりに、arduino-tinyライブラリの使用に関するJoelとIgnacioの提案をすべて実行しました。ボードメニューにATTINY85ボードが表示されるようになりましたが、上記のコードを使用しても「スコープで宣言されていません」というエラーが表示されます。助言がありますか?

マンチェスターライブラリをArduino IDEにインポートしましたか?または、ライブラリフォルダーに配置しますか?
Joel

回答:


5

attinyには、マンチェスターライブラリーがATtinyX5デバイスで適切に機能するために必要なオプション、特に__AVR_ATtinyX5__デバイスがいつ選択されるかの定義がありません。実際、多くのものが欠けています。

私がATtinyX5サポートに使用するパッケージはarduino-tinyです。そのシンボルが適切に定義されていることを確認しました。現在のサポートパッケージをダンプして、代わりにarduino-tinyをインストールすることをお勧めします。


arduino-tiny-0150-0020.zipをダウンロードしました。ファイルを解凍し、tinyという名前のフォルダーをarduinoフォルダー内に作成したハードウェアフォルダーにドラッグしました。しかし、IDEに行ったとき、ボードの下で検索したところ、Attinyシリーズのボードが表示されませんでした。
ジョエル

パッケージを氷に追加する正しい方法は何ですか?
ジョエル

実行しているIDEのバージョンは?
Ignacio Vazquez-Abrams

Mac osx 10.9.2上のArduino1.0.5
Joel

次に、1.5.xのサポートパッケージではなく、1.0.xのサポートパッケージをダウンロードする必要があります。
Ignacio Vazquez-Abrams

4

私自身、これに苦労して、ジョエルのソリューションが機能することを確認できます。

マンチェスターをArduino1.0xで動作させることができず、0020が必要であることを示唆する投稿がたくさんあります。しかし、可能です。

重要なのは、上のリンクからarduino-tinyを使用し、そこから取得した小さなフォルダーを/ hardwareに配置して、名前をattinyに変更し、「prospective boards」をボードに変更することです。

これはジョエルがすでに持っている以上のことを言っているわけではないことに気づきますが、周りには非常に多くの矛盾し矛盾する情報があり、私の経験に追加する価値があると思いました


0

このlibを8 MHz Trinketで使用しても同じ問題が発生し#define __AVR_ATtinyX5__ましたが、hardware / attiny / variants / tiny8 / pins_arduino.hファイルに追加することで解決できました。ATtiny用のAdafruitサポートパッケージを使用しています。おそらく少しハックですが、Arduino IDE 1.0.5でボードを選択することで、UNO用にビルドすることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.