Skocz do zawartości

Wynik mnożenia ze znakami po przecinku


Pomocna odpowiedź

Napisano

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?

@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
14 godzin temu, lukas616 napisał:

Mam kod do przeliczania l/min i wszystko elegancko gra

Pokaż ten kod

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

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++;

}

 

@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 🙂

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.

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