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?
serial
attiny
softwareserial
Jason94
fonte
fonte
Respostas:
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:
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:
Exemplo de arquivos de biblioteca SoftwareSerial que você espera encontrar, existem SoftwareSerial.cpp e SoftwareSerial.h .
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ê:
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 .
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:
fonte
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
fonte
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/SoftwareSerial
a pasta de hardware ATTiny em[documents]/Arduino/hardware/tiny/avr/libraries/SoftwareSerial
e reiniciar o IDE, conforme [esta discussão]. 1fonte
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:
e defina os pinos RX e TX (também podem ser os mesmos em casos especiais):
Então use
mySerial.println()
& co.fonte