Advertisement
Guest User

Untitled

a guest
Apr 21st, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 10.98 KB | None | 0 0
  1.  #include <LiquidCrystal.h>
  2. #include <StandardCplusplus.h>
  3. #include <string>
  4. #include <vector>
  5. #include <LiquidCrystal.h>
  6.  
  7. const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2, analogInPin = A1, menubuts = A0, speaker = 7;;
  8. LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
  9.  
  10. int sensorValue = 0, start, sensorValue2;
  11.  
  12. using namespace std;
  13.  
  14. struct user {
  15.     string usrname;
  16.     int password;
  17. };
  18.  
  19. struct mlog {
  20.     string usrname;
  21.     int t;
  22. };
  23.  
  24. vector<user> users(2);
  25. vector<mlog> logs;
  26.  
  27. class keyboard {
  28.     public:
  29.       int getnum(int n) {
  30.           if(n <= 60) return 0;
  31.           if(n <= 120) return 7;
  32.           if(n <= 140) return 8;
  33.           if(n <= 160) return 9;
  34.           if(n <= 180) return 6;
  35.           if(n <= 210) return 5;
  36.           if(n <= 260) return 4;
  37.           if(n <= 350) return 1;
  38.           if(n <= 520) return 2;
  39.           if(n <= 1024) return 3;
  40.       }
  41.       int mpress(int n) {
  42.           //Serial.println(n);
  43.           if(n < 210) return 0;
  44.           if(n < 310) return 1;
  45.           if(n < 370) return 2;
  46.           if(n < 1000) return 3;
  47.           return 4;
  48.       }
  49.       string getname() {
  50.         string a = "", t = "@adgjmptw";
  51.         int n, l = 0;
  52.         while(1) {
  53.           sensorValue = analogRead(analogInPin);
  54.           sensorValue2 = mpress(analogRead(menubuts));
  55.           if(sensorValue2 == 4 && a != "") return a;
  56.           if(sensorValue2 == 1) return "";
  57.           if(sensorValue2 == 3) l = 0;
  58.           n = getnum(sensorValue);
  59.          
  60.           if(n != 0) {
  61.             if(n == 1) {
  62.               if(a.size() != 0) a.pop_back();
  63.               delay(1000);
  64.             }
  65.             else if(n == l) {
  66.               a.back()++;
  67.             }
  68.             else a.push_back(t[n-1]);
  69.             l = n;
  70.             n = 0;
  71.             delay(500);
  72.             lcd.clear();
  73.             lcd.setCursor(0,0);
  74.             lcd.print("enter name");
  75.             lcd.setCursor(0,1);
  76.             lcd.print(a.c_str());
  77.           }
  78.          
  79.           ///delay(300);
  80.         }
  81.       }
  82. };
  83.  
  84.  
  85. keyboard board;
  86.  
  87. class menu {
  88.     public:
  89.       int state = 1;
  90.       void operate(int n){
  91.           if (n == 0) return;
  92.          
  93.           if (n == 3) {
  94.             state--;
  95.             if( state == 0) state = 6;
  96.           }
  97.           if(n == 2) {
  98.             state++;
  99.             if(state == 7) state = 1;
  100.           }
  101.           if(n == 4) {
  102.             if (state == 1) {
  103.               login();
  104.             }
  105.             if (state == 2) {
  106.               lcd.clear();
  107.               lcd.print("enter name");
  108.               lcd.setCursor(0,1);
  109.               delay(1000);
  110.              
  111.               string namem = board.getname();
  112.               if(namem == "") {
  113.                 mprint();
  114.                 return;
  115.               }
  116.              
  117.              
  118.               int pass = getcode();
  119.               user tmp;
  120.               tmp.usrname = namem;
  121.               tmp.password = pass;
  122.               users.push_back(tmp);
  123.               state = 1;
  124.               //Serial.println(namem.c_str());
  125.             }
  126.             if (state == 3) {
  127.              
  128.               lcd.clear();
  129.               lcd.print("enter password");
  130.               lcd.setCursor(0,1);
  131.               int pass = getcode(), i;
  132.               for(i=0;i<users.size();i++) {
  133.                 if(users[i].password == pass) {
  134.                   users.erase(users.begin()+i);
  135.                   state = 1;
  136.                 }
  137.               }
  138.             }
  139.             if (state == 4) {
  140.                 string tmp = "";
  141.                 for(int i = 0; i < users.size(); i++) {
  142.                     lcd.clear();
  143.                     lcd.print(tmp.c_str());
  144.                     lcd.setCursor(0, 1);
  145.                     lcd.print(users[i].usrname.c_str());
  146.                     tmp = users[i].usrname;
  147.                     delay(1000);
  148.                 }
  149.                 for(int i = 0; i < 2; i++) {
  150.                     lcd.clear();
  151.                     lcd.print(tmp.c_str());
  152.                     lcd.setCursor(0, 1);
  153.                     tmp = "";
  154.                     delay(1000);
  155.                 }
  156.             }
  157.             if (state == 5) {
  158.                 for(int i = 0; i < logs.size(); i++) {
  159.                     lcd.clear();
  160.                     lcd.print(logs[i].usrname.c_str());
  161.                     lcd.setCursor(0, 1);
  162.                     lcd.print(logs[i].t);
  163.                     delay(1000);
  164.                 }
  165.                 delay(1000);
  166.             }
  167.             if (state == 6) {
  168.                 lcd.clear();
  169.                 digitalWrite(6, HIGH);
  170.                 for(int i = 0; i < 8; i++) {
  171.                     lcd.setCursor(i, 0);
  172.                     lcd.print("\\");
  173.                     lcd.setCursor(i, 1);
  174.                     lcd.print("\\");
  175.                     lcd.setCursor(15-i, 0);
  176.                     lcd.print("\\");
  177.                     lcd.setCursor(15-i, 1);
  178.                     lcd.print("\\");
  179.                     delay(100);
  180.                 }
  181.                 delay(1500);
  182.                 lcd.clear();
  183.                 lcd.setCursor(0, 0);
  184.                 for(int i = 0; i < 8; i++) {
  185.                     lcd.print("made by ");
  186.                     delay(200);
  187.                 }
  188.                 delay(1500);
  189.                 lcd.clear();
  190.                 lcd.setCursor(2, 0);
  191.                 lcd.print("Ivan Shoitov");
  192.                 lcd.setCursor(2, 1);
  193.                 lcd.print("Ilia Shuckin");
  194.                 delay(2000);
  195.                 for(int i = 0; i < 8; i++) {
  196.                     lcd.setCursor(i, 0);
  197.                     lcd.print("@");
  198.                     lcd.setCursor(i, 1);
  199.                     lcd.print("@");
  200.                     lcd.setCursor(15-i, 0);
  201.                     lcd.print("@");
  202.                     lcd.setCursor(15-i, 1);
  203.                     lcd.print("@");
  204.                     delay(100);
  205.                 }
  206.                 for(int i = 0; i < 8; i++) {
  207.                     lcd.setCursor(i, 0);
  208.                     lcd.print(" ");
  209.                     lcd.setCursor(i, 1);
  210.                     lcd.print(" ");
  211.                     lcd.setCursor(15-i, 0);
  212.                     lcd.print(" ");
  213.                     lcd.setCursor(15-i, 1);
  214.                     lcd.print(" ");
  215.                     delay(100);
  216.                 }
  217.                 delay(1500);
  218.                 digitalWrite(6, LOW);
  219.             }
  220.           }
  221.          
  222.           mprint();
  223.       }
  224.       void mprint() {
  225.           //Serial.println(state);
  226.           lcd.clear();
  227.           if(state == 1) {
  228.             lcd.print("Login");
  229.           }
  230.           if(state == 2) {
  231.             lcd.print("Add user");
  232.           }
  233.           if(state == 3) {
  234.             lcd.print("Del user");
  235.           }
  236.           if(state == 4) {
  237.             lcd.print("Users list");
  238.           }
  239.           if(state == 5) {
  240.             lcd.print("Log");
  241.           }
  242.           if(state == 6) {
  243.             lcd.print("About");
  244.           }
  245.       }
  246.       void login(){
  247.           lcd.clear();
  248.           lcd.print("enter password");
  249.           int i, pass, e;
  250.           long long t;
  251.           while(1) {
  252.             pass = getcode();
  253.             Serial.println(pass);
  254.             if(pass == -1) return;
  255.  
  256.            
  257.             for(i=0;i<users.size(); i++) {
  258.               if(users[i].password == pass) {
  259.                   lcd.clear();
  260.                   lcd.print("Welcome!");
  261.                   lcd.setCursor(0, 1);
  262.                   lcd.print(users[i].usrname.c_str());
  263.  
  264.                   tone (speaker, 500);
  265.                   delay(300);
  266.                   tone(speaker, 750);
  267.                   delay(300);
  268.                   tone(speaker, 1000);
  269.                   delay(500);
  270.                   noTone(speaker);
  271.                  
  272.                   t = millis();
  273.                   while(1){
  274.                       sensorValue2 = board.mpress(analogRead(menubuts));
  275.                       if(sensorValue2 == 1) {
  276.                         mlog tmp;
  277.                        
  278.                         tmp.t = (millis()/1000-t/1000);
  279.                         tmp.usrname = users[i].usrname;
  280.                        
  281.                         logs.push_back(tmp);
  282.                         if(logs.size()>10) {
  283.                             logs.erase(logs.begin());
  284.                         }
  285.                         return;
  286.                       }
  287.                       digitalWrite(LED_BUILTIN, HIGH);
  288.                       delay(500);
  289.                       digitalWrite(LED_BUILTIN, LOW);                      
  290.                       delay(500);
  291.                   }
  292.               }
  293.             }
  294.             lcd.setCursor(0, 1);
  295.             lcd.print("ERROR");
  296.             tone(speaker, 100);
  297.             delay(500);
  298.             noTone(speaker);
  299.             delay(500);
  300.           }
  301.          
  302.          
  303.       }
  304.       int getcode(){
  305.           lcd.clear();
  306.           lcd.print("enter password");
  307.           lcd.setCursor(0,1);
  308.  
  309.        
  310.           int num = 0;
  311.           while(1) {
  312.               int  foo, sensorValue2;
  313.               sensorValue = analogRead(analogInPin);
  314.               sensorValue2 = board.mpress(analogRead(menubuts));
  315.               delay(100);
  316.              
  317.               if(sensorValue2 == 1) {
  318.                 Serial.println(sensorValue2);
  319.                 delay(100);
  320.                 state = 1;
  321.                 mprint();
  322.                 return -1;
  323.               }
  324.              
  325.               foo = board.getnum(sensorValue);
  326.               if(foo == 0) continue;
  327.  
  328.               num *= 10;
  329.               num += foo;
  330.               Serial.println(num);
  331.               lcd.setCursor(0, 1);
  332.               lcd.print(num);
  333.               delay(500);
  334.               if(num > 100) return(num);
  335.           }
  336.       }
  337. };
  338.  
  339. menu menu1;
  340.  
  341. void setup() {
  342.  
  343.   users[0].usrname = "admin";
  344.   users[0].password = 123;
  345.   users[1].usrname = "Fedor";
  346.   users[1].password = 752;
  347.   //
  348.   pinMode(LED_BUILTIN, OUTPUT);
  349.   pinMode(8, OUTPUT);
  350.   pinMode(6, OUTPUT);
  351.   lcd.begin(16, 2);
  352.   //Serial.begin(9600);
  353.  
  354.   for(int i = 0; i < 8; i++) {
  355.      lcd.setCursor(i, 0);
  356.      lcd.print("0");
  357.      lcd.setCursor(i, 1);
  358.      lcd.print("0");
  359.      lcd.setCursor(15-i, 0);
  360.      lcd.print("0");
  361.      lcd.setCursor(15-i, 1);
  362.      lcd.print("0");
  363.      delay(100);
  364.   }
  365.   for(int i = 7; i >= 0; i--) {
  366.      lcd.setCursor(i, 0);
  367.      lcd.print("1");
  368.      lcd.setCursor(i, 1);
  369.      lcd.print("1");
  370.      lcd.setCursor(15-i, 0);
  371.      lcd.print("1");
  372.      lcd.setCursor(15-i, 1);
  373.      lcd.print("1");
  374.      delay(100);
  375.   }
  376.   for(int i = 0; i < 8; i++) {
  377.      lcd.setCursor(i, 0);
  378.      lcd.print(" ");
  379.      lcd.setCursor(i, 1);
  380.      lcd.print(" ");
  381.      lcd.setCursor(15-i, 0);
  382.      lcd.print(" ");
  383.      lcd.setCursor(15-i, 1);
  384.      lcd.print(" ");
  385.      delay(50);
  386.   }
  387.   delay(100);
  388.   menu1.mprint();
  389. }
  390.  
  391. void loop() {
  392.  
  393.   sensorValue = analogRead(menubuts);
  394.   menu1.operate(board.mpress(sensorValue));
  395.   if(sensorValue != 0) delay(1000);
  396.    
  397. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement