فهرست مطالب:
- مرحله 1: ایجاد شمارنده ورودی
- مرحله 2: ایجاد تقسیم ساعت LED
- مرحله 3: ایجاد کنترلر LED
- مرحله 4: ایجاد محدودیت ها و مونتاژ
- مرحله 5: از سوئیچ دیمر خود استفاده کنید
![LED کم نور با استفاده از برد Basys 3: 5 مرحله LED کم نور با استفاده از برد Basys 3: 5 مرحله](https://i.howwhatproduce.com/images/011/image-31384-j.webp)
تصویری: LED کم نور با استفاده از برد Basys 3: 5 مرحله
![تصویری: LED کم نور با استفاده از برد Basys 3: 5 مرحله تصویری: LED کم نور با استفاده از برد Basys 3: 5 مرحله](https://i.ytimg.com/vi/y9SiE7XDF-g/hqdefault.jpg)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:54
![LED کم نور با استفاده از برد Basys 3 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) ؛ previous_state: در STD_LOGIC_VECTOR (3 پایین 0 تا) ؛ next_state: در STD_LOGIC_VECTOR (3 پایین 0) ؛ clk: STD_LOGGIC؛ پایان Updown_counter؛ معماری رفتار Updown_counter شروع فلاپ است: روند (next_state ، clk ، up_enable ، down_enable ، previous_state) اگر (افزایش next_state؛ elsif (down_enable = '1' و نه (previous_state = "1111")) سپس present_state <= previous_state؛ پایان اگر؛ پایان اگر؛ پایان فرآیند فلاپ ؛ پایان دادن به رفتار ؛
ما همچنین به یک ساعت برای اتصال هر ورودی (هنگام افزایش) نیاز داریم ، بنابراین یک تقسیم کننده ساعت نیز ایجاد کردیم که تعیین می کند با چه سرعتی می توان دکمه ها را بین هر سطح روشنایی فشار داد. این تقسیم ساعت به ما اجازه می دهد تا سطح مناسب را در صفحه هفت قسمت به درستی نمایش دهیم و شدت مناسب را برای هر سطح تولید کنیم.
نهاد counter_clkDiv است
بندر (clk: در std_logic ؛ sclk: out std_logic) ؛ پایان counter_clkDiv؛ معماری my_clk_div از counter_clkDiv ثابت max_count است: عدد صحیح: = (10000000)؛ سیگنال tmp_clk: std_logic: = '0'؛ begin my_div: process (clk، tmp_clk) متغیر div_cnt: integer: = 0؛ اگر (افزایش_دانه (clk)) و سپس اگر (div_cnt> = MAX_COUNT) سپس tmp_clk <= نه tmp_clk؛ div_cnt: = 0؛ else div_cnt: = div_cnt + 1؛ پایان اگر؛ پایان اگر؛ sclk <= tmp_clk؛ پایان روند my_div؛ پایان my_clk_div؛
مرحله 2: ایجاد تقسیم ساعت LED
برای این مرحله ما یک ساعت تقسیم کننده برای لامپ LED ایجاد می کنیم تا 16 سطح مختلف شدت را تعیین کند. با خاموش بودن 0 تا 15 نمایش حداکثر روشنایی ، تقسیم ساعت هر فشار دکمه را بر اساس میزان روشنایی افزایش می دهد. هر سطح افزایش به معنی افزایش ساعت برای لامپ LED است. به یاد داشته باشید که روشنایی بصورت خطی افزایش نمی یابد ، ما ساعت را به بالاترین میزان ممکن رساندیم و بر این اساس ساعت خود را کاهش دادیم.
توجه: ما از LED آبی استفاده می کنیم. استفاده از یک رنگ متفاوت (مانند قرمز) به طور کلی به ساعتهای کمی متفاوت نیاز دارد. یک تنظیم روشنایی متوسط برای آبی می تواند حداکثر روشنایی برای قرمز باشد. این امر به این دلیل اتفاق می افتد که طول موج های مختلف نور به مقادیر متفاوتی از انرژی نیاز دارند ، رنگهای سردتر مانند بنفش و آبی نیاز به انرژی بیشتری دارند ، در حالی که رنگهای گرمتر مانند قرمز و نارنجی به انرژی کمتری نیاز دارند.
نهاد led_clkDiv Port است (وضعیت فعلی: در STD_LOGIC_VECTOR (3 پایین 0) ؛ clk: در STD_LOGIC ؛ led_clk: خارج STD_LOGIC) ؛ پایان led_clkDiv؛ معماری رفتار led_clkDiv سیگنال tmp_clk است: std_logic: = '0'؛ متغیر اشتراکی max_count: integer؛ شروع count_stuff: process (present_state) شروع مورد present_state زمانی است که "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: process (clk، tmp_clk، present_state) متغیر div_cnt: integer: = 0؛ اگر if (افزایش div_cnt: = 0؛ else div_cnt: = div_cnt + 1؛ پایان اگر؛ پایان اگر؛ led_clk <= tmp_clk؛ پایان روند my_div؛ پایان دادن به رفتار ؛
مرحله 3: ایجاد کنترلر LED
اکنون که ما تا اینجا پیشرفت کرده ایم ، وقت آن است که در نهایت همه اجزایی که تاکنون ایجاد کرده ایم را در فایل LED Controller ترکیب کنیم.
به طور خلاصه ، اجزای مورد استفاده به شرح زیر است:
- شمارنده ورودی (updown_counter)
- تقسیم ساعت (counter_clkDiv)
- تقسیم ساعت LED (led_clkDiv)
- درایور صفحه نمایش هفت بخش (sseg_dec) (فایل پیوست)
درایور صفحه نمایش هفت قسمتی قبلاً مورد بحث قرار نگرفت زیرا ما در واقع فایل VHDL را از دکتر برایان میلی به دلیل کد طولانی و پیچیده آن وام گرفته بودیم. آنچه در اصل انجام می دهد این است که ورودی های دکمه ما را به صفحه هفت قسمتی روی برد Basys 3 هدایت می کند تا بدانیم میزان روشنایی در چه سطحی است.
با حرکت رو به جلو ، کنترلر LED از دمپایی برای افزایش یا کاهش تعداد استفاده می کند که هم صفحه نمایش هفت قسمت و هم سطح روشنایی لامپ LED را همزمان کنترل می کند.
شمارنده نهاد Port است (clk: در STD_LOGIC ؛ up_enable: در STD_LOGIC ؛ down_enable: در STD_LOGIC ؛ SEGMENTS: خارج از STD_LOGIC_VECTOR (7 پایین 0) ؛ DISP_EN: خروجی STD_LOGIC_VECTOR: 3 خروجی)؛ شمارنده انتهایی ؛ معماری رفتار شمارنده جزء updown_counter پورت است (وضعیت_حال: خارج up_enable: در STD_LOGIC) ؛ پایان جزء updown_counter؛ جزء counter_clkDiv 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: out std_logic_vector (3 پایین 0) ؛ SEGMENTS: 0 ؛ جزء پایان sseg_dec؛ جزء led_clkDiv بندر است (وضعیت حال حاضر: در STD_LOGIC_VECTOR (3 پایین 0) ؛ clk: در STD_LOGIC ؛ led_clk: خارج 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"؛ Alu_Val (3 پایین 0) <= state_state؛ next_state (0) <= not (present_state (0))؛ next_state (1) <= present_state (0) xor present_state (1)؛ next_state (2) <= (present_state (0) و present_state (1)) xor present_state (2)؛ next_state (3) <= (state_state (0) و present_state (1) و present_state (2)) xor present_state (3)؛ previous_state (0) <= not (present_state (0))؛ previous_state (1) <= present_state (0) xnor present_state (1)؛ previous_state (2) <= (state_state (0) nor present_state (1)) xor present_state (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_div: led_clk نقشه پورت div (clk => clk، present_state => present_state، led_clk => led_clk) ؛ clk_div: counter_clk نقشه پورت div (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 JC
JC7 جایی است که ما یکی از سیم های لامپ LED را متصل می کنیم و سیم دیگر به GROUND منتهی می شود
پس از تنظیم همه اینها ، تنها کاری که باید انجام دهید این است که بیت استریم خود را (با هر نرم افزاری که از Vivado استفاده می کنید) ایجاد کنید ، برد خود را برنامه ریزی کرده و رونق بگیرید! شما برای خود یک تخته کار تهیه کرده اید.
توجه: نقشه پین را می توانید در Datasheet Basys 3 پیدا کنید.
مونتاژ
مرحله 5: از سوئیچ دیمر خود استفاده کنید
اگر همه چیز خوب پیش رفت ، باید یک سیستم کم نور کاملاً عملکردی داشته باشید. به طور خلاصه ، با فشار دادن دکمه بالا روشنایی شما (تا 15) افزایش می یابد و با فشار دادن دکمه پایین روشنایی شما کاهش می یابد (تا 0). امیدوارم همه چیز برای بینایی آرام شما خوب پیش برود!
توصیه شده:
نور بسیار روشن دوچرخه با استفاده از PCB های پنل نور سفارشی: 8 مرحله (همراه با تصاویر)
![نور بسیار روشن دوچرخه با استفاده از PCB های پنل نور سفارشی: 8 مرحله (همراه با تصاویر) نور بسیار روشن دوچرخه با استفاده از PCB های پنل نور سفارشی: 8 مرحله (همراه با تصاویر)](https://i.howwhatproduce.com/images/001/image-625-30-j.webp)
چراغ دوچرخه بسیار روشن با استفاده از PCB های پنل نور سفارشی: اگر صاحب دوچرخه هستید ، می دانید که چاله های ناخوشایند روی لاستیک ها و بدن شما چقدر ناخوشایند است. به اندازه کافی لاستیک های خود را منفجر کرده بودم ، بنابراین تصمیم گرفتم پنل LED خود را به منظور استفاده از آن به عنوان چراغ دوچرخه طراحی کنم. یکی که بر E بودن متمرکز است
ماژول نور - نور را با استفاده از Neopixel و Pull Up Switch بکشید: 6 مرحله (همراه با تصاویر)
![ماژول نور - نور را با استفاده از Neopixel و Pull Up Switch بکشید: 6 مرحله (همراه با تصاویر) ماژول نور - نور را با استفاده از Neopixel و Pull Up Switch بکشید: 6 مرحله (همراه با تصاویر)](https://i.howwhatproduce.com/images/004/image-11265-2-j.webp)
ماژول Light - Light را با استفاده از Neopixel & Pull Up Switch بکشید: ویژگی های ماژول Light Arduino Uno Hardware & amp؛ محوطه خریداری شده از اینترنت Neopixel & amp؛ منبع تغذیه وام گرفته شده از دانشکده انفورماتیک & amp؛ طراحی محصول ماژول نور کنترل شده توسط منبع تغذیه کلیه عملکردها از طریق
نحوه استفاده از برد سازگار Arduino WeMos D1 WiFi UNO ESP8266 IOT IDE با استفاده از Blynk: 10 مرحله
![نحوه استفاده از برد سازگار Arduino WeMos D1 WiFi UNO ESP8266 IOT IDE با استفاده از Blynk: 10 مرحله نحوه استفاده از برد سازگار Arduino WeMos D1 WiFi UNO ESP8266 IOT IDE با استفاده از Blynk: 10 مرحله](https://i.howwhatproduce.com/images/006/image-16899-11-j.webp)
نحوه استفاده از برد سازگار با Arduino WeMos D1 WiFi UNO ESP8266 IOT IDE با استفاده از Blynk: برد سازگار Arduino WeMos D1 WiFi UNO ESP8266 IOT IDE توضیحات: تابلوی توسعه WiFi ESP8266 WEMOS D1. WEMOS D1 یک برد توسعه WIFI بر اساس ESP8266 12E است. عملکرد مشابه NODEMCU است ، با این تفاوت که سخت افزار در حال ساخت است
نحوه برنامه ریزی برد AVR با استفاده از برد آردوینو: 6 مرحله
![نحوه برنامه ریزی برد AVR با استفاده از برد آردوینو: 6 مرحله نحوه برنامه ریزی برد AVR با استفاده از برد آردوینو: 6 مرحله](https://i.howwhatproduce.com/images/001/image-2454-35-j.webp)
نحوه برنامه ریزی برد AVR با استفاده از برد Arduino: آیا یک برد میکروکنترلر AVR در اطراف خود قرار داده اید؟ آیا برنامه نویسی آن مشکل است؟ خوب ، شما در جای مناسب هستید. در اینجا نحوه برنامه ریزی برد میکروکنترلر Atmega8a با استفاده از برد Arduino Uno به عنوان برنامه نویس را به شما نشان خواهم داد. بنابراین بدون هیچ چیز بعدی
نشانگر سطح آب بی سیم با برد بلند با زنگ هشدار - برد تا 1 کیلومتر - هفت سطح: 7 مرحله
![نشانگر سطح آب بی سیم با برد بلند با زنگ هشدار - برد تا 1 کیلومتر - هفت سطح: 7 مرحله نشانگر سطح آب بی سیم با برد بلند با زنگ هشدار - برد تا 1 کیلومتر - هفت سطح: 7 مرحله](https://i.howwhatproduce.com/images/001/image-1766-82-j.webp)
نشانگر سطح آب بی سیم با برد بلند با زنگ هشدار | برد تا 1 کیلومتر | هفت سطح: آن را در یوتیوب تماشا کنید: https://youtu.be/vdq5BanVS0Y ممکن است بسیاری از شاخص های سطح آب سیمی و بی سیم را مشاهده کرده باشید که برد 100 تا 200 متر را ارائه می دهند. اما در این دستورالعمل ، شما قرار است Indi سطح آب بی سیم برد بلند را ببینید