Per la NEWSOFTSERIAL la situazione è più complicata perché la libreria da per scontato di lavorare con un micro a 8 MHz e che ha più di 1 timer per cui va modificata anch'essa.
Inoltre serve un programmatore per sistemare i fuse altrimenti il chip di fabbrica lavora a 1 MHz, come detto.
Do per scontato che si abbia già sul computer il mod per lavorare con l'Attiny85 e la NewSoftSerial messi entrambi in ~/sketchbook/
- sistemare i fuse dell'Attiny togliendo il divisore per 8:
avrdude -P /dev/ttyACM0 -U [b]lfuse:w:0xe2:m[/b] -p t85 -c usbtiny
- andare in ~/sketchbook/hardware/attiny45_85/ ed aprire il file boards.txt
- mettere 8000000L al posto di 1000000L in tutti i punti del documento
- andare in ~/sketchbook/hardware/libraries/NewSoftSerial ed aprire il file NewSoftSerial.cpp
- cercare la funzione void NewSoftSerial::enable_timer0(bool enable) (riga 518) e modificarla da così:
{
if (enable)
#if defined(__AVR_ATmega8__)
sbi(TIMSK, TOIE0);
#else
sbi(TIMSK0, TOIE0);
#endif
else
#if defined(__AVR_ATmega8__)
cbi(TIMSK, TOIE0);
#else
cbi(TIMSK0, TOIE0);
#endif
}
a così:
void NewSoftSerial::enable_timer0(bool enable)
{
if (enable)
sbi(TIMSK, TOIE0);
else
cbi(TIMSK, TOIE0);
}
Salvare tutto e riavviare l'IDE.
Addesso creare per l'Attiny85 un semplice sketch come questo:
#include <NewSoftSerial.h>
#define BUTTON 4
NewSoftSerial mySerial(0, 1);
void setup() {
delay(3000);
// set the data rate for the NewSoftSerial port
mySerial.begin(4800);
pinMode(BUTTON, INPUT);
}
void loop() {
byte reading;
reading=digitalRead(BUTTON);
if (reading == HIGH ) {
mySerial.print("1");
}
}
Le connessioni sono come nell'esempio della SoftwareSerial.