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



Teraz jest 21 mar 2026, o 17:22


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 8 sty 2016, o 08:22 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 20 mar 2014
Posty: 36
Pomógł: 0

Witam,
prosiłbym o bardziej doświadczonych o doradzenie w jaki sposób najbardziej optymalny napisać następującą instrukcję.
Chodzi o to że mam wartość zadana_ADC w przedziale od 0 do 100. I w zależności od tej wartości ustawiana jest inna zmienna z tym że ona zmienia się o krok równy 5. Czyli np jak mamy zadana_ADC w przedziale 60-65 to tmp = 30, jeżeli w przedziale 65-70 to tmp = 25 itd. Mam to zrobione instrukcją if ... else .. Działa to poprawnie ale nie wygląda to zbyt ciekawie. Chciałbym dowiedzieć jak to napisać zgodnie ze sztuka programowania ;)

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 sty 2016, o 10:14 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 sty 2014
Posty: 336
Lokalizacja: Grodzisk Mazowiecki
Pomógł: 13

Zainteresuj się instrukcją switch case

_________________
"Nie programuj w święta - bug się rodzi"



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 sty 2016, o 17:42 
Offline
Nowy

Dołączył(a): 28 gru 2015
Posty: 9
Zbananowany użytkownik

Pomógł: 0

Zrób wykres i podaj wartości graniczne oraz klika przykładów. Co innego masz w kodzie (inna logika) a inną podajesz zależność w treści. Nie wiadomo do czego się ustosunkować. Z treści wynika że to zależność liniowa a w kodzie nie jest. Więc mam pytanie: jak tak naprawdę jest ? :-)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2016, o 23:11 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

:idea: A może takie coś pomoże :?:
90-5
84-10
78-15
72-20
..
..
18-65
12-70
6-75
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


pierwsze kroki.pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2016, o 00:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 sty 2013
Posty: 1760
Pomógł: 196

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

...a jeśli nie równe?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2016, o 12:56 
Offline
Użytkownik
Avatar użytkownika

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

Proste :) Z tego co widzę masz w miarę stały odstęp między badanymi stopniami (wg programu co 6 stopni) jeśli jednak zależy Ci na 5-o stopniowej różnicy to "skompresuj" badany zakres ADC ze 100 do 20 wartości (100/5=20). Czyli w tym przypadku X=(ADC*20)/100. Ze wzoru widać, że masz zawężony zakres co 5 stopni. Oczywiście możesz zakres przesuwać za pomocą dodawania jakiejś stałej. W każdym razie jeśli masz już ten wynik to nic nie stoi na przeszkodzie zrobić tabeli w pamięci z wpisanymi danymi w zależności od wartości X i selektywnie ich wybierać. Dzięki takiemu rozwiązaniu twoja litania zamienia się w... 2-3 linie kodu :)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 13 sty 2016, o 18:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

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

...a jeśli nie równe?

faktycznie masz rację. :oops: gdyby się okazało ze zadana_ADC nie zmienia się płynnie tylko skokowo albo po resecie zawisła pomiędzy wartosciami podzielnymi -"KISZKA". :roll:

można więc tak:

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


tym razem sprawdziłem, to działa.

tylko tak się zastanawiam: :ugeek:
staram się pomóc ale to chyba nie w tę stronę zmierzam, poniewarz kod w pierwszej wersji przecież działa poprawnie
a moje wymysły zamiast ułatwić to jakoś zakręcają to wszystko.
może i mniej linijek napisane ale trudniej będzie cokolwiek skorygować w razie potrzeby, no i dokładność mniejsza w środkowym zakresie (zadana_ADC o 2) ponieważ charakterystyka wzoru liniowa ."SORKA".

mam nadzieję że może się kiedyś komuś przyda po korektach, do prze-konwertowania jakiegoś zakresu w inny. :)



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Baidu [Spider] i 3 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