Skocz do zawartości

Wynik mnożenia ze znakami po przecinku


lukas616

Pomocna odpowiedź

Mam problem z czujnikiem przepływu yf-s201c. Mam kod do przeliczania l/min i wszystko elegancko gra. Wynik pokazuje w l/min z kilkoma liczbami po przecinku. Gdy chcę przeliczyć na l/godz wynik mnożę przez 60 i wynik wychodzi w l/godz tyle że bez liczb po przecinku czyli liczby całkowite, a chcę aby wynik również by z liczbami po przecinku. Gdzie jest błąd?

Link do komentarza
Share on other sites

@lukas616 witam na forum 🙂 Po pierwsze przy mnożeniu przez 60 powinieneś zapisać to jako "60.0", a po drugie sprawdź, czy zmienna, do której zapisujesz wynik może przyjąć liczbę zmiennoprzecinkową, czyli np. czy jest typu float.

  • Lubię! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Opisał swój problem też na innym forum, jak mnoży liczby naturalne przez 60 to skąd ma mieć coś innego niż XXXX.00? Tam dodał tylko informację, o dzieleniu przez 7.5, co nic nie zmienia, bo dalej mnoży zliczone impulsy x8.

 

  • Lubię! 1
Link do komentarza
Share on other sites

8 godzin temu, Treker napisał:

@lukas616 witam na forum 🙂 Po pierwsze przy mnożeniu przez 60 powinieneś zapisać to jako "60.0", a po drugie sprawdź, czy zmienna, do której zapisujesz wynik może przyjąć liczbę zmiennoprzecinkową, czyli np. czy jest typu float.

Mam zapisane 60.0 i to nic nie zmienia a zmienna jest float

Link do komentarza
Share on other sites

23 godziny temu, _LM_ napisał:

Pokaż ten kod

const int watermeterPin = 2;

volatile int pulse_frequency;

float literperhour;

unsigned long currentTime, loopTime;

byte sensorInterrupt = 0;

void setup()

{

pinMode(watermeterPin, INPUT);

Serial.begin(9600);

attachInterrupt(sensorInterrupt, getFlow, FALLING);

currentTime = millis();

loopTime = currentTime;

}

void loop ()

{

currentTime = millis();

if(currentTime >= (loopTime + 1000))

{

loopTime = currentTime;

literperhour = (pulse_frequency * 60 / 7.5);

pulse_frequency = 0;

Serial.print(literperhour, DEC);

Serial.println(" Liter/hour");

}

}

void getFlow ()

{

pulse_frequency++;

}

 

Link do komentarza
Share on other sites

@lukas616 kody programów należy umieszczać przez narzędzie Wstaw kod programu (znajdziesz je w edytorze obok ikonki "<>"). Dzięki temu programy są odpowiednio formatowane i kolorowane, a wtedy wszystkim znacznie łatwiej analizować wklejony kod. Proszę to poprawić - z góry dziękuję za zrozumienie i pomoc przy utrzymaniu porządku na forum 🚀

Na pewno zwiększysz wtedy szansę, że ktoś szybko przeanalizuje Twój kod 🙂

Link do komentarza
Share on other sites

Cześć @lukas616

Spróbuj testowo zakomentować linię: pulse_frequency = 0; w pętli loop jak na print screenie poniżej

1221988241_FORBOT2.thumb.jpg.0b5f7665530fa527fb52567719673a98.jpg

UWAGA: wejście 2 nie było do niczego podpięte - zbierało śmieci... Pierwsze kilka odczytów też może wyświetlać zera po przecinku.

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.