l’amico [francesco] mi ha messo in mano un attiny85 e mi ha insegnato come programmarlo e come farlo suonare. poi mi ha insegnato anche che cos’è il charlieplexing.

c’è voluto un po’ di tempo, ma alla fine ho inventato un progettino che comprendesse quanto avevo imparato.

è quasi natale, allora ho pensato di aggiungere luci e suoni a un addobbo natalizio, ne ho realizzati un po’ e li attaccherò ai pacchetti dei regali per i parenti. le forme sono diverse: una stellina, tre palline collegate, una pallina singola; il contenuto invece è sempre lo stesso.

quando si scuote la stellina parte una musichetta natalizia e si accendono i led nelle punte; ci sono 20 diverse musiche, possono essere riprodotte a caso oppure in sequenza, cambiando una riga nel codice. anche l’ordine di accensione dei led può essere impostato come fisso o casuale dal codice.

le musiche sono codificate in formato rtttl, usato per le suonerie dei vecchi cellulari; la ram dell’attiny è poca, quindi le musiche sono tenute nella memoria del programma grazie alla parola chiave PROGMEM e vengono caricate in ram appena prima di suonarle. la funzione che suona le note si occupa anche di accendere uno dei led che quindi si accendono a tempo.

i led si possono accendere casualmente o secondo una sequenza fissa attivando o disattivando la direttiva alla riga 18, #define RANDOMLED. anche le musiche possono essere scelte casualmente o secondo una sequenza fissa anche in questo caso con la direttiva alla riga 19, #define RANDOMSONG. ho scelto di usare le direttive del preprocessore perché in questo modo viene compilato solo il codice che serve mentre le altre parti vengono ignorate, risparmiando preziosa memoria sull’attiny

grazie al charlieplexing si possono montare fino a 6 led, ma si può anche scegliere di usare un led rgb collegando gli anodi ai piedi 5, 6 e 7 dell’integrato. in entrambi i casi, anche se nello schema sono indicate delle resistenze, io non le ho messe e i led non sono bruciati; il circuito è alimentato a 3 V e la corrente in uscita dall’attiny85 è limitata a 40 mA.

ho trovato qui le funzioni per leggere e riprodurre musica in formato rtttl, e qui un modo comodo per gestire i led in charlieplexing

[francesco] con lo stesso sistema ha costruito un alberello di natale da appendere alla porta dell’ufficio

il circuito comprende:

  • U1: ATtiny85
  • S1: sensore di vibrazioni
  • J1: speaker piezoelettrico
  • R1-3: resistenze 150 Ω, 250 mW
  • LED1-6: led colorati
  • BAT1: portabatteria per CR2016/CR2032

lo schema:

schema

e la breadboard:

breadboard

il codice per arduino: