Yes, this post is actually titled “Teensy++ 2.0 LED Pin” because it’s really specific. This is the solution to a problem that took me a while to fix. Actually, it didn’t take a long time to fix, it just took a long time for me to figure it out and implement it. (Maybe it did take a long time for me to fix…)
Anyway, when using most pins on a Teensy++ 2.0 (and probably every other Teensy) with Arduino code, you may have an issue using the LED pin as an input, because it functions differently than all the other pins. You might say “Hey, just use another pin!” but the project I did required every single pin on the Teensy++ 2.0. (Yes, all 46 pins!)
The code is below. The LED pin is sort of treated opposite of how other pins are treated. You short it with +5v instead of ground, and swap the risingEdge and fallingEdge typically used with the bounce library.
// LEDPinButton #include <Bounce.h> Bounce buttonD6 = Bounce(6, 80); // LED Pin - tie to +5v instead of GND Bounce buttonD7 = Bounce(7, 80); // Normal Pin - tie to GND void setup() { pinMode(PIN_D6, INPUT); // LED Pin - use INPUT not INPUT_PULLUP pinMode(PIN_D7, INPUT_PULLUP); } void loop() { buttonD6.update(); buttonD7.update(); // D6 - LED Pin - tie to +5v instead of GND // use risingEdge instead of fallingEdge // a if (buttonD6.risingEdge()) { Keyboard.set_key1(KEY_A); Keyboard.send_now(); } if (buttonD6.fallingEdge()) { Keyboard.set_key1(0); Keyboard.send_now(); } // D7 - Normal Pin - tie to GND // b if (buttonD7.fallingEdge()) { Keyboard.set_key1(KEY_B); Keyboard.send_now(); } if (buttonD7.risingEdge()) { Keyboard.set_key1(0); Keyboard.send_now(); } }
You can also grab this code from github.