Possiamo trasformare la Digispark ATtiny85 in una tastiera da PC

Andiamo a vedere come trasformare la nostra Digispark ATtiny85 in una tastiera da PC, adoperandola per scrivere del testo su editor testuale. Abbiamo già visto come programmare la dev-board sulla IDE di Arduino a questo LINK.

Seppur sia carente del monitor seriale, possiamo adoperare alcune strategie per stampare i risultati che otteniamo da eventuali sensori connessi, o programmare pulsanti da connettere alla dev-board. Potete acquistarlo su Amazon a circa 7,99€ [LINK], su Aliexpress a circa 3€ [LINK] o su Banggood a circa 5,50€ [LINK].

Codice

Iniziamo come sempre includendo una libreria, già inclusa nella IDE di Arduino, dopo che l’avrete configurata correttamente per la programmazione della Digispark. La libreria in questione è la DigiKeyboard.h, necessaria per far comunicare la scheda e il computer. Lo sketch che stiamo usando potete scaricarlo a questo LINK.


#include "DigiKeyboard.h"

Lasciamo pure vuoto il VOID SETUP, infatti non sarà necessario programmare nessuna impostazione, e spostiamoci direttamente nel VOID LOOP. La prima riga di codice che andiamo a comporre non è necessaria sui sistemi più recenti, anche se la consigliamo vivamente. Essa eviterà che il primo carattere venga perso successivamente al delay che imposteremo.


DigiKeyboard.sendKeyStroke(0);

Il passo successivo sarà stampare il testo o il messaggio.


DigiKeyboard.println("Hello World!");

Nel nostro esempio, andiamo anche ad inserire il carattere ENTER (40), per lasciare una riga bianca. La funzione sendKeyStroke() corrisponde alla pressione del tasto con immediato rilascio.


DigiKeyboard.sendKeyStroke(40);

Infine, imposto iL delay. Il delay che useremo non è quello che adoperiamo normalmente in Arduino, ma è quello specifico per la Digispark. Tale delay servirà a comunicare al computer l’attesa, senza che esso presuma che la dev-board non sia più connessa.


DigiKeyboard.delay(1000);

Carichiamo lo sketch e apriamo un qualsiasi editor testuale. Nel nostro caso abbiamo aperto il blocco note di Windows, con il seguente risultato.

tastiera

Possiamo anche adoperare un’altra funzione per scrivere, ossia la sendKeyPress(). La funzione in questione equivale a pressione del tasto senza rilascio. In parole povere, sarà come tenere premuto il tasto senza lasciarlo. Potete scaricare lo sketch a questo LINK.


#include "DigiKeyboard.h"

void setup() {

}

void loop() {
DigiKeyboard.sendKeyStroke(0);

DigiKeyboard.sendKeyPress(KEY_A);

DigiKeyboard.delay(2000);

DigiKeyboard.sendKeyStroke(KEY_ENTER);

DigiKeyboard.delay(1000);
}

In questo esempio, la dev-board “terrà” premuta la lettera a per 2 secondi, poi la rilascerà dopo il delay e premerà il tasto Invio. Aprendo l’editor testuale, otterremo quanto segue.

Tastiera

Un ultimo esempio che vi proponiamo riguarda la combinazione di tasti. Scriviamo il programma per chiudere i programmi aperti e spegnere il PC.  Useremo la funzione sendKeyStroke() al cui interno metteremo il tasto F4(KEY_F4) e il tasto Alt di sinistra (MOD_ALT_LEFT), separati da una virgola. Entrambi i tasti verranno così premuti in contemporanea.


#include "DigiKeyboard.h"

void setup() {

}

void loop() {
DigiKeyboard.sendKeyStroke(KEY_F4, MOD_ALT_LEFT);

DigiKeyboard.delay(1000);

DigiKeyboard.sendKeyStroke(KEY_ENTER);

DigiKeyboard.delay(1000);
}

Caricato lo sketch [LINK], vedremo il nostro computer spegnersi. Una volta avviato lo spegnimento, estraete la dev-board.