

-----------------------------------

AVD

12 Feb 2024 13:50



-----------------------------------

Ai niste exemple concrete sa le testez ?
O bucata de cod care nu functiona cum te asteptai sau chiar exemple de pe site-ul arduino.

Probleme de genul asta se pot rezolva cu 'type casting', chiar compilatorul iti mai da warning-uri ca este o situatie ambigua. Asta daca nu sunt chiar bug-uri, double e cam buggy in AVR gcc, dar float ar trebui sa functioneze.

P.S.
Daca e vorba de rotunjiri si trunchieri de precizie la float ca aici:


Exact exemplul pe care l-am dat: am incercat sa calculez tensiunea folosind valoarea masurata la pin-ul analogic (care era masurata prin divizorul de tensiune) impartita la raportul dintre valorile rezistoarelor din divizorul de tensiune. Le-am pus in doua constante, vdiv1 si vdiv2. 

int vdiv2 = 100800
int vdiv1 = 10000
double volt_temp
double volt;

[...]

volt_temp = (media valorilor masurate in 150 de sample-uri) 
volt = volt_vemp / (vdiv1/vdiv2).



Acel raport ar fi trebuit sa dea 0 .992, dar, in formula, a fost tratat doar ca 0.99.

Tin sa mentionez (deoarece am vazut ca am intrat in detalii despre codare): Nu am un background prea stufos de codare. Am invatat codare in pascal si C++ in liceu, acum mai bine de 10 ani si, de atunci, nu am mai avut contact cu acest domeniu (cu exceptia micilor proiecte arduino, dar foarte rar).

