¿SoftwareSerial queda fuera para el ATTiny85 / 84?

8

Quiero usar SoftwareSerial con mi ATTiny85 y cuando lo busco en Google varios proyectos afirman que lo están usando ... Descargué el hardware de https://code.google.com/p/arduino-tiny/ , pero cuando lo intento para agregar SoftwareSerial y compilar obtengo:

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

Cambiar el tablero a UNO hace que el problema desaparezca, ¿así que lo dejaron fuera? ¿Cómo puedo arreglar esto?

Jason94
fuente
No se puede duplicar.
Ignacio Vazquez-Abrams
Dupliqué con Arduino IDE 1.6.3 y encontré una respuesta (a continuación).
Eric Lee

Respuestas:

6

Respuesta corta: no. No se deja de lado, por el contrario.

Pero antes de dirigirse al error del compilador que mencionó, una pequeña aclaración:

Descargué el hardware de https://code.google.com/p/arduino-tiny/

El enlace que proporcionó no es hardware , sino software llamado archivos centrales ATtiny . Contiene los archivos necesarios que lo ayudarán a compilar y cargar el código de Arduino IDE a ATtiny (incluso cuando use ArduinoISP como programador).

El SoftwareSerial es una biblioteca que viene con la cremallera / instalación Arduino IDE. Si ha descargado la última versión de Arduino IDE desde el sitio web de Arduino , debería poder encontrar los archivos de la biblioteca SoftwareSerial ubicados en:

[Path to Arduino installation folder]\libraries\SoftwareSerial

Ejemplo para los archivos de la biblioteca SoftwareSerial que debe encontrar allí son SoftwareSerial.cpp y SoftwareSerial.h .

error fatal: SoftwareSerial.h: no existe tal archivo o directorio

El error del compilador que recibe parece implicar que el compilador no puede encontrar el archivo de encabezado (SoftwareSerial.h) para la biblioteca SoftwareSerial. De hecho, esto parece bastante extraño, ya que esta biblioteca no requiere ninguna instalación especial y, como se mencionó, es parte de las bibliotecas integradas en la instalación de Arduino IDE.

Entonces, para mitigar esto, recomendaría que:

  • Asegúrese de que la carpeta de la biblioteca exista en la ubicación mencionada anteriormente
  • Si no es así, entonces probablemente debería volver a descargar la instalación de Arduino IDE, y luego instalar los archivos centrales de ATtiny según las instrucciones (¡importante!). Las instrucciones de instalación se encuentran en el archivo README dentro del archivo zip central de ATTiny (tiny \ avr \ README).
  • Si existe, y aún recibe este error del compilador, entonces debe tener una instalación dañada (quizás el compilador incluya carpetas está en mal estado). Todavía recomendaría seguir la reinstalación como se menciona en la viñeta anterior.
  • Asegúrese de que puede encontrar el ATtiny 85 en la lista del tablero, en Herramientas-> Tablero y que está seleccionado.
  • Otro ángulo que podría arrojar más luz sobre este error sería activar la salida detallada para el compilador (puede hacerlo en el IDE de Arduino, seleccionando Archivo-> Preferencias-> "Mostrar salida detallada durante" y marcando "compilación" "). La salida detallada puede ayudarlo a rastrear cualquier error de línea de comandos del compilador, como faltar carpetas de inclusión.
  • Por último, pero no menos importante, si existe la carpeta SoftwareSerial, puede usar el IDE de Arduino para verificar si el IDE puede identificar su existencia, yendo a Sketch-> Import Library y buscando SoftwareSerial . Si no está allí, entonces la carpeta no se encuentra correctamente debajo de las 'bibliotecas', verifique la ruta como se mencionó anteriormente (¿la movió?)

Finalmente, cuando pueda compilar su código, intente usar el ejemplo de SoftwareSerial que viene con la biblioteca para verificarlo. Tenga en cuenta que no va a funcionar 'fuera de la caja' como con el Arduino Uno; El ATtiny no tiene el mismo hardware FTDI para comunicarse directamente con USB, por lo que para enviar y recibir mensajes en serie utilizando el ATtiny deberá usar el Arduino Uno como proxy (usando los pines 0 y 1 del Uno) o usar USB a hardware serie similar a este .

Cambiar la placa a UNO hace que el problema desaparezca

Como nota al margen, cambiar al Uno hará que la mayoría de los problemas de ATtiny 'desaparezcan' ya que el Uno está mucho más equipado que el ATtiny85 / 4, tanto en el nivel MCU como en el nivel de la placa de conexión, que obtienes con el Uno (y que no obtienes cuando trabajas directamente con un chip como ATtiny). Además, la mayor parte del código base está dirigido al Uno y no a ATTiny. Entonces, si está haciendo sus primeros pasos con el ATtiny, esté preparado para que muchas cosas que 'simplemente funcionaron' con el Uno requerirán un código adicional / diferente antes de que puedan funcionar con el ATtiny (y algunos no funcionarán en absoluto).

Puede usar mi código simple de Analog a Serial:

/*
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();
}
Omer
fuente
3

A continuación puede encontrar el código para una implementación en serie mínima de envío de bit-bang ideal para la depuración. El tamaño del código es de aproximadamente 60 bytes.

Ofrece 38400 baudios para 1 MHz o 230400 baudios en un reloj Attiny de 8 MHz.

Lo escribí para un Attiny 85.

ArminJo / AttinySendSerial_1Mhz_38400Bd

Armin J.
fuente
0

Tuve el mismo problema y parece que con Arduino IDE 1.6.x, las bibliotecas se definen "por placa" y ya no se comparten. Al menos, no todas las bibliotecas se comparten, y SoftwareSerial parece ser una de ellas.

Entonces, la solución es copiar la biblioteca SoftwareSerial de la instalación de Arduino en [programs]/Arduino/hardware/arduino/avr/libraries/SoftwareSerialsu carpeta de hardware ATTiny en [documents]/Arduino/hardware/tiny/avr/libraries/SoftwareSerial, y reiniciar el IDE, según [este hilo]. 1

Eric Lee
fuente
0

Sí, en IDE 1.6.x, las bibliotecas se definen "por placa", residen en carpetas especiales y son proporcionadas por el atuhor del paquete de placas. La biblioteca de Digispark se llama SoftSerial y está incluida. En IDE, consulte Archivo / Ejemplos / DigisparkSoftSerial. Consulte también https://digistump.com/wiki/digispark/tutorials/debugging

En resumen, debe incluir:

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

y luego defina los pines RX y TX (también podría ser el mismo en casos especiales):

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

Luego use mySerial.println()& co.

Boocko
fuente