Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h>
- #include <StandardCplusplus.h>
- #include <string>
- #include <vector>
- #include <LiquidCrystal.h>
- const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2, analogInPin = A1, menubuts = A0, speaker = 7;;
- LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
- int sensorValue = 0, start, sensorValue2;
- using namespace std;
- struct user {
- string usrname;
- int password;
- };
- struct mlog {
- string usrname;
- int t;
- };
- vector<user> users(2);
- vector<mlog> logs;
- class keyboard {
- public:
- int getnum(int n) {
- if(n <= 60) return 0;
- if(n <= 120) return 7;
- if(n <= 140) return 8;
- if(n <= 160) return 9;
- if(n <= 180) return 6;
- if(n <= 210) return 5;
- if(n <= 260) return 4;
- if(n <= 350) return 1;
- if(n <= 520) return 2;
- if(n <= 1024) return 3;
- }
- int mpress(int n) {
- //Serial.println(n);
- if(n < 210) return 0;
- if(n < 310) return 1;
- if(n < 370) return 2;
- if(n < 1000) return 3;
- return 4;
- }
- string getname() {
- string a = "", t = "@adgjmptw";
- int n, l = 0;
- while(1) {
- sensorValue = analogRead(analogInPin);
- sensorValue2 = mpress(analogRead(menubuts));
- if(sensorValue2 == 4 && a != "") return a;
- if(sensorValue2 == 1) return "";
- if(sensorValue2 == 3) l = 0;
- n = getnum(sensorValue);
- if(n != 0) {
- if(n == 1) {
- if(a.size() != 0) a.pop_back();
- delay(1000);
- }
- else if(n == l) {
- a.back()++;
- }
- else a.push_back(t[n-1]);
- l = n;
- n = 0;
- delay(500);
- lcd.clear();
- lcd.setCursor(0,0);
- lcd.print("enter name");
- lcd.setCursor(0,1);
- lcd.print(a.c_str());
- }
- ///delay(300);
- }
- }
- };
- keyboard board;
- class menu {
- public:
- int state = 1;
- void operate(int n){
- if (n == 0) return;
- if (n == 3) {
- state--;
- if( state == 0) state = 6;
- }
- if(n == 2) {
- state++;
- if(state == 7) state = 1;
- }
- if(n == 4) {
- if (state == 1) {
- login();
- }
- if (state == 2) {
- lcd.clear();
- lcd.print("enter name");
- lcd.setCursor(0,1);
- delay(1000);
- string namem = board.getname();
- if(namem == "") {
- mprint();
- return;
- }
- int pass = getcode();
- user tmp;
- tmp.usrname = namem;
- tmp.password = pass;
- users.push_back(tmp);
- state = 1;
- //Serial.println(namem.c_str());
- }
- if (state == 3) {
- lcd.clear();
- lcd.print("enter password");
- lcd.setCursor(0,1);
- int pass = getcode(), i;
- for(i=0;i<users.size();i++) {
- if(users[i].password == pass) {
- users.erase(users.begin()+i);
- state = 1;
- }
- }
- }
- if (state == 4) {
- string tmp = "";
- for(int i = 0; i < users.size(); i++) {
- lcd.clear();
- lcd.print(tmp.c_str());
- lcd.setCursor(0, 1);
- lcd.print(users[i].usrname.c_str());
- tmp = users[i].usrname;
- delay(1000);
- }
- for(int i = 0; i < 2; i++) {
- lcd.clear();
- lcd.print(tmp.c_str());
- lcd.setCursor(0, 1);
- tmp = "";
- delay(1000);
- }
- }
- if (state == 5) {
- for(int i = 0; i < logs.size(); i++) {
- lcd.clear();
- lcd.print(logs[i].usrname.c_str());
- lcd.setCursor(0, 1);
- lcd.print(logs[i].t);
- delay(1000);
- }
- delay(1000);
- }
- if (state == 6) {
- lcd.clear();
- digitalWrite(6, HIGH);
- for(int i = 0; i < 8; i++) {
- lcd.setCursor(i, 0);
- lcd.print("\\");
- lcd.setCursor(i, 1);
- lcd.print("\\");
- lcd.setCursor(15-i, 0);
- lcd.print("\\");
- lcd.setCursor(15-i, 1);
- lcd.print("\\");
- delay(100);
- }
- delay(1500);
- lcd.clear();
- lcd.setCursor(0, 0);
- for(int i = 0; i < 8; i++) {
- lcd.print("made by ");
- delay(200);
- }
- delay(1500);
- lcd.clear();
- lcd.setCursor(2, 0);
- lcd.print("Ivan Shoitov");
- lcd.setCursor(2, 1);
- lcd.print("Ilia Shuckin");
- delay(2000);
- for(int i = 0; i < 8; i++) {
- lcd.setCursor(i, 0);
- lcd.print("@");
- lcd.setCursor(i, 1);
- lcd.print("@");
- lcd.setCursor(15-i, 0);
- lcd.print("@");
- lcd.setCursor(15-i, 1);
- lcd.print("@");
- delay(100);
- }
- for(int i = 0; i < 8; i++) {
- lcd.setCursor(i, 0);
- lcd.print(" ");
- lcd.setCursor(i, 1);
- lcd.print(" ");
- lcd.setCursor(15-i, 0);
- lcd.print(" ");
- lcd.setCursor(15-i, 1);
- lcd.print(" ");
- delay(100);
- }
- delay(1500);
- digitalWrite(6, LOW);
- }
- }
- mprint();
- }
- void mprint() {
- //Serial.println(state);
- lcd.clear();
- if(state == 1) {
- lcd.print("Login");
- }
- if(state == 2) {
- lcd.print("Add user");
- }
- if(state == 3) {
- lcd.print("Del user");
- }
- if(state == 4) {
- lcd.print("Users list");
- }
- if(state == 5) {
- lcd.print("Log");
- }
- if(state == 6) {
- lcd.print("About");
- }
- }
- void login(){
- lcd.clear();
- lcd.print("enter password");
- int i, pass, e;
- long long t;
- while(1) {
- pass = getcode();
- Serial.println(pass);
- if(pass == -1) return;
- for(i=0;i<users.size(); i++) {
- if(users[i].password == pass) {
- lcd.clear();
- lcd.print("Welcome!");
- lcd.setCursor(0, 1);
- lcd.print(users[i].usrname.c_str());
- tone (speaker, 500);
- delay(300);
- tone(speaker, 750);
- delay(300);
- tone(speaker, 1000);
- delay(500);
- noTone(speaker);
- t = millis();
- while(1){
- sensorValue2 = board.mpress(analogRead(menubuts));
- if(sensorValue2 == 1) {
- mlog tmp;
- tmp.t = (millis()/1000-t/1000);
- tmp.usrname = users[i].usrname;
- logs.push_back(tmp);
- if(logs.size()>10) {
- logs.erase(logs.begin());
- }
- return;
- }
- digitalWrite(LED_BUILTIN, HIGH);
- delay(500);
- digitalWrite(LED_BUILTIN, LOW);
- delay(500);
- }
- }
- }
- lcd.setCursor(0, 1);
- lcd.print("ERROR");
- tone(speaker, 100);
- delay(500);
- noTone(speaker);
- delay(500);
- }
- }
- int getcode(){
- lcd.clear();
- lcd.print("enter password");
- lcd.setCursor(0,1);
- int num = 0;
- while(1) {
- int foo, sensorValue2;
- sensorValue = analogRead(analogInPin);
- sensorValue2 = board.mpress(analogRead(menubuts));
- delay(100);
- if(sensorValue2 == 1) {
- Serial.println(sensorValue2);
- delay(100);
- state = 1;
- mprint();
- return -1;
- }
- foo = board.getnum(sensorValue);
- if(foo == 0) continue;
- num *= 10;
- num += foo;
- Serial.println(num);
- lcd.setCursor(0, 1);
- lcd.print(num);
- delay(500);
- if(num > 100) return(num);
- }
- }
- };
- menu menu1;
- void setup() {
- users[0].usrname = "admin";
- users[0].password = 123;
- users[1].usrname = "Fedor";
- users[1].password = 752;
- //
- pinMode(LED_BUILTIN, OUTPUT);
- pinMode(8, OUTPUT);
- pinMode(6, OUTPUT);
- lcd.begin(16, 2);
- //Serial.begin(9600);
- for(int i = 0; i < 8; i++) {
- lcd.setCursor(i, 0);
- lcd.print("0");
- lcd.setCursor(i, 1);
- lcd.print("0");
- lcd.setCursor(15-i, 0);
- lcd.print("0");
- lcd.setCursor(15-i, 1);
- lcd.print("0");
- delay(100);
- }
- for(int i = 7; i >= 0; i--) {
- lcd.setCursor(i, 0);
- lcd.print("1");
- lcd.setCursor(i, 1);
- lcd.print("1");
- lcd.setCursor(15-i, 0);
- lcd.print("1");
- lcd.setCursor(15-i, 1);
- lcd.print("1");
- delay(100);
- }
- for(int i = 0; i < 8; i++) {
- lcd.setCursor(i, 0);
- lcd.print(" ");
- lcd.setCursor(i, 1);
- lcd.print(" ");
- lcd.setCursor(15-i, 0);
- lcd.print(" ");
- lcd.setCursor(15-i, 1);
- lcd.print(" ");
- delay(50);
- }
- delay(100);
- menu1.mprint();
- }
- void loop() {
- sensorValue = analogRead(menubuts);
- menu1.operate(board.mpress(sensorValue));
- if(sensorValue != 0) delay(1000);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement