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 устраняет проблему, так что они ее оставили? Как я могу это исправить?

Jason94
источник
Не может дублировать.
Игнасио Васкес-Абрамс
Я сделал дубликат с Arduino IDE 1.6.3 и нашел ответ (ниже).
Эрик Ли

Ответы:

6

Краткий ответ - нет. Это не исключено, наоборот.

Но прежде чем обратиться к упомянутой вами ошибке компилятора, небольшое уточнение:

Я загрузил оборудование с https://code.google.com/p/arduino-tiny/

Ссылка, которую вы предоставили, не аппаратная , а программная, называемая основными файлами ATtiny . Он содержит необходимые файлы, которые помогут вам скомпилировать и загрузить код из Arduino IDE в ATtiny (даже при использовании ArduinoISP в качестве программиста).

SoftwareSerial это библиотека , которая поставляется с Arduino IDE Zip / установки. Если вы загрузили последнюю версию Arduino IDE с веб-сайта Arduino , вы сможете найти файлы библиотеки SoftwareSerial, расположенные по адресу:

[Path to Arduino installation folder]\libraries\SoftwareSerial

Примером файлов библиотеки SoftwareSerial, которые вы должны ожидать, являются SoftwareSerial.cpp и SoftwareSerial.h .

фатальная ошибка: SoftwareSerial.h: нет такого файла или каталога

Полученная вами ошибка компилятора означает, что компилятору не удалось найти файл заголовка (SoftwareSerial.h) для библиотеки SoftwareSerial. Это действительно кажется довольно странным, поскольку эта библиотека не требует специальной установки и, как уже упоминалось, является частью библиотек, встроенных в установку Arduino IDE.

Итак, чтобы смягчить это, я бы порекомендовал вам:

  • Убедитесь, что папка библиотеки существует в указанном выше месте
  • Если этого не произойдет, вам, вероятно, следует повторно загрузить установку Arduino IDE и после этого установить файлы ядра ATtiny в соответствии с инструкциями (важно!). Инструкции по установке находятся в файле README внутри zip-файла ядра ATTiny (tiny \ avr \ README).
  • Если он существует, и вы по-прежнему получаете эту ошибку компилятора, то у вас должна быть поврежденная установка (возможно, папки включения компилятора испорчены). Я все еще рекомендовал бы после переустановки как упомянуто в предыдущем пуле.
  • Убедитесь, что вы можете найти ATtiny 85 в списке плат, выбрав Tools-> Board и выбрав его.
  • Другим углом, который может пролить больше света на эту ошибку, было бы включить подробный вывод для компилятора (вы можете сделать это в Arduino IDE, выбрав File-> Preferences-> "Показать подробный вывод во время" и проверяя "компиляцию «). Подробный вывод может помочь вам отследить любые ошибки командной строки компилятора, такие как отсутствующие папки include.
  • И последнее, но не менее важное: если папка SoftwareSerial существует, вы можете использовать IDE Arduino, чтобы проверить, может ли IDE идентифицировать ее существование, перейдя в Sketch-> Import Library и выбрав SoftwareSerial . Если его там нет, то папка не находится должным образом под «библиотеками», проверьте путь, как указано выше (вы переместили его?)

Наконец, когда вы сможете скомпилировать свой код, попробуйте использовать пример SoftwareSerial, который поставляется вместе с библиотекой, чтобы проверить его. Обратите внимание, что он не будет работать «из коробки», как с Arduino Uno; ATtiny не имеет такого же оборудования FTDI для связи напрямую с USB, поэтому для отправки и получения последовательных сообщений с использованием ATtiny вам придется либо использовать Arduino Uno в качестве прокси-сервера (используя контакты 0 и 1 Uno), либо использовать выделенный USB к последовательному оборудованию, похожему на этот .

Переключение доски на UNO устраняет проблему

Как примечание: переключение на Uno заставит большинство проблем ATtiny «уйти», поскольку Uno гораздо более оснащён, чем ATtiny85 / 4, как на уровне MCU, так и на уровне платы коммутации, которую вы получаете с Uno (и что вы не получаете при работе непосредственно с чипом, как ATtiny). Кроме того, большая часть кодовой базы ориентирована на Uno, а не на ATTiny. Поэтому, если вы делаете свои первые шаги с ATtiny, будьте готовы к тому, что многие вещи, которые «только что работали» с Uno, потребуют дополнительного / другого кода, прежде чем они смогут работать с ATtiny (а некоторые не будут работать вообще).

Вы можете использовать мой простой Analog to Serial code:

/*
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
источник
3

Ниже вы можете найти код для минимальной последовательной реализации посылок, идеально подходящей для отладки. Размер кода составляет около 60 байтов.

Он дает 38400 бод для 1 МГц или 230400 бод на 8 МГц тактовой частоте Attiny.

Я написал это для Attiny 85.

ArminJo / AttinySendSerial_1Mhz_38400Bd

Армин Дж.
источник
0

У меня была та же проблема, и похоже, что в Arduino IDE 1.6.x библиотеки определены «на плату» и больше не используются совместно. По крайней мере, не все библиотеки являются общими, и SoftwareSerial представляется одним из них.

Таким образом, решение состоит в том, чтобы скопировать библиотеку SoftwareSerial из установки Arduino в [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.

Boocko
источник