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



Teraz jest 9 sty 2025, o 18:23


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 10 ] 
Autor Wiadomość
PostNapisane: 18 kwi 2017, o 12:09 
Offline
Użytkownik

Dołączył(a): 13 paź 2015
Posty: 303
Lokalizacja: Rybnik
Pomógł: 10

Witam,
Mam pytanie odnośnie dwóch zmiennych w pętli for. Zacząłem pisać program do płynnej zmiany kolorów RGB i w pętli for tam gdzie mam dwie zmienne wyskakują warningi (w kodzie jest to tam gdzie mam w komentarzu wpisany kolor fioletowy i zielony).

Kod się kompiluje i wgrywa do procesora, ale jak przeglądam konsolę to są tam takie komunikaty:
../main.c:39:20: warning: left-hand operand of comma expression has no effect [-Wunused-value]
../main.c:56:22: warning: left-hand operand of comma expression has no effect [-Wunused-value]

a w 39 i 56 linijce kodu w eclipsie są znaczki ostrzegawcze.

Czy źle napisałem te pętle for? Jak powinienem to zrobić, aby ostrzeżenie zniknęło?

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: 18 kwi 2017, o 12:24 
Online
Moderator
Avatar użytkownika

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

Jarecki napisał(a):
for(i=250,k=250;i>0,k>0;i--,k--)

nie stosuje się dwóch warunków w pętli for

_________________
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: 18 kwi 2017, o 12:26 
Offline
Użytkownik

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

mirekk36 napisał(a):
Jarecki napisał(a):
for(i=250,k=250;i>0,k>0;i--,k--)

nie stosuje się dwóch warunków w pętli for


Zgadza się, przeoczyłem :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 kwi 2017, o 13:23 
Offline
Użytkownik

Dołączył(a): 13 paź 2015
Posty: 303
Lokalizacja: Rybnik
Pomógł: 10

więc zrobiłem teraz tak:
for(i=k,k=250;k>0;i--,k--)

ostrzeżenie znikło, ale teraz mam pytanie czy na końcu pętli muszę zrobić wygaszenie diody, żeby pętla od początku płynnie się zaczęła wykonywać? Bo jeżeli nie wygaszę diody to na końcowym etapie jest taki przebłysk i pętla jedzie od początku.
Chciałbym żeby np. z ostatniego białego koloru płynnie zmienił się kolor na fioletowy (przeszedł na początek pętli). Nie mam pomysłu jak to zrobić, zawsze mam błyśnięcie albo wygaszenie diody.

Kombinowałem jeszcze, żeby dodać fioletowy także na końcu pętli, ale i tak błśnięcie jest...

mój program:
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: 18 kwi 2017, o 13:50 
Offline
Użytkownik

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

Spróbuj tak:

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



Ostatnio edytowano 18 kwi 2017, o 13:54 przez Jarecki, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 kwi 2017, o 13:54 
Offline
Użytkownik

Dołączył(a): 13 paź 2015
Posty: 303
Lokalizacja: Rybnik
Pomógł: 10

Bo chciałem, żeby jakoś połączyć koniec z początkiem, żeby tego przebłysku nie było albo wygaszenia przy wykonywaniu się pętli od początku.

Nie wiem czy dobrze myślę, ale może powinienem na początku po prostu zaświecić kolor fioletowy (bez rozjaśnienia), a na końcu pętli rozjaśnić kolor fioletowy bez ściemnienia?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 kwi 2017, o 13:59 
Offline
Użytkownik

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

Nie podoba mi się to za bardzo:

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


Po pierwszym obiegu pętli while nie wiadomo które przypisanie będzie pierwsze... for(i=k,k=0.... czy i = k czy k = 0 a to ma znaczenie w Twoim kodzie zdaje mi się



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

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

Tak na szybko liczyłem. Po pierwszym obiegu while(1) w pierwszej for() i = 250 oraz k = 250. k jest zerowane,a i zwiększa się do 255, zeruje się. Po wyjściu z pierwszego for() i=245. Mały błysk jest już w kolejnej for(), bo i=245 zmienia się na i=250



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 kwi 2017, o 14:45 
Offline
Użytkownik

Dołączył(a): 13 paź 2015
Posty: 303
Lokalizacja: Rybnik
Pomógł: 10

Panowie dziękuje za pomoc.

Doszedłem do wniosku, że jeżeli w pierwszej for() będę rozjaśniał diodę to zawsze będę miał mignięcie albo wygaszenie. Dlatego na początku while(1) oraz przed pętlą while(1) zaświeciłem kolor fioletowy i w pierwszej for() płynne przejście na niebieski itd. Natomiast w ostatniej for() rozjaśnienie koloru fioletowego (ale nie ściemnienie). Dlatego po powrocie na początek pętli while(1) jest płynne przejście z fioletowego na niebieski.

Poniżej kod (jak to rozwiązałem):
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jeszcze raz dziękuję za zainteresowanie :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 kwi 2017, o 17:39 
Offline
Użytkownik

Dołączył(a): 26 cze 2016
Posty: 186
Pomógł: 7

Proponuję zadeklaruj typ zmiennej pętli for, kiedyś skopiowałem gotowy kod i był problem z tego powodu, bo zmienna
miała wartość po wyjściu z pętli.
Kod:
for (int i=0;;) { }



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

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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO