Jump to content
ELFORUM - Forumul Electronistilor
YO5VAE

Loop-ul unei functii din loop - cum?

Recommended Posts

Buna seara. Am nevoie de ajutor intr-un program pe care trebuie sa il fac.

Ca si configuratie, arduino, 1 push-button si un display cu touch Nextion HMI. Butonul este un buton de start.

Cand arduino porneste, apare un meniu din care se pot alege 3 functii cu rol asemanator. Functiile respective fac niste citiri analogice si trimit valorile pe serial dar in acelasi timp le afiseaza si pe display. Se selecteaza pe touch functia dorita iar uC-ul sare in functia respectiva si asteapta butonul de start sau butonul "back" de pe touch. Nu e greu de facut cu un while. Daca se apasa back sistemul sare inapoi in functia principala (in meniul cu 3 functii). Daca se apasa butonul de start, functia incepe si isi face treaba...masoara...trimite...etc., si ... se termina. Programul iese din functia respectiva inapoi in loop.

 

Eu am nevoie ca la sfarsitul programului, daca nu se apasa butonul "back" pe touch, functia sa mi se repete. Adica programul sa imi sara inapoi la inceputul functiei si sa astepte start sau back pe touch.

Teoretic as putea sa fac treaba prin mai multe bucle while (la inceput si sfarsit) sau prin reapelarea functiei in care sunt la sfarsitul programului, dar aceste 2 variante nu mi se par a fi variantele corecte. 

Poate are cineva o viziune diferita pe care as putea sa o implementez.

Multumesc anticipat.

PS1. Inca nu am nici o bucata de cod

PS2. Interfatarea cu touch-ul nu o vad ca o problema, acesta fiind destul de destept.

Share this post


Link to post
Share on other sites

Cred ca ar trebui sa incepeti de aici: https://github.com/itead/ITEADLIB_Arduino_Nextion

Este libraria afisorului LCD. Apoi puteti "broda" pe marginea ei pana obtineti ceea ce doriti. Spre exemplu, puteti folosi in loop functia 'switch case" pentru a selecta o subrutina, sau alta care sa faca ceea ce va doriti.

Share this post


Link to post
Share on other sites

Multumesc pentru raspuns. Pentru functie loop nu imi fac probleme. Imi fac probleme pentru fiecare subrutina in parte, fiindca la terminarea subrutinei, programul sare inapoi in loop unde a ramas, si anume dupa subrutina. Eu as vrea ca programul sa imi sara inapoi la inceputul subrutinei si sa astepte start sau back.

Share this post


Link to post
Share on other sites

Multumesc pentru raspuns. Pentru functie loop nu imi fac probleme. Imi fac probleme pentru fiecare subrutina in parte, fiindca la terminarea subrutinei, programul sare inapoi in loop unde a ramas, si anume dupa subrutina. Eu as vrea ca programul sa imi sara inapoi la inceputul subrutinei si sa astepte start sau back.

Nu va opreste nimeni ca subrutina sa fie de acest tip:

void subrutina_x(void){while (startButton==HIGH){//aici este continutul subrutinei}return;}

Cat timp butonul startButton nu este actionat se va executa subrutina.

Share this post


Link to post
Share on other sites

Multumesc. O sa incerc si revin cu rezultatele, dar abia saptamana viitoare. Momentan astept un audit :(

Share this post


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.