SHARE
TWEET

Untitled

a guest Dec 15th, 2019 69 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <LiquidCrystal.h> //Dołączenie bilbioteki
  2. LiquidCrystal lcd(2, 3, 4, 5, 6, 7); //Informacja o podłączeniu nowego wyświetlacza
  3.  
  4. #define BTN_PIN A0
  5.  
  6. #define BTN1    1023
  7. #define BTN2    896
  8. #define BTN3    768
  9. #define BTN4    640
  10. #define BTN5    512
  11. #define BTN6    384
  12. #define BTN7    256
  13. #define BTN8    128
  14.  
  15.  
  16.  
  17. double aktualnyCzas = 0;
  18. double zapamietanyCzas = 0;
  19. double roznicaCzasu = 0;
  20. double sredniCzas = 0;
  21.  
  22. int latchPin = 8;
  23. //Pin połączony z SH_CP rejestru 74HC595
  24. int clockPin = 12;
  25. ////Pin połączony z DS rejestru 74HC595
  26. int dataPin = 11;
  27.  
  28. //holder for infromation you're going to pass to shifting function
  29. byte data = 0;
  30.  
  31. boolean wejscie=true;
  32. boolean zmiennaDoNapisow=false;
  33. boolean zmiennaDoOdliczania=false;
  34. boolean zmiennaDoPierwszejDiody=false;
  35. boolean zmiennaDoDrugiejDiody=false;
  36. boolean zmiennaDoTrzeciejDiody=false;
  37. boolean zmiennaDoCzwartejDiody=false;
  38. boolean zmiennaDoPiatejDiody=false;
  39. boolean zmiennaDoSzostejDiody=false;
  40. boolean zmiennaDoSiodmejDiody=false;
  41. boolean zmiennaDoOsmejDiody=false;
  42. boolean zmiennaDoDziewiatejDiody=false;
  43.  
  44. boolean ocenaPoziomu=false;
  45.  
  46. boolean czyPrzyciskWcisniety(int analogowaWar, int przyciskuWar) {
  47.   return abs(przyciskuWar - analogowaWar) <= 30;
  48. }
  49.  
  50. int czerwone[] = {1,3,5,7};
  51. int zielone[] = {2, 4, 6, 0};
  52.  
  53.  
  54.  
  55. void setup() {
  56.   pinMode(BTN_PIN, INPUT);
  57.   Serial.begin(9600);
  58.   pinMode(latchPin, OUTPUT);
  59.   pinMode(clockPin, OUTPUT);
  60.   pinMode(dataPin, OUTPUT);
  61.   lcd.begin(16, 2); //Deklaracja typu
  62.  
  63.  
  64. }
  65.  
  66.  
  67.  
  68.  
  69. void loop() {
  70.     int btnData = analogRead(BTN_PIN);
  71.     if(wejscie)
  72.     {
  73.       intro();
  74.       zmiennaDoNapisow=true;
  75.       wejscie=false;
  76.     }
  77.    
  78.  
  79.  
  80.   if (zmiennaDoNapisow)
  81.   {
  82.     lcd.setCursor(0, 0); //Ustawienie kursora
  83.     lcd.print("Tester refleksu ");
  84.     lcd.setCursor(0, 1); //Ustawienie kursora
  85.     lcd.print("Wcisnij przycisk"); //Wyświetlenie tekstu
  86.     lcd.blink(); //Włącznie kursora
  87.     zaswiecDiode(1);
  88.     if( czyPrzyciskWcisniety(btnData, BTN1))
  89.     {
  90.       zmiennaDoNapisow=false;
  91.       zmiennaDoOdliczania=true;
  92.       lcd.clear();
  93.     }
  94.   }
  95.  
  96.   if (zmiennaDoOdliczania)
  97.   {
  98.     for (int j = 3; j > 0; j--)
  99.     {
  100.     lcd.setCursor(0, 0); //Ustawienie kursora
  101.     lcd.print(j);
  102.     lcd.blink(); //Włącznie kursora
  103.     delay(1000);
  104.     }
  105.     lcd.clear();
  106.     lcd.setCursor(0, 0);
  107.     lcd.print("START!"); //Wyświetlenie tekstu
  108.  
  109.   zmiennaDoOdliczania=false;
  110.   zmiennaDoPierwszejDiody=true;
  111.    
  112.   }
  113.  
  114.   if(zmiennaDoPierwszejDiody)
  115.   {
  116.     zaswiecDiode(7);
  117.     zapamietanyCzas=millis();
  118.    
  119.     if( czyPrzyciskWcisniety(btnData, BTN7))
  120.     {
  121.       zmiennaDoPierwszejDiody=false;
  122.       zmiennaDoDrugiejDiody=true;
  123.      
  124.      
  125.     }
  126.    
  127.    
  128.     }
  129.  
  130.  
  131.      if(zmiennaDoDrugiejDiody)
  132.   {
  133.     zaswiecDiode(3);
  134.    
  135.     if( czyPrzyciskWcisniety(btnData, BTN3))
  136.     {
  137.       zmiennaDoTrzeciejDiody=true;
  138.       zmiennaDoDrugiejDiody=false;
  139.      
  140.      
  141.     }
  142.    
  143.    
  144.     }
  145.  
  146.  
  147.      if(zmiennaDoTrzeciejDiody)
  148.   {
  149.     zaswiecDiode(1);
  150.    
  151.     if( czyPrzyciskWcisniety(btnData, BTN1))
  152.     {
  153.       zmiennaDoTrzeciejDiody=false;
  154.       zmiennaDoCzwartejDiody=true;
  155.      
  156.      
  157.     }
  158.    
  159.    
  160.     }
  161.  
  162.  
  163.      if(zmiennaDoCzwartejDiody)
  164.   {
  165.     zaswiecDiode(0);
  166.    
  167.     if( czyPrzyciskWcisniety(btnData, BTN8))
  168.     {
  169.       zmiennaDoPiatejDiody=true;
  170.       zmiennaDoCzwartejDiody=false;
  171.      
  172.      
  173.     }
  174.    
  175.    
  176.     }
  177.  
  178.  
  179.     if(zmiennaDoPiatejDiody)
  180.   {
  181.     zaswiecDiode(5);
  182.    
  183.     if( czyPrzyciskWcisniety(btnData, BTN5))
  184.     {
  185.       zmiennaDoPiatejDiody=false;
  186.       zmiennaDoSzostejDiody=true;
  187.      
  188.      
  189.     }
  190.    
  191.    
  192.     }
  193.  
  194.  
  195.      if(zmiennaDoSzostejDiody)
  196.   {
  197.     zaswiecDiode(6);
  198.    
  199.     if( czyPrzyciskWcisniety(btnData, BTN6))
  200.     {
  201.       zmiennaDoSiodmejDiody=true;
  202.       zmiennaDoSzostejDiody=false;
  203.      
  204.      
  205.     }
  206.    
  207.    
  208.     }
  209.  
  210.  
  211.      if(zmiennaDoSiodmejDiody)
  212.   {
  213.     zaswiecDiode(1);
  214.    
  215.     if( czyPrzyciskWcisniety(btnData, BTN1))
  216.     {
  217.       zmiennaDoSiodmejDiody=false;
  218.       zmiennaDoOsmejDiody=true;
  219.      
  220.      
  221.     }
  222.    
  223.    
  224.     }
  225.  
  226.  
  227.      if(zmiennaDoOsmejDiody)
  228.   {
  229.     zaswiecDiode(7);
  230.    
  231.     if( czyPrzyciskWcisniety(btnData, BTN7))
  232.     {
  233.       zmiennaDoDziewiatejDiody=true;
  234.       zmiennaDoOsmejDiody=false;
  235.      
  236.      
  237.     }
  238.    
  239.    
  240.     }
  241.  
  242.     if(zmiennaDoDziewiatejDiody)
  243.   {
  244.     zaswiecDiode(2);
  245.    
  246.     if( czyPrzyciskWcisniety(btnData, BTN2))
  247.     {
  248.       zmiennaDoDziewiatejDiody=false;
  249.       aktualnyCzas=millis();
  250.       roznicaCzasu=aktualnyCzas-zapamietanyCzas;
  251.  
  252.       Serial.println(roznicaCzasu);
  253.  
  254.     sredniCzas=roznicaCzasu/1000;
  255.  
  256.     lcd.clear();
  257.     lcd.setCursor(0, 0); //Ustawienie kursora
  258.     lcd.print("Sredni czas: ");
  259.     lcd.setCursor(0, 1); //Ustawienie kursora
  260.     lcd.print(sredniCzas); //Wyświetlenie tekstu
  261.  
  262.     delay(5000);
  263.  
  264.      ocenaPoziomu=true;
  265.      
  266.     }
  267.      
  268.      
  269.     }
  270.  
  271.     if(ocenaPoziomu)
  272.     {
  273.         if((roznicaCzasu>0)&&(roznicaCzasu<5000))
  274.         {
  275.           lcd.clear();
  276.     lcd.setCursor(0, 0); //Ustawienie kursora
  277.     lcd.print("Poziom: ROBERT ");
  278.     delay(5000);
  279.         ocenaPoziomu=false;
  280.         zmiennaDoNapisow=true;
  281.         roznicaCzasu=0;
  282.    
  283.          
  284.         }
  285.  
  286.         else if((roznicaCzasu>=5000)&&(roznicaCzasu<10000))
  287.         {
  288.           lcd.clear();
  289.           lcd.setCursor(0, 0); //Ustawienie kursora
  290.           lcd.print("Poziom: SREDNIAK ");
  291.           delay(5000);
  292.           ocenaPoziomu=false;
  293.           zmiennaDoNapisow=true;
  294.           roznicaCzasu=0;
  295.         }
  296.  
  297.         else if( roznicaCzasu>=10000)
  298.         {
  299.           lcd.clear();
  300.           lcd.setCursor(0, 0); //Ustawienie kursora
  301.           lcd.print("Poziom: EMERYT ");
  302.           delay(5000);
  303.           ocenaPoziomu=false;
  304.           zmiennaDoNapisow=true;
  305.           roznicaCzasu=0;
  306.         }
  307.  
  308.         else
  309.         {
  310.           lcd.clear();
  311.           lcd.setCursor(0, 0); //Ustawienie kursora
  312.           lcd.print("DZIWNY POMIAR ");
  313.           delay(5000);
  314.           ocenaPoziomu=false;
  315.           zmiennaDoNapisow=true;
  316.           roznicaCzasu=0;
  317.              
  318.         }
  319.  
  320.        
  321.      
  322.     }
  323.    
  324.    
  325.    
  326.  
  327.  
  328.  
  329.  
  330. }
  331.  
  332. void intro()
  333. {
  334.  
  335.   blinkAll(1,500);
  336.  
  337.  // light each pin one by one using a function A
  338.   for (int j = 1; j < 8; j++) {
  339.     zaswiecDiode(j);
  340.     delay(300);
  341.   }
  342.   zaswiecDiode(0);
  343.    delay(300);
  344.   blinkAll(2,500);  
  345.  
  346.  
  347.  
  348.  
  349.   for(int i=0; i<4; i++)
  350.   {
  351.     zaswiecDiode(czerwone[i]);
  352.     delay(300);
  353.   }
  354.  
  355.   for(int i=0; i<4; i++)
  356.   {
  357.     zaswiecDiode(zielone[i]);
  358.     delay(300);
  359.   }
  360.  
  361.   for(int i=3; i>=0; i--)
  362.   {
  363.     zaswiecDiode(czerwone[i]);
  364.     delay(300);
  365.   }
  366.  
  367.   for(int i=3; i>=0; i--)
  368.   {
  369.     zaswiecDiode(zielone[i]);
  370.     delay(300);
  371.   }
  372.  
  373.  
  374.  
  375.  
  376.   blinkAll(2,500);  
  377.  
  378. }
  379.  
  380.  
  381.  
  382.  
  383. void zaswiecDiode(int p) {
  384.   //defines a local variable
  385.   int pin;
  386.  
  387.   //this is line uses a bitwise operator
  388.   //shifting a bit left using << is the same
  389.   //as multiplying the decimal number by two.
  390.   pin = 1<< p;
  391.  
  392.   //ground latchPin and hold low for as long as you are transmitting
  393.   digitalWrite(latchPin, LOW);
  394.   //move 'em out
  395.   shiftOut(dataPin, clockPin, MSBFIRST, pin);
  396.   //return the latch pin high to signal chip that it
  397.   //no longer needs to listen for information
  398.   digitalWrite(latchPin, HIGH);
  399.  
  400. }
  401.  
  402.  
  403. void lightShiftPinB(int p) {
  404.   //defines a local variable
  405.   int pin;
  406.  
  407.   //start with the pin = 1 so that if 0 is passed to this
  408.   //function pin 0 will light.
  409.   pin = 1;
  410.  
  411.   for (int x = 0; x < p; x++) {
  412.     pin = pin * 2;
  413.   }
  414.  
  415.   //ground latchPin and hold low for as long as you are transmitting
  416.   digitalWrite(latchPin, LOW);
  417.   //move 'em out
  418.   shiftOut(dataPin, clockPin, MSBFIRST, pin);
  419.   //return the latch pin high to signal chip that it
  420.   //no longer needs to listen for information
  421.   digitalWrite(latchPin, HIGH);
  422.  
  423. }
  424.  
  425. //blinks the whole register based on the number of times you want to
  426. //blink "n" and the pause between them "d"
  427. //starts with a moment of darkness to make sure the first blink
  428. //has its full visual effect.
  429. void blinkAll(int n, int d) {
  430.   digitalWrite(latchPin, LOW);
  431.   shiftOut(dataPin, clockPin, MSBFIRST, 0);
  432.   digitalWrite(latchPin, HIGH);
  433.   delay(200);
  434.   for (int x = 0; x < n; x++) {
  435.     digitalWrite(latchPin, LOW);
  436.     shiftOut(dataPin, clockPin, MSBFIRST, 255);
  437.     digitalWrite(latchPin, HIGH);
  438.     delay(d);
  439.     digitalWrite(latchPin, LOW);
  440.     shiftOut(dataPin, clockPin, MSBFIRST, 0);
  441.     digitalWrite(latchPin, HIGH);
  442.     delay(d);
  443.   }
  444. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top