SoftwareSerial est-il laissé de côté pour l'ATTiny85 / 84?


8

Je veux utiliser SoftwareSerial avec mon ATTiny85 et quand je le google plusieurs projets affirment qu'ils l'utilisent ... J'ai téléchargé le matériel depuis https://code.google.com/p/arduino-tiny/ , mais quand j'essaye pour ajouter SoftwareSerial et compiler j'obtiens:

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

Passer la carte sur UNO fait disparaître le problème, alors l'ont-ils laissé de côté? Comment puis-je réparer cela?


Impossible de dupliquer.
Ignacio Vazquez-Abrams

J'ai dupliqué avec Arduino IDE 1.6.3 et trouvé une réponse (ci-dessous).
Eric Lee

Réponses:


6

Réponse courte - non. Ce n'est pas laissé de côté, au contraire.

Mais avant d'aborder l'erreur de compilation que vous avez mentionnée, une petite clarification:

J'ai téléchargé le matériel depuis https://code.google.com/p/arduino-tiny/

Le lien que vous avez fourni n'est pas du matériel , mais un logiciel appelé fichiers de base ATtiny . Il contient les fichiers nécessaires qui vous aideront à compiler et à télécharger du code depuis Arduino IDE vers ATtiny (même lorsque vous utilisez ArduinoISP comme programmeur).

Le SoftwareSerial est une bibliothèque qui vient avec le zip / installation Arduino IDE. Si vous avez téléchargé la dernière version d'Arduino IDE à partir du site Web Arduino , vous devriez pouvoir trouver les fichiers de la bibliothèque SoftwareSerial situés à:

[Path to Arduino installation folder]\libraries\SoftwareSerial

Exemple de fichiers de bibliothèque SoftwareSerial que vous devriez vous attendre à trouver: SoftwareSerial.cpp et SoftwareSerial.h .

erreur fatale: SoftwareSerial.h: aucun fichier ou répertoire de ce type

L'erreur de compilation que vous recevez semble impliquer que le compilateur ne peut pas trouver le fichier d'en-tête (SoftwareSerial.h) pour la bibliothèque SoftwareSerial. Cela semble en effet assez étrange, car cette bibliothèque ne nécessite aucune installation spéciale et, comme mentionné, fait partie des bibliothèques intégrées à l'installation Arduino IDE.

Donc, pour atténuer cela, je recommanderais que vous:

  • Assurez-vous que le dossier de la bibliothèque existe à l'emplacement mentionné ci-dessus
  • Si ce n'est pas le cas, vous devriez probablement télécharger à nouveau l'installation Arduino IDE, puis installer les fichiers de base ATtiny conformément aux instructions (important!). Les instructions d'installation se trouvent dans le fichier README à l'intérieur du fichier zip principal ATTiny (tiny \ avr \ README).
  • Si elle existe et que vous obtenez toujours cette erreur de compilation, vous devez avoir une installation corrompue (peut-être que les dossiers d'inclusion du compilateur sont foirés). Je recommanderais toujours de suivre la réinstallation comme mentionné dans la puce précédente.
  • Assurez-vous que vous pouvez trouver l' ATtiny 85 dans la liste des cartes, dans Outils-> Carte et qu'il est sélectionné.
  • Un autre angle qui pourrait faire la lumière sur cette erreur serait d'activer la sortie détaillée du compilateur (vous pouvez le faire dans l'IDE Arduino, en choisissant Fichier-> Préférences-> "Afficher la sortie détaillée pendant" et en vérifiant "la compilation "). Une sortie détaillée peut vous aider à rechercher les erreurs de ligne de commande du compilateur, comme les dossiers d'inclusion manquants.
  • Enfin, si le dossier SoftwareSerial existe, vous pouvez utiliser l'IDE Arduino pour vérifier si l'IDE peut identifier son existence, en allant dans Sketch-> Import Library et en recherchant SoftwareSerial . Si ce n'est pas le cas, le dossier ne se trouve pas correctement sous les 'bibliothèques', vérifiez le chemin comme mentionné ci-dessus (l'avez-vous déplacé?)

Enfin, lorsque vous pourrez compiler votre code, essayez d'utiliser l'exemple SoftwareSerial fourni avec la bibliothèque pour le vérifier. Notez que cela ne fonctionnera pas «prêt à l'emploi» comme avec l'Arduino Uno; L'ATtiny n'a pas le même matériel FTDI pour communiquer directement avec USB, donc pour envoyer et recevoir des messages série en utilisant l'Attiny, vous devrez soit utiliser l'Arduino Uno comme proxy (en utilisant les broches 0 et 1 de l'Uno), soit utiliser des Matériel USB vers série similaire à celui-ci .

Passer la carte sur UNO fait disparaître le problème

En passant, le passage à l'Uno fera disparaître la plupart des problèmes ATtiny puisque l'Uno est beaucoup plus équipé que ATtiny85 / 4, à la fois au niveau du MCU et au niveau de la carte de dérivation, que vous obtenez avec l'Uno (et que vous n'obtenez pas lorsque vous travaillez directement avec une puce comme ATtiny). En outre, la plupart des bases de code ciblent l'Uno et non ATTiny. Donc, si vous faites vos premiers pas avec ATtiny, préparez-vous à ce que beaucoup de choses qui `` fonctionnent juste '' avec Uno nécessitent un code supplémentaire / différent avant de pouvoir fonctionner avec ATtiny (et certaines ne fonctionneront pas du tout).

Vous pouvez utiliser mon simple code analogique-série:

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

Ci-dessous, vous pouvez trouver le code pour une implémentation série minimale de bit-bang send idéalement adapté au débogage. La taille du code est d'environ 60 octets.

Il donne 38400 bauds pour 1 MHz ou 230400 bauds sur une horloge Attiny de 8 MHz.

Je l'ai écrit pour un Attiny 85.

ArminJo / AttinySendSerial_1Mhz_38400Bd


0

J'ai eu le même problème et il apparaît qu'avec Arduino IDE 1.6.x, les bibliothèques sont définies "par carte" et ne sont plus partagées. Au moins, toutes les bibliothèques ne sont pas partagées, et SoftwareSerial semble être l'une d'entre elles.

La solution consiste donc à copier la bibliothèque SoftwareSerial de l'installation Arduino à [programs]/Arduino/hardware/arduino/avr/libraries/SoftwareSerialdans votre dossier matériel ATTiny à [documents]/Arduino/hardware/tiny/avr/libraries/SoftwareSerial, et à redémarrer l'IDE, selon [ce fil]. 1


0

Oui, dans IDE 1.6.x, les bibliothèques sont définies "par carte", elles résident dans des dossiers spéciaux et sont fournies par l'atuhor du paquet de cartes. La bibliothèque de Digispark s'appelle SoftSerial et est incluse. Dans IDE, vérifiez Fichier / Exemples / DigisparkSoftSerial. Consultez également https://digistump.com/wiki/digispark/tutorials/debugging

En bref, vous devez inclure:

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

puis définissez les broches RX et TX (peuvent également être les mêmes dans des cas particuliers):

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

Utilisez ensuite mySerial.println()& co.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.