Sari la conținut
ELFORUM - Forumul electronistilor

Comandare led-uri Arduino


vlad1980

Postări Recomandate

Salutare, 

 

Am nevoie de ajutor din partea celor care se pricep la programare Arduino pentru ce eu nu prea ma descurc cu o aplicatie super simpla. Am dat la perete cateva ore si m-am hotarat sa cer ajutor ca nu prea ii dau de cap. 

 

Vreau sa comand 4 leduri astfel (partea de conectica este rezolvata):

 - led-urile de la 1 la 3 sa se aprinda consecutiv cateva minute fiecare (sa zicem 5 minute fiecare); 

 - led-ul 4 sa se aplinda intermitent (blink la 1 secunda sau ceva de genul) cat timp led-ul 1 este aprins.

 

Daca are cineva timp sa ma ajute cu un exemplu de cod, ii multumesc anticipat. 

 

Editat de vlad1980
Link spre comentariu
  • Răspunsuri 1
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

Ai nevoie de un integer numărător care să se indexeze cu o unitate la fiecare să zicem 500ms.

Apoi pui condițiile de care ai nevoie. De ex. dacă numărătorul are valoarea sub 600 (care înseamnă 5 minute) comanzi ledul 1. Dacă este între 600-1199 ledul 2, și 1200-1799 ledul 3.

Apoi mai ai nevoie de o condiție, dacă numărătorul este sub 600 și are o valoare pară aprinzi ledul 4.

 

Ai o variantă simplă de program cu operatori ternari, dacă ai cablat alți pini la leduri modifici în declarații și în setup().

unsigned int counter = 0, led1 = 2, led2 = 3, led3 = 4, led4 = 5;

void setup() {
  for(int i = 2; i < 6; i++) {
    pinMode(i, OUTPUT);  // SETEAZA PINII CA IESIRI
     }
   }   
     
void loop() {
  digitalWrite(led1, counter < 600 ? HIGH : LOW); // LED1 la pinul 2
  digitalWrite(led2, counter > 599 && counter < 1200 ? HIGH : LOW); // LED2 la pinul 3
  digitalWrite(led3, counter > 1199 ? HIGH : LOW); // LED3 la pinul 4
  digitalWrite(led4, counter < 600 && counter % 2 == 0 ? HIGH : LOW); // LED4 la pinul 5
  counter > 1799 ? counter = 0 : counter++;  // NUMARATOR IN BUCLA PANA LA 3 MINUTE
  delay(500);
}

Codul se compilează dar n-am verificat dacă merge și practic, e posibil ca operatorul ternar să nu proceseze corect condițile compuse de la led2 și led4, în acest caz se pot înlocui cu if-else.

Editat de mihaicozac
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări