Giocando con l'Attiny85

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/

  1. 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
  2. andare in ~/sketchbook/hardware/attiny45_85/ ed aprire il file boards.txt
  3. mettere 8000000L al posto di 1000000L in tutti i punti del documento
  4. andare in ~/sketchbook/hardware/libraries/NewSoftSerial ed aprire il file NewSoftSerial.cpp
  5. 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.