Stap 7: Emuleert een toetsenbord
We weten nu hoe flashen van de firmware, dus nu moeten we ervoor zorgen dat handelen als een toetsenbord. Dus is het eerste wat dat we moeten doen het schrijven van een eenvoudig programma voor de Arduino die toetsaanslagen naar de seriële console verzendt. Hoe we een toetsaanslag doorgeeft? Met behulp van deze lijst van HID toetsenbord codes om het teken dat u wilt verzenden. Hieronder is de code van de steekproef die door Kevin DeMarco:
/* Arduino USB HID Keyboard Demo * Random Key/Random Delay */ uint8_t buf[8] = { 0 }; /* Keyboard report buffer */ void setup() { Serial.begin(9600); randomSeed(analogRead(0)); delay(200); } void loop() { delay(5000); buf[0] = 0; buf[2] = 0x15; // letter R Serial.write(buf, 8); releaseKey(); } void releaseKey() { buf[0] = 0; buf[2] = 0; Serial.write(buf, 8); // Release key }
Deze code op fouten controleren en vervolgens uploaden naar de Arduino. Nu dat alles wordt overgelaten aan doen is volg de zelfde stappen zoals in stap 2 en 3 voor het uploaden van de firmware van de Arduino toetsenbord. Kortom, hier zijn de
- Haal de Arduino vanaf de computer
- Plaats de jumper van de vaste schijf op de grond en Reset pinnen.
- Sluit de Arduino terug op de computer, zodat het bevoegdheden op
- De jumper van de vaste schijf verwijderen
- In uw computer terminal, voeren deze commando's voor het uploaden van de Arduino toetsenbord-firmware
sudo dfu-programmer atmega16u2 erase sudo dfu-programmer atmega16u2 flash --debug 1 Arduino-keyboard-0.3.hex sudo dfu-programmer atmega16u2 reset sudo dfu-programmer atmega16u2 flash--debug 1 Arduino-toetsenbord-0.3.hex #include <Brain.h> Brain brain(Serial); long interval = 500; long previousMillis = 0; int medValue; uint8_t buf[8] = { 0 }; void setup() { Serial.begin(9600); randomSeed(analogRead(0)); delay(200); } void loop() { if (brain.update()) { Serial.println(brain.readCSV()); medValue = brain.readMeditation(); } if(brain.readSignalQuality() == 0) { if (medValue < 50) { buf[0] = 0; buf[2] = 0x17; // letter T Serial.write(buf, 8); delay(40); releaseKey(); buf[0] = 0; buf[2] = 0x0C; // letter I Serial.write(buf, 8); delay(40); releaseKey(); buf[0] = 0; buf[2] = 0x11; // letter N Serial.write(buf, 8); delay(40); releaseKey(); buf[0] = 0; buf[2] = 0x0E; // letter K Serial.write(buf, 8); delay(40); releaseKey(); buf[0] = 0; buf[2] = 0x08; // letter E Serial.write(buf, 8); delay(40); releaseKey(); buf[0] = 0; buf[2] = 0x15; // letter R Serial.write(buf, 8); delay(40); releaseKey(); buf[0] = 0; buf[2] = 0x11; // letter N Serial.write(buf, 8); delay(40); releaseKey(); buf[0] = 0; buf[2] = 0x18; // letter U Serial.write(buf, 8); delay(40); releaseKey(); buf[0] = 0; buf[2] = 0x17; // letter T Serial.write(buf, 8); delay(40); releaseKey(); buf[0] = 0; buf[2] = 0x28; // enter Serial.write(buf, 8); delay(40); releaseKey(); } } } void releaseKey() { buf[0] = 0; buf[2] = 0; Serial.write(buf, 8); // Release key }
- Macht cyclus de Arduino door het los te koppelen en weer aan te sluiten.
Met je Arduino verbonden, open een tekst editor, en ziet u de letter "R" wordt getypt (of welke brief die u hebt gekozen). U hebt met succes een toetsenbord met uw Arduino geëmuleerd!