Vizitator Postat August 22, 2022 Partajează Postat August 22, 2022 (editat) Acum 2 ore, Mihai85 a spus: Ultima cifra mai oscileaza, pentru ca nu mai pot introduce delay(). Poti incerca delay fara delay(). Ceva de genul: long prev_millis=0; #define read_interval 100 int V1=0,V2=0, cate_citiri=0; if(millis()-prev_millis>read_interval) // citesc la fiecare 100ms { V1+=analogRead(1); V2+=analogRead(2); if(++cate_citiri==10) // afisez la 1sec { V1=V1/10; // media celor 10 citiri V2=V2/10; // calcul temp. si afisare V1=0; V2=0; cate_citiri=0; } prev_millis=millis; } Editat August 22, 2022 de Vizitator Link spre comentariu
Mihai85 Postat August 22, 2022 Autor Partajează Postat August 22, 2022 Multumesc, testez. Mai ramane cu turatia sa fac sa revina la zero. Link spre comentariu
Bandi Szasz Postat August 22, 2022 Partajează Postat August 22, 2022 Pentru a revenii la zero unde ai acel "if(flag)" si calculezi "RPM" salveaza intr-o variabila si millis(), mai apoi dupa acel "if" mai pui un "if" unde verifici cat timp a trecut de la ultima calculare ( cand flag a fost 1), iar daca au trecut mai mult de X millis atunci resetezi variabila "RPM" la 0. Ce trebuie sa faci este sa verifici cat timp a trecut de la ultima detectare a magnetului sa iti dai seama cand sa oprit magnetul si asta o faci verificand cat timp a trecut de la ultima detectie iar daca sa zicem au trecut X millisecunde inseamna ca mult mai probabil nu se mai roteste. Timpul il calculezi aproximativ fata de rotatia minima pe care vrei sa o poti detecta. Link spre comentariu
sesebe Postat August 22, 2022 Partajează Postat August 22, 2022 Se poate și matematic în sensul ca avem un sistem mecanic la care nu poți fi variații prea bruște ale valorilor și atunci se poate calcula pe baza ultimilor valori citite cit va fi aproximativ urmatoarea valoare. La fel și cu intervalul maxim între citirea magnetului. Unui motor nu-i poate varia prea mult viteza în citeva milisecunde/zeci de milisecunde. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum