Я хочу использовать SoftwareSerial с моим ATTiny85, и когда я запускаю его в Google, несколько проектов утверждают, что они его используют ... Я загрузил оборудование с https://code.google.com/p/arduino-tiny/ , но когда я пытаюсь добавить SoftwareSerial и скомпилировать я получаю:
fatal error: SoftwareSerial.h: No such file or directory
Переключение доски на UNO устраняет проблему, так что они ее оставили? Как я могу это исправить?
serial
attiny
softwareserial
Jason94
источник
источник
Ответы:
Краткий ответ - нет. Это не исключено, наоборот.
Но прежде чем обратиться к упомянутой вами ошибке компилятора, небольшое уточнение:
Ссылка, которую вы предоставили, не аппаратная , а программная, называемая основными файлами ATtiny . Он содержит необходимые файлы, которые помогут вам скомпилировать и загрузить код из Arduino IDE в ATtiny (даже при использовании ArduinoISP в качестве программиста).
SoftwareSerial это библиотека , которая поставляется с Arduino IDE Zip / установки. Если вы загрузили последнюю версию Arduino IDE с веб-сайта Arduino , вы сможете найти файлы библиотеки SoftwareSerial, расположенные по адресу:
Примером файлов библиотеки SoftwareSerial, которые вы должны ожидать, являются SoftwareSerial.cpp и SoftwareSerial.h .
Полученная вами ошибка компилятора означает, что компилятору не удалось найти файл заголовка (SoftwareSerial.h) для библиотеки SoftwareSerial. Это действительно кажется довольно странным, поскольку эта библиотека не требует специальной установки и, как уже упоминалось, является частью библиотек, встроенных в установку Arduino IDE.
Итак, чтобы смягчить это, я бы порекомендовал вам:
Наконец, когда вы сможете скомпилировать свой код, попробуйте использовать пример SoftwareSerial, который поставляется вместе с библиотекой, чтобы проверить его. Обратите внимание, что он не будет работать «из коробки», как с Arduino Uno; ATtiny не имеет такого же оборудования FTDI для связи напрямую с USB, поэтому для отправки и получения последовательных сообщений с использованием ATtiny вам придется либо использовать Arduino Uno в качестве прокси-сервера (используя контакты 0 и 1 Uno), либо использовать выделенный USB к последовательному оборудованию, похожему на этот .
Как примечание: переключение на Uno заставит большинство проблем ATtiny «уйти», поскольку Uno гораздо более оснащён, чем ATtiny85 / 4, как на уровне MCU, так и на уровне платы коммутации, которую вы получаете с Uno (и что вы не получаете при работе непосредственно с чипом, как ATtiny). Кроме того, большая часть кодовой базы ориентирована на Uno, а не на ATTiny. Поэтому, если вы делаете свои первые шаги с ATtiny, будьте готовы к тому, что многие вещи, которые «только что работали» с Uno, потребуют дополнительного / другого кода, прежде чем они смогут работать с ATtiny (а некоторые не будут работать вообще).
Вы можете использовать мой простой Analog to Serial code:
источник
Ниже вы можете найти код для минимальной последовательной реализации посылок, идеально подходящей для отладки. Размер кода составляет около 60 байтов.
Он дает 38400 бод для 1 МГц или 230400 бод на 8 МГц тактовой частоте Attiny.
Я написал это для Attiny 85.
ArminJo / AttinySendSerial_1Mhz_38400Bd
источник
У меня была та же проблема, и похоже, что в 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источник
Да, в IDE 1.6.x библиотеки определены «на плату», они находятся в специальных папках и предоставляются атухором пакета платы. Библиотека Digispark называется SoftSerial и входит в комплект. В IDE проверьте Файл / Примеры / DigisparkSoftSerial. Также проверьте https://digistump.com/wiki/digispark/tutorials/debugging
Короче говоря, вы должны включить:
и затем определите контакты RX и TX (в особых случаях они могут быть одинаковыми):
Тогда используйте
mySerial.println()
& co.источник