Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // -------------------------------------------------
- // ZAPRASZAM NA MOJEGO BLOGA - dopiero startuje
- // ale jest od podstaw - ale nie pierdoły
- // tylko ważn rzeczy
- // https://arudino-code.blogspot.com/
- // -------------------------------------------------
- // --- klasa Button.h to fikcja, tak na marginesie, bo obsługa przycisku w Arduino
- // --- jest banalna, zwraca stan LOW lub HIGH nic wiecęj, nie wiadomo co się kryje
- // --- we wnętrzu tej klasy, może być 1000 wersji napisanych przez różnych użytkowników
- // --- i nie ma pewności jakie metody używa. Domniemam, że dobrze wygooglowałem i chodzi
- // --- o tą, ale lepiej napisać własną --- kilka linijek kodu ale niech będzie na razie
- #include <Button.h>
- // --- DEFINIUJEMY DEFINIUJEMY --- PROSCIEJ, SZYBCIEJ COS ZMIENIC niż KOD POPRAWIAC ---
- #define bINTERVAL 4000
- // --- PINY dla kabelków gdzie są podłączone przyciski, np. przepinasz kabelek w inne
- // --- gniazdko to tylko zmieniasz cyferke na odpowiednie, reszta funkcji które z tego
- // --- korzystają same się dostosują, bo nie używają liczb tylko nazw zdefiniowanych
- // --- no nie wiem jak to KURWA inaczej wytlamaczyc, jak jest 6 to 6, jak 100 to 100
- #define button_pin1 6 // wpisz nr. pinu odpowiedni
- #define button_pin2 7 // wpisz nr. pinu odpowiedni
- #define button_pin3 8 // wpisz nr. pinu odpowiedni
- #define button_pin4 9 // wpisz nr. pinu odpowiedni
- #define dioda1 1 // wpisz nr. pinu odpowiedni
- #define dioda2 2 // wpisz nr. pinu odpowiedni
- #define dioda3 3 // wpisz nr. pinu odpowiedni
- #define dioda4 4 // wpisz nr. pinu odpowiedni
- // --- definiowanie obiektow - kazdy przycisk to OBIEKT jakies klasy z której pochodzi
- // --- jak uczeń w klasie "3B" - jest ich 4 ale każdy korzysta z tej samej klasy
- // --- klasy to temat ważny w C++, warto o tym poczytać i pooglądać filmy na YT
- // --- obiekt traktujemy dosłownie, jak 4 widelce na 1 talerzu, jedzą z jednego :-)
- // --- różnią się tym jednak, że każdy z nich dostarcza jedzenie do innych ust
- Button przycisk1 = Button(button_pin1, bINTERVAL);
- Button przycisk2 = Button(button_pin2, bINTERVAL);
- Button przycisk3 = Button(button_pin3, bINTERVAL);
- Button przycisk4 = Button(button_pin4, bINTERVAL);
- int ledy[4] = { 0, 0, 0, 0 };
- // --- TO JEST SETUP --- nie wpisujemy tu już nr. diodek --- mamy przecież zdefiniowane !!! ----------
- // --- JAKIE TO PROSTE --- TRZYMAC SIE PROSTYCH ZASAD a KOD SAM SIE DO NAS USMIECHA !!! --------------
- void setup()
- {
- pinMode(dioda1, OUTPUT); // ustawiamy ze dioda1 to DIGITAL - OUTPUT, pod nazwą dioda1 kryje się ? 1 tak jest w #define
- pinMode(dioda2, OUTPUT); // ustawiamy ze dioda2 to DIGITAL - OUTPUT, pod nazwą dioda2 kryje się ? 2 tak jest w #define
- pinMode(dioda3, OUTPUT); // ustawiamy ze dioda3 to DIGITAL - OUTPUT, pod nazwą dioda3 kryje się ? 3 tak jest w #define
- pinMode(dioda4, OUTPUT); // ustawiamy ze dioda4 to DIGITAL - OUTPUT, pod nazwą dioda4 kryje się ? 4 tak jest w #define
- // ale wystarczy, że zmienimy gniazdo w urządzeniu, i zdefiniujemy : #define dioda4 10
- // to z automatu cały kod się dostosowuje, i dioda4 ma wartość 10, wszędzie !!! proste ?
- }
- // --- W LOOP IM MNIEJ TYM LEPIEJ --- ROZBIJAJ WSZYSTKO NA FUNKCJE --- PRZEYJRZYSCIE I ZROZUMIALE WTEDY
- // --- A FUNKCJE ZAWSZE MOZNA WYKORZYSTAC DO INNYCH PROJEKTOW !!! --- TEGO SIE TRZYMAC !!! --- ALBO :-(
- void loop()
- {
- sluchaj_przyciskow(); // wywolaj ta funkcje - wlacz nasluch
- sprawdz_jaki_przycisk_wcisnales(); // wywolaj ta funckje - sprawdz co to za przycisk
- akcja_z_ledami(); // zgas lub zapal diode - jakie to proste teraz :)
- }
- // ----------------------------------------
- void sluchaj_przyciskow()
- {
- przycisk1.listen();
- przycisk2.listen();
- przycisk3.listen();
- przycisk4.listen();
- }
- // ----------------------------------------
- void sprawdz_jaki_przycisk_wcisnales()
- {
- if(przycisk1.onPress()) zmien_ustawienie_diody(0); // przycisk nr. 1 zmien stany diody 1 (element 0 w tablicy int ledy[4])
- if(przycisk2.onPress()) zmien_ustawienie_diody(1); // przycisk nr. 2 zmien stany diody 2 (element 1 w tablicy int ledy[4])
- if(przycisk3.onPress()) zmien_ustawienie_diody(2); // przycisk nr. 3 zmien stany diody 3 (element 2 w tablicy int ledy[4])
- if(przycisk4.onPress()) zmien_ustawienie_diody(3); // przycisk nr. 4 zmien stany diody 4 (element 3 w tablicy int ledy[4])
- // bo int ledy[4] to liczymy od ZERO, czyli mamy 0,1,2,3 (do tego trzeba sie przyzwyczaic) ale ma sens :-)
- }
- // ----------------------------------------
- void zmien_ustawienie_diody(byte ktora_dioda)
- {
- if( ledy[ktora_dioda] == 0 ) ledy[ktora_dioda] = 1; // jeśli dioda LED [jej numer] jest OFF to przełącza się na ON
- else ledy[ktora_dioda] = 0; // jeśli dioda LED [jej numer] jest ON to przełącza śie na OFF
- // ale tylko w tej tablicy -> int ledy [jej numer] i nic na
- // razie się nie dzieje, po prostu mamy bufor stanów zapisany tam
- // to tak jak przygotować obiad prze podaniem na stół - jest gotowy
- // ale nie podany, BUFOROWANIE jest ważne, coś przygotowane w wolnej
- // chwili dużego projektu na ARDUINO - np. wyświetlacz LC
- // na razie pokazuje -> Temperatura w pokoju 22 st.C
- // ale po upływie minuty ma już gotowy napis (STRING czy CHAR)
- // w napisem do wyświetlenia : Wilgotność w pokoju 46%
- // bo został zbudowany wcześniej gdy CPU był wolny i w momencie
- // wywołania wystarczy np : LCD.print(bufor); a po jego wyświetleniu
- // budujemy kolejny bufor z nowym napisem (ale to coś na później) :-)
- // DOSŁOWNIE coś na zasadzie z życia wzięte bo na tym programowanie
- // polega !!!
- // MAM TO W GŁOWIE ale JESZCZE TYM SIĘ NIE CHWALĘ
- // więcej na moim BLOGU niebawem :-)
- //
- // TA FUNKCJA JEST WYWOŁYWANA TYLKO DLA KONKRETNEGO PRZYCISKU
- // Jesli np. przysisk3.onPress() czyli wcisnieto przycisk nr3
- // to zmienia się tylko wartość dla ledy[2] żadna inna !!!
- //
- }
- // ----------------------------------------
- void akcja_z_ledami()
- {
- if (ledy[0] == 0) digitalWrite(dioda1, HIGH); // jesli w tablicy -> ledy[0] jest 0 to włączamy diodę
- else digitalWrite(dioda1, LOW); // jeśli w tablicy -> ledy[0] jest 1 to wyłączamy diodę
- // te wartości można oczywiście zamienić, takie zboczenie
- // dla mnie HIGH jest jeśli jest 0, LOW jeśli jest 1
- // ale nie ważne z czego to wynika, po prostu myślę inaczej :-)
- // ogólnie powinno być odwrotnie, ale większość urządzeń
- // które ogarniam dziwnym trafem działają odwrotnie jak soczewka
- // oka ludzkiego i wszystko odwraca tak mi zostało :-)
- if (ledy[1] == 0) digitalWrite(dioda2, HIGH); // jeśli w tablicy -> ledy[1] jest 0 to włączamy diodę
- else digitalWrite(dioda2, LOW); // jeśli w tablicy -> ledy[1] jest 1 to wyłączmy diodę
- if (ledy[2] == 0) digitalWrite(dioda3, HIGH); // jeśli w tablicy -> ledy[2] jest 0 to włączamy diodę
- else digitalWrite(dioda3, LOW); // jeśli w tablicy -> ledy[2] jest 1 to wyłączmy diodę
- if (ledy[3] == 0) digitalWrite(dioda4, HIGH); // jeśli w tablicy -> ledy[3] jest 0 to włączamy diodę
- else digitalWrite(dioda4, LOW); // jeśli w tablicy -> ledy[3] jest 1 to wyłączmy diodę
- // a teraz za miesiąc, pół roku, rok coś potrzebujemy a nie pamiętamy o co chodziło ? nie fajniej pisać
- // komentarze do programu ... kiedyś też tego nie robiłem, obecnie na 20.000 linijek kodu komentarze zajmują
- // 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
- // i potrzebne, sprawdzić jak to było i działało, więc programowanie zaczynamy od tego - po polsku oczywiście !!!
- // dla siebie nie dla kogoś, bo już się spotkałem nie raz - po angielsku nie wiadomo dla kogo. PO POLSKU....
- }
- // ------------------------------------------------
- // komentarze i odczelniki --- wszystko widać ?
- // -----------------------------------------------
- // a teraz wyobraz sobie taką sytuację :-)
- // w drugim pokoju montujesz 4 inne przyciski
- // polaczone z tym samym urzadzeniem tu np ARDUINO
- // po co wynajdowac kolo na nowo ? skoro te same
- // tu diody gasza/wlaczaja
- // jak wystarczy ze je zdefiniujesz, a jak zmieniaja
- // stan tablicy to potem tylko wywolujesz z nich
- // funkcję akcja_z_ledami() i samo sie robi
- // -------------------------------------------------
- // ZAPRASZAM NA MOJEGO BLOGA - dopiero startuje
- // ale jest od podstaw - ale nie pierdoły
- // tylko ważn rzeczy
- // https://arudino-code.blogspot.com/
- // -------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment