Kazalo:
- 1. korak: Ustvarite števec vnosov
- 2. korak: Ustvarite LED -razdelilnik ure
- 3. korak: Ustvarjanje LED krmilnika
- 4. korak: Vzpostavitev omejitev in sestavljanje
- 5. korak: Uporaba stikala za zatemnitev
Video: Zatemnilna LED z uporabo Basys 3 Board: 5 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:04
V tem priročniku bomo zgradili in upravljali zunanji sistem zatemnitve LED. Z razpoložljivimi gumbi lahko uporabnik zatemni LED žarnico na želeno svetlost. Sistem uporablja ploščo Basys 3 in je povezan s ploščo, ki vsebuje upor in LED žarnico. S pritiskom na določen gumb "navzgor" se svetlost poveča, s pritiskom na gumb "navzdol" pa se svetlost zmanjša do nič. To ne le preprečuje, da bi uporabnika zaslepile svetleče žarnice kot sonce, ampak tudi prihrani energijo!
1. korak: Ustvarite števec vnosov
Za ta korak ustvarimo komponento, ki določa stopnjo svetlosti (skozi uro) z dvema stikaloma: eno za povečanje in eno za zmanjšanje. Z uporabo VHDL smo števec izdelali z uporabo natikačev D. S pritiskom gumba "navzgor" se naslednje stanje premakne v trenutno stanje, ki se prikaže na sedemsegmentnem zaslonu in LED žarnici.
entiteta updown_counter je
Vrata (trenutno stanje: zunaj STD_LOGIC_VECTOR (3 navzdol 0); prejšnje stanje: v STD_LOGIC_VECTOR (3 navzdol 0); naslednje stanje: v STD_LOGIC_VECTOR (3 navzdol 0); end updown_counter; vedenje updown_counter je start flop: process (next_state, clk, up_enable, down_enable, previous_state) begin if (rise_edge (clk)) then if (up_enable = '1' in not (next_state = "0000")) then present_state <= next_state; elsif (down_enable = '1' in ne (previous_state = "1111")) potem present_state <= prejšnje_stanje; konec če; konec če; končni proces flop; konec vedenjskega;
Potrebujemo tudi uro za vsak vhod (ko se dvigne), zato smo ustvarili tudi delilnik ure, ki določa, kako hitro je mogoče pritisniti gumbe med vsako stopnjo svetlosti. Ta delilnik ure nam omogoča, da pravilno prikažemo pravo raven na sedemsegmentnem zaslonu in ustvarimo pravo stopnjo intenzivnosti za vsako stopnjo.
entiteta counter_clkDiv je
Vrata (clk: v std_logic; sclk: ven std_logic); konec števec_clkDiv; arhitektura my_clk_div of counter_clkDiv je konstantna max_count: integer: = (10000000); signal tmp_clk: std_logic: = '0'; začni my_div: spremenljivka process (clk, tmp_clk) div_cnt: integer: = 0; začni if (vzhajajoči rob (clk)) potem if (div_cnt> = MAX_COUNT) potem tmp_clk <= ni tmp_clk; div_cnt: = 0; else div_cnt: = div_cnt + 1; konec če; konec če; sclk <= tmp_clk; končaj proces my_div; konec my_clk_div;
2. korak: Ustvarite LED -razdelilnik ure
Za ta korak ustvarimo razdelilnik ure za LED žarnico, da določimo 16 različnih stopenj intenzivnosti. Pri izklopu 0 do 15, ki prikazuje največjo svetlost, delilnik ure poveča vsak pritisk gumba za tisto, kar nastavimo na ravni svetlosti. Vsaka višja raven je pomenila povečanje ure LED žarnice. Ker se spomnimo, da se svetlost ne povečuje linearno, smo uro zavili na najvišjo možno vrednost in ustrezno zmanjšali uro.
Opomba: uporabljamo modro LED. Uporaba drugačne barve (na primer rdeče) bo zahtevala nekoliko drugačne ure; srednja nastavitev svetlosti za modro je lahko že največja svetlost za rdečo. To se zgodi zato, ker različne svetlobne valovne dolžine zahtevajo različne količine energije, hladnejše barve, kot sta vijolična in modra, pa zahtevajo več energije, medtem ko toplejše barve, kot sta rdeča in oranžna, potrebujejo manj energije.
entiteta led_clkDiv je vrata (trenutno_stanje: v STD_LOGIC_VECTOR (3 navzdol 0); clk: v STD_LOGIC; led_clk: ven STD_LOGIC); end led_clkDiv; arhitektura Vedenje LED_clkDiv je signal tmp_clk: std_logic: = '0'; spremenljivka v skupni rabi max_count: integer; start count_stuff: process (present_state) začetek primera present_state je, ko je "0000" => max_count: = 0; ko "0001" => max_count: = 2; ko je "0010" => max_count: = 4; ko je "0011" => max_count: = 6; ko je "0100" => max_count: = 8; ko je "0101" => max_count: = 10; ko je "0110" => max_count: = 12; ko je "0111" => max_count: = 14; ko je "1000" => max_count: = 16; ko je "1001" => max_count: = 25; ko je "1010" => max_count: = 50; ko "1011" => max_count: = 100; ko je "1100" => max_count: = 150; ko je "1101" => max_count: = 200; ko je "1110" => max_count: = 250; ko je "1111" => max_count: = 300; zaključni primer; končaj procesa count_stuff; my_div: spremenljivka process (clk, tmp_clk, present_state) div_cnt: integer: = 0; začni if (vzhajajoči rob (clk)) potem if (div_cnt> = max_count) potem tmp_clk <= ni tmp_clk; div_cnt: = 0; else div_cnt: = div_cnt + 1; konec če; konec če; led_clk <= tmp_clk; končaj proces my_div; konec vedenjskega;
3. korak: Ustvarjanje LED krmilnika
Zdaj, ko smo prišli tako daleč, je čas, da vse datoteke, ki smo jih ustvarili, končno združimo v datoteko LED krmilnika.
Če povzamemo, so uporabljene naslednje komponente:
- Vhodni števec (updown_counter)
- Ločilnik ure (counter_clkDiv)
- LED delilnik ure (led_clkDiv)
- Gonilnik za sedem segmentov zaslona (sseg_dec) (priložena datoteka)
Govornika o sedmih segmentih zaslona prej nismo razpravljali, ker smo si datoteko VHDL dejansko izposodili od dr. Bryana Mealyja zaradi njene dolge in zapletene kode. V bistvu naredi vnose svojih gumbov na sedem-segmentni zaslon na plošči Basys 3, tako da vemo, na kateri ravni svetlosti je vključena.
Ko gremo naprej, LED krmilnik uporablja japonke za povečanje ali zmanjšanje števila, ki hkrati nadzoruje sedemsegmentni zaslon in raven svetlosti LED žarnice.
števec entitet je vrata (clk: v STD_LOGIC; up_enable: v STD_LOGIC; down_enable: v STD_LOGIC; SEGMENTS: out STD_LOGIC_VECTOR (7 navzdol 0); DISP_EN: out STD_LOGIC_VECTOR (3 downto 0); led_clIC: out; števec konca; arhitektura Vedenje števca je komponenta updown_counter je Port (present_state: out STD_LOGIC_VECTOR (3 downto 0); previous_state: in STD_LOGIC_VECTOR (3 downto 0); next_state: in STD_LOGIC_VECTOR (3 downto 0); up_enable: v STD_LOGIC); končna komponenta updown_counter; komponenta counter_clkDiv je vrata (clk: v std_logic; sclk: ven std_logic); končna komponenta counter_clkDiv; komponenta sseg_dec je vrata (ALU_VAL: v std_logic_vector (7 downto 0); SIGN: in std_logic; VALID: in std_logic; CLK: in std_logic; DISP_EN: out std_logic_vector (3 downto 0); SEGMENTS: out std_logic_ve; končna komponenta sseg_dec; komponenta led_clkDiv je vrata (trenutno_stanje: v STD_LOGIC_VECTOR (3 navzdol 0); clk: v STD_LOGIC; led_clk: ven STD_LOGIC); končna komponenta led_clkDiv; signal trenutno_stanje: STD_LOGIC_VECTOR (3 navzdol 0): = "0000"; signal next_state: STD_LOGIC_VECTOR (3 navzdol 0): = "0000"; signal previous_state: STD_LOGIC_VECTOR (3 navzdol 0): = "0000"; signal Alu_Val: STD_LOGIC_VECTOR (7 navzdol 0); sclk signala: STD_LOGIC; začni Alu_Val (7 downto 4) <= "0000"; Alu_Val (3 downto 0) <= trenutno_stanje; next_state (0) <= not (present_state (0)); next_state (1) <= present_state (0) xor present_state (1); next_state (2) <= (present_state (0) in present_state (1)) xor present_state (2); next_state (3) <= (present_state (0) in present_state (1) in present_state (2)) xor present_state (3); prejšnje_stanje (0) <= ni (sedanje_stanje (0)); prejšnje_stanje (1) <= sedanje_stanje (0) xnor sedanje_stanje (1); prejšnje_stanje (2) <= (sedanje_stanje (0) niti sedanje_stanje (1)) xor trenutno_stanje (2); previous_state (3) sclk, next_state => next_state, previous_state => previous_state, up_enable => up_enable, down_enable => down_enable, present_state => present_state); prikaz: sseg_dec zemljevid vrat (ALU_VAL => Alu_Val, SIGN => '0', VALID => '1', CLK => clk, DISP_EN => DISP_EN, SEGMENTS => SEGMENTS); led_div: led_clkDiv zemljevid vrat (clk => clk, present_state => present_state, led_clk => led_clk); clk_div: counter_clkDiv zemljevid vrat (clk => clk, sclk => sclk); konec vedenjskega;
4. korak: Vzpostavitev omejitev in sestavljanje
Omejitve
Za pravilno nastavitev in programiranje plošče Basys 3 moramo najprej nastaviti datoteko omejitev, ki je priložena temu koraku. Prilagojene so bile naslednje nastavitve:
Gumbi
- T18 spremenjen v "up_enable" (poveča svetlost)
- U17 spremenjeno v "down_enable" (zmanjša svetlost)
7 -segmentni zaslon
- W7, W6, U8, V8, U5, V5, U7, V7 predstavljajo vsak segment enega zaslona
- U2, U4, V4, W4 predstavljajo vsako prikazano anodo (aktivni sta le 2, ker je naše največje število 15)
PMOD Glava JC
JC7 je mesto, kjer povežemo eno od žic LED žarnice, druga pa žico na OZEMLJE
Ko vse to nastavite, morate samo ustvariti svoj bitni tok (s katero koli programsko opremo, ki jo uporabljate, npr. Vivado), programirati svojo ploščo in se dvigniti! Delovni odbor si imaš.
Opomba: Preslikavo pin lahko najdete na podatkovnem listu Basys 3 tukaj.
Montaža
5. korak: Uporaba stikala za zatemnitev
Če je vse v redu, bi morali imeti popolnoma delujoč sistem zatemnitve. Če povzamemo, pritisk zgornjega gumba poveča svetlost (vse do 15), pritisk gumba navzdol pa zmanjša svetlost (vse do 0). Upam, da bo z vašim zdaj sproščenim vidom vse v redu!
Priporočena:
LED zatemnilna svetilka: 11 korakov
LED zatemnilna svetlobna omara: Zgradite svojo 18W LED svetlobno omarico za boj proti zimskemu bluzu. Ta svetlobna plošča je razpršena in zatemnjena s pomočjo PWM. Če imate časovno svetilko, jo lahko uporabite kot alternativo budilki
Neopixel Ws2812 Rainbow LED Glow z M5stick-C - Running Rainbow na Neopixel Ws2812 z uporabo M5stack M5stick C z uporabo Arduino IDE: 5 korakov
Neopixel Ws2812 Rainbow LED Glow z M5stick-C | Running Rainbow na Neopixel Ws2812 z uporabo M5stack M5stick C z uporabo Arduino IDE: Pozdravljeni fantje, v tem navodilu se bomo naučili uporabljati LED diode neopixel ws2812 ali LED trak ali LED matrico ali LED obroč z razvojno ploščo m5stack m5stick-C z Arduino IDE in naredili bomo mavrični vzorec z njim
Zatemnilna LED plošča: 15 korakov (s slikami)
Zatemnilna LED plošča: Ko sem videl tekmovanje LED, me je spravilo v razmišljanje, če bi bilo kaj zabavno izdelati uporabljene LED diode. Nisem električar, zato sem mislil, da bo to zabaven izziv. Že nekaj časa sem si ogledoval delovno svetilko, zato
DIY zatemnilna LED svetilka: 5 korakov (s slikami)
Samodejno zatemnitvena LED svetilka za osvetlitev: Flood luči včasih sčasoma prenehajo delovati, čeprav danes uporabljajo LED. To je lahko posledica številnih razlogov, na primer pregrevanja ali napake v gonilniku LED ali napake v proizvodnem procesu. Večina nas na koncu vrže proč
ARMTRONIX WIFI ENOTNA zatemnilna plošča V0.2: 3 koraki (s slikami)
ARMTRONIX WIFI Enojna zatemnilna plošča V0.2: Armtronix Wifi zatemnilnik je plošča IOT, zasnovana za avtomatizacijo doma. Značilnosti plošče so: Brezžično krmiljenje Majhna oblika faktorja Na krovu AC do DC napajanja 230VAC do 5V DC. DC virtualno stikalo Velikost plošče je 61,50