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?
serial
attiny
softwareserial
Jason94
fuente
fuente
Respuestas:
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:
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:
Ejemplo para los archivos de la biblioteca SoftwareSerial que debe encontrar allí son SoftwareSerial.cpp y SoftwareSerial.h .
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:
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 .
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:
fuente
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
fuente
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/SoftwareSerial
su carpeta de hardware ATTiny en[documents]/Arduino/hardware/tiny/avr/libraries/SoftwareSerial
, y reiniciar el IDE, según [este hilo]. 1fuente
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:
y luego defina los pines RX y TX (también podría ser el mismo en casos especiales):
Luego use
mySerial.println()
& co.fuente