Een leuk hobbyproject is om een toetsenbord na te bouwen met een kleine Arduino. Je kunt daarna je eigen game controller ontwerpen!

In dit voortbeeld gebruiken we de kleinste Arduino met Atmega32u4 chip die we kunnen vinden. Deze Atmega32u4 heeft een echte ingebouwde USB controller, en is verder een super krachtige Arduino – maar dan heel klein. De chip wordt ook wel de mini versie van de Arduino Leonardo genoemd. Het heet op Aliexpres ook wel de SS Micro.

Let op, deze SS Micro met de Atmega32u4 lijkt erg op de Digispark mini bordjes met de Attiny85, maar die heeft echt een ancere processor, mist een echte USB controller en heeft ook veel minder aansluitingen voor de knoppen. Daarom gebruiken we de SS Micro met de Atmega32u4.

In de IDE heet de SS Micro ook wel de Arduino Micro, en wellicht werkt het ook als je kiest voor Arduino Leonardo. Kies in de IDE bij Board dus voor Arduino Micro. Upload onderstaande code.

#include "Keyboard.h"

//Benoem D9 als pin voor de knop.
const int buttonPin = 9;
int previousButtonState = HIGH;

void setup() {
  //Zet de knop als input_pullup, kan je negeren, moet want anders doet hij het niet.
  pinMode(buttonPin, INPUT_PULLUP);
  Keyboard.begin();
}

void loop() {
  //Controleer knop status
  int buttonState = digitalRead(buttonPin);
  
  //Als de knop is ingedrukt en hij was dat niet, druk de knop in.
  if (buttonState == LOW && previousButtonState == HIGH) {
    // and it's currently pressed:
    Keyboard.press(97);
    delay(50);
  }
  if (buttonState == HIGH && previousButtonState == LOW) {
    //Was de knop ingedrukt en nu niet meer? laat de knop los.
    Keyboard.release(97);
    delay(50);
  }
  
  previousButtonState = buttonState;
}

Als je een draadje of knop tussen pin D9 en GND zet, heb je een manier om te typen. Iedere keer dat je verbinding maakt is dan een toetsaanslag.

Je kan ook nog een draadje of knop tussen RES en GND zetten, dan heb je ook nog een reset knop zoals je ook altijd op de normale arduino hebt.

De code in het kort:

  • De standaard arduino toetsenbord bibliotheek werkt met ascii tekens.
  • In de code hebben we gekozen voor asci nummer 97, de letter a. Dit is de tabel. https://ascii.cl/
  • Zet pin 9 als input voor de knop.
  • De code kijkt of de knop is ingedrukt, en dan typt hij ascii teken 97, de letter a.
  • Laat je de knop los, dan stopt hij met typen.

Let op:

Het is wel zo slim om altijd een knop te gebruiken om de arduino te laten typen. Als je inplaats van een knop een vast draadje zou gebruiken, dan gaat hij gelijk typen als je de Arduino in je computer steekt. Dat gaat dan heel snel, waardoor je de Arduino zelf niet meer kunt herprogrammeren.

Mocht je dat per ongeluk hebben, dan moet je de hierboven genoemde reset knop bouwen. Om dan je Arduino te herprogrammeren moet je evengoed heel snel zijn, maar het kan dan wel lukken,  omdat de arduino heel kort pauzeert als je op de reset knop drukt.