Возрастное ограничение 12+

Простая компактная вводилка паролей на контроллере atmega 32u4 (arduino pro micro) версия 2s

Описание

#define PassMax 7
#define lp 7 //led pin
#include "Keyboard.h"
#include "GyverButton.h"
#include
GButton butt1(3);
GButton butt2(15);
uint8_t pn = 0, n = 1, p = 0, pm = PassMax, c = 0;
uint32_t Now = 0;
bool flag1 = 0, flagE = 0, FS = 1;
String P[PassMax+1][3] = {
{"login", "password", "comen"},
{"FireSec", "thch", "rubezh pc login"},
{"adm", "thr", "firesec administrator login"},
{"admin", "txhh", "rusguard pc login"},
{"Admin", "y5d", "rusguard Admin login"},
{"RVI", "tfh", "RVI pc login"},
{"admin", "ht", "r-operator login"},
{"admin", "cgth", "camera login"},
};
void setup() {
butt1.setTimeout(888);
butt2.setTimeout(888);
pinMode(lp, OUTPUT);
EEPROM.get(0, pn);
if(pn ﹥ 0) flag1 = 1;
delay (555);
digitalWrite(lp, HIGH);
Now = millis();
}
void h() {
Keyboard.write(KEY_RETURN);
delay (33);
Keyboard.print("(b1.Single ++) (b2.Single --)");
delay (33);
Keyboard.write(KEY_RETURN);
Keyboard.print("(b1.Hold Login) (b2.Hold Password)");
delay (33);
Keyboard.write(KEY_RETURN);
Keyboard.print("(b1.Double coment) (b2.Double help)");
delay (33);
Keyboard.write(KEY_RETURN);
Keyboard.print("(b1.Triple ChangeLanguage) (b2.Triple EEPROM.reset.PN=0)");
delay (33);
Keyboard.write(KEY_RETURN);
for (int i = 1; i ﹤= pm; i++) {
delay (33);
Keyboard.write(KEY_RETURN);
Keyboard.print(i);
Keyboard.write(' ');
Keyboard.print(P[i][2]);
}
Now = millis();
}
void le() {
Keyboard.print(P[pn][0]);
delay (99);
Keyboard.write (KEY_TAB);
digitalWrite(lp, HIGH);
EEPROM.put(0, pn);
delay (999);
digitalWrite(lp, LOW);
Now = millis();
}
void pe() {
Keyboard.print(P[pn][1]);
delay (99);
Keyboard.write(KEY_RETURN);
digitalWrite(lp, HIGH);
EEPROM.put(0, pn);
delay (999);
digitalWrite(lp, LOW);
Now = millis();
}
void ce() {
Keyboard.print(P[pn][2]);
digitalWrite(lp, HIGH);
delay (999);
digitalWrite(lp, LOW);
Now = millis();
}
void cl() {
Keyboard.press (KEY_LEFT_CTRL);
delay (99);
Keyboard.write (KEY_LEFT_SHIFT);
delay (99);
Keyboard.write (KEY_LEFT_ALT);
Keyboard.release (KEY_LEFT_CTRL);
Now = millis();
}
void er() {
pn = 0;
EEPROM.put(0, 0);
Now = millis();
}
void loop() {
if (millis() - Now ﹥ 300000) {
FS = 1;
c = 0;
digitalWrite(lp, HIGH);
}
while(FS) {
// проверка доступа
}
butt1.tick();
butt2.tick();
if (butt1.isSingle()) {
flag1 = 1;
if (pn == pm) pn = 1;
else pn++;
Now = millis();
while (millis() - Now ﹤ 444 && flag1) {
butt1.tick();
butt2.tick();
if (butt1.isSingle()) {
if (pn == pm) pn =1;
else pn++;
Now = millis();
}
if (butt2.isSingle()) {
if (pn == 1) pn =pm;
else pn--;
Now = millis();
}
}
}
if (butt2.isSingle()) {
flag1 = 1;
if (pn == 1) pn = pm;
else pn--;
Now = millis();
while (millis() - Now ﹤ 444 && flag1) {
butt1.tick();
butt2.tick();
if (butt1.isSingle()) {
if (pn == pm) pn =1;
else pn++;
Now = millis();
}
if (butt2.isSingle()) {
if (pn == 1) pn =pm;
else pn--;
Now = millis();
}
}
}
n = 1;
while (n ﹤= pn && flag1) {
butt1.tick();
butt2.tick();
flagE = 0;
digitalWrite(lp, HIGH);
Now = millis(); //пауза
while (millis() - Now ﹤ 22) {
butt1.tick();
butt2.tick();
}
digitalWrite(lp, LOW);
if(flagE) break;
Now = millis(); //пауза
while (millis() - Now ﹤ 444){
butt1.tick();
butt2.tick();
if (butt1.isSingle()) {
if (pn == pm) pn =1;
else pn++;
flagE =1;
break;
}
if (butt2.isSingle()) {
if (pn == 1) pn = pm;
else pn--;
flagE = 1;
break;
}
if (butt1.isHold()) {
le();
flagE = 1;
flag1 = 0;
break;
}
if (butt2.isHold()) {
pe();
flagE = 1;
flag1 = 0;
break;
}
}
if(flagE) break;
n++;
if (butt1.isSingle()) {
if (pn == pm) pn = 1;
else pn++;
break;
}
if (butt2.isSingle()) {
if (pn == 1) pn = pm;
else pn++;
break;
}
if (butt1.isHold()) {
flag1 = 0;
le();
break;
}
if (butt2.isHold()) {
flag1 = 0;
pe();
break;
}
if (butt1.isDouble()) {
ce();
flag1 = 0;
break;
}
if (butt2.isDouble()) {
h();
flag1 = 0;
break;
}
if (butt1.isTriple()) {
cl();
flag1 = 0;
break;
}
if (butt2.isTriple()) {
h();
flag1 = 0;
break;
}
if(n ﹥ pn) flag1 = 0;
}
if (butt1.isHold()) le();
if (butt2.isHold()) pe();
if (butt1.isDouble()) ce();
if (butt2.isDouble()) h();
if (butt1.isTriple()) cl();
if (butt2.isTriple()) er();
}

Автор

privetvolku
privetvolku