我想将SoftwareSerial与我的ATTiny85一起使用,当我用google搜索它时,有几个项目声称他们正在使用它...我从https://code.google.com/p/arduino-tiny/下载了硬件,但是当我尝试时添加SoftwareSerial并编译,我得到:
fatal error: SoftwareSerial.h: No such file or directory
将董事会换成UNO可以解决问题,所以他们将其排除在外了吗?我怎样才能解决这个问题?
我想将SoftwareSerial与我的ATTiny85一起使用,当我用google搜索它时,有几个项目声称他们正在使用它...我从https://code.google.com/p/arduino-tiny/下载了硬件,但是当我尝试时添加SoftwareSerial并编译,我得到:
fatal error: SoftwareSerial.h: No such file or directory
将董事会换成UNO可以解决问题,所以他们将其排除在外了吗?我怎样才能解决这个问题?
Answers:
简短答案-不。相反,它没有被忽略。
但是在解决您提到的编译器错误之前,需要进行一些澄清:
您提供的链接不是硬件,而是称为ATtiny核心文件的软件。它包含必要的文件,这些文件将帮助您从Arduino IDE编译代码并将代码上传到ATtiny(即使使用ArduinoISP作为程序员)。
该SoftwareSerial是自带的Arduino的IDE ZIP /安装的库。如果您已从Arduino网站下载了最新版本的Arduino IDE,则应该能够找到位于以下位置的SoftwareSerial库文件:
[Path to Arduino installation folder]\libraries\SoftwareSerial
您应该期望找到SoftwareSerial库文件的示例有SoftwareSerial.cpp和SoftwareSerial.h。
严重错误:SoftwareSerial.h:没有此类文件或目录
您收到的编译器错误似乎暗示编译器找不到SoftwareSerial库的头文件(SoftwareSerial.h)。这确实看起来很奇怪,因为该库不需要任何特殊的安装,并且如上所述,它是Arduino 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();
}
在下面,您可以找到最适合调试的最小限位发送串行实现的代码。代码大小约为60个字节。
它为1 MHz提供38400波特或在8 MHz Attiny时钟上提供230400波特。
我写的是Attiny 85。
是的,在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。