Skocz do zawartości

Zmienne millis, prośba o pomoc


Pomocna odpowiedź

Chłopaki miejcie litość, uczę się programować od 10 dni. W wolnym czasie między pracą, trójką dzieci i żoną.

Ethanak daruj Elvisowi, chłop jest wymagający ale bardzo pomocny.

Dzięki za wszelkie sugestie.

@Elvis: dlatego wszystkie nowsze kompilatory/linty wypisują w takiej sytuacji ostrzeżenie - a zadaniem programistego jest poinformiwanie kompilatora, że właśnie o to chodziło i ma się nue czepiać.

SOYER, gratuluję programu, nie zamierzam więcej o stylu kodowania pisać. Po prostu nie chciałem żebyś uczył się ze złych przykładów.

ethanak, nie wiem co Ci odpisać - poza tym że życzę powodzenia z takim podejściem. Może w małym, amatorskim projekcie to zadziała ale jak spróbujesz tak pisać coś na poważnie szybko zmienisz zdanie. Albo chociaż padniesz ze szczęścia jak dostaniesz od kogoś taki kod do zmian.

No ale to, że instrukcja podstawienia oddaje wartość było celowym zamysłem twórców C i zostało zrobione po coś. W moim rozumieniu właśnie m.in. do takich celów. C nie musi wyglądać jak nadobny Algol. Dla każdego kto C zna i rozumie, konstrukcja ethanaka jest oczywista. A nieczytelność kodu powstaje (pomijając konkursy i celowe działania) z bezsensownych nazw zmiennych, idiotycznego formatowania czy używania konstrukcji np. ewidentnie niepasujących do algorytmu. To właśnie zakłóca naturalny flow odczytywania obcego kodu. Choć być może jest to dyskusja o tym który kolor jest ładniejszy..

No i szacun SOYER za zacięcie. A biegłość w formułowaniu kodu w C przyjdzie z czasem, język jak każdy inny, trzeba w nim gadać.

Dzięki chłopaki za dobre słowo, nie jedźcie za bardzo po Elvisie 😉 , gdyby nie on nie wiedziałbym dalej o co chodzi z millis...

Elvis pisz, poprawiaj, krzycz, UCZ MNIE DALEJ 😃 . Co znaczą Twoje słowa: "ale używanie przypisania w parametrach wywołania funkcji nie świadczy dobrze o kodzie", pokaż mi konkretny fragment, bo nie wiem o czym dyskutujecie 🙁 .

Pytałem też o to czy delay wstrzymuje odliczanie millis? czy millis liczy zawsze od początku uruchomienia i nic na ten czas nie wpływa?

@Elvis: wybacz, parę programów C napisałem, nie mam zamiaru na tym forum się chwalić (bo zmierzenie się z robotyką to dla mnie nowe pole do eksperymentów) - ale znajdź sobie któregoś pięknego dnia programik o wdzięcznej nazwie "Milena". Potem pogadamy o pisaniu amatorskich programów na poważnie.

A SOYERowi gratuluję - tak trzymać!

(Edytka) @SOYER: delay ani żadna inna funkcja nie blokuje odliczania millis/micros. Do tego musiałbyś zablokować przerwania na dłuższy czas.

Jedyna znana mi biblioteka która to robi to NeoPixel w wersji Adafruit - ale to wynika z wymagań podłączonego hardware'u.

Ethanak chodziło ci by to:

if (stanz == LOW) { 
     stanz = HIGH; 
   } else { 
     stanz = LOW; 
   } 
  digitalWrite(zielona, stanz); 

zastąpić: digitalWrite(zielona, stanz =!stanz);

w sumie krócej 😅 ale niepoprawnie?

SOYER, cała dyskusja dotyczy kod zaproponowanego przez ethanak-a. Twój program zaginął w potoku postów.

marek1707, nie do końca się z Tobą zgodzę. C zawiera wiele kontrukcji, których użycie nie zawsze jest wskazane, jak chociażby słynne goto (które czasem bardzo się przydaje). Nie należy używać wszystkiego tylko dlatego że można. Natomiast to co uważam za nieopranwe jest zanegowanie zmiennej przekazywanej jako kolejny parametr wywołania. Taki kod jest mało czytelny jeśli czytamy większy kod i łatwo jest w nim popełnić błąd. A co do stylu kodowania to każdy może mieć własny, są jednak pewne zalecenia i sprawdzone reguły - których czasem warto się trzymać.

ethanak, nie tylko Ty napisałeś w życiu kilka programów, ale skoro chwalimy się osiągnięciami to może podasz linka do tej Mileny? Nazwa niezbyt wdzięczna do wyszukiwania 🙂

Domyślam się, że zmienne typu bool są zero jedynkowe. Ale jak można zanegować zmienną wynoszącą np.2,65? To będzie -2,65? Pewnie może się przydać takie cóś...

Negacją liczby różnej od zera jest zero. Negacja zera zależy od implementacji (albo 1, albo wszystkie bity ustawione) ake zawsze jest różna od zera.

Nie.

Operator negacji logicznej (inaczej wykrzyknik) działa wyłącznie na typach int. Float będzie skonwertowany na int - a to nie zawsze wychodzi na zdrowie... Np. 0.0031 skonwertowane na int to będzie zero... A pewnie nie tego byś chciał.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...