Jump to content
ELFORUM - Forumul electronistilor

COMANDA BUTON


Guest

Recommended Posts

Salut. Doresc sa realizez un proiect in care daca apas pe un buton(push button) sa stea aprins 1 led, daca apas pe un alt buton sa stea aprins alt led, iar celelalte stinse si tot asa. Am realizat un cod(evident cel mai simplu), dar dupa ce iau mana de pe buton se stinge led-ul. Daca ma poate ajuta cineva cum as putea realiza acest cod, va multumesc.

Edited by Guest
Link to comment
  • Replies 7
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Sebastian,
Una dintre conditiile pentru a fi bun programator este sa fii in stare sa enunti o problema corect si mai important, complet.
Ceea ce tu nu faci.
In fact este ceea ce se numeste: "garbage in -> garbage out".

Daca vrei un raspuns la obiect, modifica textul postului initial oferind toate datele problemei. Inclusiv codul pe care sustii ca l-ai scris deja.

Link to comment
bool buttons[4];
for (int i = 2; i < 6; i++) {
   if (digitalRead(i) {
     for (int j = 2; j < 6; i++) buttons[j] = false;
     buttons[i] = true;
   }
   digitalWrite(i + 4, buttons[i]);
}
                        

Asta ar fi o idee de cod cu 4 intrări pinii 2-5 şi 4 ieşiri pinii 6-9.

Pinii trebuie declaraţi separat cu pinMode şi restul, ăsta este doar algoritmul de selecţie.

La fiecare apăsare de buton se şterg toţi biţii din arie şi se rescrie doar cel corespunzător butonului apăsat.

Apoi se trimit stările pe ieşiri.

Edited by mihaicozac
Link to comment
Acum 9 ore, mihaicozac a spus:

bool buttons[4];
for (int i = 2; i < 6; i++) {
   if (digitalRead(i) {
     for (int j = 2; j < 6; i++) buttons[j] = false;
     buttons[i] = true;
   }
   digitalWrite(i + 4, buttons[i]);
}
                        

Asta ar fi o idee de cod cu 4 intrări pinii 2-5 şi 4 ieşiri pinii 6-9.

Eu zic ca asta este "o idee de cod" pentru a genera un buffer overflow :)

(daca nu ai norocul sa te anunte compilatorul de eroare)

Link to comment

Am 2 typos în cod, dar scris corect acesta se compilează, mai daparte nu am stat să verific. Codul complet ar fi ăsta:

bool buttons[4];
            
                  

void setup() {
for (i = 2; i < 6; i++) {
   pinMode(i, INPUT);
   pinMode(i + 4, OUTPUT);
   }   
}
void loop() {
  for (int i = 2; i < 6; i++) {
     if (digitalRead(i)) {
       for (int j = 2; j < 6; j++) buttons[j] = false;
       buttons[i] = true;
     }
     digitalWrite(i + 4, buttons[i]);
  }
}

 

Link to comment

Ai dreptate... trebuie modificat. Cred că aşa a r fi corect:

bool buttons[4];
            
                  

void setup() {
for (i = 0; i < 4; i++) {
   pinMode(i + 2, INPUT);
   pinMode(i + 6, OUTPUT);
   }   
}
void loop() {
  for (int i = 0; i < 4; i++) {
     if (digitalRead(i + 4)) {
       for (int j = 0; j < 4; j++) buttons[j] = false;
       buttons[i] = true;
     }
     digitalWrite(i + 6, buttons[i]);
  }
}

Mai e varianta cu mărirea ariei de biţi în codul vechi, de ex. buttons[6]... 

Edited by mihaicozac
Link to comment

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
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  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