SoftwareSerial è lasciato fuori per ATTiny85 / 84?


8

Voglio usare SoftwareSerial con il mio ATTiny85 e quando lo google diversi progetti affermano che lo stanno usando ... Ho scaricato l'hardware da https://code.google.com/p/arduino-tiny/ , ma quando provo per aggiungere SoftwareSerial e compilazione ottengo:

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

Passare la scheda a UNO risolve il problema, quindi l'hanno lasciato fuori? Come posso risolvere questo problema?


Impossibile duplicare.
Ignacio Vazquez-Abrams,

Ho duplicato con Arduino IDE 1.6.3 e ho trovato una risposta (sotto).
Eric Lee,

Risposte:


6

Risposta breve - no. Al contrario, non è escluso.

Ma prima di affrontare l'errore del compilatore che hai citato, un piccolo chiarimento:

Ho scaricato l'hardware da https://code.google.com/p/arduino-tiny/

Il link che hai fornito non è hardware , ma un software chiamato file core ATtiny . Contiene i file necessari che ti aiuteranno a compilare e caricare codice da Arduino IDE su ATtiny (anche quando usi ArduinoISP come programmatore).

Il SoftwareSerial è una libreria che viene fornito con l'IDE Arduino zip / installazione. Se hai scaricato l'ultima versione di Arduino IDE dal sito Web di Arduino , dovresti essere in grado di trovare i file della libreria SoftwareSerial disponibili in:

[Path to Arduino installation folder]\libraries\SoftwareSerial

Esempio per i file della libreria SoftwareSerial che dovresti aspettarti di trovare ci sono SoftwareSerial.cpp e SoftwareSerial.h .

errore irreversibile: SoftwareSerial.h: nessun file o directory

L'errore del compilatore visualizzato sembra implicare che il compilatore non è in grado di trovare il file di intestazione (SoftwareSerial.h) per la libreria SoftwareSerial. Questo in effetti sembra abbastanza strano, dal momento che questa libreria non richiede alcuna installazione speciale e, come detto, fa parte delle librerie che sono integrate nell'installazione IDE di Arduino.

Quindi, per mitigare questo, ti consiglio di:

  • Assicurarsi che la cartella della libreria esista nella posizione sopra menzionata
  • In caso contrario, probabilmente dovresti riscaricare l'installazione IDE di Arduino, e successivamente installare i file core ATtiny secondo le istruzioni (importante!). Le istruzioni di installazione si trovano nel file README all'interno del file zip core ATTiny (tiny \ avr \ README).
  • Se esiste, e ricevi ancora questo errore del compilatore, devi avere un'installazione danneggiata (forse il compilatore include le cartelle è incasinato). Consiglierei comunque di seguire la reinstallazione come indicato nel precedente punto elenco.
  • Assicurati di trovare ATtiny 85 nell'elenco delle schede, in Strumenti-> Scheda e che sia selezionato.
  • Un altro angolo che potrebbe far luce su questo errore sarebbe quello di attivare l'output dettagliato per il compilatore (puoi farlo nell'IDE di Arduino, scegliendo File-> Preferenze-> "Mostra output dettagliato durante" e controllando "la compilazione "). L'output dettagliato può aiutarti a rintracciare eventuali errori della riga di comando del compilatore, come le cartelle di inclusione mancanti.
  • Ultimo ma non meno importante, se esiste la cartella SoftwareSerial, è possibile utilizzare l'IDE Arduino per verificare se l'IDE è in grado di identificarne l'esistenza, andando su Schizzo-> Importa libreria e cercando SoftwareSerial . Se non è presente, la cartella non si trova correttamente sotto le "librerie", verifica il percorso come indicato sopra (l'hai spostato?)

Infine, quando sarai in grado di compilare il codice, prova a utilizzare l'esempio SoftwareSerial fornito con la libreria per verificarlo. Si noti che non funzionerà "out-of-the-box" come con Arduino Uno; ATtiny non ha lo stesso hardware FTDI per la comunicazione diretta con USB, quindi per inviare e ricevere messaggi seriali utilizzando ATtiny dovrai utilizzare Arduino Uno come proxy (usando i pin 0 e 1 di Uno) o per usare dedicato Hardware da USB a seriale simile a questo .

Il passaggio alla scheda UNO risolve il problema

Come nota a margine, il passaggio a Uno farà andare via la maggior parte dei problemi di ATtiny poiché Uno è molto più equipaggiato di ATtiny85 / 4, sia a livello MCU che a livello di breakout board, che si ottiene con Uno (e che non si ottiene quando si lavora direttamente con un chip come ATtiny). Inoltre, la maggior parte della base di codice disponibile è destinata a Uno e non a ATTiny. Quindi, se stai facendo i tuoi primi passi con ATtiny, preparati che molte cose che "hanno appena funzionato" con Uno richiederanno un codice extra / diverso prima che possano funzionare con ATtiny (e alcune non funzioneranno affatto).

Puoi usare il mio semplice codice da analogico a seriale:

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

Di seguito puoi trovare il codice per un'implementazione seriale minima di invio di bit-bang ideale per il debug. La dimensione del codice è di circa 60 byte.

Fornisce 38400 baud per 1 MHz o 230400 baud su orologio Attiny a 8 MHz.

L'ho scritto per un Attiny 85.

ArminJo / AttinySendSerial_1Mhz_38400Bd


0

Ho avuto lo stesso problema e sembra che con Arduino IDE 1.6.x, le librerie siano definite "per scheda" e non più condivise. Almeno, non tutte le librerie sono condivise e SoftwareSerial sembra essere una di quelle.

Quindi la soluzione è copiare la libreria SoftwareSerial dall'installazione di Arduino nella [programs]/Arduino/hardware/arduino/avr/libraries/SoftwareSerialcartella hardware ATTiny in [documents]/Arduino/hardware/tiny/avr/libraries/SoftwareSerial, e riavviare l'IDE, come da [questo thread]. 1


0

Sì, in IDE 1.6.x, le librerie sono definite "per scheda", risiedono in cartelle speciali e sono fornite dall'atleta del pacchetto di schede. La libreria di Digispark si chiama SoftSerial ed è inclusa. In IDE Controlla file / Esempi / DigisparkSoftSerial. Controlla anche https://digistump.com/wiki/digispark/tutorials/debugging

In breve, devi includere:

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

e quindi definire i pin RX e TX (potrebbe anche essere lo stesso in casi speciali):

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

Quindi usa mySerial.println()& co.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.