SoftwareSerialはATTiny85 / 84の対象外ですか?


8

ATTiny85でSoftwareSerialを使用したいのですが、Googleでグーグルすると、いくつかのプロジェクトがそれを使用していると主張しています... https://code.google.com/p/arduino-tiny/からハードウェアをダウンロードしましたが、 SoftwareSerialを追加してコンパイルするには、次のようにします。

fatal error: SoftwareSerial.h: No such file or directory

ボードをUNOに切り替えると問題が解決するので、そのままにしておきましたか?どうすれば修正できますか?


複製できません。
Ignacio Vazquez-Abrams 2014

私はArduino IDE 1.6.3で複製を行い、答えを見つけました(以下)。
エリックリー

回答:


6

短い答え-いいえ。それどころか、それは除外されていません。

しかし、あなたが言及したコンパイラエラーに取り組む前に、小さな説明:

ハードウェアをhttps://code.google.com/p/arduino-tiny/からダウンロードしました

あなたが提供したリンクはハードウェアではなく、ATtinyコアファイルと呼ばれるソフトウェアです。Arduino IDEからATtinyへのコードのコンパイルとアップロードに役立つ必要なファイルが含まれています(ArduinoISPをプログラマーとして使用している場合でも)。

SoftwareSerialは ArduinoのIDEのzip /インストールが付属していますライブラリです。ArduinoのWebサイトからArduino IDEの最新バージョンをダウンロードした場合は、次の場所にあるSoftwareSerialライブラリファイルを見つけることができます。

[Path to Arduino installation folder]\libraries\SoftwareSerial

SoftwareSerial.cppSoftwareSerial.hが見つかるはずのSoftwareSerialライブラリファイルの例。

致命的なエラー:SoftwareSerial.h:そのようなファイルまたはディレクトリはありません

受け取ったコンパイラエラーは、コンパイラがSoftwareSerialライブラリのヘッダーファイル(SoftwareSerial.h)を見つけられないことを意味しているようです。このライブラリは特別なインストールを必要とせず、前述のように、Arduino IDEインストールに組み込まれているライブラリの一部であるため、これは確かに奇妙に見えます。

したがって、これを軽減するために、次のことをお勧めします。

  • 上記の場所にライブラリフォルダーが存在することを確認してください
  • そうでない場合は、おそらくArduino IDEインストールを再ダウンロードし、その後、指示に従ってATtinyコアファイルをインストールする必要があります(重要!)。インストール手順は、ATTinyコアzipファイル(tiny \ avr \ README)内のREADMEファイルにあります。
  • 存在していても、このコンパイラエラーが表示される場合は、インストールが破損している必要があります(おそらく、コンパイラのインクルードフォルダがめちゃくちゃになっています)。前の項目で述べたように、再インストールすることをお勧めします。
  • ボードリストの[ツール]-> [ボード]でATtiny85が見つかり、選択されていることを確認してください。
  • このエラーにさらに光を当てる可能性のある別の角度は、コンパイラーの詳細出力をオンにすることです(Arduino IDEでそれを行うには、[ファイル]-> [設定]-> [表示中に詳細出力を表示]を選択し、[コンパイル]をチェックします。 ")。詳細出力は、インクルードフォルダーの欠落など、コンパイラーのコマンドラインエラーを追跡するのに役立ちます。
  • 最後に重要なことですが、SoftwareSerialフォルダーが存在する場合、Arduino IDEを使用して、Sketch-> Import Libraryに移動し、SoftwareSerialを探して、IDEがその存在を識別できるかどうかを確認できます。そこにない場合、フォルダーは「ライブラリー」の下に正しく配置されていません。上記のようにパスを確認してください(移動しましたか?)

最後に、コードをコンパイルできるようになったら、ライブラリに付属するSoftwareSerialの例を使用して、コードを確認してください。Arduino Unoのように「そのまま」機能するわけではないことに注意してください。ATtinyにはUSBと直接通信するための同じFTDIハードウェアがないので、ATtinyを使用してシリアルメッセージを送受信するには、Arduino Unoをプロキシとして使用するか(Unoのピン0と1を使用)、または専用を使用する必要がありますこれと同様のUSBからシリアルへのハードウェア。

ボードをUNOに切り替えると問題が解決します

ちなみに、Unoに切り替えると、MCUレベルとUnoで得られるブレイクアウトボードレベルの両方でUnoがATtiny85 / 4よりはるかに装備されているため、ほとんどのATtinyの問題が「解消」されます(そしてATtinyのようなチップで直接作業する場合には得られません)。また、そこにあるコードベースのほとんどはUnoを対象としており、ATTinyを対象としていません。したがって、ATtinyを使って最初のステップを実行している場合は、Unoで「うまく機能した」多くのことは、ATtinyで機能する前に余分な/異なるコードを必要とすることに注意してください(そして一部はまったく機能しません)。

私のシンプルなアナログからシリアルへのコードを使用できます:

/*
Takes an input on the AtTiny85 from the VERY TRICKY analogue input pin 2 (as labeled in HLT tutorial)
 and outputs these with Software serial to the arduino uno, or Duemillanove
 Hookup
 ATTINY85 pin 3 -> Arduino Uno pin 0
 ATTINY85 pin 4 -> Arduino Uno pin 1

http://www.instructables.com/id/Easy-ATTiny-Serial-Communication-with-Tiny-AVR-Pro/
 */


#include <SoftwareSerial.h>
// Definitions
#define rxPin 4
#define txPin 3
SoftwareSerial mySerial(rxPin, txPin);
int sensorPin = 7; //ACTUALLY PIN LABELED AS "2" on the HLT tutorial
int sensorVal = -1;


// the setup routine runs once when you press reset:
void setup() {
  pinMode(sensorPin, INPUT);
  mySerial.begin(9600);
analogWrite(0,1); // This is kind a heart beat to show the ATTINY is "alive"
}

// the loop routine runs over and over asensorpingain forever:
void loop() {
  sensorVal = analogRead(sensorPin);
  mySerial.print("Input Val: ");
  mySerial.print(sensorVal);
  mySerial.println();
}

3

以下に、デバッグに最適な最小限のビットバンセン送信シリアル実装のコードを示します。コードサイズは約60バイトです。

1 MHzで38400ボー、8 MHz Attinyクロックで230400ボーを提供します。

Attiny 85用に書いた。

ArminJo / AttinySendSerial_1Mhz_38400Bd


0

同じ問題があり、Arduino IDE 1.6.xではライブラリが「ボードごと」に定義され、共有されなくなったようです。少なくとも、すべてのライブラリが共有されているわけではなく、SoftwareSerialはそれらの1つであるように見えます。

したがって、解決策は、[このスレッド]のように、SoftwareSerialライブラリをのArduinoインストールから[programs]/Arduino/hardware/arduino/avr/libraries/SoftwareSerialATTinyハードウェアフォルダーにコピーし[documents]/Arduino/hardware/tiny/avr/libraries/SoftwareSerial、IDEを再起動することです。1


0

はい、IDE 1.6.xでは、ライブラリは「ボードごと」に定義されており、特別なフォルダーにあり、ボードバンドルのatuhorによって提供されます。DigisparkのライブラリはSoftSerialという名前で含まれています。IDEでFile / Examples / DigisparkSoftSerialを確認します。また、https://digistump.com/wiki/digispark/tutorials/debuggingも確認してください。

つまり、以下を含める必要があります。

   #include <SoftSerial.h>
   #include <TinyPinChange.h> 

次に、RXピンとTXピンを定義します(特別な場合でも同じにすることができます):

   SoftSerial mySerial(SOFT_RX_PIN, SOFT_TX_PIN); // RX, TX

次にmySerial.println()&coを使用します。

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