Advertisement
milanmetal

ARDUINO // Ispitni Golubov / Debounce zeza

Dec 12th, 2017
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.64 KB | None | 0 0
  1. /*
  2. Ime i prezime se unose serijski (ime razmak prezime), treba:
  3. a) ispisati username u gornju liniju LCDa a username je ime i
  4. prvo slovo prezimena, b) ispisati password u donju liniju a
  5. password su ime prezime unazad, c) pritiskom tastera UP da se
  6. password menja u zvezdice, d) pritiskom taster SELECT da se obrise
  7. sve sa ekrana (clear) i da se posalje zahtev za unos novog imena i
  8. prezimena. Otprilike ovako nekako
  9. */
  10.  
  11. #include <LiquidCrystal.h>
  12. LiquidCrystal lcd(8,9,4,5,6,7);
  13.  
  14. String imeprez;
  15. String ime;
  16. String prezime;
  17. String username;
  18.  
  19. bool dozvola = false; // dozvola, debouncer, da ne reaguje na drzanje, nego samo stisak.
  20.  
  21. String prvi;
  22. String drugi;
  23.  
  24. String Poruke[3] = {"", "", ""};
  25.  
  26. bool dozvolaUpisa = true;
  27.  
  28. String pass;
  29. int prezindex = 0;
  30.  
  31.  
  32. byte ocitajTaster(){
  33.   int tmp = analogRead(0);
  34.  
  35.   if(tmp > 720 && tmp < 770){ // SELECT
  36.     return 1;
  37.   }
  38.  
  39.   if(tmp > 450 && tmp < 500 ){  // LEFT
  40.     return 2;
  41.   }
  42.  
  43.   if(tmp > 130 && tmp < 180){   // UP
  44.    return 3;
  45.   }
  46.  
  47.   if(tmp > 300 && tmp < 350){   // DOWN
  48.     return 4;
  49.   }
  50.  
  51.   if(tmp < 50){                 // RIGHT
  52.     return 5;
  53.   }
  54.  
  55.   return 0; // nije pritisnut nijedan taster.
  56. }
  57.  
  58.  
  59. void setup(){
  60.   Serial.begin(9600);  
  61.  
  62.   lcd.begin(16, 2);
  63.   lcd.setCursor(16,2);
  64.  
  65. }
  66.  
  67. void pauza(){
  68.   while(!Serial.available()){ }
  69. }
  70.  
  71. void unos(String &tmp){
  72.   pauza();
  73.   while(Serial.available()){
  74.       tmp = Serial.readString();
  75.   }
  76. }
  77.  
  78. void poruka(String msg){
  79.   Serial.println(msg);  
  80. }
  81.  
  82. void usernamef(){
  83.  
  84.   for(int i = 0; i < imeprez.length(); i++){
  85.       if(imeprez[i] == ' ') {
  86.         prezindex = i + 1;
  87.         break;
  88.       } else {
  89.           ime += imeprez[i];
  90.       }
  91.   }
  92.   username = ime + imeprez[prezindex];
  93.  
  94. }
  95.  
  96. void passf(){
  97.     String tmp;
  98.     //String imetmp;
  99.     //String preztmp;
  100.    
  101.     for(int i = ime.length() - 1; i >= 0 ; i--){
  102.       tmp += ime[i];  
  103.     }
  104.     // oduzimamo dva zato sto imamo enter "\n" na kraju, jedno oduzimanje zbog njega
  105.     // i jedno zbog opsega stringa, da ne izadjemo iz opsega...
  106.     for(int i = imeprez.length() - 2; i >= imeprez.length() - ime.length() - 1; i--) {
  107.       tmp += imeprez[i];  
  108.     }
  109.  
  110.     pass = tmp;
  111.    // poruka("Duzinaaaa:" + String(pass.length()));
  112. }
  113.  
  114.  
  115. String zvezdice(int len) {
  116.    String tmp;
  117.  
  118.    for(int i = 0; i < len; i++) {
  119.       tmp += "*";
  120.    }
  121.  
  122.    return tmp;
  123.   }
  124. void loop(){
  125.  
  126. if(dozvolaUpisa){
  127.   poruka("\nUnesite ime i prezime:");
  128.   unos(imeprez);
  129.  
  130.   poruka("Uneli ste: " + imeprez);
  131.   usernamef();
  132.  
  133.   poruka("Ime: " + ime);
  134.  
  135.   poruka("Username: " + username);
  136.  
  137.   passf();
  138.   poruka("Pass je: " + pass);
  139.  
  140.   dozvolaUpisa = false;
  141.  
  142. } else {
  143.     int key = ocitajTaster();
  144.     delay(100);
  145.     Poruke[0] = username;
  146.     Poruke[1] = pass;
  147.     Poruke[2] = zvezdice(pass.length());
  148.  
  149.     prvi = Poruke[0];
  150.     drugi = Poruke[1]; // ispisuje password po difoltu...
  151.  
  152.     if(key == 0) {
  153.        dozvola = true;  
  154.     }
  155.  
  156.     if(dozvola){
  157.       switch(key){
  158.           case 3:  // up
  159.             prvi = Poruke[0];
  160.             drugi = Poruke[2];
  161.  
  162.             dozvola = false;
  163.           break;
  164.          
  165.           case 1:
  166.  
  167.             lcd.clear();
  168.            
  169.             imeprez = "";
  170.             ime = "";  
  171.             prezime = "";
  172.             username = "";
  173.             pass = "";
  174.  
  175.             prvi = "";
  176.             drugi = "";
  177.             // ako ne bude...
  178.            
  179.             dozvolaUpisa = true;
  180.  
  181.             dozvola = false;
  182.           break;
  183.       }
  184.     }
  185.  
  186.       lcd.clear();
  187.       lcd.setCursor(0,0);
  188.       lcd.print(prvi);
  189.  
  190.       lcd.setCursor(0,1);
  191.       lcd.print(drugi);
  192.  
  193.  
  194.   }
  195.  
  196. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement