Jump to content
ELFORUM - Forumul electronistilor
Guest Dorin Iordache_235237

Valoare Serial.read si interrupt

Recommended Posts

Guest 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 to post
Share on other sites

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 to post
Share on other sites
Guest 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 to post
Share on other sites

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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.Terms of Use si Guidelines