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



Teraz jest 29 mar 2024, o 09:59


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 41 ]  Przejdź na stronę Poprzednia strona  1, 2
Autor Wiadomość
PostNapisane: 26 gru 2016, o 02:19 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

Mam problem z wywołaniem funkcji typu void program zapala i gaśi 16 diod klawisz1_wcisniety zapala 16 diod klawisz2_wcisniety gasi 16 diod.
Proszę o pomoc i jeśli to możliwe o krótkie wyjaśnienie z góry dziękuję .

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

Pozdrawiam.



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

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Daro68 napisał(a):
Mam problem z wywołaniem funkcji typu void

Funkcje do zapalania i gaszenia diod LED masz zadeklarowane z argumentami, a wywołujesz je bez żadnych argumentów.
Zamiast led_on(); powinno być led_on(1); ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2016, o 00:39 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

Próbuje przerobić kod kolegi ‘anshara’ tylko z wykorzystaniu ‘if’ ale znowu staniałem w miejscu .
Myślałem że jak wpisze warunek if (key1(1)) to wykona się led_ on a tu kicha kompilacja przeszła bez błędu ale nie ten efekt po wciśnięciu klawisza zapala się tylko jedna dioda przy kolejnym wciśnięciu następna i tak dalej
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Diody mają zapalać się przy wciśnięciu key1 od 1-16 .
Pozd.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 29 gru 2016, o 07:41 
Offline
Użytkownik
Avatar użytkownika

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

Cześć.
Nie przyjrzałem sie dokladnie,
Ale może
if key1 flaga_zapal=1
if key2 flaga_zapal=0
if flaga_zapal ledon(1); else led_ooff;

Wykorzystać flagi.

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

Sorka za greźmolenie, piszę z telefonu.:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 7 sty 2017, o 20:14 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

Próbuje napisać własny program do sterowania oświetlenia led-schody podobny do działania kodu
‘anshara’ ale jak zwykle stanąłem w miejscu.
Działanie kodu ma być następujące:
if (przycisk wciśnięty i LED_ON )
Ledy zapalają się do góry –
else ( jeśli ledy świecą wykonuje się else i ledy gasną )

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

Proszę o podpowiedz ;)
Pozdrawiam



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 8 sty 2017, o 13:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Chciałem kolegę anshar zapytać jak on to wykombinował, ale gdzieś wyszedł.
Spróbuję zatem sam podpowiedzieć, najwyżej mnie poprawi. :D

Myślę, że można to zrobić tak:
Jeżeli przycisk wciśnięty i flaga1 jest równa 0 to ustaw tą flagę na 1.
Jeżeli przycisk wciśnięty i flaga1 jest równa 1 to ustaw tą flagę na 0.

Jeżeli flaga1 jest równa 1 to zapal diody LED.
Jeżeli flaga1 jest równa 0 to zgaś diody LED.

W twoim kodzie LED_ON i LED_OFF mają zawsze te same wartości i są niepotrzebne. Flaga2 również.
Zwróć uwagę na kolejność wykonywania instukcji warunkowych.
Stosuj:
if(warunek1) {jakieś_instrukcje_do_wykonania}
else if(warunek2 {jakieś_instrukcje_do_wykonania}



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 9 sty 2017, o 23:43 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

Napisałem kod w ten sposób i program nie działa poprawnie , po dopisaniu else if program żyje własnym życiem to znaczy
po wgraniu if key1() , flaga=1, led_on działa poprawnie dopisałem else if kompilcja przebiegła pomyślnie ale diody zapalają się
co druga. :(

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

Proszę i dziękuje za podpowiedź.

Pozdrawiam.



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

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Zapomniałeś o sprawdzaniu flaga1, zobacz:
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: 10 sty 2017, o 00:48 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

Jeśli dobrze rozumiem if( key1() && !flaga ) to przycisk wciśnięty flaga=0 negacja '!' =1 a ja próbowałem wpisywać
flaga=0 lub flaga=1 zamiast !flaga. No a jeśli po wciśnięciu przycisku program miał by rozpoznać czy ledy są załączone czy zgaszone to można by napisać if (key1() && !flaga &&(PORTA && PORTC)).
Teraz muszę jeszcze odwrucić gaszenie led_off i jeszcze jedno w twoim kodzie użyłeś #if czytałem w BB ale nie do końca jest to dla mnie zrozumiałe.

Pozdrawiam.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 10 sty 2017, o 01:44 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 09 gru 2014
Posty: 1540
Pomógł: 269

Poczytaj jeszcze w BB o instrukcjach warunkowych kompilatora i o operatorach logicznych. ;)

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

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

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

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


Działać będzie dokładnie tak samo.

Musisz użyć operatora porównania ==, a nie przypisania =, zobacz na przykład w moim kodzie jest:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jeżeli KEYS_FLOW jest 1, to ten fragment kodu, króry jest pomiędzy #if i #endif skompiluje się, jeśli nie to kompilator nie będzie brał tego fragmentu kodu w ogóle pod uwagę. Jeżeli używasz Eclipse'a to, gdy zamiast 1 wpiszesz np.0 to między innymi ten fragment kodu pięknie się wyszarzy.

Daro68 napisał(a):
No a jeśli po wciśnięciu przycisku program miał by rozpoznać czy ledy są załączone czy zgaszone to można by napisać if (key1() && !flaga &&(PORTA && PORTC)).

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

Tylko po co taki długi, rozbudowany warunek? ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sty 2017, o 00:49 
Offline
Użytkownik

Dołączył(a): 08 cze 2016
Posty: 204
Lokalizacja: Katowice
Pomógł: 0

Co się tyczy tego długiego warunku (oj długi) to myślałem sobie tak jeśli klawisz1_wciśnięty i ledy zgaszone to warunek zostanie spełniony i wykona się led_on (ledy zapalą się do góry ) a jeśli nie zostanie spełniony to wykona się else led_off ( ledy zgasną z góry na dół ) i w ten sam sposób tylko odwrotnie klawisz2_wciśnięty , z tego myślę flaga spełnia podobne zadanie .
No i próbowałem dopisać kolejną część kodu no i frytki , myślę że muszę oddzielić klawisz1 od klawisz2.
Moja wesoła twórczość :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Co się dotyczy #if to urzywam Eclips’a no i właśnie perzy #if KEYS_FLOW == 1 mam ten fragment wyszarzony.
Obrazek

Proszę o podpowieć.
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: 41 ]  Przejdź na stronę Poprzednia strona  1, 2

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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