More comments, cleanups and added LICENSE and README.

This commit is contained in:
Johannes Findeisen 2022-11-29 21:06:25 +01:00
commit 8c4c00ae0a
5 changed files with 72 additions and 26 deletions

View file

@ -1,45 +1,63 @@
// Passkey for Arduino using the Digispark Rev.3 board.
// Copyright 2022 by Johannes Findeisen <you@hanez.org>
// Licensed under the terms of the MIT license.
// For using the Blinker library you have to install it from:
// https://github.com/MajenkoLibraries/Blinker
// Since the code is included in Passkey you easily can just copy
// Blinker/src/Blinker.cpp and Blinker/src/Blinker.h to the root of
// Passkey.
#include "Blinker.h"
#include "DigiKeyboard.h"
// the button pin
// The button pin
#define BUTTON_PIN 0
// the LED pin
// The LED pin
#define LED_PIN 1
// the pause after last button press before executing a command
// The pause after last button press before executing a command
#define PAUSE 2000
// local variables
// Local variables
unsigned long last;
unsigned int count;
// create blinker
// Create blinker object
Blinker blinker(LED_PIN);
// the list of available passwords
// the number and overall lenght of passwords depends because the memory of the digispark is very limited...
// i recommend to use a prefix you easily can remember for the password/passwords to make the passwords
// on the passkey unusable for others if you have lost your passkey. E.g.: WhatAWonderfulWorld -> then press the button.
// The list of available passwords
// The number and overall lenght of passwords depends
// because the memory of the digispark is very limited...
// I recommend to use a prefix you easily can remember
// for the password/passwords to make the passwords
// on the passkey unusable for others in case you've lost
// your passkey. E.g.: WhatAWonderfulWorld -> then press the button.
const char *passwords[] = {
"n0Emb871NAQPSIqBoldh8R7UDaNhncF7Pt60Amdo6GWdTdAPwVBi2A3KU8x8DTCRo6GWdTdXNn2wLh3SUbxVWQvFDVPtatDg", // passwords[0]
"oaxt6e3lSgflOuJ3C6Q6sUb5gvmvI5IEPFku5fqcbxJljBOUblHIT121wCu", // passwords[1]
"jUgKGBtiJ0iNN1Ok9vejrXNn2wLh3SUbxVWQvFDVPtat0OxJlKU8x8DTCRo6GWdTdAPwVBi2A3KUrTKQwjUgK", // passwords[2]
"G57dFnXsPUnRq1eC1CjrGxpCjuiJFlDti54W6wBS9Ro6GWdTdAPwVBi2A3KU8x8KGBtiJ0iNN1Ok9vejrXNn2wLhH" // etc...
// passwords[0]
"n0Emb871NAQPSIqBoldh8R7UDaNhncF7Pt60Amdo6GWdTdAPwVBi2A3KU8x8DTCRo6GWdTdXNn2wLh3SUbxVWQvFDVPtatDg",
// passwords[1]
"oaxt6e3lSgflOuJ3C6Q6sUb5gvmvI5IEPFku5fqcbxJljBOUblHIT121wCu",
// passwords[2]
"jUgKGBtiJ0iNN1Ok9vejrXNn2wLh3SUbxVWQvFDVPtat0OxJlKU8x8DTCRo6GWdTdAPwVBi2A3KUrTKQwjUgK",
// passwords[3]
"G57dFnXsPUnRq1eC1CjrGxpCjuiJFlDti54W6wBS9Ro6GWdTdAPwVBi2A3KU8x8KGBtiJ0iNN1Ok9vejrXNn2wLhH"
};
void setup() {
// set button pin to high
// Set button pin to high.
pinMode(BUTTON_PIN, INPUT);
// Set BUTTON_PIN pin to high because the button is connected
// to GND when pressed and will go LOW
digitalWrite(BUTTON_PIN, HIGH);
// set blink effect (ON, OFF) in milliseconds
// Set blink effect (ON, OFF) in milliseconds
blinker.setDelay(25, 10000);
blinker.start();
// initialize HID
// Initialize HID
DigiKeyboard.delay(0);
DigiKeyboard.sendKeyStroke(0);
// light up the LED for a second to show that passkey is ready
// Light up the LED for a second to show that passkey is ready
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, HIGH);
delay(1000);
@ -47,23 +65,23 @@ void setup() {
}
void loop() {
// start LED blink effect
// Start LED blink effect
blinker.blink();
// read button state
// Read button state
if (digitalRead(BUTTON_PIN) == LOW) {
// button is pressed
// Button is pressed
last = millis();
count++;
// wait until button is released
// Wait until button is released
while (digitalRead(BUTTON_PIN) == LOW) {
delay(1);
}
}
// wait PAUSE time before executing a command
// Wait PAUSE time before executing a command
if (count > 0 && (millis() - last) >= PAUSE) {
// the switch case is the number of button presses
// The switch case is the number of button presses
switch (count) {
case 1:
DigiKeyboard.println(passwords[0]);
@ -75,14 +93,14 @@ void loop() {
DigiKeyboard.println(passwords[2]);
break;
case 5:
// you can use print instead of println if you don't want to
// hit enter automatically after inserting the password
// You can use print instead of println if you don't want
// to hit enter automatically after inserting the password
DigiKeyboard.print(passwords[3]);
break;
default:
break;
}
// reset the counter
// Reset the counter
count = 0;
}
}