是否将SoftwareSerial留给ATTiny85 / 84使用?


8

我想将SoftwareSerial与我的ATTiny85一起使用,当我用google搜索它时,有几个项目声称他们正在使用它...我从https://code.google.com/p/arduino-tiny/下载了硬件,但是当我尝试时添加SoftwareSerial并编译,我得到:

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

将董事会换成UNO可以解决问题,所以他们将其排除在外了吗?我怎样才能解决这个问题?


无法复制。
伊格纳西奥·巴斯克斯

我确实使用Arduino IDE 1.6.3进行了复制,并找到了答案(如下)。
Eric Lee

Answers:


6

简短答案-不。相反,它没有被忽略。

但是在解决您提到的编译器错误之前,需要进行一些澄清:

我从https://code.google.com/p/arduino-tiny/下载了硬件

您提供的链接不是硬件,而是称为ATtiny核心文件的软件。它包含必要的文件,这些文件将帮助您从Arduino IDE编译代码并将代码上传到ATtiny(即使使用ArduinoISP作为程序员)。

SoftwareSerial是自带的Arduino的IDE ZIP /安装的库。如果您已从Arduino网站下载了最新版本的Arduino IDE,则应该能够找到位于以下位置的SoftwareSerial库文件:

[Path to Arduino installation folder]\libraries\SoftwareSerial

您应该期望找到SoftwareSerial库文件的示例有SoftwareSerial.cppSoftwareSerial.h

严重错误:SoftwareSerial.h:没有此类文件或目录

您收到的编译器错误似乎暗示编译器找不到SoftwareSerial库的头文件(SoftwareSerial.h)。这确实看起来很奇怪,因为该库不需要任何特殊的安装,并且如上所述,它是Arduino IDE安装中内置库的一部分。

因此,为减轻这种情况,我建议您将:

  • 确保库文件夹位于上述位置
  • 如果不是,那么您可能应该重新下载Arduino IDE安装,然后按照说明安装ATtiny核心文件(重要!)。安装说明位于ATTiny核心zip文件(tiny \ avr \ README)内的README文件中。
  • 如果确实存在,并且仍然出现此编译器错误,则您的安装必须已损坏(也许编译器的include文件夹被弄乱了)。我仍然建议按照上一个项目符号中的说明进行重新安装。
  • 确保在“工具”->“电路板”的电路板列表中找到ATtiny 85,并且已将其选中。
  • 可能更清楚说明此错误的另一个角度是打开编译器的详细输出(您可以在Arduino IDE中执行此操作,方法是选择File-> Preferences->“ Show after verbose output between”,然后选中“ compilation” ”)。详细的输出可以帮助您跟踪任何编译器命令行错误,例如缺少包含文件夹。
  • 最后但并非最不重要的一点是,如果SoftwareSerial文件夹存在,则可以使用Arduino IDE,通过转到Sketch-> Import Library并查找SoftwareSerial来检查IDE是否可以识别其存在。如果该文件夹不存在,则说明该文件夹未正确位于“库”下,请按上述方法验证路径(是否移动了?)

最后,当您能够编译代码时,请尝试使用该库随附的SoftwareSerial示例进行检查。注意,它不会像Arduino Uno那样“开箱即用”工作;ATtiny没有用于直接与USB通讯的相同FTDI硬件,因此要使用ATtiny发送和接收串行消息,您将不得不使用Arduino Uno作为代理(使用Uno的引脚0和1)或使用专用的USB转串口硬件与类似。

将板切换为UNO可以解决问题

附带一提,切换到Uno将使大多数ATtiny问题“消失”,因为在MCU级别和分线板级别(与Uno一起获得),Uno的装备要比ATtiny85 / 4装备得多。直接使用ATtiny之类的芯片时您不会得到的。同样,那里的大多数代码都针对Uno,而不是ATTiny。因此,如果您是使用ATtiny的第一步,请做好准备,以使许多与Uno一起“正常工作”的事物在使用ATtiny之前需要额外的/不同的代码(有些根本无法工作)。

您可以使用我的简单模拟到串行代码:

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

在下面,您可以找到最适合调试的最小限位发送串行实现的代码。代码大小约为60个字节。

它为1 MHz提供38400波特或在8 MHz Attiny时钟上提供230400波特。

我写的是Attiny 85。

ArminJo / AttinySendSerial_1Mhz_38400Bd


0

我遇到了同样的问题,似乎在Arduino IDE 1.6.x中,库是按“每块板”定义的,不再共享。至少不是所有库都共享,并且SoftwareSerial似乎是其中之一。

因此,解决方案是根据[此线程] 将Arduino安装中的SoftwareSerial库复制[programs]/Arduino/hardware/arduino/avr/libraries/SoftwareSerial到您的ATTiny硬件文件夹中[documents]/Arduino/hardware/tiny/avr/libraries/SoftwareSerial,然后重新启动IDE。1个


0

是的,在IDE 1.6.x中,库是按“每块板”定义的,它们驻留在特殊的文件夹中,并由板束的附带文件提供。Digispark的库名为SoftSerial并包含在内。在IDE中,检查“文件/示例/ DigisparkSoftSerial”。还要检查https://digistump.com/wiki/digispark/tutorials/debugging

简而言之,您必须包括:

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

然后定义RX和TX引脚(在特殊情况下也可以相同):

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

然后使用mySerial.println()&co。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.