Sari la conținut
ELFORUM - Forumul electronistilor

Valoare Serial.read si interrupt


Vizitator Dorin Iordache_235237

Postări Recomandate

Vizitator Dorin Iordache_235237

Salut!

Am o mica problema si nu prea am idee cum sa o rezolv momentan asa ca va cer ajutorul.

Am un rotary encoder folosit ca interrupt. Acesta imi incrementeaza sau decrementeaza o valoare pe care o folosesc mai apoi pentru a transmite un puls PWM. In acelasi timp citesc o valoare prin Serial.read () transmisa prin intermediul unei aplicatii android. Vreau ca valoarea din Serial sa-mi updateze valoarea encoderului dar si vice-versa ( valoarea encoderului sa imi updateze valoarea din Serial si sa o primesc in aplicatia android). Momentan daca doar egalez valoareencoder=valoareserial nu imi functionzeaza. Ce as putea face in cazul asta?

 

Link spre comentariu
  • Răspunsuri 3
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • mars01

    2

Zile populare

Top autori în acest subiect

Posteaza programul aici si ai mai multe sanse de rapuns.

Formateaza-l sa fie usor de citit si include-l in fereastra speciala pentru cod folosind butonul '<>' din bara de editare. Astfel iti cresc sansele ca cienva sa citeasca codul postat.

Link spre comentariu
Vizitator Dorin Iordache_235237

Aici este codul. L-am atasat in format txt . Stiu ca sunt multe imbunatatiri pe care le-as putea face dar asta e doar o versiune initiala. Deci in principal sunt interesat sa am 2 variable ( valoarea setata de encoder si cea primita pe serial) iar aceste 2 variable sa se egaleze tot timpul una cu cealalalta in functie de cea care a fost schimbata.

Exemplu: valoarea encoderului este 100 iar cea din serial este de 60. Daca encoderul este cel care a fost schimbat acum atunci valoarea din serial vreau sa fie egala cu 100. Daca valoarea din serial este cea care a fost schimbata acum atunci vreau ca valoarea encoderului sa fie egala cu 60. Nu e nevoie sa scrieti sectiunea asta de cod. Tot ce vreau este o idee despre cum as putea sa fac asta!

Multumesc mult!

 

code.txt

Link spre comentariu

Fara sa ma fi uitat pe cod cred ca ar trebui sa tii minte in doua variabile, care a fost valoarea data de serial in iteratia anterioara si care a fost  valoarea data de encoder in iteratia anterioara. Stabilesti care are prioritate din cele doua si compari valoarea serial din iteratia curenta cu valoarea serial din iteratia anterioara. La fel cu valoarea encoder. Daca difera atunci actualizezi valoarea PWM. Daca nu, nu faci nimic.

 

Sa zicem ca alegi ca valoarea schimbata prin serial are prioritate. 

Ordinea ar fi asa:

 

daca val_ant_serial != val_curent_serial atunci

     val_PWM = val_curent_serial

     val_ant_serial = val_curent_serial

altfel daca val_ant_encoder != val_curent_encoder atunci

               val_PWM = val_curent_encoder

               val ant_encoder = val_curent_encoder

 

 

 

Ceva de genul ...

Link spre comentariu

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări