top of page
screenshot1.png
foto2.jpg
foto1.jpg

Quando sei talmente tanto preso dallo scrivere....

giphy.gif

...che nemmeno guardi lo schermo...

carrey1.gif

...ma poi a un certo punto alzi gli occhi, e vedi che hAI SCRITTO TRE RIGHE IN MAIUSCOLO PERCHÈ 10 "A" FA HAI PREMUTO PER SBAGLIO IL CAPSLOCK...

...cosa fai?

Il dsperato

Il disperato

irascibile.gif

L'irascibile

rassegnato.gif

Il rassegnato

definitivo.gif

Il definitivo

subdolo.gif

Il subdolo

Ecco una soluzione migliore: un "amplificatore di capslock"!

Per qualche motivo i led della tastiera diventano ogni anno più piccolo e invisibili. Ecco quindi un modo per fare un indicatore di dimensioni,  colore e forma a piacere. Aggiungendo un relè volendo sarebbe possibile anche pilotare carichi pesanti: vuoi far partire la lavatrice se per sbaglio premi il caps lock? Accendere la sirena dell'antifurto? Accendere le luci di tutta casa?--- ;-)

​

Il dispositivo utilizzato per realizzare il tutto è una semplice Arduino Pro Micro; la particolarita' di questa scheda e' che e' equipaggiata con lo stesso microcontrollore della ben più grande Arduino Mega, un Atmega32u4 alimentato a 5V e funzionante a 16 MHx. Tipo di controllore, tensione di alimentazione e frequenza di lavoro sono la chiave di tutto, perchè solo questa combinazione permette ad una Arduino di emulare una tastiera USB (non va bene l'Atmel328, non va bene l'Atmega32u4 se l'alimentazione è a 3.3V, non va bene una arduino a 8 MHz).
 

promicro.jpg

Ma cosa c'entra l'emulazione della tastiera, visto che Il dispositivo, per conoscere lo stato del CAPS LOCK, non deve inviare dati ma leggere dati; il punto è che le tastiere non sono semplici dispositivi di input.... ma veri e proprio dispositivi di I/O, cioè possono sia inviare informazioni al PC, che ricevere informazioni dal PC! Lo si può verificare facilmente: se si collegano a un PC due tastiere, premendo il tasto CAPS LOCK su una... magicamente si accenderà anche sull'altra!
Ecco allora il trucco: in questo progetto la Pro Micro viene sì programmata per emulare una tastiera, ma solo per leggere dati: lo stato dei 3 led CAPS LOCK, NUM LOCK e SCROL LOCK.


Questo è il semplice codice che permette di controllare lo stato del CAPS LOCK (o BLOCCA MAIUSCOLE, o IL TASTO COL LUCCHETTO o QUELLO STUPIDO TASTO LI' A SINISTRA):

​

if (BootKeyboard.getLeds() & LED_CAPS_LOCK) {

   ..... .....

}

​

Per poter funzionare, lo sketch ha bisogno di quest'unica libreria: 

​

#include "HID-Project.h"


La libreria fa parte del progetto "HID" di Nicohood, ed è talmente sofisticata da permettere in realtà di usare come emulatore di tastiera anche una Arduino Uno, benchè non possieda il microcontrollore giusto: è possibile farlo "craccando" la Arduino stessa, facendo in modo che il microcontrollore "ufficiale" vada a riprogrammare il piccolo microcontrollore scondario che fa da interfaccia USB: tramite opportuni quanto semplici collegamenti temporanei, e un opportuno sketch, non solo il secondo MCU può essere riprogrammato per funzionare da tastiera... ma può persino contenere un secondo (piccolo) sketch!

nicohood.jpg

Se la Arduino Uno può andare bene per i primi test, per il progetto finale risulta un po' ingombrante, motivo per cui è stata usata direttamente la Pro Micro.

Il progetto base consiste semplicemente della ProMicro stessa collegata a uno o più led; in teoria non è necessaria nemmeno la resistenza di limitazione, visto che il led del CAPSLOCK in genere resta acceso per pochi istanti, o al massimo pochi secondi.

striscia.png

Ma se nonostante tutto continuate comunque a scrivere righe su righe tutte maiuscole, ricordate sempre che esiste la combinazione di tasti SHIFT+F3 (ma solo in Word e Outlook).

Lo sketch completo

#include "HID-Project.h"

const int pinLed = 17;//LED_BUILTIN;
const int pinButton = 2;

void setup() {
  pinMode(pinLed, OUTPUT);
  pinMode(3, OUTPUT);

  // Sends a clean report to the host. This is important on any Arduino type.
  BootKeyboard.begin();
}


void loop() {
  digitalWrite(pinLed, HIGH);
  TXLED1;
  if (BootKeyboard.getLeds() & LED_CAPS_LOCK) {
    digitalWrite(3, HIGH);
  } else {
    digitalWrite(3, LOW);
  }

}

 

Per il prototipo è stata usata una striscia LED a 12V, "tagluzzata" e ricablata in modo che tutti i LED fossero in parallelo anzichè in gruppi di 3, in modo da poter alimentare tutto il parallelo direttamente coi 5V della Arduino Pro Micro.

​

Chiaramente poi l'idea può essere estesa: aggiungendo un transistor che permetta di erogare correnti maggiori prelevante direttamente dai 5V di alimentazione invece che da un pin (che può erogare al massimo 40 mA), si può pilotare un'intera striscia led (solo quelle alimentate tramite USB, cioè 5V, non quelle a 12V), o un buzzer piezoelettrico, o anche un relè di potenza che faccia accendere una lampadina da 200W... ;-) Qualunque cosa pur di non scrivere 10 righe tutte maiuscole! ;-)

foto2.jpg
bottom of page