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

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 17 maja 2025, o 08:24


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 19 ] 
    Autor Wiadomość
     Tytuł: Tworzenie menu
    PostNapisane: 6 wrz 2020, o 18:38 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 430
    Lokalizacja: Puck
    Pomógł: 7

    Witam

    Mam takie zapytanie, tworzę menu sterowane pilotem do swojego projektu sterownika
    i zastanawiam się czy nie można by było to menu napisać nieco
    prościej

    Ja nie mam pomysłu jak to zrobić , więc przesyłam ten kod na forum może
    koledzy będą mieli jakiś pomysł na skrócenie kodu, ponieważ jest w nim
    wiele elementów powtarzających się ( ustawianie czasów dla poszczególnych wyjść )
    Jak to uprościć ?

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 wrz 2020, o 19:08 
    Offline
    Moderator
    Avatar użytkownika

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

    miki53 napisał(a):
      lcd_cls();
      lcd_locate(0,6);


    nie widzisz chociażby tak drastycznie powtarzających się linii ?, które aż się proszą żeby je usunąć z obecnego kodu i dać w jednym miejscu przed switch.

    Sparametryzować wskaźnikami nazwy wyświetlane po tych komendach z jakiejś tablicy i już masz milion linii twojego kodu zaoszczędzone... ;)

    Ale jak popatrzyłem dalej to takich "kwiatków" jest po prostu taki ogrom w tym kodzie, że szok. Dlatego spróbuj odnieść się do tego co napisałem i uprościć - to na pewno sam zauważysz dalszych milion takich miejsc

    _________________
    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: 6 wrz 2020, o 19:16 
    Offline
    Użytkownik
    Avatar użytkownika

    Dołączył(a): 06 mar 2015
    Posty: 323
    Lokalizacja: Rybnik
    Pomógł: 23

    Cytuj:
    Ja nie mam pomysłu jak to zrobić , więc przesyłam ten kod na forum może
    koledzy będą mieli jakiś pomysł na skrócenie kodu, ponieważ jest w nim
    wiele elementów powtarzających się ( ustawianie czasów dla poszczególnych wyjść )
    Jak to uprościć ?

    Tak jak już Mirek napisał stwórz jakieś tablice a jak tego będzie mało,to te fragmenty kodu, które się powtarzają
    a są często wykorzystywane, możesz jeszcze ubrać w funkcje.

    _________________
    http://www.avrboss.pl



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 6 wrz 2020, o 20:23 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 430
    Lokalizacja: Puck
    Pomógł: 7

    Panie Mirku

    widzę że powtarza się kod i dlatego wstawiłem go tu na forum
    aby z pomocą kolegów go uprościć ( ale z pomocą a nie żeby to zrobili za minie )

    Dlatego potrzebuję przykładu jak to zrobić

    to nie jest ustawianie wartości dla jednej zmiennej
    lecz jest to cała sterta różnych zmiennych do których są przypisywane wartości
    i wpisywane do struktury



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 7 wrz 2020, o 13:57 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 430
    Lokalizacja: Puck
    Pomógł: 7

    Mógłbym prosić o jakieś podpowiedzi jak uprościć
    ten fragment kodu
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    w tym fragmencie mam 8 zmiennych do których są wpisywane wartości za pomocą pilota
    i mam takich sekcji 8 jak widać w kodzie wyżej
    i teraz jak za pomocą tego jednego kodu do nastawiania, ustawić wartości dla wszystkich
    zmiennych niezależnie
    Nawet jak wezmę tablicę to każda zmienna musi mieć swój indeks i jak ustawiać
    hh,mm,ss,wy
    Jak zmieniać nazwy zmiennych w kodzie do ustawiania wartości aby trafiały tam gdzie mają



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 8 wrz 2020, o 07:18 
    Offline
    Użytkownik

    Dołączył(a): 23 sty 2014
    Posty: 1085
    Pomógł: 73

    miki53 napisał(a):
    Mógłbym prosić o jakieś podpowiedzi jak uprościć
    ten fragment kodu
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    w tym fragmencie mam 8 zmiennych do których są wpisywane wartości za pomocą pilota
    i mam takich sekcji 8 jak widać w kodzie wyżej
    i teraz jak za pomocą tego jednego kodu do nastawiania, ustawić wartości dla wszystkich
    zmiennych niezależnie
    Nawet jak wezmę tablicę to każda zmienna musi mieć swój indeks i jak ustawiać
    hh,mm,ss,wy
    Jak zmieniać nazwy zmiennych w kodzie do ustawiania wartości aby trafiały tam gdzie mają


    np. tak dla case 0:

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



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 14 wrz 2020, o 11:28 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 430
    Lokalizacja: Puck
    Pomógł: 7

    Kombinowałem jak zrobić aby za pomocą tego kodu
    wpisywać do wszystkich zmiennych wartości
    Poniższy kod używać jako funkcję

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

    niestety nic mi z tego nie wychodzi ponieważ mam 64 niezależne zmienne
    i nawet jeśli zastosowałem wskażniki i na nich zmieniałem wartości a potem je przypisywałem
    do zmiennych to jakoś nie wychodziło bo wszystkie zmienne miały te same wartości ?

    Gdybym podstawiał zmienne pod ten kod to może by zadziałało
    ( jeden kod do nastawiania dla wszystkich zmiennych )
    ale jak zmieniać nazwy zmiennych które aktualnie nastawiam ?

    Przepraszam jeśli zawile tłumaczę o co mi chodzi
    proszę o pomysły jak to rozwiązać

    Może tego się nie da inaczej uwarunkować aby wpisywać wartości do zmiennych
    dla każdej niezależnie?

    Potrzebuję podpowiedzi i przykładów jeśli wpisywanie wartości można inaczej zrobić



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 wrz 2020, o 07:14 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 430
    Lokalizacja: Puck
    Pomógł: 7

    Ludziska podpowiedzcie chociaż czy dobrze kombinuję
    z tym sposobem ustawiania czasów czy można to zrobić
    prościej czy nie?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 wrz 2020, o 09:06 
    Offline
    Użytkownik

    Dołączył(a): 05 sty 2015
    Posty: 393
    Lokalizacja: Mielec
    Pomógł: 14

    Czy chodzi oto aby wyzerować wszystkie zmienne czasowe które używasz?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 wrz 2020, o 11:42 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 430
    Lokalizacja: Puck
    Pomógł: 7

    Nie mi chodzi oto czy jest jakiś prosty ( inny ) sposób
    wpisywania wartości do zmiennych



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 wrz 2020, o 13:00 
    Offline
    Użytkownik

    Dołączył(a): 23 sty 2014
    Posty: 1085
    Pomógł: 73

    miki53 napisał(a):
    Nie mi chodzi oto czy jest jakiś prosty ( inny ) sposób
    wpisywania wartości do zmiennych


    Sprawdzałeś co Ci wyżej pokazałem?



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 wrz 2020, o 14:40 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 430
    Lokalizacja: Puck
    Pomógł: 7

    Tak jeśli dobrze odczytałem kod
    to on wiele nie zmienia, zmieniła się tylko forma zapisu
    do zmiennych
    Czyli i tak potrzebuję tyle samo kodów wpisujących co u mnie

    Dla jasności co nazywam kodem wpisującym
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 wrz 2020, o 14:54 
    Offline
    Użytkownik

    Dołączył(a): 05 sty 2015
    Posty: 393
    Lokalizacja: Mielec
    Pomógł: 14

    A na wskaźnikach się nieda?
    W case przypisujesz odpowiednie wskaźniki do zmiennych, przekazanej do funkcji i funkcje wywolujesz z argumentami wskaźnikowymi na odpowiednie zmienne czasowe, tymi wskaźnikam posługujesz się też do zapisu nastaw.

    Jedna funkcja do wszystkich nastaw.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 wrz 2020, o 17:25 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 430
    Lokalizacja: Puck
    Pomógł: 7

    To musiałbym zrobić wskażniki do każdej zmiennej
    to mam 64 zmienne potem do tych zmiennych 64 wskażniki
    Ale sposób wpisywania wartości do tych wskażników
    zostaje bez zmian

    Czyli MASŁO MAŚLANE nie da rady uprościć tego menu
    jedynie co mogę zrobić to to co Mirek napisał

    mirekk36 napisał(a):

    miki53 napisał(a):
    lcd_cls();
    lcd_locate(0,6);


    Sparametryzować wskaźnikami nazwy wyświetlane po tych komendach z jakiejś tablicy i już masz milion linii twojego kodu zaoszczędzone...



    Dzięki za pomoc



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 wrz 2020, o 17:43 
    Offline
    Użytkownik

    Dołączył(a): 05 sty 2015
    Posty: 393
    Lokalizacja: Mielec
    Pomógł: 14

    A poco, no Poco tyle wskaźników? Poco?
    Masz 4 zmienne do zmiany hh, mm, ss, wyj

    case 1:

    wsk = & hh;
    wsk1 = & mm;
    wsk2 = & ss;
    wsk3 = & wyj;

    funkcja(*wsk, *wsk1, *wsk2, *wsk3) ;

    break

    Pokombinuj tak.

    Pisane z głowy mogłem babola zrobić w zapisie.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 wrz 2020, o 18:16 
    Offline
    Użytkownik

    Dołączył(a): 05 gru 2017
    Posty: 430
    Lokalizacja: Puck
    Pomógł: 7

    Szofer napisał(a):
    Masz 4 zmienne do zmiany hh, mm, ss, wyj

    case 1:

    wsk = & hh;
    wsk1 = & mm;
    wsk2 = & ss;
    wsk3 = & wyj;

    funkcja(*wsk, *wsk1, *wsk2, *wsk3) ;

    break

    Tak te 4 zmienne obsługują mi czasy włączenia wyjścia nr1
    Następnie potrzebny jest drugi taki kodżik dla wyjścia nr1
    ale ustawienia czasów wyłączania
    i takich wyjść mam 8 i każde niezależnie działające



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 wrz 2020, o 19:14 
    Offline
    Użytkownik

    Dołączył(a): 05 sty 2015
    Posty: 393
    Lokalizacja: Mielec
    Pomógł: 14

    Zmienne które przetrzymują ci dane czasu, wyjść i innych itp itd co tam masz musisz i tak posiadać bo to twoje dane obsługiwane w kodzie, jak sprawdzenia czasu co włączyć co wyłączyć itp, ale jak je nastawiasz to nie potrzebujesz tysiąca zmiennych do ich nastawienia, funkcja ma nastawić parametry wymagane do przechowywania parametrów i sprawdzenia zakresów nastaw i zapisanie, tylko na potrzeby menu, patrz na to jako uniwersalne rozwiązanie dla wielu zadań z tej samej kategorii.

    Wydaje mi się że zbyt globalnie patrzysz na program, nie dzielisz go sobie na sekcje co masz zrobić i odpalać krok po kroku, tysiąca lini kodu nie unikniesz, no chyba że to tylko mryganie diodą.

    Popatrz na biblioteki Mirka jaki ogrom "treści", pisania tez nie mało, ale ile trzeba poświęcić czasu przy kompie i nie tylko, bo napewno jak ma jakis twardy orzech to nie siada bezmyślnie i pisze miliony lini, tylko najpierw myśli a potem robi.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 15 wrz 2020, o 19:17 
    Offline
    Użytkownik

    Dołączył(a): 05 sty 2015
    Posty: 393
    Lokalizacja: Mielec
    Pomógł: 14

    Pozatym wskaźnik na zmienna, to nic innego jak przetrzymanie jej adresu, ale ten adres możesz zawsze zmienić (jeśli nie jest const ) i wskazywać wskaźnikiem na adres innej zmiennej.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 18 wrz 2020, o 20:22 
    Offline
    Użytkownik

    Dołączył(a): 07 cze 2016
    Posty: 563
    Pomógł: 143

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



    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: 19 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 14 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