Оглавление:
- Шаг 1: Таймер
- Шаг 2. Оптимизация кнопок
- Шаг 3: светодиод
- Шаг 4: верхний файл
- Шаг 5: Файл ограничений
- Шаг 6: Подключение датчика движения PIR
- Шаг 7: Подключение светодиода к макетной плате
- Шаг 8: Подключение платы Basys
Видео: Светодиод с датчиком движения: 8 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Фон:
Вы когда-нибудь забывали выключить свет перед тем, как отправиться в класс, на работу или перед сном? Часы с включенным светом, когда вы им не пользуетесь, действительно могут увеличить стоимость и потерю энергии. Например, по данным solarcity.com, если оставить свет включенным на всю ночь в течение недели, к вашему счету за электричество можно добавить 25 долларов! Для нашего проекта CPE133 мы разрабатываем свет с датчиком движения, чтобы помочь людям экономить энергию в своих домах и эффективно использовать свет.
Наша система на практике:
На практике свет включается только тогда, когда датчик обнаруживает движение в комнате. Затем свет будет гореть определенное время, например, около 30 минут, а затем автоматически выключится. Но предположим, что вы просто проходили или хотели выйти из комнаты раньше, чем истечет установленный промежуток времени. Для таких случаев мы установили кнопку, с помощью которой вы можете включать и выключать свет вручную. Обратите внимание, что свет будет гореть в течение 30 минут, даже если он включен вручную или автоматически (если свет не выключен вручную).
Моделирование на борту:
Чтобы убедиться, что таймер работает, мы изменили таймер на 1 минуту.
Материалы:
- 1 доска Basys (вы можете найти ее здесь от Digilent)
- 1 датчик движения PIR (вы можете найти его здесь, на Amazon)
- 1 макет и комплект (мы предлагаем использовать этот от Amazon)
-
Из комплекта выше
- 1 светодиод
- 3 соединительных кабеля типа мама-папа
- 6 штекерных перемычек
Шаг 1: Таймер
Чтобы светодиод оставался включенным в течение 1 минуты, мы должны сначала создать таймер. Плата Basys 3 имеет внутреннюю частоту 100 МГц, что делает 100 миллионов циклов равными 1 секунде. Затем это используется как переменная, которая будет действовать как максимальное число для «t_cnt». T_cnt увеличивается на 1, когда плата Basys 3 завершает цикл. Как только он достигнет отметки в 100 миллионов, он будет сброшен, и другая переменная, «сек», увеличится на 1. Эта переменная «сек» представляет количество прошедших секунд, и как только эта переменная станет равной 60, прошла полная минута.
Скопируйте приведенный ниже код в исходный файл vhdl с именем Timer.
сущность COUNT_8B является
порт (СБРОС: в std_logic;
CLK: в std_logic; T: out std_logic: = '0');
конец COUNT_8B;
архитектура my_count из COUNT_8B
константа max_count: integer: = (100000000); --signal t_cnt: std_logic_vector (от 7 до 0): = "00000000"; сигнал t_cnt: целое число: = (0); начать процесс (CLK, RESET, t_cnt) переменная sec: integer: = 0; начать, если (возрастание_границы (CLK)), то если (СБРОС = '1'), то t_cnt <= (0); - очистить elsif (t_cnt = max_count), затем - max_count равно 100 миллионам, что равно 1 секунде t_cnt <= (0); - Сбрасывает внутренние часы на 0 сек: = сек + 1; - Увеличивает наши «медленные часы» на 1 if (sec = 60) then - Как только они достигают 60 секунд, тогда достигается максимальное время sec: = 0; - Сбрасывает "медленные часы" на 0 T <= '1'; конец, если; иначе t_cnt <= t_cnt + 1; - увеличивает внутренние часы T <= '0'; конец, если; конец, если; завершить процесс; конец my_count;
Шаг 2. Оптимизация кнопок
Поскольку частота на платах Basys очень высока (около 100 МГц), когда вы нажимаете на то, что, по вашему мнению, является коротким промежутком времени до платы Basys, вы нажимаете ее 100 000 раз. Это заставляет свет быстро мигать между включенным и выключенным состоянием. Мы попытались оптимизировать кнопку, создав диаграмму состояний, чтобы уменьшить мерцание.
D-триггеры будут удерживать каждое состояние, а затем мы укажем переходы между состояниями в операторе процесса.
Скопируйте приведенный ниже код в исходный файл vhdl с именем Button.
библиотека IEEE; используйте IEEE. STD_LOGIC_1164. ALL;
кнопка сущности
Порт (btn: в STD_LOGIC; clk: в STD_LOGIC; E: из STD_LOGIC); кнопка завершения;
архитектура Поведение кнопки
тип state_type - (НАЖАТ, NP); сигнал PS, NS: state_type: = NP;
начинать
seq_proc: process (NS, clk) begin if (rise_edge (clk)), то PS <= NS; конец, если; завершить процесс seq_proc;
ns_proc: процесс (btn, PS)
начальный случай PS - это когда NP => if (btn = '1') then NS <= PRESSED; E <= '1'; иначе NS <= NP; E if (btn = '0'), то NS <= NP; E <= '0'; иначе NS <= НАЖАТЫЙ; E <= '0'; конец, если; конец корпуса; завершить процесс ns_proc;
конец Поведенческий;
Шаг 3: светодиод
Светодиод имеет два состояния: ВЫКЛ (или ХОЛОСТОЙ ХОД) и ВКЛ. Как было сказано ранее, состояния хранятся в d-триггере. Свет будет включаться, если датчик обнаруживает движение (S = 1) или при нажатии кнопки (E = 1). Светодиод выключится автоматически, если таймер достигнет 1 минуты (T = 1), или вручную, когда будет нажата кнопка (E = 1).
Скопируйте приведенный ниже код в исходный файл vhdl с именем LED.
entity motion_sensored_light - это порт (S: в STD_LOGIC; - sesnor; порт JA10 / Pin G3 E: в STD_LOGIC; - внешняя кнопка для ручной функции; центральная кнопка T: в STD_LOGIC; - когда таймер достигает максимального времени; от светодиода таймера: out STD_LOGIC; - свет TRST: out STD_LOGIC; - сбрасывает clk таймера: в STD_LOGIC); - clk для триггера с состояниями end motion_sensored_light;
архитектура Поведение motion_sensored_light
тип state_type - (ST0, ST1); --ST0 = ХОЛОСТОЙ ХОД, ST1 = СВЕТОДИОД ВЫСОКИЙ
сигнал PS, NS: state_type: = ST0; - НАСТОЯЩЕЕ СОСТОЯНИЕ И СЛЕДУЮЩЕЕ СОСТОЯНИЕ, запускается в ST0 IDLE
начинать
- блок процесса триггера - обновляет состояние по нарастающему фронту тактовых импульсов seq_proc: process (NS, clk) begin - d триггер, который содержит состояния if (rise_edge (clk)) then PS <= NS; конец, если; завершить процесс seq_proc;
ns_proc: процесс (S, E, T, PS)
начальный регистр PS - это когда ST0 => LED <= '0'; - выходы для состояния покоя TRST <= '1'; if (S = '0' OR E = '1') then - входы для перехода с st0 на st1 NS <= ST1; иначе NS LED <= '1'; - выходы для включенного состояния TRST <= '0'; if (E = '1' OR T = '1') then - входы для перехода от st1 к st0 NS <= ST0; иначе NS <= ST1; конец, если; конец корпуса; завершить процесс ns_proc;
конец Поведенческий;
Шаг 4: верхний файл
Теперь мы собираемся перенести все остальные файлы в один.
Скопируйте приведенный ниже код в исходный файл vhdl с именем Top_File.
библиотека IEEE; используйте IEEE. STD_LOGIC_1164. ALL;
entity Top_File - это
Port (S: in STD_LOGIC: = '1'; - sesnor; Port JA10 / Pin G3 btn: in STD_LOGIC: = '0'; - внешняя кнопка для ручного управления; светодиод центральной кнопки: out STD_LOGIC; - световой сигнал clk: в STD_LOGIC); - clk для триггера, содержащего состояния end Top_File;
архитектура Поведение Top_File
компонент COUNT_8B
порт (СБРОС: в std_logic: = '0'; CLK: в std_logic; T: из std_logic: = '0'); конечный компонент; компонент motion_sensored_light - это порт (S: в STD_LOGIC; - sesnor; Порт JA10 / Pin G3 E: в STD_LOGIC; - внешняя кнопка для ручного управления; Центральная кнопка T: в STD_LOGIC; - когда таймер достигает максимального времени; От светодиода таймера: out STD_LOGIC; - свет TRST: out STD_LOGIC; - сбрасывает clk таймера: в STD_LOGIC); - clk для триггера, содержащего компонент конца состояний; кнопка компонента - порт (btn: в STD_LOGIC; clk: в STD_LOGIC; E: из STD_LOGIC); конечный компонент; сигнал t_reached_c: std_logic; - сигнал r_time_c: std_logic; - сигнал button_c: std_logic;
начинать
таймер: COUNT_8B карта портов (СБРОС => r_time_c, CLK => CLK, T => t_reached_c); motion_sensor: карта портов motion_sensored_light (S => S, E => button_c, T => t_reached_c, LED => LED, TRST => r_time_c, clk => clk); button_controller: карта портов кнопки (btn => btn, clk => clk, E => button_c); конец Поведенческий;
Шаг 5: Файл ограничений
Теперь нам нужно определить, где на плате будут наши входы и выходы.
Скопируйте приведенный ниже код в файл ограничений vhdl с именем Constraints.
## Этот файл представляет собой общий.xdc для платы Basys3 rev B ## Чтобы использовать его в проекте: ## - раскомментируйте строки, соответствующие используемым контактам. ## - переименуйте используемые порты (в каждой строке после get_ports) в соответствии с к именам сигналов верхнего уровня в проекте
## Тактовый сигнал
set_property PACKAGE_PIN W5 [get_ports clk] set_property IOSTANDARD LVCMOS33 [get_ports clk] create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports clk] ##ches #set_property PACKAGE_PIN V17 [0] set_property IOSTANDARD LVCMOS33 [get_ports {sw [0]}] #set_property PACKAGE_PIN V16 [get_ports {sw [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [1]}] #set_property PACKAGE_PIN W16 [get_ports {sw [2] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [2]}] #set_property PACKAGE_PIN W17 [get_ports {sw [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [3]}] #set_property PACKAGE_PIN W15 [4_ports {sw]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [4]}] #set_property PACKAGE_PIN V15 [get_ports {sw [5]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [5]}] #set_property PACKAGE_PIN W14 [get_ports [6]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [6]}] #set_property PACKAGE_PIN W13 [get_ports {sw [7]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [7]}] #set_property PACKAGE_PIN V2 [get_ports {sw [8]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [8]}] #set_property PACKAGE_PIN T3 [get_ports {sw [9]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [9]}] #set_property PACKAGE_PIN T2 [get_ports {sw [10]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [10]}] #set_property PACKAGE_PIN R3 [get_ports {sw [11]}] # set_property IOSTANDARD LVCMOS33 [get_ports {sw [11]}] #set_property PACKAGE_PIN W2 [get_ports {sw [12]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [12]}] #set_property PACKAGE_PIN U1 [get_ports {sw [13] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [13]}] #set_property PACKAGE_PIN T1 [get_ports {sw [14]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [14]}] #set_property PACKAGE_PIN R2 [get_ports {sw [sw]}] #set_property IOSTANDARD LVCMOS33 [get_ports {sw [15]}]
## светодиоды
#set_property PACKAGE_PIN U16 [get_ports {led [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [0]}] #set_property PACKAGE_PIN E19 [get_ports {led [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led] }] #set_property PACKAGE_PIN U19 [get_ports {led [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [2]}] #set_property PACKAGE_PIN V19 [get_ports {led [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led 3]}] #set_property PACKAGE_PIN W18 [get_ports {led [4]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [4]}] #set_property PACKAGE_PIN U15 [get_ports {led [5]}] #set_property IOSTANDARD LVCMOS33 [get_ports led [5]}] #set_property PACKAGE_PIN U14 [get_ports {led [6]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [6]}] #set_property PACKAGE_PIN V14 [get_ports {led [7]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [7]}] #set_property PACKAGE_PIN V13 [get_ports {led [8]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [8]}] #set_property PACKAGE_PIN V3 [get_ports {led [9]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [9]}] #set_property PACKAGE_PIN W3 [get_ports {led [10]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [10]}] #set_property PACKAGE_PIN U3 led [get_ports [11]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [11]}] #set_property PACKAGE_PIN P3 [get_ports {led [12]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [12]}] #set_property PACKAGE_PIN N3 [get_ports_PIN N3 {led [13]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [13]}] #set_property PACKAGE_PIN P1 [get_ports {led [14]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [14]}] #set_property PACKAGE_PIN L1 [get_ports {led [15]}] #set_property IOSTANDARD LVCMOS33 [get_ports {led [15]}] ## 7-сегментный дисплей #set_property PACKAGE_PIN W7 [get_ports {seg [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {seg [0]}] #set_property PACKAGE_PIN W6 [get_ports {seg [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {seg [1]}] #set_property PACKAGE_PIN U8 [get_ports {seg [2]}] #set_property IOSTA NDARD LVCMOS33 [get_ports {seg [2]}] #set_property PACKAGE_PIN V8 [get_ports {seg [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {seg [3]}] #set_property PACKAGE_PIN U5 [get_ports {seg [4]} #set_property IOSTANDARD LVCMOS33 [get_ports {seg [4]}] #set_property PACKAGE_PIN V5 [get_ports {seg [5]}] #set_property IOSTANDARD LVCMOS33 [get_ports {seg [5]}] #set_property PACKAGE_PIN U7 [get_ports] }] #set_property IOSTANDARD LVCMOS33 [get_ports {seg [6]}]
#set_property PACKAGE_PIN V7 [get_ports dp]
#set_property IOSTANDARD LVCMOS33 [get_ports dp]
#set_property PACKAGE_PIN U2 [get_ports {an [0]}]
#set_property IOSTANDARD LVCMOS33 [get_ports {an [0]}] #set_property PACKAGE_PIN U4 [get_ports {an [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {an [1]}] #set_property PACKAGE_PIN V4 [get_ports {an [2] }] #set_property IOSTANDARD LVCMOS33 [get_ports {an [2]}] #set_property PACKAGE_PIN W4 [get_ports {an [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {an [3]}]
## Кнопки
set_property PACKAGE_PIN U18 [get_ports btn] set_property IOSTANDARD LVCMOS33 [get_ports btn] #set_property PACKAGE_PIN T18 [get_ports btnU] #set_property IOSTANDARD LVCMOS33 [get_ports btnU] #set_property IOSTANDARD LVCMOS33 [get_ports btnU] #set_property IOSPROT_SET_PROPERTY] #set_property_property PACK] #set_property_property PACK] #set_property_property] [get_ports btnR] #set_property IOSTANDARD LVCMOS33 [get_ports btnR] #set_property PACKAGE_PIN U17 [get_ports btnD] #set_property IOSTANDARD LVCMOS33 [get_ports btnD]
## Pmod Header JA
## Sch name = JA1 #set_property PACKAGE_PIN J1 [get_ports {JA [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JA [0]}] ## Sch name = JA2 #set_property PACKAGE_PIN L2 [get_ports {JA [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JA [1]}] ## Sch name = JA3 #set_property PACKAGE_PIN J2 [get_ports {JA [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JA [2]}] ## Sch name = JA4 #set_property PACKAGE_PIN G2 [get_ports {JA [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JA [3]}] ## Sch name = JA7 #set_property PACKAGE_PIN H1 [get_ports {JA [4]}] #set_property IOST LVCMOS33 [get_ports {JA [4]}] ## Sch name = JA8 set_property PACKAGE_PIN K2 [индикатор get_ports] set_property IOSTANDARD LVCMOS33 [индикатор get_ports] ## Sch name = JA9 #set_property PACKAGE_PIN H2 [get_ports {JA [6]}] # set_property IOSTANDARD LVCMOS33 [get_ports {JA [6]}] ## Sch name = JA10 set_property PACKAGE_PIN G3 [get_ports S] set_property IOSTANDARD LVCMOS33 [get_ports S]
## Pmod Заголовок JB
## Sch name = JB1 #set_property PACKAGE_PIN A14 [get_ports {JB [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [0]}] ## Sch name = JB2 #set_property PACKAGE_PIN A16 [get_ports {JB [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [1]}] ## Sch name = JB3 #set_property PACKAGE_PIN B15 [get_ports {JB [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [2]}] ## Sch name = JB4 #set_property PACKAGE_PIN B16 [get_ports {JB [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [3]}] ## Sch name = JB7 #set_property PACKAGE_PIN A15 [get_ports {JB [4]}] #set_property IOST LVCMOS33 [get_ports {JB [4]}] ## Sch name = JB8 #set_property PACKAGE_PIN A17 [get_ports {JB [5]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [5]}] ## Sch name = JB9 #set_property PACKAGE_PIN C15 [get_ports {JB [6]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JB [6]}] ## Sch name = JB10 #set_property PACKAGE_PIN C16 [get_ports {JB [7]}] #set_property IOSTANDARD LVCMOS33 [получить JB [7]}]
## Pmod Header JC
## Sch name = JC1 #set_property PACKAGE_PIN K17 [get_ports {JC [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [0]}] ## Sch name = JC2 #set_property PACKAGE_PIN M18 [get_ports {JC [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [1]}] ## Sch name = JC3 #set_property PACKAGE_PIN N17 [get_ports {JC [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [2]}] ## Sch name = JC4 #set_property PACKAGE_PIN P18 [get_ports {JC [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [3]}] ## Sch name = JC7 #set_property PACKAGE_PIN L17 [get_ports {JC [4]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [4]}] ## Sch name = JC8 #set_property PACKAGE_PIN M19 [get_ports {JC [5]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [5]}] ## Sch name = JC9 #set_property PACKAGE_PIN P17 [get_ports {JC [6]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JC [6]}] ## Sch name = JC10 #set_property PACKAGE_PIN R18 [get_ports {JC [7]}] #set_property IOSTANDARD LVCMOS33 [получить JC [7]}]
## Pmod Header JXADC
## Sch name = XA1_P #set_property PACKAGE_PIN J3 [get_ports {JXADC [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC [0]}] ## Sch name = XA2_P #set_property PACKAGE_PIN L3 [get_ports 1] JXADC] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC [1]}] ## Sch name = XA3_P #set_property PACKAGE_PIN M2 [get_ports {JXADC [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC [2]}] # Sch name = XA4_P #set_property PACKAGE_PIN N2 [get_ports {JXADC [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC [3]}] ## Sch name = XA1_N #set_property PACKAGE_PIN K3 [get_ports {JXADCARD] Iset_ARD [4]} LVCMOS33 [get_ports {JXADC [4]}] ## Sch name = XA2_N #set_property PACKAGE_PIN M3 [get_ports {JXADC [5]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC [5]}] ## Sch name = XA3proty_N #set_proty_N #set_ PACKAGE_PIN M1 [get_ports {JXADC [6]}] #set_property IOSTANDARD LVCMOS33 [get_ports {JXADC [6]}] ## Sch name = XA4_N #set_property PACKAGE_PIN N1 [get_ports {JXADC [7]}] #set_property IOS33 [get_ports {JXADC [7]}]
## Разъем VGA
#set_property PACKAGE_PIN G19 [get_ports {vgaRed [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {vgaRed [0]}] #set_property PACKAGE_PIN H19 [get_ports {vgaRed [1]}] #set_property IOSgaRed [1]}] #set_property IOSTANDARD LVCM [1] }] #set_property PACKAGE_PIN J19 [get_ports {vgaRed [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {vgaRed [2]}] #set_property PACKAGE_PIN N19 [get_ports {vgaRed [3]}] #set_property IOS33 [vgaRed [3]}] #set_property IOS33 [vgaRed [3]}] #set_property IOS33 [vgaRed [3]}] #set_property IOS33 [vgaRed [3]} 3]}] #set_property PACKAGE_PIN N18 [get_ports {vgaBlue [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {vgaBlue [0]}] #set_property PACKAGE_PIN L18 [get_ports {vgaBlue [1]}] #set_propertyCMOS33 [IOSAND] vgaBlue [1]}] #set_property PACKAGE_PIN K18 [get_ports {vgaBlue [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {vgaBlue [2]}] #set_property PACKAGE_PIN J18 [get_ports {vgaBlue [3]}] #set_ports {vgaBlue [3]}] #set_port get_ports {vgaBlue [3]}] #set_property PACKAGE_PIN J17 [get_ports {vgaGreen [0]}] #set_property IOSTANDARD LVCMOS33 [get_p orts {vgaGreen [0]}] #set_property PACKAGE_PIN H17 [get_ports {vgaGreen [1]}] #set_property IOSTANDARD LVCMOS33 [get_ports {vgaGreen [1]}] #set_property PACKAGE_PIN G17 [get_ports {vgaGreen_ard [2]}] # IOSTANDARD Iproty [2]}] LVCMOS33 [get_ports {vgaGreen [2]}] #set_property PACKAGE_PIN D17 [get_ports {vgaGreen [3]}] #set_property IOSTANDARD LVCMOS33 [get_ports {vgaGreen [3]}] #set_property PACKAGE_PIN P19 [get_ports #Sync Hsync] Hsync] #set_property PACKAGE_PIN R19 [get_ports Vsync] #set_property IOSTANDARD LVCMOS33 [get_ports Vsync]
## Интерфейс USB-RS232
#set_property PACKAGE_PIN B18 [get_ports RsRx] #set_property IOSTANDARD LVCMOS33 [get_ports RsRx] #set_property PACKAGE_PIN A18 [get_ports RsTx] #set_property IOSTANDARD LVCMOS33 [get_ports RsTx]
## USB HID (PS / 2)
#set_property PACKAGE_PIN C17 [get_ports PS2Clk] #set_property IOSTANDARD LVCMOS33 [get_ports PS2Clk] #set_property PULLUP true [get_ports PS2Clk] #set_property PACKAGE_PIN B17 [get_ports PS2Data] # true_propertyPACKAGE_PIN B17 [get_ports PS2Data] # true_property_property IOSMOS2 [get_property_property_PS2Data] # true_property_property IOSMOS2 [get_property_property]
## Quad SPI Flash
## Обратите внимание, что CCLK_0 нельзя разместить в устройствах серии 7. Вы можете получить к нему доступ с помощью примитива ## STARTUPE2. #set_property PACKAGE_PIN D18 [get_ports {QspiDB [0]}] #set_property IOSTANDARD LVCMOS33 [get_ports {QspiDB [0]}] #set_property PACKAGE_PIN D19 [get_ports {QspiDB [1]}] #set_property QspiDB [1]}] #set_property QSM IOS33 [get_property QSM] [IOSTANDARD] }] #set_property PACKAGE_PIN G18 [get_ports {QspiDB [2]}] #set_property IOSTANDARD LVCMOS33 [get_ports {QspiDB [2]}] #set_property PACKAGE_PIN F18 [get_ports {QspiDB [3]}] #set_property [3] get_ports {QAND_property [3]}] #set_property [3] 3]}] #set_property PACKAGE_PIN K19 [get_ports QspiCSn] #set_property IOSTANDARD LVCMOS33 [get_ports QspiCSn]
Шаг 6: Подключение датчика движения PIR
Датчик движения PIR имеет три контакта: питание, земля и сигнал тревоги соответственно (см. Первое изображение). Предлагаемый в этом руководстве датчик движения может подключаться непосредственно к макетной плате. Но для датчика, который мы использовали, нам пришлось разрезать и зачистить провода, а затем припаять оголенные концы, чтобы они не изнашивались. На макетной плате вставьте перемычку «папа-мама» последовательно с контактами питания и заземления, а затем перемычку «папа-папа» последовательно с контактом аварийной сигнализации (см. Второй рисунок).
Шаг 7: Подключение светодиода к макетной плате
Вставьте светодиод в макетную плату. Вставьте черную перемычку «папа-папа» последовательно с коротким проводом светодиода. Затем подключите соединительный кабель разного цвета «папа-папа» последовательно с длинным проводом светодиода.
Шаг 8: Подключение платы Basys
Подключите гнезда датчика движения PIR к источнику напряжения 5 В на основной плате. Затем подключите штекерный провод заземления светодиода к заземлению бокового порта, затем сигнальный провод от датчика движения PIR и затем входной провод светодиода (как показано на рисунке).
Рекомендуемые:
Водопроводный кран с датчиком движения с использованием Arduino и электромагнитного клапана - Сделай сам: 6 шагов
Водопроводный кран с датчиком движения с использованием Arduino и соленоидного клапана - Сделай сам: в этом проекте я покажу вам, как построить водопроводный кран с датчиком движения с использованием соленоидного клапана. Этот проект может помочь вам преобразовать имеющийся ручной водопроводный кран в кран, которым можно управлять на основе обнаружения движения. Использование интерфейса ИК-датчика
Дверной звонок с датчиком движения: 5 шагов (с фотографиями)
Дверной звонок с датчиком движения: Когда я рассказал своему сыну Джейдену об испытании, он сразу же подумал использовать набор LEGO WeDo. Он много лет играл с Lego, но только в начале прошлого учебного года у него появилась возможность писать код с помощью WeDo 2.0
Светодиодный ночник для кровати с автоматическим датчиком движения DIY: 6 шагов (с изображениями)
Светодиодный ночник для кровати с автоматическим датчиком движения DIY: Привет, ребята, добро пожаловать в еще один инструктаж, который всегда поможет вам в повседневной жизни и добавит удобства, чтобы облегчить вашу жизнь. Иногда это может быть спасением для пожилых людей, которым приходится с трудом вставать с постели
Взаимодействие Arduino с ультразвуковым датчиком и бесконтактным датчиком температуры: 8 шагов
Взаимодействие Arduino с ультразвуковым датчиком и бесконтактным датчиком температуры: в настоящее время производители и разработчики предпочитают Arduino для быстрой разработки прототипов проектов. Arduino - это электронная платформа с открытым исходным кодом, основанная на простом в использовании аппаратном и программном обеспечении. У Arduino очень хорошее сообщество пользователей. В этом проекте
Сделайте простой светильник с датчиком движения! (PIR): 13 шагов (с изображениями)
Сделайте простой светильник с датчиком движения! (PIR): Сделайте маленький & Простой световой датчик движения с меньшими хлопотами и меньшим количеством компонентов. Новичок тоже может это сделать. Требуется только простое понимание того, как работает транзистор, и знание анода и катода, поэтому сделайте его без напряжения