• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
liczby z przecinkiem
#11
suma max będzie 15000.000
 
Odpowiedź
#12
Tu nie chodzi o sumę ale o dokładność obliczeń. Po co ci float jak można to zrobić na dużych liczbach całkowitych AVR przy float to żółw...

np. Skoro 1s to 1000ms to poco zapisywać jako 1.000s jak można 1000ms...
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#13
Użyj liczb stałoprzecinkowych. 15000000 w 4294967295 zmieścisz 286 razy. Bez problemu możesz używać porównania == co w liczbach zmiennoprzecinkowych jest problematyczne. Liczba 32-bit, która wystarczy w tym przypadku, zajmuje w pamięci 2 razy mniej pamięci. Operacje na liczbach stałoprzecinkowych wykonują się szybciej niz na zmiennoprzecinkowych.
Kod z delay to nie kod, to DEMO!
Możliwości sprzętowe uC trzeba wykorzystywać a nie /machać/. GPIO!
Jestem a usilnie chcę być amatorem to dwie różne rzeczy.

http://er-mik.prv.pl/projekty edw.php 
http://er-mik.prv.pl/projekty_avt.php
 
Odpowiedź
#14
rozumiem zasadę...
ale nie wiem jak mam ją zastosować
no bo dzieląc mniejszą liczbę przez większą i tak wyjdzie ułamek a jeżeli będę to zaokrąglał to po 6 godzinach naliczania sekundowego wyjdą głupoty
Mam na przykład wydajność 50 ml/min
choćbym licznik pomnożył przez 1000 (a potem wynik podzielił przez tyle samo) to i tak 5000/60 to 833.33

nie czaje jak mam to zrobić... Sad
 
Odpowiedź
#15
No ale skąd masz te 50ml/min to jakaś stała? odczytana? wyliczona? idz do źródła....
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#16
zmierzone....
jest to wynik mapowania prędkości silnika(nie pamiętam teraz ale chyba 100% to 300 obr/min)
i ta wartość zmienia się w czasie pracy
więc o ile kiedy prędkość jest powyżej 60 to wychodzą liczby całkowite ale kiedy jest po niżej już nie
a większość czasu silnik pracuje właśnie po niżej tej wartości

nie rozumiem jak mam to zrobić na liczbach całkowitych...
 
Odpowiedź
#17
Pompa o wydajności od 0-100ml to to samo co pompa o wydajności 0-100000ul. Jak będziesz dzielił ul przez 60 to nie będziesz potrzebował dokładności 0.001 tylko wystarczy 1ul. Jak koniecznie chcesz wyświetlać 0.001 to przed samym wyświetleniem wynik dzielisz przez 1000 i masz wartość przed przecinkiem, a potem resztę z dzielenia %1000 to jest to co po przecinku, trzeba tylko sprawdzić czy jest to mniejsze od 100 - dodać 0 w wyświetlanym tekście, mniejsze od 10 to dodać drugie.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#18
No zgadza tym bardziej jak używa mapowania wiec nie musi mnożyć tylko wynik w ul... ale chwila..

Skąd masz obroty jak to mierzysz/liczysz??
Arduino zostało wymyślone po to, by robić dobrze jedną prostą rzecz – migać diodą. 
 
Odpowiedź
#19
@zojsan, a co to za pompa? Kiedyś trochę z pompami miałem do czynienia, ale przepływy to max 2000ml/h, więc pewnie inny typ urządzenia...
 
Odpowiedź
#20
to pompa perystaltyczna z silnikiem krokowym
W pełnym kroku 200 kroków na obrót
Rozkręcam to do 5000Hz przy 1/4 kroku=375 obr/min
i przy tych obrotach pompa ma wydatek 90ml/min
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości