Advertisement
Guest User

Untitled

a guest
Dec 15th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.55 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement