Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 16 lis 2024, o 21:26


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 
Autor Wiadomość
PostNapisane: 12 lis 2013, o 13:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

Na temat obsługi klawiszy było już sporo. Mirek już świetnie opisał swoją funkcję SuperDebounce na blogu, dlaczego więc zakładam temat ? Swoją naukę prowadzę trochę swoim torem (książkę już raz przeczytałem od dechy do dechy i zabieram się za utrwalanie czyli czytanie drugi raz :) )
Zazwyczaj nowa wiedza najlepiej mi wchodzi jeśli znam zagadnienie od podszewki. Miałem ostatnio wolną chwilę i zacząłem przerabiać moje proste podstawowe bascomowe programy (których używam na co dzień) na C w ramach poznania i utrwalenia jego składni z uwzględnieniem wszystkich dobrodziejstw jakie C udostępnia. Na pierwszy ogień poszedł właśnie program obsługi wielofunkcyjnego klawisza krótki/długi, który zaprojektowałem dawno temu w bascomie. Temat jak sądzę zawsze aktualny :) Chciałem się podzielić moim rozwiązaniem z kilku powodów:
1. Ze względu na jego nieco odmienną konstrukcję niż większość tu prezentowanych, naprawdę niewielki rozmiar samej funkcji, ogromną elastyczność i prostotę w rozbudowie o dodatkowe funkcje (np. 5 funkcji pod jednym klawiszem);
2. Program nie blokuje pętli głównej.
3. Być może jeszcze coś z tej funkcji się wyciśnie jakimiś innymi poleceniami, itp. i bardziej ją udoskonali co przełoży się zapewne na dalsze poszerzenie mojej wiedzy :)

Co potrzebne? Potrzebny jest jeden timer programowy w przerwaniu wywoływanym co 10ms (to jednostka podziału jaką używam w przeliczeniach funkcji) oraz jedna zmienna dla każdego klawisza.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Najpierw fragment programu, który można umieścić liniowo czyli ciurkiem w pętli głównej - w końcu jeśli badamy 1-2 przyciski to można sobie czasem na to pozwolić. Zaczniemy od podstawowej funkcji czyli:

krótki wcisk - wykonuje się jeden raz pierwsza funkcja (po puszczeniu przycisku)
długi wcisk - wykonuje się jeden raz druga funkcja


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

To wszystko... :) No prawie wszystko, na początku trzeba tylko zdeklarować odpowiednie zmienne:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jak widać program jest tak prosty, że chyba każdy początkujący powinien bez najmniejszych problemów przeanalizować jego działanie i natychmiast zrozumieć ideę :)
Wspomnę tylko, że jeśli. np. przerwania ustawione są na 1000Hz - 1ms (a nie 100Hz - 10ms jak w przykładzie) to odświeżanie licznika tk trzeba wpisać 10. Analogicznie dla innych częstotliwości wywoływania przerwania.

Przykładowe ustawienie przerwań dla Atmega8 może wyglądać tak:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Oczywiście należy pamiętać też o odpowiednim ustawieniu kierunków portów dla przycisków, ale to chyba oczywiste. W przypadku użycia kolejnego klawisza należy zadeklarować kolejną zmienną, np. Lk2 i teoretycznie nowy licznik programowy tk... W praktyce licznik ten wystarczy przenieść (wspomnę o tym dalej) tuż przed sprawdzaniem wciśniętego klawisza (lub klawiszy) i po prostu omijać cały fragment jeśli tk będzie różne od 0. Strata czasowa będzie pomijalna - dodatkowy jeden "If" nie zatrzyma przecież pętli głównej na długo.

Kolejna odsłona procedury to:

krótki wcisk - wykonuje się jeden raz pierwsza funkcja (po puszczeniu przycisku)
długi wcisk - wykonuje się cyklicznie (repeat) druga funkcja


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jak widać wiele się nie zmieniło. Dodałem tylko jeden warunek przy badaniu długiego wcisku i cofanie licznika o potrzebny czas "repeat"

I jeszcze jedna funkcja (i wcale nie ostatnia :) ) :

krótki wcisk - wykonuje się jeden raz funkcja (od razu)
długi wcisk - wykonuje się powtarzanie funkcji


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jak widać zmiany nieco większe, ale chyba też komentarza nie wymagają ;)

W każdym przypadku debounce ustawione na co najmniej 20-30ms. Czas ten spokojnie można uznać za bezpieczny, a jeśli komuś nie pasuje może go zwiększyć.


No dobrze, skoro już udało mi się bascomowe wersje przerobić na C to teraz zgodnie z zasadami jak mawia Mirek (i tu trzeba go słuchać) spróbowałem na podstawie jego przycisku przerobić powyższe na działającą funkcję.
I tu wielki ukłon w stronę Mirka (+dobre piwo), bo dzięki temu poznałem przekazywanie parametrów adresu portu i ogólnie zabawa ze wskaźnikami co na tak prostym przykładzie napisanym samodzielnie naprawdę pozwoliło mi to szybko zrozumieć.
Poniższy program to zbiór gotowych funkcji razem z prostą demonstracją działania dwóch przycisków. Można tu nawet 10 przycisków dać, a program nadal nie będzie blokował pętli (o ile wywoływane funkcje pod klawiszami tego nie uczynią) nawet jeśli jednocześnie będą wciśnięte wszystkie(!) klawisze. Celowo użyłem przynajmniej dwóch wywołań ze względu na timer, o którym wcześniej wspominałem i o zasadzie przeskoczenia wywoływania tychże funkcji, ale trzeba go też w ten sposób zastosować nawet dla jednego przycisku (choć wtedy lepiej użyć gotowej wstawki z pierwszej części posta). Jest to w sumie chyba jedyna wada, z którą nie mogę się na razie uporać. tzn. można by ale niepotrzebnie rozbudowało by to program, a w takiej wersji też działa wystarczająco dobrze i myślę, że to wyrzucenie timera przed sekcję guzików nie jest jakimś kłopotem. A może ktoś ma jakiś pomysł jak to załatwić w jednej linijce ? :)

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jak widać kod jest banalny i ewentualne zmiany można sobie wprowadzać w zależności od potrzeb. Funkcjonalność rozbiłem na trzy procedury z prostej przyczyny - zazwyczaj wiadomo co klawisz będzie robił i czy będzie potrzebny repeat czy nie wtedy stosujemy tylko to co nam potrzeba.
Składni nie będę tu opisywał, bo idealnie ją widać w programie demonstracyjnym. Miłego klawiszowania :)

_________________
http://www.sylwekkuna.com



Ostatnio edytowano 5 lut 2016, o 11:54 przez SylwekK, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 lis 2013, o 17:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 mar 2013
Posty: 236
Lokalizacja: Warszawa
Pomógł: 5

Gratuluje, wiesz ja szanuje ludzi, którzy starają się dorzucić coś dla innych, mają swoje przemyślenia i dowagę napisac to publicznie.

Ale jakbyś mógł to prosiłbym właśnie, żebyś pomyślał nad rozwiązaniem jeszcze bardziej praktycznym event i kolejkowanie zdarzeń. Dlaczego, bo tutaj masz coś niby spoko pętal while smiga, ale jakbyś miał bardzo dużo eventów od kilkunastu urządzeń i wiele przerwań, logowanie na kartę, uwierz event ratuje tobie tyłek, sam wiem o tym. Wciskasz przycisk i w przerwaniu sprawdzasz czy i jaki przyisk i jak długo został wciśnięty. Wtedy jak ci dojdzie w pętli głwónej, możesz zablokowac przerwanie i wtedy wykonać tą kolejkę, ile razy wcisnąłeś między czasie przycisk i z jaką częstotliwością (długo, krótko) i które przyciski były wciskane i zaczynasz znwou.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lis 2013, o 20:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

Paul Dirac napisał(a):
...tutaj masz coś niby spoko pętal while smiga, ale jakbyś miał bardzo dużo eventów od kilkunastu urządzeń i wiele przerwań...


Demonizujesz trochę ;) Sama funkcja jest kompletnie nieblokująca, możesz nawet 10 przycisków sprawdzać, a czasu wcale nie zajmie to dużo. Odczyt w przerwaniach nie jest tu wcale dobrym rozwiązaniem, bo przerwania mają się wykonywać jak najszybciej (chociaż miałem raz pewien projekt gdzie użyłem badania przycisków właśnie w przerwaniach, bo to okazało się najlepszym wyjściem dla konkretnej czynności).

Przysiadłem jeszcze raz i z powrotem zapakowałem timerek do funkcji przez co wystarczy ją teraz tylko wywołać. Oczywiście jeden timer programowy tak czy inaczej w przerwaniach musi być ;) Badanie przycisków działa bezbłędnie w zasadzie dla dowolnej ilości klawiszy, ale jest jeden haczyk... Jednoczesne wciśnięcie dwóch lub więcej klawiszy powoduje, że badanie przycisków zwalnia. Nie wpływa to jednak na prędkość pętli głównej natomiast dzieje się tak dlatego, że po prostu częściej jest ładowany timer programowy tk. Można to łatwo obejść dodając jeden timer dla każdego guzika, ale to bezsensowne rozwiązanie moim zdaniem i już lepiej użyć konstrukcji z pierwszego posta (przeskok). Poza tym ile jest sytuacji tak naprawdę gdzie potrzeba wciskać w programie głównym więcej niż jeden przycisk? W swoich programach zazwyczaj dwa guziki potrzebne mi są podczas włączania urządzenia, aby zresetować dane lub wejść do menu serwisowego, itp. a wtedy ich obsługa i tak jest realizowana indywidualnie.

Poniższy poprawiony program to trzy funkcje które można sobie w razie potrzeby dowolnie rozbudować o kolejne działania czasowe. W jednym z urządzeń (zamek szyfrowy) przydzieliłem jednemu guzikowi o ile pamiętam 5 czy 6 różnych opcji, a wszystko było w BASCOMIE załadowane do Atiny13... i działało :mrgreen:

Do własnych programów wystarczy sobie wybrać jedną taką procedurę, która będzie najlepiej pasować, a można też i wszystkie. Składnia jest następująca:

przycisk krótki - funkcja1 (reakcja po puszczeniu) / długi - funkcja2:
key_sl (&PINx, (1<<Pxy), &LKz, funkcja1, funkcja2);

przycisk krótki - funkcja1 (reakcja po puszczeniu) / długi - funkcja2 z powtarzaniem:
key_slr (&PINx, (1<<Pxy), &LKz, funkcja1, funkcja2);

przycisk krótki - fukcja1 (reakcja natychmiastowa) / długi z powtarza funkcja1:
key_sr (&PINx, (1<<Pxy), &LKz, funkcja1);

x - nazwa portu (np. B,D...)
y - nr pinu
z - kolejna zmienna (indywidualna dla każdego przycisku)
funkcja1 - nazwa funkcji pierwszej
funkcja2 - nazwa funkcji drugiej
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 lis 2013, o 21:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 08 mar 2013
Posty: 236
Lokalizacja: Warszawa
Pomógł: 5

Wiesz funkcja raczej blokująca nie jest, jak se podepniesz oscyloskop, to ile ona trwa, jakąś część milisekundy. Ale ja pisze, że miałem ostatnio poważny problem, gdy logowałem na kartę, a każdy czujnik sht71, miał czas konwersji temp do 320 ms, do tego wysyłanie z bluetooth- kolejne opóżnienia i logowanie na karte sd, które trwało o ile pamiętam ponad 400ms. A jeszcze rtc było i wiele innych rzeczy. A wywołanie w przerwaniu i sprawdzenie czy przycisk wcisnieto i przypisaniu jakies zmiennej globalnej wartosci jako TRUE to żaden czas.

Wiesz kazdy ma swoje metody programowania i ja z twojej nauczyłem sie czegoś nowego, a mój pomysł tez jest sprytny i nawet w pewnych przypadkach lepszy i co najważniejsze jest to EVENT, na co mirek nakłada nacisk (wiesz u mnie jest tak, że w tle programu następuje zdarzenie a potem while w odpowiednim czasie "jak dojdzie" je wykonuje). Niedługo jak skończe all to wrzuce do projekty sprzętowe całość, bo nie chce wrzucać częściami.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 lis 2013, o 11:03 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

Pomysł, o którym, piszesz jest jak najbardziej mi znany. W bascomie używałem podobnej zasady (akurat nie do przycisków, ale też były to sygnały impulsowe). Przekazywanie było za pomocą znaczników (flag). Tylko nie raz się spotkałem z sytuacją gdzie początkujący w programowaniu po prostu nie ogarniają flag (co mnie dziwi, bo to przecież banalne), a do tego jeszcze kod w przerwaniach... Na upartego nawet w powyższym programie spokojnie można by pozbyć się timera z przerwań i wstawić go modyfikując lekko funkcje (tylko trzeba by zmienić tk na uint16_t). Rozwiązanie takie miałoby tylko tą wadę, że w zależności od czasu przejścia pętli trzeba by dobrać wartość dla tego licznika i mogła by się ona zmieniać gdyby coś bardziej przyblokowało pętlę. W każdym razie jest to do zrobienia i można uzyskać całkiem dobre wyniki.
Celem moim jak pisałem na początku tematu był trening C połączony z pokazanie innego podejścia (prostszego jak sądzę) do badania klawiszy, a przy okazji może komuś się to przyda ;)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2016, o 22:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 wrz 2013
Posty: 47
Pomógł: 1

Cześć Panowie ;)
Trochę powalczyłem z w/w kodem i muszę przyznać, że nie dałem rady go użyć. A co powiecie na takie rozwiązanie?
Działa tak: (krótkie wciśnięcie wybieramy coś a długim przechodzimy do menu..)
Krótkie"puszczenie" (czyli naciśnięcie i szybkie puszczenie) wyzwala raz jedno zdarzenie
Długie trzymanie wyzwala raz drugie. (z tym, że załącza się po ustalonym czasie i możemy sobie go dusić do woli a i tak się raz wykona)


Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Złoty Szpadel od Pana Mirka! Dziękuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2016, o 22:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

norniiica napisał(a):
Trochę powalczyłem z w/w kodem i muszę przyznać, że nie dałem rady go użyć.


A z czym masz problem? :shock: Przecież wyjaśniłem dokładnie jak stosować i zapewniam, że działa, bo sam to stosuje.

Twoje rozwiązanie to właściwie "moje" rozwiązanie z kosmetycznymi zmianami :) Jeśli działa to ok. Gdybym moją wersję odchudził z uniwersalności konfiguracji to program byłby jeszcze krótszy niż Twój :lol:

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2016, o 23:15 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 wrz 2013
Posty: 47
Pomógł: 1

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


//Ja to rozumiem tak:
na początku tk=0, Lk1=0;
jeżeli naciśniemy przycisk to:
tk=1
Lk1=1
koniec pętli pierwszej i w tym czasie timer robi przerwanie albo nie i jedziemy z 2 pętlą..
zakładam, że jeszcze trzymamy przycisk
tk=1 i przechodzimy od razu do else -a tam:
Lk1=0 się tylko wykonuje.
Czyli nigdy Lk1 nie rośnie...
A jak puszcze przycisk to już w ogóle nic się nie będzie sprawdzało..

Na pewno coś źle zrozumiałem skoro Tobie działa ;) ale nie mam pojęcia co źle rozumuję.

_________________
Złoty Szpadel od Pana Mirka! Dziękuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lut 2016, o 13:45 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

A ustawiłeś i aktywowałeś przerwania na 10ms i zrobiłeś w nich timerka programowego na zmiennej "tk" ?... np:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lut 2016, o 22:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 wrz 2013
Posty: 47
Pomógł: 1

Tak użyłem przerwań zgodnie z informacjami:

Czyli:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Tylko nie wiem jak to by miało działać, skoro jak puszczasz klawisz to przestaje się cokolwiek sprawdzać...


Autor postu otrzymał pochwałę

_________________
Złoty Szpadel od Pana Mirka! Dziękuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 lut 2016, o 11:28 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

Masz rację, są zamienione klamry! Prawidłowo powinno wyglądać to tak:
(Dotyczy to też pozostałych mini-funkcji z pierwszego posta, które były modyfikowane na podstawie poniższej)

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Timer ma tylko opóźniać badanie długiego stanu czyli w zasadzie chodzi o wolniejsze zwiększanie zmiennej Lk.

Na usprawiedliwienie mogę tylko powiedzieć, że kiedyś miałem eclipsa ustawionego aby mi na końcu instrukcji robił pierwszą klamrę tak jak to w moich wcześniejszych postach widać, a dopiero jakiś czas później znalazłem opcję zmiany na klamry jak w tym poprawionym przykładzie (czyli klamra pod klamrą). Nie ukrywam, że ciągle mi się zdarzały pomyłki z poprawną analizą kodu czy wycinaniem fragmentów i było to dla mnie bardzo irytujące. Ta pomyłka jak widać zaszalała też w tym temacie, bo kod był też cięty z innego programu :) Nie zmienia to faktu, że gotowy program, który zaprezentowałem ciut dalej http://forum.atnel.pl/topic4763.html#p56884 działa bezbłędnie.
Brawo za spostrzegawczość!

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2018, o 10:26 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 368
Pomógł: 0

Witam.
Ostatnio zająłem się obsługą klawiszy. Korzystałem z blogu Mirka http://mirekk36.blogspot.com/2012/10/drgania-stykow-to-bajki-wiec-jak-to.html. Bardzo ciekawy artykuł i
polecam wszystkim początkującym. Dzięki temu artykułowi udało mi się napisać kilka funkcji do różnorodnych zadań dla przycisków. Działa to super.
Piszę tych kilka zdań, ponieważ natrafiłem ostatnio na temat SylwkaK odnośnie tematu przycisków i jestem wdzięczny za zamieszczenie przez Niego Jego kodów. Są przede wszystkim
napisane w tak prosty i zrozumiały sposób. Dzięki temu przy okazji pomogło mi to w lepszym zrozumieniu zastosowania i działania timerów programowych. Idąc dalej użyłem pomysłu
SylwkaK i przerobiłem trochę kody pod struktury Mirka z w/w bloga o przyciskach. Wyszedł z tego całkiem fajny programik do obsługi guzików z "multifunkcjami". Może ten post niczego
ciekawego nie wniósł, ale chciałem podzielić się pomysłem i przede wszystkim podziękować kolegom za chęć niesienia pomocy słabszym. Pozdrawiam. :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2018, o 11:13 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27308
Lokalizacja: Szczecin
Pomógł: 1041

właśnie o to chodzi aby czerpać inspiracje z różnych źródeł i tworzyć swoje kolejne własne i często jeszcze inne rozwiązania ;) to jest TO

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2018, o 11:32 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 368
Pomógł: 0

Dzięki Mirku.
Jak pisałem wcześniej przy okazji innego tematu, to zacząłem naukę jakby od początku, ponieważ skakałem z kwiatka na kwiatek i tak na prawdę niczego pozytywnego z tego nie było.
Teraz zaczynam widzieć wszystko inaczej, kiedy nie odpuszczam jednego tematu, puki go nie pojmę. Struktura zawarta na blogu http://mirekk36.blogspot.com/2012/10/drgania-stykow-to-bajki-wiec-jak-to.html pozwoliła mi "zaskoczyć" co do wskaźników. Fakt, że czytałem BB, ale czasami inny przykład, podany w inny sposób, ale dotyczący tego samego
zagadnienia potrafi przemówić do wyobraźni. Zresztą tak, jak gdzieś Napisałeś "nie można napisać np. książki dla każdego", czy coś w tym rodzaju, bo ile czytelników, tyle sposobów pojmowania
wiedzy... :lol: . No ale dobra, koniec spamowania forum. Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2018, o 11:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

Fajnie, że ktoś potrafi właśnie wyciągnąć odpowiednie wnioski z analizy różnych źródeł. Mam tak samo :)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 lut 2018, o 16:13 
Offline
Użytkownik

Dołączył(a): 18 cze 2015
Posty: 368
Pomógł: 0

Dzięki SylwekK
Ano staram się. Nie można ciągle narzekać, tylko trza się uczyć. Nikomu lekko nie było i w tydzień się nie da opanować tego, co ludzie się nieraz lata uczą.
Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 16 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO