Arduino/build/shared/examples/09. USB (Leonardo only)/Keyboard/KeyboardReprogram/KeyboardReprogram.ino

94 lines
2.1 KiB
Arduino
Raw Normal View History

2012-03-05 19:30:47 -08:00
/*
Arduino Programs Blink
This sketch demonstrates the Keyboard library.
2012-03-06 06:26:01 -08:00
When you connect pin 2 to ground, it creates a new
2012-03-05 19:30:47 -08:00
window with a key combination (CTRL-N),
then types in the Blink sketch, then auto-formats the text
using another key combination (CTRL-T), then
uploads the sketch to the currently selected Arduino using
a final key combination (CTRL-U).
Circuit:
* Arduino Leonardo
2012-03-06 06:26:01 -08:00
* wire to connect D2 to ground.
2012-03-05 19:30:47 -08:00
created 5 Mar 2012
modified 29 Mar 2012
2012-03-05 19:30:47 -08:00
by Tom Igoe
This example is in the public domain
http://www.arduino.cc/en/Tutorial/KeyboardReprogram
*/
2012-03-06 06:26:01 -08:00
// use this option for OSX:
char ctrlKey = KEY_LEFT_GUI;
// use this option for Windows and Linux:
// char ctrlKey = KEY_LEFT_CTRL;
2012-03-06 06:26:01 -08:00
2012-03-05 19:30:47 -08:00
void setup() {
2012-03-06 06:26:01 -08:00
// make pin 2 an input and turn on the
2012-03-05 19:30:47 -08:00
// pullup resistor so it goes high unless
// connected to ground:
2012-03-06 06:26:01 -08:00
pinMode(2, INPUT_PULLUP);
// initialize control over the keyboard:
Keyboard.begin();
2012-03-05 19:30:47 -08:00
}
void loop() {
2012-03-06 06:26:01 -08:00
while (digitalRead(2) == HIGH) {
// do nothing until pin 2 goes low
2012-03-05 19:30:47 -08:00
delay(500);
}
2012-03-06 06:26:01 -08:00
delay(1000);
2012-03-05 19:30:47 -08:00
// new document:
2012-03-06 06:26:01 -08:00
Keyboard.press(ctrlKey);
Keyboard.press('n');
delay(100);
2012-03-05 19:30:47 -08:00
Keyboard.releaseAll();
// wait for new window to open:
delay(1000);
2012-03-06 06:26:01 -08:00
2012-03-05 19:30:47 -08:00
// Type out "blink":
Keyboard.println("void setup() {");
Keyboard.println("pinMode(13, OUTPUT);");
Keyboard.println("}");
Keyboard.println();
Keyboard.println("void loop() {");
Keyboard.println("digitalWrite(13, HIGH);");
Keyboard.print("delay(3000);");
// 3000 ms is too long. Delete it:
for (int keystrokes=0; keystrokes < 6; keystrokes++) {
delay(500);
Keyboard.write(KEY_BACKSPACE);
2012-03-05 19:30:47 -08:00
}
// make it 1000 instead:
Keyboard.println("1000);");
Keyboard.println("digitalWrite(13, LOW);");
Keyboard.println("delay(1000);");
2012-03-06 06:26:01 -08:00
Keyboard.println("}");
2012-03-05 19:30:47 -08:00
// tidy up:
2012-03-06 06:26:01 -08:00
Keyboard.press(ctrlKey);
Keyboard.press('t');
delay(100);
2012-03-05 19:30:47 -08:00
Keyboard.releaseAll();
delay(3000);
// upload code:
2012-03-06 06:26:01 -08:00
Keyboard.press(ctrlKey);
Keyboard.press('u');
delay(100);
2012-03-05 19:30:47 -08:00
Keyboard.releaseAll();
// wait for the sweet oblivion of reprogramming:
while(true);
}
2012-03-06 06:26:01 -08:00