Wird SoftwareSerial für den ATTiny85 / 84 weggelassen?


8

Ich möchte SoftwareSerial mit meinem ATTiny85 verwenden, und wenn ich es google, behaupten mehrere Projekte, dass sie es verwenden ... Ich habe die Hardware von https://code.google.com/p/arduino-tiny/ heruntergeladen , aber wenn ich es versuche Um SoftwareSerial hinzuzufügen und zu kompilieren, bekomme ich:

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

Wenn Sie das Board auf UNO umstellen, verschwindet das Problem. Haben sie es also weggelassen? Wie kann ich das beheben?


Kann nicht duplizieren.
Ignacio Vazquez-Abrams

Ich habe mit Arduino IDE 1.6.3 dupliziert und eine Antwort gefunden (siehe unten).
Eric Lee

Antworten:


6

Kurze Antwort - nein. Es wird im Gegenteil nicht ausgelassen.

Bevor Sie sich jedoch mit dem von Ihnen erwähnten Compilerfehler befassen, eine kleine Klarstellung:

Ich habe die Hardware von https://code.google.com/p/arduino-tiny/ heruntergeladen.

Bei dem von Ihnen angegebenen Link handelt es sich nicht um Hardware , sondern um Software , die als ATtiny-Kerndateien bezeichnet wird . Es enthält die erforderlichen Dateien, mit denen Sie Code aus der Arduino IDE kompilieren und in das ATtiny hochladen können (auch wenn Sie ArduinoISP als Programmierer verwenden).

Das SoftwareSerial ist eine Bibliothek, die mit der Arduino IDE-Zip / Installation geliefert wird. Wenn Sie die neueste Version von Arduino IDE von der Arduino-Website heruntergeladen haben , sollten Sie die SoftwareSerial-Bibliotheksdateien unter folgender Adresse finden:

[Path to Arduino installation folder]\libraries\SoftwareSerial

Beispiel für SoftwareSerial-Bibliotheksdateien, von denen Sie erwarten sollten, dass sie SoftwareSerial.cpp und SoftwareSerial.h enthalten .

Schwerwiegender Fehler: SoftwareSerial.h: Keine solche Datei oder kein solches Verzeichnis

Der Compilerfehler, den Sie erhalten, scheint zu implizieren, dass der Compiler die Header-Datei (SoftwareSerial.h) für die SoftwareSerial-Bibliothek nicht finden kann. Dies scheint in der Tat ziemlich seltsam zu sein, da diese Bibliothek keine spezielle Installation erfordert und wie erwähnt Teil der Bibliotheken ist, die in die Arduino IDE-Installation integriert sind.

Um dies zu mildern, würde ich empfehlen, dass Sie:

  • Stellen Sie sicher, dass der Bibliotheksordner an dem oben genannten Speicherort vorhanden ist
  • Wenn dies nicht der Fall ist, sollten Sie die Arduino IDE-Installation wahrscheinlich erneut herunterladen und anschließend die ATtiny-Kerndateien gemäß den Anweisungen installieren (wichtig!). Installationsanweisungen befinden sich in der README- Datei in der ATTiny-Core-Zip-Datei (tiny \ avr \ README).
  • Wenn es vorhanden ist und Sie immer noch diesen Compilerfehler erhalten, müssen Sie eine beschädigte Installation haben (möglicherweise ist der Compiler-Include-Ordner durcheinander). Ich würde weiterhin empfehlen, die Neuinstallation wie im vorherigen Abschnitt erwähnt zu verfolgen.
  • Stellen Sie sicher, dass Sie den ATtiny 85 in der Board-Liste unter Tools-> Board finden und dass er ausgewählt ist.
  • Ein weiterer Aspekt, der mehr Licht in diesen Fehler bringen könnte, wäre das Aktivieren der ausführlichen Ausgabe für den Compiler (Sie können dies in der Arduino IDE tun, indem Sie Datei-> Einstellungen-> "Ausführliche Ausgabe während" anzeigen und die Kompilierung aktivieren "). Eine ausführliche Ausgabe kann Ihnen dabei helfen, Compiler-Befehlszeilenfehler wie fehlende Include-Ordner aufzuspüren.
  • Wenn der SoftwareSerial-Ordner vorhanden ist, können Sie mithilfe der Arduino-IDE überprüfen, ob die IDE ihre Existenz identifizieren kann, indem Sie unter Skizze-> Bibliothek importieren nach SoftwareSerial suchen . Wenn es nicht vorhanden ist, befindet sich der Ordner nicht richtig unter den 'Bibliotheken'. Überprüfen Sie den Pfad wie oben erwähnt (haben Sie ihn verschoben?)

Wenn Sie Ihren Code kompilieren können, überprüfen Sie ihn anhand des mit der Bibliothek gelieferten SoftwareSerial-Beispiels. Beachten Sie, dass es nicht wie beim Arduino Uno "out-of-the-box" funktioniert. Das ATtiny verfügt nicht über dieselbe FTDI-Hardware für die direkte Kommunikation mit USB. Für das Senden und Empfangen von seriellen Nachrichten mit dem ATtiny müssen Sie entweder das Arduino Uno als Proxy (mit den Pins 0 und 1 des Uno) oder dediziert verwenden USB zu serieller Hardware ähnlich dieser .

Durch Umschalten der Karte auf UNO wird das Problem behoben

Nebenbei bemerkt, wenn Sie zum Uno wechseln, werden die meisten ATtiny-Probleme "verschwinden", da der Uno sowohl auf MCU-Ebene als auch auf Breakout-Board-Ebene, die Sie mit dem Uno (und) erhalten, viel besser ausgestattet ist als ATtiny85 / 4 was Sie nicht bekommen, wenn Sie direkt mit einem Chip wie ATtiny arbeiten). Außerdem zielt der größte Teil der Codebasis auf Uno und nicht auf ATTiny ab. Wenn Sie also Ihre ersten Schritte mit dem ATtiny ausführen, sollten Sie darauf vorbereitet sein, dass viele Dinge, die mit dem Uno "gerade funktioniert" haben, zusätzlichen / anderen Code erfordern, bevor sie mit dem ATtiny funktionieren können (und einige funktionieren überhaupt nicht).

Sie können meinen einfachen Analog-Serien-Code verwenden:

/*
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

Unten finden Sie den Code für eine minimale serielle Bit-Bang-Send-Implementierung, die sich ideal zum Debuggen eignet. Die Codegröße beträgt ca. 60 Byte.

Es gibt 38400 Baud für 1 MHz oder 230400 Baud bei 8 MHz Attiny-Takt.

Ich habe es für einen Attiny 85 geschrieben.

ArminJo / AttinySendSerial_1Mhz_38400Bd


0

Ich hatte das gleiche Problem und es scheint, dass mit Arduino IDE 1.6.x Bibliotheken "pro Board" definiert und nicht mehr gemeinsam genutzt werden. Zumindest werden nicht alle Bibliotheken gemeinsam genutzt, und SoftwareSerial scheint eine davon zu sein.

Die Lösung besteht also darin, die SoftwareSerial-Bibliothek von der Arduino-Installation unter [programs]/Arduino/hardware/arduino/avr/libraries/SoftwareSerialin Ihren ATTiny-Hardwareordner unter zu kopieren [documents]/Arduino/hardware/tiny/avr/libraries/SoftwareSerialund die IDE gemäß [diesem Thread] neu zu starten. 1


0

Ja, in IDE 1.6.x werden Bibliotheken "pro Karte" definiert, sie befinden sich in speziellen Ordnern und werden vom Autor des Kartenpakets bereitgestellt. Die Bibliothek von Digispark heißt SoftSerial und ist enthalten. In IDE Check File / Examples / DigisparkSoftSerial. Überprüfen Sie auch https://digistump.com/wiki/digispark/tutorials/debugging

Kurz gesagt, müssen Sie Folgendes einschließen:

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

und definieren Sie dann RX- und TX-Pins (können in besonderen Fällen auch gleich sein):

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

Dann benutze mySerial.println()& co.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.