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

  • mihaicozac

    3

  • gas2 dan

    2

  • mars01

    1

  • informer

    1

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
1 oră în urmă, mihaicozac a spus:

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

Desi asa pare, nu e arie de biti. Tipul bool ocupa un byte.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • 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