PowerTGS440

4Button_4Led

Feb 5th, 2021 (edited)
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.07 KB | None | 0 0
  1. // -------------------------------------------------
  2. // ZAPRASZAM NA MOJEGO BLOGA - dopiero startuje
  3. // ale jest od podstaw - ale nie pierdoły
  4. // tylko ważn rzeczy
  5. // https://arudino-code.blogspot.com/
  6. // -------------------------------------------------
  7.  
  8. // --- klasa Button.h to fikcja, tak na marginesie, bo obsługa przycisku w Arduino
  9. // --- jest banalna, zwraca stan LOW lub HIGH nic wiecęj, nie wiadomo co się kryje
  10. // --- we wnętrzu tej klasy, może być 1000 wersji napisanych przez różnych użytkowników
  11. // --- i nie ma pewności jakie metody używa. Domniemam, że dobrze wygooglowałem i chodzi
  12. // --- o tą, ale lepiej napisać własną --- kilka linijek kodu ale niech będzie na razie
  13.  
  14. #include <Button.h>
  15.  
  16. // --- DEFINIUJEMY DEFINIUJEMY --- PROSCIEJ, SZYBCIEJ COS ZMIENIC niż KOD POPRAWIAC ---
  17.  
  18. #define bINTERVAL 4000
  19.  
  20. // --- PINY dla kabelków gdzie są podłączone przyciski, np. przepinasz kabelek w inne
  21. // --- gniazdko to tylko zmieniasz cyferke na odpowiednie, reszta funkcji które z tego
  22. // --- korzystają same się dostosują, bo nie używają liczb tylko nazw zdefiniowanych
  23. // --- no nie wiem jak to KURWA inaczej wytlamaczyc, jak jest 6 to 6, jak 100 to 100
  24.  
  25. #define button_pin1 6 // wpisz nr. pinu odpowiedni
  26. #define button_pin2 7 // wpisz nr. pinu odpowiedni
  27. #define button_pin3 8 // wpisz nr. pinu odpowiedni
  28. #define button_pin4 9 // wpisz nr. pinu odpowiedni
  29.  
  30. #define dioda1 1 // wpisz nr. pinu odpowiedni
  31. #define dioda2 2 // wpisz nr. pinu odpowiedni
  32. #define dioda3 3 // wpisz nr. pinu odpowiedni
  33. #define dioda4 4 // wpisz nr. pinu odpowiedni
  34.  
  35. // --- definiowanie obiektow - kazdy przycisk to OBIEKT jakies klasy z której pochodzi
  36. // --- jak uczeń w klasie "3B" - jest ich 4 ale każdy korzysta z tej samej klasy
  37. // --- klasy to temat ważny w C++, warto o tym poczytać i pooglądać filmy na YT
  38. // --- obiekt traktujemy dosłownie, jak 4 widelce na 1 talerzu, jedzą z jednego :-)
  39. // --- różnią się tym jednak, że każdy z nich dostarcza jedzenie do innych ust
  40.  
  41. Button przycisk1 = Button(button_pin1, bINTERVAL);
  42. Button przycisk2 = Button(button_pin2, bINTERVAL);
  43. Button przycisk3 = Button(button_pin3, bINTERVAL);
  44. Button przycisk4 = Button(button_pin4, bINTERVAL);
  45.  
  46. int ledy[4] = { 0, 0, 0, 0 };
  47.  
  48. // --- TO JEST SETUP --- nie wpisujemy tu już nr. diodek --- mamy przecież zdefiniowane !!! ----------
  49. // --- JAKIE TO PROSTE --- TRZYMAC SIE PROSTYCH ZASAD a KOD SAM SIE DO NAS USMIECHA !!! --------------
  50.  
  51. void setup()
  52. {
  53. pinMode(dioda1, OUTPUT); // ustawiamy ze dioda1 to DIGITAL - OUTPUT, pod nazwą dioda1 kryje się ? 1 tak jest w #define
  54. pinMode(dioda2, OUTPUT); // ustawiamy ze dioda2 to DIGITAL - OUTPUT, pod nazwą dioda2 kryje się ? 2 tak jest w #define
  55. pinMode(dioda3, OUTPUT); // ustawiamy ze dioda3 to DIGITAL - OUTPUT, pod nazwą dioda3 kryje się ? 3 tak jest w #define
  56. pinMode(dioda4, OUTPUT); // ustawiamy ze dioda4 to DIGITAL - OUTPUT, pod nazwą dioda4 kryje się ? 4 tak jest w #define
  57.  
  58. // ale wystarczy, że zmienimy gniazdo w urządzeniu, i zdefiniujemy : #define dioda4 10
  59. // to z automatu cały kod się dostosowuje, i dioda4 ma wartość 10, wszędzie !!! proste ?
  60.  
  61. }
  62.  
  63.  
  64. // --- W LOOP IM MNIEJ TYM LEPIEJ --- ROZBIJAJ WSZYSTKO NA FUNKCJE --- PRZEYJRZYSCIE I ZROZUMIALE WTEDY
  65. // --- A FUNKCJE ZAWSZE MOZNA WYKORZYSTAC DO INNYCH PROJEKTOW !!! --- TEGO SIE TRZYMAC !!! --- ALBO :-(
  66.  
  67. void loop()
  68. {
  69. sluchaj_przyciskow(); // wywolaj ta funkcje - wlacz nasluch
  70. sprawdz_jaki_przycisk_wcisnales(); // wywolaj ta funckje - sprawdz co to za przycisk
  71. akcja_z_ledami(); // zgas lub zapal diode - jakie to proste teraz :)
  72. }
  73.  
  74. // ----------------------------------------
  75. void sluchaj_przyciskow()
  76. {
  77. przycisk1.listen();
  78. przycisk2.listen();
  79. przycisk3.listen();
  80. przycisk4.listen();
  81. }
  82. // ----------------------------------------
  83. void sprawdz_jaki_przycisk_wcisnales()
  84. {
  85. if(przycisk1.onPress()) zmien_ustawienie_diody(0); // przycisk nr. 1 zmien stany diody 1 (element 0 w tablicy int ledy[4])
  86.  
  87. if(przycisk2.onPress()) zmien_ustawienie_diody(1); // przycisk nr. 2 zmien stany diody 2 (element 1 w tablicy int ledy[4])
  88.  
  89. if(przycisk3.onPress()) zmien_ustawienie_diody(2); // przycisk nr. 3 zmien stany diody 3 (element 2 w tablicy int ledy[4])
  90.  
  91. if(przycisk4.onPress()) zmien_ustawienie_diody(3); // przycisk nr. 4 zmien stany diody 4 (element 3 w tablicy int ledy[4])
  92.  
  93. // bo int ledy[4] to liczymy od ZERO, czyli mamy 0,1,2,3 (do tego trzeba sie przyzwyczaic) ale ma sens :-)
  94.  
  95. }
  96. // ----------------------------------------
  97. void zmien_ustawienie_diody(byte ktora_dioda)
  98. {
  99. if( ledy[ktora_dioda] == 0 ) ledy[ktora_dioda] = 1; // jeśli dioda LED [jej numer] jest OFF to przełącza się na ON
  100. else ledy[ktora_dioda] = 0; // jeśli dioda LED [jej numer] jest ON to przełącza śie na OFF
  101. // ale tylko w tej tablicy -> int ledy [jej numer] i nic na
  102. // razie się nie dzieje, po prostu mamy bufor stanów zapisany tam
  103. // to tak jak przygotować obiad prze podaniem na stół - jest gotowy
  104. // ale nie podany, BUFOROWANIE jest ważne, coś przygotowane w wolnej
  105. // chwili dużego projektu na ARDUINO - np. wyświetlacz LC
  106. // na razie pokazuje -> Temperatura w pokoju 22 st.C
  107. // ale po upływie minuty ma już gotowy napis (STRING czy CHAR)
  108. // w napisem do wyświetlenia : Wilgotność w pokoju 46%
  109. // bo został zbudowany wcześniej gdy CPU był wolny i w momencie
  110. // wywołania wystarczy np : LCD.print(bufor); a po jego wyświetleniu
  111. // budujemy kolejny bufor z nowym napisem (ale to coś na później) :-)
  112. // DOSŁOWNIE coś na zasadzie z życia wzięte bo na tym programowanie
  113. // polega !!!
  114. // MAM TO W GŁOWIE ale JESZCZE TYM SIĘ NIE CHWALĘ
  115. // więcej na moim BLOGU niebawem :-)
  116. //
  117. // TA FUNKCJA JEST WYWOŁYWANA TYLKO DLA KONKRETNEGO PRZYCISKU
  118. // Jesli np. przysisk3.onPress() czyli wcisnieto przycisk nr3
  119. // to zmienia się tylko wartość dla ledy[2] żadna inna !!!
  120. //
  121.  
  122. }
  123. // ----------------------------------------
  124. void akcja_z_ledami()
  125. {
  126.  
  127. if (ledy[0] == 0) digitalWrite(dioda1, HIGH); // jesli w tablicy -> ledy[0] jest 0 to włączamy diodę
  128. else digitalWrite(dioda1, LOW); // jeśli w tablicy -> ledy[0] jest 1 to wyłączamy diodę
  129. // te wartości można oczywiście zamienić, takie zboczenie
  130. // dla mnie HIGH jest jeśli jest 0, LOW jeśli jest 1
  131. // ale nie ważne z czego to wynika, po prostu myślę inaczej :-)
  132. // ogólnie powinno być odwrotnie, ale większość urządzeń
  133. // które ogarniam dziwnym trafem działają odwrotnie jak soczewka
  134. // oka ludzkiego i wszystko odwraca tak mi zostało :-)
  135.  
  136. if (ledy[1] == 0) digitalWrite(dioda2, HIGH); // jeśli w tablicy -> ledy[1] jest 0 to włączamy diodę
  137. else digitalWrite(dioda2, LOW); // jeśli w tablicy -> ledy[1] jest 1 to wyłączmy diodę
  138.  
  139. if (ledy[2] == 0) digitalWrite(dioda3, HIGH); // jeśli w tablicy -> ledy[2] jest 0 to włączamy diodę
  140. else digitalWrite(dioda3, LOW); // jeśli w tablicy -> ledy[2] jest 1 to wyłączmy diodę
  141.  
  142. if (ledy[3] == 0) digitalWrite(dioda4, HIGH); // jeśli w tablicy -> ledy[3] jest 0 to włączamy diodę
  143. else digitalWrite(dioda4, LOW); // jeśli w tablicy -> ledy[3] jest 1 to wyłączmy diodę
  144.  
  145. // a teraz za miesiąc, pół roku, rok coś potrzebujemy a nie pamiętamy o co chodziło ? nie fajniej pisać
  146. // komentarze do programu ... kiedyś też tego nie robiłem, obecnie na 20.000 linijek kodu komentarze zajmują
  147. // dodatkowe 5.000 linijek - ale wiem o co chodzi, do czego to służyło i po co, szybko mi znaleźć co ważne
  148. // i potrzebne, sprawdzić jak to było i działało, więc programowanie zaczynamy od tego - po polsku oczywiście !!!
  149. // dla siebie nie dla kogoś, bo już się spotkałem nie raz - po angielsku nie wiadomo dla kogo. PO POLSKU....
  150.  
  151. }
  152. // ------------------------------------------------
  153. // komentarze i odczelniki --- wszystko widać ?
  154. // -----------------------------------------------
  155. // a teraz wyobraz sobie taką sytuację :-)
  156. // w drugim pokoju montujesz 4 inne przyciski
  157. // polaczone z tym samym urzadzeniem tu np ARDUINO
  158. // po co wynajdowac kolo na nowo ? skoro te same
  159. // tu diody gasza/wlaczaja
  160. // jak wystarczy ze je zdefiniujesz, a jak zmieniaja
  161. // stan tablicy to potem tylko wywolujesz z nich
  162. // funkcję akcja_z_ledami() i samo sie robi
  163. // -------------------------------------------------
  164. // ZAPRASZAM NA MOJEGO BLOGA - dopiero startuje
  165. // ale jest od podstaw - ale nie pierdoły
  166. // tylko ważn rzeczy
  167. // https://arudino-code.blogspot.com/
  168. // -------------------------------------------------
  169.  
  170.  
  171.  
Advertisement
Add Comment
Please, Sign In to add comment