我有一个项目。在我的项目中,我正在创造一种能够保持汽车旁边任何东西与汽车本身之间距离的汽车。但是,编码对我来说很头疼。我创建了3个不同的项目,所有这些对我来说都没问题。然而,他们都没有在实践中工作。然后,我创建了这个代码(最基本的代码 - 完全没有组件)。
传感器需要10 us脉冲并等待100ms的新脉冲。当我发送触发信号时,传感器响应并发送超声波。当它等待回收回声时,传感器发送5v信号并且我找到该信号的持续时间。根据这个计算,我将信号(电机)更改为10,01或11.理论上,它可以工作,但在preactice它不起作用。
这是代码。
begin
process(clk)
variable c1,c2: integer:=0;
variable y :std_logic:='1';
begin
if rising_edge(clk) then
if(c1=0) then
trig<='1';
elsif(c1=500) then--100us
trig<='0';
y:='1';
elsif(c1=5000000) then-- 100 ms
c1:=0;
trig<='1';
end if;
c1:=c1+1;
if(echo = '1') then
c2:=c2+1;
elsif(echo = '0' and y='1' ) then-- I change the y to not get echo_time =0;
echo_time<= c2;
c2:=0;
y:='0';
end if;
if(echo_time < 100000) then--20 cm
motor<="10";
elsif(echo_time > 150000)then--30 cm
motor<="01";
else-- between
motor<="11";
end if;
end if;
end process ;
`
我无法解决我的问题。对我来说一切似乎都很好。我创建了一个模拟和虚构信号。在电脑上,它可以工作,但在现实生活中却没有。
Pleeaaassssee帮助我。
编辑:问题解决了,代码正常运行。我给传感器作为Vcc给3.3V,然后我意识到我应该给5v。有效。谢谢大家。
答案 0 :(得分:0)
问题解决了,代码正常运行。我给传感器作为Vcc给3.3V,然后我意识到我应该给5v。有效。谢谢大家。