Sari la conținut
ELFORUM - Forumul electronistilor

Problema Arduino cu 2 porturi si 3 LED-uri.


Vizitator

Postări Recomandate

Se dă:
- 1 x placă Arduino la care mai sunt libere două porturi.
- 3 x LED-uri.
- 3 x resistente.

 

Se cere:
Sa se conceapă schema si softul care să permită aprinderea celor trei LED-uri pe rând utilizând cele două porturi libere.
Dupa initializare uC, un singur LED va fi alimentat la un moment dat.
Fiecare LED se aprinde timp de o secundă, se stinge si după o secundă se aprinde următorul.

Link spre comentariu
  • Răspunsuri 29
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Top autori în acest subiect

Imagini postate

Nu.
Prin LED stins se intelege zero curent prin LED.

Aprins = curent nominal (conform datasheet al LED-ului)

 

Editat de Vizitator
Link spre comentariu
Acum 4 minute, yo8tot a spus:

Un fleac, se poate si numai cu 2 rezistente

Orice "se poate".
Intrebarea este: "Cum ?"
Schema + soft. (softul poate să fie ceva generic. ideea contează)

Editat de Vizitator
Link spre comentariu
Acum 20 minute, Liviu.Mihaiu a spus:

Schema 

Nu stiu daca am inteles bine ce ai cerut :rade:(sunt cam obosit), dar particip cu cat ma duce capul acum (am realizat ca nici nu am pus rezitorii :scarpin):

Screenshot-2022-06-23-at-21-28-01.png

 

Cand ai portul arduino in HIGH se aprinde D2 si este stins D1 si cand ai port arduino in LOW se aprinde D1 si D2 este stins. 

Acum 2 minute, yo8tot a spus:

A doua merge mai bine daca sunt leduri albastre. 

Prima este de electronist :95 (cum am propus si eu), dar a doua este inginereasca! :aplauzeAsta a doua trebuie sa fie rezolvarea. De altfel se pupa si cu enuntul: doua porturi, 3 leduri. 

 

Link spre comentariu

@yo8tot
Problema cere schema si soft.
Hard si Soft care sa respecte conditia "un singur LED alimentat la un moment dat".
Intrebare: Daca pun R4 la GND , D4 si D5 nu sunt "alimentate" ?
 

@merck
3 LED-uri si 2 porturi disponibile
 

Editat de Vizitator
Link spre comentariu

.LED_port_jpg.jpg.478117c0880336b66c16ce2997692920.jpg

loop_prg:           call led1_on      call pauza_1sec
                    call led2_on      call pauza_1sec
                    call led3_on      call pauza_1sec
                    rjmp loop_prg

led1_on:            cbi PORT1,bit0    cbi PORT1,bit1  ret ; led 1 aprins. led 2 si 3 stins
led2_on:            sbi PORT1,bit0    cbi PORT1,bit1  ret ; led 2 aprins. led 1 si 3 stins
led3_on:            sbi PORT1,bit0    sbi PORT1,bit1  ret ; led 3 aprins. led 1 si 2 stins
pauza_1sec:         ; aici fiecare face pauza cum vrea, si in functie de cristalul folosit
                    ret

 

decât cu atâtea improvizaţii, mai bine se pune o jumătate dintr-un 74139 şi se pot folosi 4 leduri. Sau 3 leduri, dar pot fi stinse toate.

Nu e prea corect două porturi deoarece un port are 8, 16, 32... s.a.m.d. biţi.

Link spre comentariu

@yo8tot are a doua solutie exact cu ce ai cerut tu (nu a pus el rezistorii in serie cu ledurile, dar asta se intelege):

 

Ai: High High - se aprinde ledul de jos

     High Low - se aprinde ledul de la mijloc

     Low Low  - se aprinde ledul de sus

 

 

Editat de merck
Link spre comentariu
Acum 1 minut, yo8tot a spus:

Pai nu e nevoie sa le pui in serie cu ledurile

Bre, ai dreptate, e mai smechera solutia ta! :ewryt45w

 

P.S. Nu stiu la initializare daca ai pinii in LOW daca ledurile nu fac scandal (3 leduri inseriate la Vcc). 

Editat de merck
Link spre comentariu
led2_on:            sbi PORT1,bit0    cbi PORT1,bit1  ret ;


@cimitavita

Cand faci sbi PORT1, bit0
aprinzi ambele leduri LED2 si LED3 (pentru putin timp, ce-i drept, pentru ca urmeaza cbi PORT1,bit1)
Dar nu permite enuntul problemei ca mai mult de un LED sa fie aprins (am specificat "alimentat").

 

Editat de Vizitator
Link spre comentariu

o soluţie ar fi să trec biţii 0 şi 1 pe rând, pe intrare şi apoi pe ieşire dar iese ceva destul de stufos...

altă soluţie mai simplă ar fi să scriu dintr-o dată toţi biţii din PORT1:

 

led1_on:    ldi r16,0b_xxxxxx00  rjmp iesire
led2_on:    ldi r16,0b_xxxxxx01  rjmp iesire
led3_on:    ldi r16,0b_xxxxxx11  rjmp iesire
iesire:     out PORT1,r16   ret

 

Link spre comentariu

@merckSubiectul s-a discutat aici: https://electronics.stackexchange.com/questions/106090/how-to-control-three-leds-with-two-uc-pins-using-just-passive-components acum peste 8 ani.

Initiatorul a omis sa specifice culoarea LED-urilor. " Conditia asta: "Prin LED stins se intelege zero curent prin LED" nu poate fi indeplinita cu un microcontroller. De ce? Poate ne raspunde initiatorul topicului.

 

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