Код (C++): unsigned int del = 0; #define ledred 5 #define ledrgr A2 #define ledye A3 //КЛААВИАТУРА #include <Password.h> #include <Keypad.h> #include "GyverButton.h" //пароль Password password = Password("1234"); // здесь задаём пароль int dlugosc = 4; // количество цифр в пароле int ilosc; // number of clicks //клавиши const byte ROWS = 4; // строки const byte COLS = 4; // столбцы char keys[ROWS][COLS] = { {'1','2','3','A'}, {'4','5','6','B'}, {'7','8','9','C'}, {'*','0','#','D'} }; byte rowPins[ROWS] = {13, 12, 11, 10}; byte colPins[COLS] = {9, 8, 7, 6}; Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); //КЛАВИАТУРА //СЧЕТЧИК ВРЕМЕНИ int digit = 0; //номер цифры byte digits[10] = // чифры в двоичнмом бинарном коде { B01111110,B00110000,B01101101, B01111001,B00110011,B01011011, B11011111,B01110000,B01111111,B11111011 }; //СЧЕТЧИК ВРЕМЕНИ //У.З. ДАТЧИК long duration, cm; // переменная длины //У.З. ДАТЧИК void setup() { Serial.begin(9600); pinMode(ledred,OUTPUT); //У.З. ДАТЧИК pinMode(A0,OUTPUT); pinMode(A1,INPUT); //У.З. ДАТЧИК //КЛАВИАТУРА keypad.addEventListener(keypadEvent); //КЛАВИАТУРА //СЧЕТЧИК for(int pin = 2; pin <= 4; pin++) { pinMode(pin,OUTPUT); digitalWrite(pin,0); } //СЧЕТЧИК } void loop() { keypad.getKey(); digitalWrite(A0,0); delayMicroseconds(2); digitalWrite(A0,1); delayMicroseconds(15); digitalWrite(A0,0); if(millis() - del > 50){ del = millis(); duration = pulseIn(A1,1); cm = duration/29/2; } Serial.println(cm); if(cm < 10 ){ timer(); } if(digit == 9){ digitalWrite(ledye,1); digitalWrite(2,0); shiftOut(3,4,LSBFIRST,B11111111); digitalWrite(2,1); } } //СЧЕТЧИК void timer(){ if(millis() - del > 500){ del = millis(); digitalWrite(2,0); ++digit; shiftOut(3,4, LSBFIRST, digits[digit]); digitalWrite(2,1); } } //СЧЕТЧИК void checkPassword() { if (password.evaluate()) { ilosc = 0; Serial.println("Success"); Serial.print(" « OPEN »"); } else { ilosc = 0; password.reset(); digitalWrite(ledred,1); Serial.println("NO"); if(millis() - del > 2000){ del = millis(); Serial.print(" « CLOSE »"); } Serial.print(" :Welcome:"); Serial.print("PLEASE ENTER PIN"); } } //КЛАВИАТУРА void keypadEvent(KeypadEvent eKey) { switch (keypad.getState()) { case PRESSED: Serial.print("Pressed: "); Serial.println(eKey); switch (eKey) { { case '*': password.reset(); default: ilosc=ilosc++; password.append(eKey); } Serial.println(ilosc); if(millis() - del > 250){ del = millis(); if(ilosc == 1) { Serial.print(" < PIN >"); Serial.print("*_"); } if(ilosc == 2) { Serial.print(" < PIN >"); Serial.print("**_"); } if(ilosc == 3) { Serial.print(" < PIN >"); Serial.print("***_"); } if(ilosc == 4) { Serial.print(" < PIN >"); Serial.print("****_"); } if(ilosc == 5) { Serial.print(" < PIN >"); Serial.print("*****_"); } if(ilosc == 6) { Serial.print(" < PIN >"); Serial.print("******_"); } if(ilosc == 7) { Serial.print(" < PIN >"); Serial.print("*******_"); } if(ilosc == 8) { Serial.print(" < PIN >"); Serial.print("********"); } if(ilosc == dlugosc) { checkPassword(); ilosc = 0; } } } } } \ выводит только нажатые клавиши а должен так