Guest Posted October 24, 2019 Share Posted October 24, 2019 (edited) 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 October 24, 2019 by Guest Link to comment
mars01 Posted October 24, 2019 Share Posted October 24, 2019 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
mihaicozac Posted October 24, 2019 Share Posted October 24, 2019 (edited) 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 October 24, 2019 by mihaicozac Link to comment
gas2 dan Posted October 25, 2019 Share Posted October 25, 2019 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
mihaicozac Posted October 25, 2019 Share Posted October 25, 2019 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
informer Posted October 25, 2019 Share Posted October 25, 2019 Daca buttons este cu lungime de 4 adica de la buttons[0]..[3] e o problema cu valorile lui i si j... zic si io Link to comment
mihaicozac Posted October 25, 2019 Share Posted October 25, 2019 (edited) 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 October 25, 2019 by mihaicozac Link to comment
gas2 dan Posted October 25, 2019 Share Posted October 25, 2019 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now