![Dimmable LED Օգտագործելով Basys 3 տախտակը `5 քայլ Dimmable LED Օգտագործելով Basys 3 տախտակը `5 քայլ](https://i.howwhatproduce.com/images/011/image-31384-j.webp)
Բովանդակություն:
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48
![Dimmable LED օգտագործելով Basys 3 տախտակը Dimmable LED օգտագործելով Basys 3 տախտակը](https://i.howwhatproduce.com/images/011/image-31384-1-j.webp)
Այս ուղեցույցում մենք պատրաստվում ենք կառուցել և վերահսկել արտաքին LED լուսավորման համակարգ: Առկա կոճակներով օգտվողը կարող է լուսավորել LED լամպը ցանկացած ցանկալի պայծառությամբ: Համակարգը օգտագործում է Basys 3 տախտակը, և այն միացված է տախտակին, որը պարունակում է դիմադրություն և LED լամպ: Նշված «վեր» կոճակը սեղմելը կբարձրացնի պայծառությունը, իսկ «ներքև» կոճակը սեղմելով ՝ պայծառությունը մինչև զրոյի: Սա ոչ միայն թույլ չի տալիս օգտվողին կուրացնել արևի պայծառ լամպերով, այլ նաև խնայում է էներգիան:
Քայլ 1: Ստեղծեք ներածման հաշվիչ
Այս քայլի համար մենք ստեղծում ենք այն բաղադրիչը, որը որոշում է պայծառության մակարդակը (ժամացույցի միջոցով) `օգտագործելով երկու անջատիչ` մեկը բարձրացնելու և մյուսը նվազեցնելու համար: VHDL- ի օգնությամբ մենք հաշվիչը արտադրեցինք D ֆլիպսոփների օգտագործման միջոցով: Սեղմելով «վեր» կոճակը հաջորդ վիճակը մղում է ներկա վիճակի ՝ դուրս գալով յոթ հատվածի էկրանին և LED լամպին:
واحد Updown_counter է
Նավահանգիստ (ներկա_ նահանգը ՝ դուրս STD_LOGIC_VECTOR (3 -ը 0 -ի դիմաց); նախորդ_պետականը ՝ STD_LOGIC_VECTOR- ում (3 -ից 0 -ը), հաջորդը ՝ STD_LOGIC_VECTOR- ում (3 -ից 0 -ը); clk: STD_LOGGGIC- ում; ավարտել updown_counter; architectureարտարապետություն Updown_counter- ի վարքագիծը սկսվում է տապալումից. գործընթացը (հաջորդ_պետություն, clk, up_enable, down_enable, previous_state) սկսվում է, եթե (բարձրանում_ եզր (clk)) ապա եթե (up_enable = '1' և ոչ (next_state = "0000")) ապա present_state <= հաջորդ_պետություն; elsif (down_enable = '1' և ոչ (previous_state = "1111")) ապա present_state <= նախորդ_պետություն; ավարտ, եթե; ավարտ, եթե; ավարտի գործընթացի ձախողում; վերջ Վարքագծային;
Մեզ նաև ժամացույց է պետք յուրաքանչյուր մուտքի համար (երբ այն բարձրանում է), այնպես որ մենք ստեղծեցինք նաև ժամացույցի բաժանարար, որը որոշում է, թե որքան արագ կարող են կոճակները սեղմել պայծառության յուրաքանչյուր մակարդակի միջև: Այս ժամացույցի բաժանարարը մեզ թույլ է տալիս պատշաճ կերպով ցուցադրել յոթ հատվածի ցուցադրման ճիշտ մակարդակը և յուրաքանչյուր մակարդակի համար արտադրել ինտենսիվության ճիշտ մակարդակ:
սուբյեկտ counter_clkDiv է
Պորտ (clk: std_logic; sclk: out std_logic); վերջ counter_clkDiv; counter_clkDiv- ը my_clk_div է counter_clkDiv հաստատուն max_count: integer: = (10000000); ազդանշան tmp_clk: std_logic: = '0'; սկսել my_div: գործընթացը (clk, tmp_clk) փոփոխական div_cnt: integer: = 0; սկսել եթե (բարձրանում_եզր (clk)) ապա եթե (div_cnt> = MAX_COUNT) ապա tmp_clk <= ոչ tmp_clk; div_cnt: = 0; այլապես div_cnt: = div_cnt + 1; ավարտ, եթե; ավարտ, եթե; sclk <= tmp_clk; ավարտել գործընթացը my_div; վերջ my_clk_div;
Քայլ 2: Ստեղծեք LED ժամացույցի բաժանարար
Այս քայլի համար մենք ստեղծում ենք ժամացույցի բաժանարար LED լամպի համար `որոշելու ինտենսիվության 16 տարբեր մակարդակներ: Երբ 0 -ը անջատված է մինչև 15, որը ցույց է տալիս առավելագույն պայծառությունը, ժամացույցի բաժանարարը յուրաքանչյուր կոճակ սեղմելիս ավելացնում է պայծառության մակարդակները: Յուրաքանչյուր աճող մակարդակ նշանակում էր ժամացույցի ավելացում LED լամպի համար: Հիշելով, որ պայծառությունը գծայինորեն չի աճում, մենք ժամացույցը բարձրացրինք ամենաբարձրը, որը կարող էր գնալ և համապատասխանաբար նվազեցրինք մեր ժամացույցները:
Նշում. Մենք օգտագործում ենք կապույտ LED: Այլ գույնի օգտագործումը (ինչպես կարմիրը) ընդհանրապես կպահանջի մի փոքր այլ ժամացույցներ. կապույտի միջին պայծառության պարամետրը կարող է լինել առավելագույնը կարմիրի համար: Դա տեղի է ունենում այն պատճառով, որ լույսի տարբեր ալիքների երկարությունները կպահանջեն տարբեր քանակությամբ էներգիա, իսկ մանուշակագույնի և սառը գույների համար ավելի շատ էներգիա է պահանջվում, իսկ ավելի տաք գույները, ինչպիսիք են կարմիրը և նարնջագույնը, ավելի քիչ էներգիա են պահանջում:
entity led_clkDiv is Port (present_state: in STD_LOGIC_VECTOR (3 down to 0); clk: in STD_LOGIC; led_clk: out STD_LOGIC); վերջ led_clkDiv; ճարտարապետություն led_clkDiv- ի վարքագիծը tmp_clk: std_logic: = '0'; ընդհանուր փոփոխական max_count: integer; begin count_stuff: process (present_state) begin case case_state is when "0000" => max_count: = 0; երբ "0001" => max_count: = 2; երբ "0010" => max_count: = 4; երբ "0011" => max_count: = 6; երբ "0100" => max_count: = 8; երբ "0101" => max_count: = 10; երբ "0110" => max_count: = 12; երբ "0111" => max_count: = 14; երբ "1000" => max_count: = 16; երբ "1001" => max_count: = 25; երբ "1010" => max_count: = 50; երբ "1011" => max_count: = 100; երբ "1100" => max_count: = 150; երբ "1101" => max_count: = 200; երբ "1110" => max_count: = 250; երբ "1111" => max_count: = 300; վերջնական գործ; գործընթացի ավարտը count_stuff; my_div: գործընթաց (clk, tmp_clk, present_state) փոփոխական div_cnt: integer: = 0; սկսեք եթե (բարձրանում_եզր (clk)) ապա եթե (div_cnt> = max_count) ապա tmp_clk <= ոչ tmp_clk; div_cnt: = 0; այլապես div_cnt: = div_cnt + 1; ավարտ, եթե; ավարտ, եթե; led_clk <= tmp_clk; ավարտել գործընթացը my_div; վերջ Վարքագծային;
Քայլ 3: Ստեղծեք LED վերահսկիչ
Այժմ, երբ մենք հասել ենք դրան, ժամանակն է վերջապես համատեղել մեր կողմից մինչ այժմ ստեղծված բոլոր բաղադրիչները LED Controller ֆայլի մեջ:
Ամփոփելու համար օգտագործվող բաղադրիչները հետևյալն են.
- Մուտքի հաշվիչ (updown_counter)
- Ockամացույցի բաժանարար (counter_clkDiv)
- LED ժամացույցի բաժանարար (led_clkDiv)
- Յոթ հատվածի ցուցադրման վարորդ (sseg_dec) (կցված ֆայլ)
Յոթ հատվածից ցուցադրվող վարորդը իրականում նախկինում չի քննարկվել, քանի որ մենք իրականում VHDL ֆայլը վերցրել ենք բժիշկ Բրայան Միլիից `դրա երկար և բարդ ծածկագրի պատճառով: Այն, ինչ ըստ էության, անում է, այն է, որ մեր կոճակների մուտքերը տանում է դեպի Basys 3 տախտակի յոթ հատվածի էկրան, որպեսզի իմանանք, թե պայծառության որ մակարդակի վրա է:
Առաջ շարժվելով ՝ LED վերահսկիչը օգտագործում է մատիտներ `ավելացնելու կամ նվազեցնելու համարը, որը միաժամանակ վերահսկում է ինչպես յոթ հատվածի ցուցադրումը, այնպես էլ LED լամպի պայծառության մակարդակը:
սուբյեկտի հաշվիչը Պորտ է (clk: STD_LOGIC; up_enable: STD_LOGIC; down_enable: STD_LOGIC; SEGMENTS: STD_LOGIC_VECTOR (7 ներքև 0); DISP_EN: դուրս STD_LOGIC_VECTO) 3 դուրս վերջի հաշվիչ; ճարտարապետություն Հաշվիչի վարքագծը բաղադրիչն է Updown_counter- ը Պորտ է (ներկա_կազմ. դուրս up_enable: STD_LOGIC- ում); վերջի բաղադրիչ updown_counter; բաղադրիչ counter_clkDiv is Port (clk: std_logic; sclk: out std_logic); վերջնական բաղադրիչ counter_clkDiv; բաղադրիչ sseg_dec- ն Port է (ALU_VAL: std_logic_vector- ում (7 -ից 0 -ից); ՄԱՍԻՆ `std_logic- ում; Վավեր` std_logic- ում; CLK: std_logic; DISP_EN: std_logic_vector (3 ներքև 0); SEGMENTS); վերջնական բաղադրիչ sseg_dec; բաղադրիչ led_clkDiv is Port (present_state: in STD_LOGIC_VECTOR (3 down to 0); clk: in STD_LOGIC; led_clk: out STD_LOGIC); վերջնական բաղադրիչ led_clkDiv; ազդանշան present_state: STD_LOGIC_VECTOR (3 ներքև 0): = "0000"; ազդանշան next_state: STD_LOGIC_VECTOR (3 ներքև 0): = "0000"; ազդանշան previous_state: STD_LOGIC_VECTOR (3 ներքև 0): = "0000"; ազդանշան Alu_Val: STD_LOGIC_VECTOR (7 դեպի 0); ազդանշանային sclk: STD_LOGIC; սկսել Alu_Val (7 -ից ներքև 4) <= "0000"; Ալու_Վալ (3 դեպի ներքև 0) <= ներկա_պետություն; հաջորդ_պետական (0) <= ոչ (ներկա_պետական (0)); հաջորդ_պետական (1) <= ներկա_պետություն (0) կամ ներկա_պետություն (1); next_state (2) <= (present_state (0) և present_state (1)) xor present_state (2); next_state (3) <= (present_state (0) և present_state (1) և present_state (2)) xor present_state (3); նախորդ_պետական (0) <= ոչ (ներկա_պետական (0)); նախորդ_պետական (1) <= ներկա_պետություն (0) xn կամ ներկա_պետություն (1); նախորդ_պետական (2) <= (ներկա_պետական (0) ոչ ներկա_պետական (1)) կամ ներկա_պետական (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); ցուցադրում. sseg_dec նավահանգստի քարտեզ (ALU_VAL => Alu_Val, SIGN => '0', VALID => '1', CLK => clk, DISP_EN => DISP_EN, SEGMENTS => SEGMENTS); led_clk: led_clkDiv նավահանգստի քարտեզ (clk => clk, present_state => present_state, led_clk => led_clk); clk_div: counter_clkDiv նավահանգստի քարտեզ (clk => clk, sclk => sclk); վերջ Վարքագծային;
Քայլ 4. Սահմանափակումների և հավաքների ստեղծում
Սահմանափակումներ
Basys 3 տախտակը ճիշտ տեղադրելու և ծրագրավորելու համար մենք նախ պետք է կարգավորենք մեր սահմանափակումների ֆայլը, որը կցված է այս քայլին: Հետևյալ կարգավորումները ճշգրտվել են.
Կոճակներ
- T18- ը փոխեց «up_enable» (բարձրացրեք պայծառությունը)
- U17- ը փոխեց «down_enable» (նվազեցրեք պայծառությունը)
7 հատվածի ցուցադրում
- W7, W6, U8, V8, U5, V5, U7, V7 ներկայացնում են մեկ ցուցադրման յուրաքանչյուր հատված
- U2, U4, V4, W4- ը ներկայացնում են ցուցադրվող յուրաքանչյուր անոդ (միայն 2 -ն են ակտիվ, քանի որ մեր ամենաբարձր թիվը 15 է)
PMOD Header JC
JC7- ն այն է, որտեղ մենք միացնում ենք LED լամպի լարերից մեկը, իսկ մյուս մետաղալարը տանում է դեպի GROUND:
Այս ամենը կարգավորելուց հետո ձեզ մնում է միայն ստեղծել ձեր բիթսթրիմը (ինչ ծրագրով էլ օգտագործեք, այսինքն ՝ Vivado), ծրագրավորել ձեր խորհուրդը և բում: Դուք ինքներդ ունեք աշխատանքային տախտակ:
Նշում. Պին քարտեզագրումը կարելի է գտնել այստեղ Basys 3 տվյալների թերթիկում:
Ժողով
Քայլ 5: Օգտագործելով ձեր dimmer անջատիչը
Եթե ամեն ինչ լավ է ընթանում, դուք պետք է ունենաք լիովին աշխատող լուսամփոփ համակարգ: Ամփոփելու համար ՝ վերին կոճակը սեղմելը կբարձրացնի ձեր պայծառությունը (մինչև 15), իսկ ներքևի կոճակը սեղմելը կնվազեցնի ձեր պայծառությունը (մինչև 0): Հուսով եմ, որ ամեն ինչ լավ է ընթանում ձեր այժմ հանգստացած տեսողության համար:
Խորհուրդ ենք տալիս:
Installation De La Carte TagTagTag Pour Nabaztag / Տեղադրեք TagTagTag տախտակը ձեր Nabaztag- ում ՝ 15 քայլ
![Installation De La Carte TagTagTag Pour Nabaztag / Տեղադրեք TagTagTag տախտակը ձեր Nabaztag- ում ՝ 15 քայլ Installation De La Carte TagTagTag Pour Nabaztag / Տեղադրեք TagTagTag տախտակը ձեր Nabaztag- ում ՝ 15 քայլ](https://i.howwhatproduce.com/images/001/image-197-15-j.webp)
Installation De La Carte TagTagTag Pour Nabaztag / Տեղադրեք TagTagTag տախտակը ձեր Nabaztag- ում. (Տե՛ս ստորև անգլերեն տարբերակի համար) La carte TagTagTag a été crééee in 2018 lors de Maker Faire Paris pour faire renaitre les Nabaztag et les Nabaztag: tag. Elle a fait l'objet ensuite d'un financement participatif sur Ulule en juin 2019, si vous souhaitez
Installation De La Carte TagTagTag Pour Nabaztag: tag / Տեղադրեք TagTagTag տախտակը ձեր Nabaztag: պիտակ ՝ 23 քայլ
![Installation De La Carte TagTagTag Pour Nabaztag: tag / Տեղադրեք TagTagTag տախտակը ձեր Nabaztag: պիտակ ՝ 23 քայլ Installation De La Carte TagTagTag Pour Nabaztag: tag / Տեղադրեք TagTagTag տախտակը ձեր Nabaztag: պիտակ ՝ 23 քայլ](https://i.howwhatproduce.com/images/005/image-13837-j.webp)
Installation De La Carte TagTagTag Pour Nabaztag: tag / Instaling the TagTagTag Board on your Nabaztag: tag: (see below for English version) La carte TagTagTag a été crééee in 2018 lors de Maker Faire Paris pour faire renaitre les Nabaztag et les Nabaztag: . Elle a fait l'objet ensuite d'un financement participatif sur Ulule en juin 2019, si vous souhaitez
Ինչպես կատարել ձեր սեփական Arduino տախտակը (xduino) ՝ 6 քայլ
![Ինչպես կատարել ձեր սեփական Arduino տախտակը (xduino) ՝ 6 քայլ Ինչպես կատարել ձեր սեփական Arduino տախտակը (xduino) ՝ 6 քայլ](https://i.howwhatproduce.com/images/009/image-26342-j.webp)
Ինչպես պատրաստել ձեր սեփական Arduino տախտակը (xduino). Դիտեք տեսանյութ
15 րոպեանոց SMS անվտանգության համակարգ ՝ օգտագործելով Texas Instruments CC3200 (TI CC3200) Գործարկման տախտակը. 8 քայլ
![15 րոպեանոց SMS անվտանգության համակարգ ՝ օգտագործելով Texas Instruments CC3200 (TI CC3200) Գործարկման տախտակը. 8 քայլ 15 րոպեանոց SMS անվտանգության համակարգ ՝ օգտագործելով Texas Instruments CC3200 (TI CC3200) Գործարկման տախտակը. 8 քայլ](https://i.howwhatproduce.com/images/005/image-13089-12-j.webp)
15 րոպեանոց SMS անվտանգության համակարգ ՝ օգտագործելով Texas Instruments CC3200 (TI CC3200) Գործարկիչ. Բարև տղերք, այս ուսանելի ծրագրում դուք կսովորեք, թե ինչպես կատարել SMS անվտանգության համակարգ ՝ օգտագործելով Texas Instruments CC3200 (TI CC3200) գործարկման վահանակը 15 րոպեի ընթացքում: YouTube Տեսանյութի հղում: նախագիծը. 15 րոպեանոց SMS- դուռ-մուտք-ահազանգ
Կառավարեք LED տախտակը հեռախոսով NodeMCU, ESP8266 և MAX7219: 8 քայլ
![Կառավարեք LED տախտակը հեռախոսով NodeMCU, ESP8266 և MAX7219: 8 քայլ Կառավարեք LED տախտակը հեռախոսով NodeMCU, ESP8266 և MAX7219: 8 քայլ](https://i.howwhatproduce.com/images/002/image-3130-36-j.webp)
Կառավարեք LED տախտակը հեռախոսով NodeMCU, ESP8266 և MAX7219. Ես ուզում եմ հեռախոսը օգտագործել LED տախտակը որպես շրջադարձային ազդանշան կառավարելու համար: Այսպիսով, ESP8266- ը հանդես կգա որպես Մուտքի կետ, միկրոկոնտրոլեր և նաև սերվեր: Վեբ սերվերը կունենա պարզ վեբ էջ ՝ 3 կոճակով ՝ ԹԵ L ԱՌԱ, ԹԵ Turn ԱՇԽԱՐՀ և Թեք SOS: Տեքստը