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



Teraz jest 2 lut 2026, o 18:55


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 22 ] 
Autor Wiadomość
PostNapisane: 8 sty 2014, o 23:39 

Pomógł: 0

Z racji że kolega nie może jeszcze wrzucać na forum nowych tematów zakładam za niego temat

llemar 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.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 00:03 
Offline
Użytkownik

Dołączył(a): 25 lis 2013
Posty: 28
Pomógł: 0

Witam wszystkich serdecznie i dziękuję koledze rezasurmar za założenie tematu. Od niedawna zacząłem się uczyć programowania w C. Jako na dobry początek wymyśliłem sobie sterowniczek do centrali wentylacyjnej który miałby za zadanie odnaleźć najcieplejszy kanał powietrza i przełączyć się na niego (kominek, wymiennik gruntowy i czerpnia na ścianie budynku). W związku z tym, iż zdecydowanie za mało wiem postanowiłem, że posklejam kod z tego co znajdę i co już mam wraz z niebieską księgą. Aż doszedłem do momentu kiedy musiałem sam napisać kawałek kodu, no i tu pojawiły się schody. Na początku porównywałem ze sobą całkowite części temperatury i tu nie było problemu, ale chciałbym, żeby urządzenie działało jeszcze dokładniej więc dodałem do porównania części po przecinku, kilka warunków if pod sobą i już problem. Proszę o pomoc.
Dziękuję i pozdrawiam,



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 00:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 lut 2013
Posty: 376
Lokalizacja: Kłopoty-Stanisławy
Pomógł: 33

Jak na mój gust to przy tych wszystkich if'ach brakuje klamerek {} potem nagle jest średnik nie wiadomo po co a potem klamerka, która dla kompilatora jest już bardzo nie ważna.

Proponuję koledze aby przeczytał on pierwszą część BB i ogólnie "zaprzyjaźnił" się z samą składnią C.

_________________
50 znaków Atnela ....



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 01:14 
Offline
Użytkownik

Dołączył(a): 22 gru 2012
Posty: 256
Lokalizacja: Rumia
Pomógł: 22

Skorzystam z okazji i zapytam, czy w sytuacji gdy jest tyle warunków które muszą się spełnić, zapisanie tego w formie jaką prezentuję poniżej jest lepszym czy może gorszym rozwiązaniem od zapisania tego w sposób jaki podał kolega, oczywiście po poprawieniu błędów w składni.
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.marcingibas.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 01:58 
Offline
Nowy

Dołączył(a): 14 sie 2012
Posty: 11
Pomógł: 2

Marcin_G, w obu przypadkach kompilator u mnie zwrócił ten sam wynik, więc ze względów optymalizacyjnych różnicy brak.

Co innego wygląd (ja wolę formę podaną przez Ciebie, zwięzłą) i możliwości znalezienia jakiś błędów/debagowania (tu zdecydowanie łatwiej dopisać jakieś else w formie rozpisanej). Niemniej - kwestia gustu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 07:29 
Offline
Użytkownik
Avatar użytkownika

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

Witam
llemar napisał(a):
kilka warunków if pod sobą i już problem. Proszę o pomoc

...to znaczy: nie działa, źle działa czy brzydko wygląda.
Sory, ale ( chyba ) nie piszesz.

Pozdr.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 08:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 lut 2013
Posty: 600
Pomógł: 47

Ja bym się nie bawił z tym porównywaniem wartości zmiennych w if-ach przed przecinkiem, po przecinku.
Nie żeby się nie dało wykonać ale strasznie zagmatwane.

Ja to realizuje tak że jeżeli chcę mieć dokładność do jednego miejsca po przecinku to przemnażam wartości przez 10 i na nich wykonuje wszystkich operacji.
Tutaj masz gotową funkcje której ja używam.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


w miejscu gdzie przypisujesz wartości temperatur do kolejnych temp... zastosuj tą funkcje i przypisz wynik do zmiennej int16_t.
I wtedy porównujesz zmienne np temperatura 10.5C to wartość 105, -5,3C to wartość -53 itp...

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


Tylko zadeklaruj wartość temp2 jako int16_t a wartość temp21 usuń i tak analogicznie dla wszystkich czujników.

------------------------ [ Dodano po: 9 minutach ]

A tak sprawdzasz swoje temperatury

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

_________________
https://www.instagram.com/myfirstquadcopter/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 10:52 
Offline
Użytkownik

Dołączył(a): 25 lis 2013
Posty: 28
Pomógł: 0

Zrobiłem tak jak podpowiedział kolega kurnachatka, lecz kompilator dalej krzyczy "suggest explicit braces to avoid ambiguous 'else'"
w miejscu
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



cały kod 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.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 11:02 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 lut 2013
Posty: 376
Lokalizacja: Kłopoty-Stanisławy
Pomógł: 33

llemar, nie masz klamerek po if'ach i masz else po wykonaniu PORTC &=...... czyli else nie wiadomo czego się dotyczy.

Przeczytaj podstawy C z książki zwłaszcza rozdział o IF i jej składni. Bez takich podstaw ani rusz dalej.

_________________
50 znaków Atnela ....



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 11:15 
Offline
Użytkownik

Dołączył(a): 25 lis 2013
Posty: 28
Pomógł: 0

acid3- zrobiłem tak jak jest na stronie 62 w niebieskiej książce. Czytam ją na bieżąco (nie zawsze ze zrozumieniem ale staram się to pojąć) Sugerujesz, żeby warunki były zagnieżdżone ?
Jeszcze jedno pytanko - jak zwrócić wynik funkcji do zmiennych (temp1, temp2, temp3)??



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 11:25 
Offline
Moderator
Avatar użytkownika

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

llemar napisał(a):
Jeszcze jedno pytanko - jak zwrócić wynik funkcji do zmiennych (temp1, temp2, temp3)??


a czytałeś już o funkcjach w Bluebooku ? czy jeszcze nie ? ... bo jeśli nie - to warto

_________________
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 sty 2014, o 11:39 
Offline
Użytkownik

Dołączył(a): 25 lis 2013
Posty: 28
Pomógł: 0

Warto przeczytać i wiedzieć wszystko :) Być może za wcześnie zabieram się za ćwiczenia...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 11:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 11 lut 2013
Posty: 376
Lokalizacja: Kłopoty-Stanisławy
Pomógł: 33

llemar, jeśli mnie wzrok nie zawodzi to teraz warunki się wykonują po kolei bez względu na wynik i na końcu dostajesz warninga za else które tam "nie pasuje".

Najpierw teoretyczna część ksiązki, potem miganie, a potem LCD z multitouchem :)

_________________
50 znaków Atnela ....



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 11:45 
Offline
Moderator
Avatar użytkownika

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

llemar napisał(a):
Warto przeczytać i wiedzieć wszystko :) Być może za wcześnie zabieram się za ćwiczenia...


Tzn ja powtarzam zawsze jak mantrę ....

Bluebooka trzeba przeczytać RAZ przynajmniej JEDEN RAZ tak w całości od deski do deski a dopiero potem można czytać na wyrywki

dlaczego ?

ano dlatego że wtedy zanim sam sobie zadasz pytanie jak przekazać do zmiennych wartości z funkcji to w głowie odezwie ci się mała kotwiczka, którą zapuściłem wcześniej ;) gdy czytałeś RAZ całość i będziesz wiedział że trzeba zajrzeć gdzieś tam do środka bo ... ooo tym właśnie było tam napisane

tak działa przekaz podprogowy w Bluebooku :lol:

------------------------ [ Dodano po: 1 minucie ]

acid3 napisał(a):
Najpierw teoretyczna część ksiązki, potem miganie, a potem LCD z multitouchem


Tzn tak jak pisałem wyżej - najpierw RAZ cała książka - bo w Bluebooku teoria miesza się w przykładach w drugiej jej części warsztatowej .... to nie jest typowo napisana książka że najpierw jakaś teoria a potem wybrane ćwiczenia ... to wszystko jest zmiksowane w odpowiedni sposób ;)

_________________
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 sty 2014, o 11:52 
Offline
Użytkownik

Dołączył(a): 25 lis 2013
Posty: 28
Pomógł: 0

A niecierpliwość jest ogromna i chciałoby się wszystko robić od razu :)
No nic, trzeba wziąć jeszcze na wstrzymanie i czytać



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 11:59 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 lut 2013
Posty: 600
Pomógł: 47

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


Jak go wkleisz powinno działać, munie kompiluje się bez błędów.
Podpowiem tylko że w kilku miejscach miałeś za if-ami niepotrzebne średniki i jeszcze tam kilka przeróbek.


Autor postu otrzymał pochwałę

_________________
https://www.instagram.com/myfirstquadcopter/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 12:12 
Offline
Użytkownik

Dołączył(a): 25 lis 2013
Posty: 28
Pomógł: 0

Dziękuję Ci kurnachatka :) program działa (gdzie się klika pomógł?)
Jednakże przed kolejnymi pytaniami poczytam jeszcze BlueBooka :)
Dzięki wam zrobiłem kroczek do przodu :)
Dziękuję.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2014, o 13:33 

Pomógł: 0

llemar napisał(a):
A niecierpliwość jest ogromna i chciałoby się wszystko robić od razu
No nic, trzeba wziąć jeszcze na wstrzymanie i czytać


Mam tak samo jak ty ;) że tak przytoczę słowa piosenki.

Ogólnie wiedza moja na temat programowania w C jest mizerna, ale staram się zawsze uruchamiać po kolei poszczególne "klocki" programu
Dlatego idealnie jest podzielić sobie to na funkcje. Nauczyć się przekazywać parametry przez funkcje i przyjmować parametry do funkcji. Wtedy troszkę łatwiej zapanować nad kodem. Nawet jak ma być jeden if w funkcji to na początku dobrze to rozjaśnia kod.

Po za tym jak już koledzy wspominali, przyjmij jeden "model" czy "styl" klamrowania, tabulatorów. Masz kreatory od tego w eclipsie. Np. po enterze automatycznie wrzuca ci tabulacje. Sam staram się stosować styl Mirkowy, bo łatwiej wtedy o pomoc, a przejrzystość kodu na tym bardzo mocno zyskuje.

Np. robisz sobie szablon z ifów, elsów i od razu walisz za nimi klamry, nawet jak będzie tam jeden rozkaz na początku. Dzięki temu nie zgubisz żadnej klamerki po drodze.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2014, o 09:26 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 lut 2013
Posty: 600
Pomógł: 47

llemar napisał(a):
Dziękuję Ci kurnachatka :) program działa (gdzie się klika pomógł?)

Prawdopodobnie nie masz takiej możliwości bo temat założył kolega rezasurmar i tylko on może kliknąć pomógł.

_________________
https://www.instagram.com/myfirstquadcopter/



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2014, o 09:39 

Pomógł: 0

kurnachatka napisał(a):
llemar napisał(a):
Dziękuję Ci kurnachatka :) program działa (gdzie się klika pomógł?)

Prawdopodobnie nie masz takiej możliwości bo temat założył kolega rezasurmar i tylko on może kliknąć pomógł.


kliknąłem ;)



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2014, o 12:10 
Offline
Użytkownik

Dołączył(a): 25 lis 2013
Posty: 28
Pomógł: 0

rezasurmar a sobie też możesz kliknąć ? :) DZIĘKUJĘ



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2014, o 12:35 

Pomógł: 0

No sam sobie nie mogę :lol:



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO