SoftwareSerial é deixado de fora para o ATTiny85 / 84?

8

Quero usar o SoftwareSerial com o meu ATTiny85 e, quando o Google pesquisar no Google, vários projetos afirmam que estão usando ... Fiz o download do hardware em https://code.google.com/p/arduino-tiny/ , mas quando tento para adicionar SoftwareSerial e compilar, recebo:

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

Mudar a placa para UNO faz com que o problema desapareça, então eles o deixaram de fora? Como posso consertar isso?

Jason94
fonte
Não é possível duplicar.
Ignacio Vazquez-Abrams
Dupliquei com o Arduino IDE 1.6.3 e encontrei uma resposta (abaixo).
Eric Lee

Respostas:

6

Resposta curta - não. Não é deixado de fora, pelo contrário.

Mas antes de abordar o erro do compilador que você mencionou, um pequeno esclarecimento:

Fiz o download do hardware em https://code.google.com/p/arduino-tiny/

O link que você forneceu não é hardware , mas um software chamado de arquivos principais ATtiny . Ele contém os arquivos necessários que o ajudarão a compilar e fazer o upload do código do Arduino IDE para o ATtiny (mesmo ao usar o ArduinoISP como programador).

O SoftwareSerial é uma biblioteca que acompanha o zip / instalação do Arduino IDE. Se você fez o download da versão mais recente do IDE do Arduino no site do Arduino , poderá encontrar os arquivos da biblioteca SoftwareSerial localizados em:

[Path to Arduino installation folder]\libraries\SoftwareSerial

Exemplo de arquivos de biblioteca SoftwareSerial que você espera encontrar, existem SoftwareSerial.cpp e SoftwareSerial.h .

erro fatal: SoftwareSerial.h: Esse arquivo ou diretório não existe

O erro do compilador que você recebe parece implicar que o compilador não pode encontrar o arquivo de cabeçalho (SoftwareSerial.h) da biblioteca SoftwareSerial. Isso de fato parece bastante estranho, pois essa biblioteca não requer nenhuma instalação especial e, como mencionado, faz parte das bibliotecas que são incorporadas à instalação do Arduino IDE.

Portanto, para atenuar isso, eu recomendaria que você:

  • Verifique se a pasta da biblioteca existe no local mencionado acima
  • Caso contrário, provavelmente você deve baixar novamente a instalação do IDE do Arduino e depois instalar os arquivos principais do ATtiny conforme as instruções (importante!). As instruções de instalação estão localizadas no arquivo README, dentro do arquivo zip do núcleo ATTiny (tiny \ avr \ README).
  • Se existir, e você ainda receber esse erro do compilador, deverá ter uma instalação corrompida (talvez as pastas de inclusão do compilador estejam bagunçadas). Eu ainda recomendaria seguir a reinstalação, como mencionado no item anterior.
  • Certifique-se de encontrar o ATtiny 85 na lista de painéis, em Ferramentas-> Painel e de que ele está selecionado.
  • Outro ângulo que poderia esclarecer mais esse erro seria ativar a saída detalhada do compilador (você pode fazê-lo no Arduino IDE, escolhendo Arquivo-> Preferências-> "Mostrar saída detalhada durante" e verificando "a compilação "). A saída detalhada pode ajudá-lo a rastrear qualquer erro de linha de comando do compilador, como as pastas de inclusão ausentes.
  • Por último, mas não menos importante, se a pasta SoftwareSerial existir, você poderá usar o Arduino IDE para verificar se o IDE pode identificar sua existência, acessando Sketch-> Import Library e procurando SoftwareSerial . Se não estiver lá, a pasta não está localizada corretamente nas 'bibliotecas', verifique o caminho conforme mencionado acima (você o moveu?)

Por fim, quando você conseguir compilar seu código, tente usar o exemplo SoftwareSerial que acompanha a biblioteca para verificá-lo. Observe que ele não funcionará imediatamente, como no Arduino Uno; O ATtiny não possui o mesmo hardware FTDI para se comunicar diretamente com USB; portanto, para enviar e receber mensagens seriais usando o ATtiny, você precisará usar o Arduino Uno como proxy (usando os pinos 0 e 1 do Uno) ou usar dedicado Hardware USB para Serial semelhante a este .

Mudar a placa para UNO faz com que o problema desapareça

Como observação lateral, mudar para o Uno fará com que a maioria dos problemas do ATtiny 'desapareça', pois o Uno é muito mais equipado que o ATtiny85 / 4, tanto no nível do MCU quanto no nível da placa de interrupção, que você obtém com o Uno (e que você não obtém ao trabalhar diretamente com um chip como o ATtiny). Além disso, a maior parte do código base está direcionada ao Uno e não ao ATTiny. Portanto, se você está dando seus primeiros passos com o ATtiny, esteja preparado para que muitas coisas que 'apenas funcionaram' com o Uno exijam código extra / diferente antes que eles possam trabalhar com o ATtiny (e algumas nem funcionarão).

Você pode usar meu código analógico para serial simples:

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

Abaixo, você encontra o código para uma implementação serial de envio bit-bang mínima, ideal para depuração. O tamanho do código é de cerca de 60 bytes.

Ele fornece 38400 bauds para 1 MHz ou 230400 bauds no relógio Attiny de 8 MHz.

Eu escrevi para um Attiny 85.

ArminJo / AttinySendSerial_1Mhz_38400Bd

Armin J.
fonte
0

Eu tive o mesmo problema e parece que, com o Arduino IDE 1.6.x, as bibliotecas são definidas "por placa" e não são mais compartilhadas. Pelo menos, nem todas as bibliotecas são compartilhadas e o SoftwareSerial parece ser um deles.

Portanto, a solução é copiar a biblioteca SoftwareSerial da instalação do Arduino para [programs]/Arduino/hardware/arduino/avr/libraries/SoftwareSeriala pasta de hardware ATTiny em [documents]/Arduino/hardware/tiny/avr/libraries/SoftwareSeriale reiniciar o IDE, conforme [esta discussão]. 1

Eric Lee
fonte
0

Sim, no IDE 1.6.x, as bibliotecas são definidas "por placa", residem em pastas especiais e são fornecidas pelo atuhor do pacote da placa. A biblioteca do Digispark é nomeada SoftSerial e está incluída. No IDE, verifique Arquivo / Exemplos / DigisparkSoftSerial. Verifique também https://digistump.com/wiki/digispark/tutorials/debugging

Em resumo, você deve incluir:

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

e defina os pinos RX e TX (também podem ser os mesmos em casos especiais):

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

Então use mySerial.println()& co.

Boocko
fonte