Explicacion:
Robot con 2 sensores y 2 motores que solo giran en un sentido( adelantar,parar).
Los 2 sensores se encuentran afuera y entre la linea negra, si los 2 sensores leen blanco, avanzan, si el sensor izquierdo lee negro, el robot gira a la izquierda, y si el sensor derecho lee negro,el robot gira derecha, no existe la opcion negro,negro ya que es imposible que tome esos valores, ya que es una linea basica sin intersecciones.
Codigo en VHDL:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity seguidor is
port(start,clock,sensor_i,sensor_d:in std_logic;
motor_i,motor_d :out std_logic);
end seguidor;
architecture solucion of seguidor is
type estados is (s0,s1,s2,s3);
signal es,ep:estados;
begin
process(clock)
begin
if clock='1' and clock'event then
ep<=es;
end if;
end process;
process(ep)
begin
es<=ep;
case ep is
when s0 => motor_i<='0'; motor_d<='0';
if start='1' then
es<=s1;
else
es<=s0;
end if;
when s1 => motor_i<='1'; motor_d<='1';
if sensor_i='0' and sensor_d='1' then
es<=s2;
elsif sensor_i='1' and sensor_d='0' then
es<=s3;
end if;
when s2 => motor_i<='0'; motor_d<='1';
if sensor_i='0' and sensor_d='1' then
es<=s2;
else
es<=s1;
end if;
when s3 => motor_i<='1'; motor_d<='0';
if sensor_i='1' and sensor_d='0' then
es<=s3;
else
es<=s1;
end if;
end case;
end process;
end solucion;
Los sensores son cny70? o tengo que modificar el programa para adaptarlo a los sensores cny70???
ResponderEliminarEste comentario ha sido eliminado por el autor.
ResponderEliminarnecesito mas informacion sobre el robot y como hacerlo
ResponderEliminarORALE, ¡MUY BIEN JOVEN!
ResponderEliminar