16-Mar-2024, 09:59 PM
(Dit bericht is het laatst bewerkt op 16-Mar-2024, 10:11 PM door LigfietsWilsum.)
Als je een int deelt, dan wordt het niet automatisch een float, dat is afhankelijk van het type in de vergelijking.
float f;
int x = 900;
int y = 1000;
f = x /y;
dan is f dus 0, want er gaat in ints gerekend worden, dan pas naar float.
900 / 1000 = 0
1100 / 1000 = 1
casten is het gewenste type er voor zetten:
float f;
int x = 900;
int y = 1000;
f = (float) x/ (float) y
f is nu 0.9.
print statements kunnen de boel ook verzieken. die kunnen de heleboel ophouden,
ook is het beter de snelheid van de seriele interface veel hoger te zetten, 115200. Dan wordt het oponthoud al een stuk minder.
Zet je displayaansturing ook maar even uit, die kan ook teveel tijd kosten...
(Helemaal, dus ook niet initialiseren.)
Als het kan (PC en Arduino), dan de seriele poort zelfs nog hoger zetten. Kijk maar wat het max is. Ik draai hier zelf op > 1Mbaud. (Geen Arduino overigens, maar STM32H750)
float f;
int x = 900;
int y = 1000;
f = x /y;
dan is f dus 0, want er gaat in ints gerekend worden, dan pas naar float.
900 / 1000 = 0
1100 / 1000 = 1
casten is het gewenste type er voor zetten:
float f;
int x = 900;
int y = 1000;
f = (float) x/ (float) y
f is nu 0.9.
print statements kunnen de boel ook verzieken. die kunnen de heleboel ophouden,
ook is het beter de snelheid van de seriele interface veel hoger te zetten, 115200. Dan wordt het oponthoud al een stuk minder.
Zet je displayaansturing ook maar even uit, die kan ook teveel tijd kosten...
(Helemaal, dus ook niet initialiseren.)
Als het kan (PC en Arduino), dan de seriele poort zelfs nog hoger zetten. Kijk maar wat het max is. Ik draai hier zelf op > 1Mbaud. (Geen Arduino overigens, maar STM32H750)