You are on page 1of 59

ANDR LUIS ROMEIRO SANTOS RA 0310022 - 8 sem.

Robtica Mvel - Controle de Movimentos

Jaguarina 2006

ANDR LUIS ROMEIRO SANTOS RA 0310022 - 8 sem.

Robtica Mvel - Controle de Movimentos

Monografia apresentada disciplina Trabalho de Graduao III, do curso de Cincia da Computao da Faculdade de Jaguarina, sob orientao do Prof. Dr. Andr Mendeleck, como exigncia parcial para concluso do curso de graduao.

Jaguarina 2006

SANTOS, Andr Luiz Romeiro. Robtica Mvel - Controle de Movimentos. Monografia defendida e aprovada na FAJ em xx de dezembro e 2006 pela banca examinadora constituda pelos professores:

Prof. Dr. Andr Mendeleck FAJ orientador

Prof. Ms. Miro FAJ Prof. Jos Arnaldo FAJ

Dedico este trabalho a minha me Eber Maria Romeiro, que me proporcionou a oportunidade de hoje estar aqui finalizando este curso.
3

Agradecimentos

Gostaria de agradecer a minha esposa Priscila, pela pacincia com a distncia e pelo amor concedido - tenham certeza que o recproco verdadeiro. Agradeo ao professor, orientador e amigo Andr Mendeleck, pela ateno e confiana depositada; e tambm ao coordenador Peter Jandl Junior e professores do curso de Cincia da Computao da FAJ pelo curso proporcionado: serei eternamente grato pela oportunidade. Agradeo tambm meus amigos por todos os momentos inesquecveis que vivemos ao longo destes 4 anos de caminhada. Sem vocs o curso no teria a menor graa! A Deus, pela plenitude da vida; pela maravilha do mundo.

"Cincia da computao est to relacionada aos computadores quanto a Astronomia aos telescpios, Biologia aos microscpios, ou Qumica aos tubos de ensaio. A Cincia no estuda ferramentas. Ela estuda como ns as utilizamos, e o que descobrimos com elas. (Edsger Dijkstra)

SANTOS, Andr Luiz Romeiro Santos. Robtica Mvel - Controle de Movimentos. 2006. Monografia (Bacharelado em Cincia da Computao) Curso de Cincia da Computao da Faculdade de Jaguarina, Jaguarina.

RESUMO Controle de Movimentos


Neste trabalho de graduao a questo-problema de como controlar por rdio freqncia de um veculo capaz de executar rotas prestabelecidas pelo usurio, navegando em ambientes conhecidos, desenvolvendo um software capaz de comandar um veculo em tempo real e atravs de comandos pr-determinados. Esses comandos podem ser passados de trs maneiras. A primeira via teclado, o software monitora as setas esperando que as mesma sejam ativadas para transmitir os comandos para o veculo. A segunda atravs de comandos pr-estabelecidos pelo software e por meio de digitao, neste modo o usurio tem a opo de salva os comandos e abrir comandos que esto salvos em arquivos e execut-los. A terceira atravs de imagem que podem ser deslocadas para um ponto especifico, montando assim um circuito que ser percorrido pelo veculo. O software desenvolvido em linguagem de alto nvel tem objetivo a IHC (Interface Homem Computador) que facilita a utilizao e compreenso do software.

Palavras-chave: controle de movimentos, radiofreqncia, Delphi

ABSTRACT Movement control


At this graduation work the problem-question of how to control by radio frequency a vehicle able to execute pre-established routes by the user, navigating through known ambient, developing a software able to control a vehicle in real time and by pre-established commands. These commands can be sent by three ways. The first is by the keyboard. The software monitors the arrows, waiting them to be activated for then transmit the commands to the vehicle. The second way works using preestablished software commands and by typing, this way, the user has the option to save commands and open saved commands, and then execute. The third way works by images that can be dislocated to a specific place, building a circuit that should be driven through by the car. The software was developed using hi-level language, and also has as an objective use HCI (Human Computer Interface) to control the car. The high level developed software has an IHC (Human Computer Interface) objective, witch makes the software comprehension easier. Keywords: movement control, radio frequency, Delphi

SUMRIO
LISTA DE FIGURAS ..................................................................................................9 1. INTRODUO .....................................................................................................10 1.1. Objetivos........................................................................................................................10 1.2. Motivaes ....................................................................................................................11 1.3. Estrutura da Monografia................................................................................................11 2. ROBTICA...........................................................................................................12 2.1. Origem ...........................................................................................................................12 2.2. Histria ..........................................................................................................................12 2.3. Definio .......................................................................................................................13 2.4. Classificao Geral ........................................................................................................14 3. PROJETO ............................................................................................................15 3.1. Rdio Freqncia...........................................................................................................16 3.2. IHM Interface Homem Mquina. ..................................................................................16 3.2.1. Definio de IHM....................................................................................................16 3.2.2. Desenvolvimento da Interface. ................................................................................16 3.3. IHC Interface Humano Computador ..........................................................................17 3.4. Controle de Veculo Robtico .......................................................................................18 3.4.1. Locomoo ..............................................................................................................18 3.5. Descrio dos Componentes..........................................................................................18 3.5.1. Descrio do Veculo ..............................................................................................18 3.5.2. Descrio do Controle do Veculo...........................................................................19 3.5.3. Porta Paralela...........................................................................................................20 3.5.4. Placa Comunicao..................................................................................................21 3.6. Desenvolvimento do Software.......................................................................................22 3.7. Software Controle de Veculo .......................................................................................25 3.7.1. Modo Manual ..........................................................................................................28 3.7.2. Modo Comandos .....................................................................................................32 3.7.3. Modo Grfico ..........................................................................................................36 3.8. Funcionamento Geral e Diagrama.................................................................................38 4. CONCLUSO.......................................................................................................42 5. REFERNCIAS BIBLIOGRFICAS .....................................................................43 Anexo I..............................................................................................................................45 Anexo II ............................................................................................................................52

LISTA DE FIGURAS

Figura 1 - FIDO Rover .........................................................................................................13 Figura 2 - Diagrama dos Principais Componentes ...............................................................15 Figura 3 - Diagrama do Veculo ...........................................................................................19 Figura 4 - Foto do Veculo ...................................................................................................19 Figura 5 - Diagrama da Placa do Controle ..........................................................................19 Figura 6 - Foto da Placa do Controle....................................................................................19 Figura 7 - Diagrama da Porta Paralela .................................................................................20 Figura 8 - Descrio de cada pino da Porta Paralela ............................................................21 Figura 9 - Diagrama da Placa ...............................................................................................22 Figura 10 - Foto da Placa......................................................................................................22 Figura 11 - Diagrama Software Teste...................................................................................23 Figura 12 - Diagrama da Tela Principal ...............................................................................27 Figura 13 - Tela Principal.....................................................................................................28 Figura 14 - Ampliao do Menu...........................................................................................28 Figura 15 - Diagrama Modo Manual....................................................................................31 Figura 16 - Foto Modo Manual ............................................................................................32 Figura 17 - Diagrama Modo Comandos ...............................................................................35 Figura 18 -Tela Modo Comandos.........................................................................................35 Figura 19 - Diagrama Modo Grfico....................................................................................36 Figura 20 - Modo Grfico.....................................................................................................37 Figura 21 Exemplo de Percurso ........................................................................................38 Figura 22 - Diagrama Geral..................................................................................................39 Figura 23 - Computador .......................................................................................................39 Figura 24 - Porta Paralela .....................................................................................................40 Figura 25 - Cabo ...................................................................................................................40 Figura 26 - Conectores .........................................................................................................40 Figura 27 - Caixa ..................................................................................................................41 Figura 28 - Foto dos Componentes.......................................................................................41

1. INTRODUO
A robtica deixou de ser apenas tema de filmes de fico para fazer parte da realidade da sociedade h algum tempo. O desenvolvimento tecnolgico mostrou que possvel e vantajoso construir este tipo de mquina visando facilitar diversas atividades humanas. Em 1961 surgiu o UNIMATE, primeiro rob instalado numa linha de montagem (no caso, da General Motors, fabricante de automveis) e que deu origem automao industrial. A indstria continua, nos dias atuais, polarizando a utilizao da robtica, mas j se observa crescimento em outros setores[2]. Neste trabalho de graduao, consideraremos a questo-problema de como controlar por rdio freqncia de um veculo capaz de executar rotas pr-estabelecidas pelo usurio, navegando em ambientes conhecidos. Os trabalhos nas reas de robticas e automao tm como caractersticas estruturais a multi-disciplinaridade, envolvendo vrias reas do conhecimento, principalmente as relacionadas a software e programao. Tendo como objetivo utilizar de forma especifica os conhecimentos adquiridos no curso de Cincias da computao e adquirir novos conhecimentos, aplicando no desenvolvimento de software para robtica, foi desenvolvido um estudo sobre software para construo de movimentos de rob e veculos mveis, focando no controle de trajetria e interface homem computador.

1.1. Objetivos
O objetivo do projeto foi desenvolver um software em uma linguagem de alto nvel conhecida como Object Pascal (Pascal com extenses orientadas a objetos), em um ambiente de programao chamado Delphi da empresa Borland, focando IHM interface homem computador para o controle do veculo. Controlar os movimentos de um veculo robtico atravs de um componente de hardware para transmitir os comandos usando rdio freqncia. Desenvolvimento de uma IHC (interface homem Computador) para controle do veculo, usando software desenvolvido com linguagem de alto nvel, onde o usurio ter trs maneiras de controlar veculo, no modo manual ou no modo automtico e gerar movimentos pr-programados e realizar tarefas ambientes conhecidos. Modo manual: Usurio controla o veculo usando as teclas do computador; Modo Automtico: Usurio determina uma rota para o veculo, quando o mesmo der o comando o veculo percorrera a rota. Modo Grfico: Usurio poder montar um circuito atravs de imagens que podem ser deslocadas para um ponto especifico e assim percorrido pelo veculo.
10

O veculo possui uma plataforma com 4 rodas, sendo duas traseiras que esto conectadas a um motor de corrente continua e duas rodas dianteira, que esto ligadas a um mecanismo de quatro barras possibilitando mobilidade para esquerda e direita.

1.2. Motivaes
Como esse projeto d grandes noes de como feito o controle de robs atravs de software que tem linguagem de grande nvel. O interesse deste projeto no apenas acadmico, o seu mercado potencialmente considervel. Cada dia que passa mais as indstrias esto se automatizando para produzir mais com qualidade e menor custo, esse projeto pode ser usado em ambientes conhecidos e repetidos vrias vezes por dia.

1.3. Estrutura da Monografia


A Monografia est estruturada em cinco Captulos: 1 Captulo Introduo apresentado o objetivo, motivaes e descreve as vrias etapas da realizao do projeto. 2 Captulo Robtica A origem, histria, definio dos robs e suas classificaes. 3 Captulo Projeto Todas as pesquisas feitas, todos conceitos e funcionalidades fundamentais detalhados para elaborao do projeto e descrio do mesmo. 4 Captulo Concluses Neste captulo so feitas as consideraes finais sobre o projeto e ainda referenciados possveis melhoramentos a aplicao. 5 Captulo Bibliografias A origem de todas as pesquisas e material retirado para elaborao do projeto.

11

2. ROBTICA 2.1. Origem


A origem do termo ROBO surge na dcada de vinte com a pea RUR - Robs Universais de Rossum de tcheco Karel Tschapek (1890 1938), onde durante a encenao alguns seres artificiais com aparncia humana chamados de Rob em tcheco, Robota, (que significa trabalho forado) obedeciam ordens de seu professor e desempenhavam os trabalhos mais pesados. Portanto, a partir de ento a literatura passou a oferecer oferece diferentes imagens do que possa ser um ROB. Podemos encontrar em obras de Issac Asimov diferentes figuras antropomorfas, que so capazes de fazer movimentos, falar, executar operaes, e at mesmo emocionar-se. Enfim, a aparncia real dos ROBS salvas pelo cinema e atualmente empregados nas industrias para a realizao de tarefas repetitivas se parecem em nada ou em pouco com o homem. [4]

2.2. Histria
A palavra rob tem origem da palavra tcheca robotnik, que significa servo, o termo rob foi utilizado inicialmente por Karel Capek em 1923, nesta poca a idia de um "homem mecnico" parecia vir de alguma obra de fico. No s do homem moderno o desejo de construir tais robs, existem alguns fatos histricos que nos mostram que a idia no nova, por exemplo, existem inmeras referncias sobre o "Homem Mecnico" construdo por relojoeiros com a finalidade de se exibir em feiras. Temos relatos tambm da realizao de vrias "Animaes Mecnicas" como o leo animado de Leonardo da Vinci, e seus esforos para fazer mquinas que reproduzissem o vo das aves. Porm estes dispositivos eram muito limitados, pois no podiam realizar mais que uma tarefa, ou um nmero reduzido delas. A idia de se construir robs comeou a tomar fora no incio do sculo XX com a necessidade de aumentar a produtividade e melhorar a qualidade dos produtos. nesta poca que o rob industrial encontrou suas primeiras aplicaes, o pai da robtica industrial foi George Devol. Atualmente devido aos inmeros recursos que os sistemas de microcomputadores nos oferece, a robtica atravessa uma poca de contnuo crescimento que permitir, em um curto espao de tempo, o desenvolvimento de robs inteligentes fazendo assim a fico do homem antigo se tornar realidade do homem atual.

12

2.3. Definio
Existe atualmente na sociedade tarefas que devem ser executadas com muita eficincia e preciso, alem de outras que devem ser realizadas em locais de difcil ou at mesmo impossvel acesso humano como o fundo do mar ou a imensido do espao, sendo assim, necessrio a utilizao de dispositivos (Robs) que possam realizar essas tarefas sem risco. A Figura 1 mostra o FIDO Rover, um rob mvel projetado pela Agncia Espacial Norte Americana (NASA) para a explorao do planeta Marte.

Figura 1 - FIDO Rover A Robtica, sendo atualmente uma altamente ativa e multidisciplinar, tem como objetivo o desenvolvimento e a integrao de tcnicas e algoritmos para a criao de Robs. A engenharia mecnica, eltrica, cincias da computao, a inteligncia artificial e outras, so matrias que fazem parte da Robtica, para que integradas possam desenvolver maravilhas tecnolgicas. Podemos observar robs em vrias reas de nossa sociedade atualmente, em tarefas como os desarmadores de bombas, robs com finalidade de pesquisa cientfica e educacional e at os robs operrios, que so instalados em fbricas e responsveis pela "Segunda Revoluo Industrial", revolucionando a produo em srie [5].

13

2.4. Classificao Geral


Existem diversas classes de robs que se diferenciam em suas aplicaes e formas de trabalhar e isso ocorre devido a existncia de vrias diferenas em relao caractersticas e propriedades. Segundo Gomide (1994) existem quatro Tipos de Robs: 1. Robs Inteligentes: so manipulados por sistemas multifuncionais controlados por computador, so capazes de interagir com seu ambiente atravs de sensores e de tomar decises em tempo real. Atualmente grandes esforos so dedicados ao desenvolvimento desse tipo de rob. 2. Robs com controle por computador: embora sejam semelhantes aos robs inteligentes, no possuem a capacidade de interagir com o ambiente. 3. Robs de aprendizagem: Se limitam a repetir uma seqncia de movimentos memorizados ou realizados com a interveno de um operador. 4. Manipuladores: so constitudos de sistemas mecnicos multifuncionais que possuem um sistema de controle sensvel, o qual permite governar o movimento de seus membros das seguintes formas: a) manual: que ocorre quando o operador controla diretamente os movimentos; b) de seqncia varivel, quando algumas caractersticas do ciclo de trabalho so possveis de alterar. Gomide (1994) afirma ainda que a realizao da classificao dos rob do ponto de vista do controle de seus movimentos, pode ser extremamente interessante se admitida as seguintes configuraes: 1. Sem controle-servo: o programa que controla o movimento dos diferentes componentes do rob e se realiza em um posicionamento conhecido como "ponto-a-ponto" no espao. 2. Com controle-servo: este tipo de controle permite duas formas de trabalho, sendo: a) controle dos movimentos dos membros do rob em funo de seus eixos, neste caso os movimentos podem ser realizados com trajetria contnua ou ponto-a-ponto. b) os movimentos se estabelecem da respectiva posio de seus eixos de coordenada e da orientao da mo ferramenta do rob. (GOMIDE, 1994).

14

3. PROJETO
Neste captulo entraremos em detalhes em tecnologias e tcnicas de desenvolvimento de hardware e software que foram fundamentais para a concluso do projeto. Na figura 2 contm o diagrama dos principais componentes do projeto, que so software, controle do veculo, rdio freqncia e veculo. Para desenvolvimento do software foi elaborado estudo de movimento de rob (Locomoo), comunicao com hardware utilizando a porta paralela e IHC (Interface Homem Computador) para aumentar aceitabilidade e a funcionalidade. Controle do veculo foi necessrio o desenvolvimento de uma Placa de Comunicao que recebe os sinais do software em os envia para o controle do veculo. Tambm foi estudado o controle do veculo para compreender seu funcionamento e como os sinais so enviados para o veculo. Na Rdio freqncia foi feita uma pesquisa para compreender o funcionamento das ondas de rdio, definies, tamanho e freqncia. O veculo foi estudado para compreender como recebe os sinais que so enviados pelo controle e o funcionamento das rotas. Os tpicos a seguir esto relacionados diretamente e indiretamente.

Software Controle

Rdio Freqncia

Veculo
Figura 2 - Diagrama dos Principais Componentes

15

3.1. Rdio Freqncia


A rdio freqncia um meio de transmisso que utiliza ondas eletro magnticas que se propagam pelo espao. Usam-se ondas eletromagnticas de diferente comprimento (comprimento de onda) para distintos fins. As ondas eletromagnticas distinguem-se pela sua freqncia e forma, as mais curtas tm freqncia mais alta e um comprimento de onda mais baixo, enquanto as ondas de freqncia mais baixa tm um comprimento de onda mais elevado [1]. A freqncia utilizada no controle do veculo de 27MHz tento um alcance de mais ou menos 10 metros. Um ciclo por segundo equivale a 1Hz (Hertz), 1KHz igual a 1000 Hz, ou 1000 ciclos por segundo, e assim sucessivamente.

3.2. IHM Interface Homem Mquina. 3.2.1. Definio de IHM.


IHM significa "Interface Homem-Mquina", utilizada normalmente para designar a interface existente no produto para que o usurio possa interagir com o mesmo. Para desenvolvermos uma IHM eficiente, preciso definir exatamente o perfil do usurio, o ambiente de trabalho, o estilo do equipamento e seu valor agregado, assim pode-se optar por teclas, displays de Leds, LCD alfanumrico, LCD grfico, Touch Screen, e muitos outros recursos.

3.2.2. Desenvolvimento da Interface.


Os principais pontos para o desenvolvimento da interface homem mquina so os padres, as diretrizes e os guidelines. Os padres so referncias, amplas e genricas, geralmente empregadas em todos os projetos de interface. Exemplos: consistncia, minimizar erros, recuperar erros, metforas, etc. As diretrizes so aes/especificaes propostas por manuais, guias ou livros, geralmente disponveis ao pblico. Exemplos: desenho centrado no usurio considere a limitao da memria humana, etc. Guidelines so guias de estilo, especificam o comportamento e os elementos da interface com detalhes. Exemplos: boto de iniciar no rodap da pgina, lado esquerdo, Boto cancelar o default, etc.

16

3.3. IHC Interface Humano Computador


Segundo Zancheta (2004), A soluo do problema de comunicao entre os seres humanos e os computadores no resolvido somente com argumentaes de interfaces mais amigveis e naturais do que as outras, mas sim atravs de uma abordagem disciplinada e iterativa do estudo do desempenho humano no uso de sistemas interativos. nesse contexto que surge a Engenharia de Usabilidade, uma metodologia que visa interao homem-computador[7]. Os usurios, principalmente os iniciantes ficam intimidados por usar os sistemas de computao, com interfaces complexas, comandos e linguagens inconsistentes, seqenciais de operaes confusas, instrues incompletas e procedimentos trabalhosos de recuperao de erros, diante desses fatos, existe uma grande preocupao com a comunicao adequada desses sistemas com os usurios. Apesar de vrios autores realizarem recomendaes para que os projetos de interface para computadores atendam aos respectivos perfis de usurios. Esta adequao no real em muitos casos. A definio de usabilidade segundo ISO 9126 (1991): Um conjunto de atributos de software relacionado ao esforo necessrio para seu uso e para o julgamento individual de tal uso por determinado conjunto de usurios[8]. Porm em 1998 ela foi redefinida e foi includa a necessidade do usurio. Essa norma definiu as caractersticas de qualidade de software, como funcionalidade, confiabilidade, eficincia, possibilidade de manuteno e portabilidade. O termo usabilidade pode ser entendido como a maior satisfao do usurio em relao a IHC. Desse modo, observa-se o envolvimento da interao entre o ser humano e os sistemas tecnolgicos atravs de uma interface, percebendo, que quanto mais intuitiva for essa interface aos seus usurios, maior ser a produtividade destes em suas tarefas do dia-a-dia, e quanto menos adequada for a interface, menor ser a produtividade, maior ser o tempo gasto na realizao das tarefas, e pior ser a impresso resultante. A usabilidade parte fundamental de um projeto de mdia interativa, e o bom uso da disciplina pode aumentar o retorno do projeto, seja em audincia, receita ou qual for a mtrica de sucesso pr-definida. O termo usabilidade pode ser entendido como a maior satisfao do usurio em relao a IHC. Com norma ISO 9126 o termo usabilidade ultrapassou os limites do ambiente acadmico das reas mencionadas, para fazer parte do vocabulrio de outras reas de conhecimento, como Tecnologia da Informao e Interao Homem-Computador. Tambm foi em 1991 que a Usability Professionals Association foi constituda como uma comunidade

17

respeitvel de profissionais, pesquisadores e empresas, ativos na pesquisa e divulgao de estudos, pesquisas e testes na rea de usabilidade. Nilsen (1993)... as interfaces no sejam um empecilho quando os usurios precisam realizar os seus trabalhos, ela um quadro mais amplo que aceitabilidade do sistema pelo usurio.

3.4. Controle de Veculo Robtico 3.4.1. Locomoo


Alguns dos robs mveis usam rodas como meio de locomoo, se movendo atravs do contado das rodas com a superfcie, a maior dificuldade deste meio de locomoo ocorre quando as irregularidades do terreno so maiores que o raio das rodas, mesmo assim, esta continua sendo a soluo mais apropriada. O veculo utilizado no projeto possui 4 rodas de borracha, duas dianteiras e duas traseiras um pequeno sistema de suspenso, isso garante boa estabilidade, no sendo necessrio um dispositivo para dar equilbrio. Para obter estabilidade em robs mveis com rodas, 3 so suficientes, quando menos necessrio um dispositivo para fazer o equilbrio. O centro de gravidade est dentro de um tringulo formado pelos pontos de contato no cho (3 rodas). A cima de 3 rodas a estabilidade melhora, mas torna-se necessrio uma suspenso flexvel. Para selecionar a roda devesse levar em considerao o tipo de veculo e o ambiente onde ira se locomover. considerada uma roda ideal quando no h deslizamento na direo ortogonal da rolagem (sem escorregamento), no pode ocorrer deslizamento de translao entre a roda e o cho (rolagem pura) [3].

3.5. Descrio dos Componentes 3.5.1. Descrio do Veculo


O veculo feito de plstico com rodas de borracha, possui uma plataforma com 4 rodas, sendo duas traseiras que esto conectadas a um motor de corrente continua, esse motor tem uma tenso de 3.6V, diminuindo essa tenso a velocidade mxima que o veculo pode atingir diminui. As duas dianteiras esto ligadas a um mecanismo de quatro barras (barra de direo) possibilitando mobilidade para esquerda e direita como mostra as figuras 3 e 4.
18

O veculo tambm contm uma placa receptora que recebe o sinal de rdio freqncia de 27Mhz, dependendo dos sinais que receber um tipo de comando a executar, como, por exemplo, virar as rodas dianteiras, girar as rodas de traseiras para trs e para frente. Se a placa receber dois tipos de sinais ela ira executar os dois juntos, por exemplo, girar as rodas traseiras para frente com as rodas dianteiras viradas para a esquerda, fazendo assim uma curva para esquerda.

Figura 3 - Diagrama do Veculo

Figura 4 - Foto do Veculo

3.5.2. Descrio do Controle do Veculo


O controle necessita de uma bateria de 9v para transmitir os sinais de rdio freqncia de 27MHz, que controlam o motor e barra de direo do veculo. O controle possui sistema digital, recebendo sinal binrio, tem funcionamento diferenciado de outros como os controles que possuem sistemas de potencimetro e analgico, possui tambm uma antena com alcance de mais ou menos 10 metros como mostra as figuras 5 e 6.

Figura 5 - Diagrama da Placa do Controle


19

Figura 6 - Foto da Placa do Controle

3.5.3. Porta Paralela


A porta paralela foi utilizada no projeto para fazer a comunicao do computador com a Placa de Comunicao descrita no capitulo 3.5.4, por ser uma interface de comunicao entre o computador e um perifrico e ter um funcionamento mais simples usando conector DB25. Quando a IBM criou seu primeiro PC (Personal Computer) ou Computador Pessoal, a idia era conectar a essa porta uma impressora, mas atualmente, so vrios os perifricos que se utilizam desta porta para enviar e receber dados para o computador (exemplos: Scanners, Cmeras de vdeo, unidade de disco removvel e outros). A porta paralela (conector DB25 fmea) fica na parte de trs do gabinete do computador, e atravs deste, que o cabo paralelo se conecta ao computador para poder enviar e receber dados como mostra na figura 7. A mesma possui trs tipos de transmisso EPP, SPP e ECP. A porta avanada EPP (Enhanced Parallel Port) usada no projeto porque tem transmisso bidirecional que chega a atingir uma taxa de transferncia de 2 MB/s. Para atingir essa velocidade, ser necessrio um cabo especial, comunica-se com a CPU utilizando um BUS de dados de 32 bits. Para a transmisso de dados entre perifricos so usados 8 bits por vez. A porta paralela SPP (Standard Parallel Port) tem transmisso unidirecional que pode chegar a uma taxa de transmisso de dados a 150KB/s. Comunica-se com a CPU utilizando um BUS de dados de 8 bits. Para a transmisso de dados entre perifricos so usados 4 bits por vez. A porta avanada ECP (Enhanced Capabilities Port) tambm tem transmisso bidirecional e tem as mesmas caractersticas que a EPP, porm, utiliza DMA (acesso direto memria), sem a necessidade do uso do processador para a transferncia de dados. Utiliza tambm um buffer FIFO de 16 bytes [6].

Figura 7 - Diagrama da Porta Paralela

20

A figura 8 descreve detalhadamente cada pino da porta paralela.

Figura 8 - Descrio de cada pino da Porta Paralela

A porta paralela padro do computador a LPT1, e seu endereo 378h (para enviar um byte de dados pela Porta), 378+1h (para receber um valor atravs da Porta) e, 378+2h (para enviar dados).

Nome da Porta
LPT1

Endereo de memria
0000:0408

Endereo da Porta
378 hexadecimal 888 decimal

Descrio
Endereo base

Tabela 1 - Endereo da Porta Paralela

3.5.4. Placa Comunicao


A placa de comunicao tem o papel de receber os sinais, proteger a porta paralela no deixando a corrente voltar e filtrar os sinais recebidos repassando os mesmo para placa do controle do veculo. No desenvolvimento da placa de comunicao foi necessrio o uso de alguns componentes, como mostram as figuras 9 e 10. Foram utilizados 4 pinos da porta paralela 9, 8, 7, 6, da maior grandeza para a menor, a escolha poderia ter sido outra, porm atravs da pesquisa percebeu - se que tal seqncia seria melhor. Cada pino vai para uma trilha que contm um diodo, um resistor e um transistor, os pinos 18 e 19 so usados para aterramento, conforme mostra a figura 9 do diagrama da placa.

21

Figura 9 - Diagrama da Placa

Figura 10 - Foto da Placa

3.6. Desenvolvimento do Software


O software desenvolvido em linguagem de alto nvel conhecida como Object Pascal em um ambiente de programao chamado Delphi da empresa Borland, primeiramente foi desenvolvido um software para teste da placa de comunicao, onde esta sendo utilizado um componente chamado de Inpout32 que necessita do arquivo inpout32.dll para funcionar. Para utilizar este componente necessrio utilizar uma procedure que o uso da passagem de parmetros em uma sub-rotina que tem por finalidade servir como um ponto de comunicao bidirecional entre uma sub-rotina e o programa principal, ou com outra rotina hierarquicamente de nvel mais alto. Desta forma, possvel passar valores de uma sub-rotina outra sub-rotina e vice-versa, por meio de uso de parmetro. Existem dois tipos de passagem de parmetro utilizados: por valor e por referncia (MANZANO, 2003). Quando utilizamos a procedure outportb temos que passar dois valores, o primeiro o endereo da porta paralela como visto anteriormente $378 e o segundo um valor decimal que ser convertido em binrio. O software teste tem o mesmo principio do programa que desenvolvido para a concluso do curso, o mesmo contm 5 botes, cada qual tem uma funo (direita, esquerda, frente, r e centro). A figura 11 mostra a tela principal do programa e o diagrama de cada boto.

22

Figura 11 - Diagrama Software Teste A diferena entre um boto e outro o valor do nmero decimal passado na procedure. Procedure como se fosse uma funo, a diferena que na funo retorna um resultado enquanto na procedure no retorna. Cada nmero decimal tem uma representao na forma binria e esses nmeros so endereos de pinos da porta paralela, a procedure trabalha com nmeros decimais convertendo para binrio antes de se comunicar com a porta paralela. A Tabela a seguir, mostra os comandos e nmeros decimais convertido em binrios.

Tabela de Comando Comando R Frente Esquerda Direita Centro Nmero Decimal 128 64 32 16 0 Tabela 2 - Comandos dos Botes
23

Nmero Binrio 10000000 01000000 00100000 00010000 00000000

Como dito anteriormente, o primeiro valor da funo o endereo da porta e o segundo o valor decimal que indica qual pino ser ativado. Nas propriedades Onclick dos botes, tem o seguinte cdigo: Boto Frente. Procedure TTeste.FrenteClick(Sender: Tobject); Begin Outportb($378,$ 64); End; Boto R Procedure TTeste.ReClick(Sender: Tobject); Begin Outportb($378,$ 128); End; Boto Direita Procedure TTeste.DireitaClick(Sender: Tobject); Begin Outportb($378,$16); End; Boto Esquerda Procedure TTeste.EsqurdaClick(Sender: Tobject); Begin Outportb($378,$32); End; Boto Centro Procedure TTeste.CentroClick(Sender: Tobject); Begin Outportb($378,$0); End;

24

3.7. Software Controle de Veculo


No desenvolvimento do software foi usado na tela principal um menu que tem grande interao e aceitabilidade pelo usurio facilitando o acesso. O software desenvolvido e denominado Controle de Veculo, o software possui no menu as opes manual e automtica para controle do veculo. Na opo automtica tem duas maneiras de controlar, a primeira por comando e a segunda por modo grfico. Em todos Modos de Controle do veculo utilizado o componente de Inpout32 que necessita do arquivo inpout32.dll, tem a mesma funcionalidade que no software Teste, como descrito acima. O Cdigo fonte a seguir mostra como foi declarado o componente Inpout32 para tela principal, desativao do sinal padro que windows XP envia para porta paralela e a criao do menu. unit UnitPrincipalInicio; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, ExtCtrls,MMSystem, jpeg; Type // Criao de Menu TFormPrincipal = class(TForm) MainMenu1: TMainMenu; Modos1: TMenuItem; Manual1: TMenuItem; Automatico1: TMenuItem; Sair2: TMenuItem; Sair1: TMenuItem; Comandos1: TMenuItem; Grafico1: TMenuItem; Image1: TImage; procedure Manual1Click(Sender: TObject); procedure Sair2Click(Sender: TObject); procedure Sair1Click(Sender: TObject);

25

procedure FormShow(Sender: TObject); procedure Comandos1Click(Sender: TObject); procedure Grafico1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var FormPrincipal: TFormPrincipal; implementation uses Principal, UnitComandos, UnitGraficos; {$R *.dfm} // Declarao do componente Inpout32 procedure outportb(EndPorta: Integer; Valor:BYTE); stdcall; external 'inpout32.DLL' name 'Out32'; function inportb(EndPorta: Integer): BYTE stdcall; external 'inpout32.DLL' name 'Inp32'; procedure TFormPrincipal.Manual1Click(Sender: TObject); begin FormModoManual := TFormModoManual.Create(self); FormModoManual.ShowModal; end; procedure TFormPrincipal.Sair2Click(Sender: TObject); begin Close; end; procedure TFormPrincipal.Sair1Click(Sender: TObject); begin Close;
26

end; // Desativa o sinal enviado para Porta Paralela procedure TFormPrincipal.FormShow(Sender: TObject); begin outportb($378,0); end; end. A figura 12 o diagrama da tela principal, a tela que tem a funo de desativar o sinal padro que o windows XP enviar para a porta paralela e contm um menu que tem a funo de facilitar a utilizao do software.

INICIO

Automtico

MENU

Manual

Comand o

Grfico

FIM
Figura 12 - Diagrama Tela Principal O Menu possui um subMenu e dois botes, o primeiro boto denominado Manual e o segundo Sair. O Boto Manual tem a funo de abrir a tela Modo Manual descrito no capitulo 3.7.1, o boto Sair tem a funo de fechar o programa. O subMenu possui tambm dois botes o primeiro denominado Comandos e o segundo Grfico, o primeiro te a funo de abrir a tela Modo Comando e o outro de abrir a tela Modo Grfico. A figura 13 mostra a tela principal com o menu circulado em vermelho.
27

Figura 13 - Tela Principal A figura 14 mostra uma ampliao do menu da tela principal.

Figura 14 - Ampliao do Menu

3.7.1. Modo Manual


Modo manual o usurio controla o veculo atravs das setas do teclado, possibilitando maior controle, preciso e o modo mais simples de utilizar. Nesse modo o veculo controlado em tempo real, isso significa que, conforme recebe o comando transmitido e executado. Dois componentes chamados (TTimer ou Temporizador). O temporizador um componente no visual que provoca um evento one28

time ou repetido aps um intervalo medido. Voc escreve o cdigo que voc quer ocorrer no tempo especificado dentro do evento de OnTimer do componente do temporizador. Tarefas para especificar a quantidade de tempo decorrido antes que o evento do temporizador esteja provocado, usar a propriedade do intervalo. O primeiro temporizador tem a funo de monitorar as teclas de direo (Teclas com setas) como mostra a figura 18, quando a tecla acionado enviado um nmero decimal correspondente ao endereo do pino, este nmero ser convertido em binrio e enviado para a porta paralela, de acordo com o nmero, um pino de sada de 6 a 9 enviar um sinal para placa de comunicao, a qual receber o sinal, filtrar e repassar ao controle do veiculo que converter o mesmo em uma freqncia de rdio e mandar para o veculo, que ira receber o sinal e executar. O segundo temporizador tem a funo de controlar a velocidade do veculo, atravs de tempo de execuo, criando em pequeno intervalo no nvio do sinal. O tamanho do intervalo que determina a velocidade quanto maior o intervalo menor a velocidade e com quanto o menor o intervalo maior a velocidade do veculo (Anexo I). A seguir cdigo fonte mostrando como feita a monitorao do teclado e declarao do componente Inpout32. // Declarao do Componente Inpout32 procedure outportb(EndPorta: Integer; Valor:BYTE); stdcall; external 'inpout32.DLL' name 'Out32'; function inportb(EndPorta: Integer): BYTE stdcall; external 'inpout32.DLL' name 'Inp32';

// Monitoramento das setas Teclado procedure TFormModoManual.Timer1Timer(Sender: TObject); begin If ((tbKeyIsDown(VK_LEFT)) And (tbKeyIsDown(VK_RIGHT))) Or ((tbKeyIsDown(VK_RIGHT)) And (tbKeyIsDown(VK_LEFT))) Then Para; If ((tbKeyIsDown(VK_UP)) And (tbKeyIsDown(VK_DOWN))) Or ((tbKeyIsDown(VK_DOWN)) And (tbKeyIsDown(VK_UP))) Then Para; If (tbKeyIsDown(VK_UP)) Then
29

Begin Image1.Top := Image1.Top -5; Frente; End; If (tbKeyIsDown(VK_DOWN)) Then Begin Image1.Top := Image1.Top +5; Re; End; If (tbKeyIsDown(VK_LEFT)) Then Begin Image1.Left := Image1.Left -5; Esquerda; End; If (tbKeyIsDown(VK_RIGHT)) Then Begin Image1.Left := Image1.Left +5; Direita; End; If (tbKeyIsDown(VK_LEFT)) And (tbKeyIsDown(VK_UP)) Then Begin Image1.Left := Image1.Left -2; Image1.Top := Image1.Top -2; FrenteEsquerda; End; If (tbKeyIsDown(VK_LEFT)) And (tbKeyIsDown(VK_DOWN)) Then Begin Image1.Left := Image1.Left -2; Image1.Top := Image1.Top +2; ReEsquerda; End; If (tbKeyIsDown(VK_RIGHT)) And (tbKeyIsDown(VK_UP)) Then Begin
30

Image1.Left := Image1.Left +2; Image1.Top := Image1.Top -2; FrenteDireita; End; If (tbKeyIsDown(VK_RIGHT)) And (tbKeyIsDown(VK_DOWN)) Then Begin Image1.Left := Image1.Left +2; Image1.Top := Image1.Top +2; ReDireita; End; If (Not tbKeyIsDown(VK_LEFT)) And (Not tbKeyIsDown(VK_RIGHT)) And (Not tbKeyIsDown(VK_DOWN)) And (Not tbKeyIsDown(VK_UP)) Then Begin Para; End; end;

A figura 15 mostra o diagrama de funcionamento do Modo Manual.

INICIO

Monitora Teclado

Acionar
Sim

No

Para

Executa
Figura 15 - Diagrama Modo Manual
31

A figura 16 a tela do Modo Manual, o veculo o controle de velocidade esto circulado em vermelho. O veculo apenas uma figura ilustrativa do veculo original, quando o usurio ativar a seta do teclado afigura ilustrativa ir se mover junto com o veculo original.

Figura 16 - Foto Modo Manual

3.7.2. Modo Comandos


Modo Comandos o usurio cria rotas atravs de comandos e os executas fazendo com que o veculo percorra essas rotas. Esse modo no controlado em tempo real, o usurio tem trs maneiras de determinar as rotas. A primeira atravs de trs componentes denominados de RadiosGroup que tem comandos especficos. Um dos RadioGroup tem as opes direita, esquerda, frente e r, quando escolhido a opes esquerda ou direita aparecera um outro RadioGrup com as opes de ngulo de 30 e 60, porm a escolha no primeiro RadioGroup seja frente ou r aparecera um terceiro RadioGroup com as opes 10, 50 e 100 cm. O usurio tambm tem a opo de controlar a velocidade do veculo clicando no boto mais ou menos, a velocidade funciona da mesma maneira que no modo manual, utilizando o componente temporizador (TTimer).

32

A segunda maneira de determinar as rotas, o usurio ativa o componente CheckBox aparecera um componente chamado Edit, esse componente o usurio digita a rota comeando com os comandos direita, esquerda, frente e r, seguindo de dois nmeros, o primeiro nmero digitado poder ser grau ou distncia, dependendo do comando digitado, se for esquerda ou direita o nmero ter o valor em ngulo e se for frente ou r o valor ser em distncia. O segundo nmero a velocidade do veculo. Depois que o usurio escolheu todas as opes ou digitou os comandos , ele ir clicar no boto adicionar. O boto adicionar tem a funo de ler todos os componentes RadioGroup, a velocidade e o componente Edit. Caso os RadiosGroups no estejam todos selecionados o software vai verificar o componente CheckBox, se tiver selecionado ir verificar se o comando digitado no componente Edit est correto. Supondo que tenha algum RadioGroup em branco ou erro no comando digitado no Edit ser emitido um aviso visual informado o erro ocorrido, caso esteja tudo correto os comandos selecionados no RadioGroup ou digitados no Edit sero adicionados no componente Memo. O processo de adicionar os comandos no componente Memo poder ser repetido quantas vezes o usurio determinar. Quando todos comandos estiverem no componente Memo podero ser salvos ou executados. Quando clicar no boto salvar os comandos que esto no componente Memo sero salvos em um arquivo texto determinado pelo usurio. A Terceira maneira de determinar as rotas usando o boto abrir, abrir um arquivo texto de qualquer lugar do disco rgido ou de perifricos que contenha comandos vlidos, esses comandos so adicionados no componente Memo. Aps todos os comandos estarem no componente Memo, independentes da maneira que foram adicionados o usurio poder clicar no boto executar. Esse boto tem a funo de ler todo componente Memo, identificar os comandos e transmitir para o veculo (Anexo II). Na figura 18 mostra todos os componentes descritos a acima e na figura 17 mostra o diagrama de funcionamento. A seguir parte do cdigo fonte mostrando declarao do componente Inpout32 e identificao de erros nos comandos. // Declarao do componente Inpout32 procedure outportb(EndPorta: Integer; Valor:BYTE); stdcall; external 'inpout32.DLL' name 'Out32'; function inportb(EndPorta: Integer): BYTE stdcall; external 'inpout32.DLL' name 'Inp32'; // Identificao de erros nos comandos Function VerificaComandos(Comandos : String ) : Char; var i, Num : integer;
33

Verifica : String; Begin Try For i := 1 to (Length(Comandos)) Do Begin If Comandos[i] = '-' Then Begin Verifica := copy( Comandos, 0, i - 2 ); If (Verifica = 'DIREITA') or (Verifica = 'ESQUERDA') or (Verifica = 'FRENTE') or (Verifica = 'RE') Then Begin Num := StrToInt(copy( Comandos, i + 2, i - 7 )); If Num <> 0 Then Begin Num := StrToInt( copy( Comandos, i + 7, i - 3 )); If Num <> 0 Then Begin exit; End; End; End; End; End; Except ShowMessage('Erro no Comando'); exit; end; End; A figura 17 mostra basicamente o diagrama de funcionamento do modo comandos, receber os comandos l verificando se contm erro, caso no haja nenhum o usurio tem duas opes gravar em arquivos ou executar.

34

INICIO

Recebe Comando

Grava

L Comando

Executa
Figura 17 - Diagrama Modo Comandos A figura 18 mostra a interface grfico do Modo de Comando.

Figura 18 -Tela Modo Comandos

35

3.7.3. Modo Grfico


Modo Grfico a maneira que o usurio controla o veculo atravs, de figuras que tem funes especificas. Esse modo no controlado em tempo real, o usurio tem apenas uma maneira de controlar o veculo que atravs de um componente chamado de tImagem, esse componente tem o papel de visualizar as figuras. Nessa tela contm seis figuras, clicando sobre a elas aparecer mesma figura em um painel, com essa flexibilidade de clicar nas figuras possvel montar um percurso grfico. A primeira figura uma reta na horizontal de mais ou menos cinqenta centmetros, a segunda uma reta na vertical, tambm com mais ou menos cinqenta centmetros, a terceira e a quinta uma curva saindo da horizontal para a vertical com mais quarenta e cinco graus, a quarta e sexta uma curva saindo da vertical para a horizontal tambm com mais quarenta e cinco graus como mostra a figura 20. A figura 19 mostra o diagrama de funcionamento do modo grfico, receber as figuras l verificando se contm erro, no contendo erros e os executam.

INICIO

Recebe Figuras

L Figuras

Executa
Figura 19 - Diagrama Modo Grfico
36

Figura 20 - Modo Grfico Quando o usurio escolhe uma das imagens e clica no painel o software identifica qual imagem foi escolhida e relaciona com o comando correspondente, por exemplo, se a primeira imagem da esquerda da figura 20 for selecionada o comando correspondente ser para frente, depois que usurio montou todo percurso desejado, clicara no boto executar o qual ir verificar os comandos inseridos atravs das imagens no painel e os executar. A figura 21 mostra o exemplo de um percurso.

37

Figura 21 Exemplo de Percurso O percurso da figura 21 tem incio com uma curva para a esquerda, seguido de uma curva para a direita outra novamente esquerda, segue em frente, faz uma curva para direita, segue em frente, executa a ultima curva a esquerda e segue em linha reta para frente at o final do percurso.

3.8. Funcionamento Geral e Diagrama


Quando o usurio utilizar qualquer modo de controle, sero enviados nmeros decimais correspondentes aos endereos dos pinos, estes nmeros so convertidos em binrios e enviados para a porta paralela, de acordo com os nmeros, um pino de sada de 6 a 9 enviar sinais para placa de comunicao, a qual receber os sinais, filtrar e repassar ao controle do veiculo que converter os mesmos em uma freqncia de rdio e mandar para o veculo, que ira receber os sinais e executar. A figura 22 mostra o funcionamento geral.

38

Figura 22 - Diagrama Geral A figura 23 foto do computador onde executado o software.

Figura 23 - Computador

39

A figura 24 porta paralela onde ligado o cabo.

Figura 24 Porta Paralela A figura 25 e 26 o cabo que conecta o computador com a placa de comunicao.

Figura 25 Cabo

Figura 26 - Conectores

40

A figura 27 caixa onde esta a placa de comunicao e o controle do veiculo.

Figura 27 - Caixa

A figura 28 fotos de todos Componentes.

Figura 28 Foto dos Componentes


41

4. CONCLUSO
Durante o projeto foi implementado um hardware e dois softwares. O hardware que chamamos de Placa de Comunicao tem o papel de receber os sinais, proteger a porta paralela no deixando a corrente voltar e filtrar os sinais recebidos repassando os mesmo para o controle do veculo e os softwares tem a funo receber os comandos do usurio e repassar para a Placa de Comunicao. O primeiro software desenvolvido para teste da placa de comunicao e tem o mesmo principio do segundo programa que o principal, denominado Controle de Veculo desenvolvido para a concluso do curso. O software capaz de controlar um veculo em tempo real, gerar movimentos prprogramados, realizar tarefas em ambientes conhecidos. As maiores dificuldades no desenvolvimento do projeto foi o desenvolvimento do hardware que se comunica com o controle do veculo. Por falta de conhecimento em desenvolvimento de hardware foi necessria muita pesquisa e teste, usando programas que simulam o hardware e um aparelho conhecido como multmetro, muito usado na rea de eltrica e eletrnica. Outra grande dificuldade encontrada foi o controle da velocidade do veculo, por no ter experincia em controlar robs, o maior tempo gasto no desenvolvimento do software foi para controle da velocidade. Com a concluso do projeto obtive bastantes conhecimentos em robtica, princpios bsicos necessrio para o desenvolvido e funcionamentos. A rea de robtica tem amplo campo de atuaes, indo destas reas indstrias at nas reas de medicina, tambm tem grandes evolues, quase todos os dias uma nova tecnologia nesta rea desenvolvida e papel para estudos em quase todo mundo. O objetivo do projeto foi alcanado, que era controlar o veculo atravs de rdio freqncia, utilizado vrios modos de controles, o principal problema foi o controle de velocidade que o veculo pode atingir, quando o veculo controlado na velocidade mxima tem um melhor funcionamento ao contrrio da baixa velocidade. Esse projeto no teve interesse acadmico, pelo contrrio por ter amplo campo de atuao e grandes evolues, suas potencialidades de mercado so considerveis. Cada dia que passa mais o mundo esta se automatizado para desenvolvimento de pesquisa e produzir mais com qualidade e com menor custo, esse projeto pode ser usado em percursos conhecidos e repetidos vrias vezes por dia. A adaptando sensores ou at uma cmera no veculo esse projeto poder ter mais utilidades ou melhorar usa preciso.

42

5. REFERNCIAS BIBLIOGRFICAS
[1] A MINHA RDIO. O que a Rdio. [INTERNET: http://www.aminharadio.com/radio/radio_q, recuperado em: 14/06/06] [2] BIBLIOTECA DIGITAL. UNIMATE. [INTERNET: http://www.bibliotecadigital.ufrgs.br/da.php?nrb=000441364&loc=2005&l=2a93731b0 ac6bf98, recuperado em: 05/12/06]. [3] CENTRO UNIVERSITRIO DA FEI. Robtica. [INTERNET: http://www.fei.edu.br/eletrica/rbianchi/robotica/ROBOTICA-10.pdf, recuperado em: 09/05/06] [4] ESCOLAS TRENDNET. Origem e leis da Robtica. [INTERNET: http://www.escolas.trendnet.com.br/stamarcerj/e24h/robotica/origemleis/index.htm, recuperado em: 10/05/06] GOMIDE, Fernando Antnio Campos; GUDWIN, Ricardo Ribeiro. Modelagem, Controle, Sistemas e Lgica Fuzzy. Artigo publicado na SBA Controle & Automao, Vol. 4 n 3, Set-Out 1994. MANZANO, Jos Augusto N. G.; MENDES, Sandro Santa Vicca. Estudo Dirigido Delphi 6. 2.ed.. So Paulo: rica, 2003. PIERI, Edson Roberto de. Curso de Robtica Mvel. UFSC. 2002 [5] Revista Globo Cincia, Dezembro/97, pg. 26 e 27. [6] ROGERCOM, Porta Paralela. [Internet: http://www.rogercom.com/pparalela/introducao.htm#conector, recuperado em: 15/06/06]

43

[7] UNIVERSIDADE DE SO PAULO. Interface Homem Computador. [INTERNET: http://www.pcs.usp.br/~lucia/teses/FernandoZancheta.pdf, recuperado em: 17/11/06] [8] UNIVERSIDADE FEDERAL DO RIO DE JANEIRO. Definio de Usabilidade. [INTERNET: http://www.eco.ufrj.br/semiosfera/conteudo_org_02Bertolo.htm, recuperado em 19/11/06].

44

Anexo I
Cdigo Fonte Modo Manual unit Principal; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, MMSystem, Menus, Buttons, ComCtrls, Spin, jpeg; type TFormModoManual = class(TForm) Timer1: TTimer; Panel1: TPanel; Image1: TImage; GroupBox1: TGroupBox; SBSair: TBitBtn; ProgressBar1: TProgressBar; Button2: TButton; Button3: TButton; Timer2: TTimer; procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure Timer1Timer(Sender: TObject); procedure SBSairClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Timer2Timer(Sender: TObject); private { Private declarations } Mensagem : String; public { Public declarations } Velocidade : Integer;
45

end; var FormModoManual: TFormModoManual; implementation {$R *.dfm} // Declarao do Componente Inpout32 procedure outportb(EndPorta: Integer; Valor:BYTE); stdcall; external 'inpout32.DLL' name 'Out32'; function inportb(EndPorta: Integer): BYTE stdcall; external 'inpout32.DLL' name 'Inp32'; procedure ZeraVelocidade(); begin FormModoManual.Velocidade := 0; end; procedure Para(); begin outportb($378,0); end; procedure Frente(); begin outportb($378,64); Sleep(FormModoManual.Velocidade); end; procedure Re(); begin outportb($378,128); Sleep(FormModoManual.Velocidade); end; procedure Direita(); begin outportb($378,16); end; procedure Esquerda(); begin outportb($378,32); end; procedure FrenteDireita(); begin outportb($378,80); end; procedure FrenteEsquerda(); begin outportb($378,96); end; procedure ReDireita(); begin outportb($378,144); end; procedure ReEsquerda(); begin outportb($378,160); end; function tbKeyIsDown(const Key: integer): boolean;
46

begin Result := GetKeyState(Key) and 128 > 0; end; procedure TFormModoManual.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); Begin IF Key = VK_F2 Then Begin SndPlaySound('C:\Sistemas\Andre\buzina.wav',SND_ASYNC); End; IF Key = VK_LEFT Then Begin Image1.Left := Image1.Left -5; Esquerda; End; IF Key=VK_RIGHT Then Begin Image1.Left := Image1.Left +5; Direita; End; IF Key=VK_UP Then Begin Image1.Top := Image1.Top -5; Frente; End; IF Key=VK_DOWN Then Begin Image1.Top := Image1.Top +5; Re; End; IF (Key = VK_LEFT) Then Begin If (Key = VK_RIGHT) Then Para; End; End;
47

// Monitoramento das setas Teclado procedure TFormModoManual.Timer1Timer(Sender: TObject); begin If ((tbKeyIsDown(VK_LEFT)) And (tbKeyIsDown(VK_RIGHT))) Or ((tbKeyIsDown(VK_RIGHT)) And (tbKeyIsDown(VK_LEFT))) Then Para; If ((tbKeyIsDown(VK_UP)) And (tbKeyIsDown(VK_DOWN))) Or ((tbKeyIsDown(VK_DOWN)) And (tbKeyIsDown(VK_UP))) Then Para; If (tbKeyIsDown(VK_UP)) Then Begin Image1.Top := Image1.Top -5; Frente; End; If (tbKeyIsDown(VK_DOWN)) Then Begin Image1.Top := Image1.Top +5; Re; End; If (tbKeyIsDown(VK_LEFT)) Then Begin Image1.Left := Image1.Left -5; Esquerda; End; If (tbKeyIsDown(VK_RIGHT)) Then Begin Image1.Left := Image1.Left +5; Direita; End;

48

If (tbKeyIsDown(VK_LEFT)) And (tbKeyIsDown(VK_UP)) Then Begin Image1.Left := Image1.Left -2; Image1.Top := Image1.Top -2; FrenteEsquerda; End; If (tbKeyIsDown(VK_LEFT)) And (tbKeyIsDown(VK_DOWN)) Then Begin Image1.Left := Image1.Left -2; Image1.Top := Image1.Top +2; ReEsquerda; End; If (tbKeyIsDown(VK_RIGHT)) And (tbKeyIsDown(VK_UP)) Then Begin Image1.Left := Image1.Left +2; Image1.Top := Image1.Top -2; FrenteDireita; End; If (tbKeyIsDown(VK_RIGHT)) And (tbKeyIsDown(VK_DOWN)) Then Begin Image1.Left := Image1.Left +2; Image1.Top := Image1.Top +2; ReDireita; End; If (Not tbKeyIsDown(VK_LEFT)) And (Not tbKeyIsDown(VK_RIGHT)) And (Not tbKeyIsDown(VK_DOWN)) And (Not tbKeyIsDown(VK_UP)) Then Begin Para; End; end; procedure TFormModoManual.SBSairClick(Sender: TObject); begin Close; end;

49

procedure TFormModoManual.FormShow(Sender: TObject); begin ZeraVelocidade; Timer1.Enabled := true; Para(); end; procedure TFormModoManual.FormClose(Sender: TObject; var Action: TCloseAction); begin Timer1.Enabled := False; end; procedure TFormModoManual.Button2Click(Sender: TObject); begin ProgressBar1.Position := ProgressBar1.Position + 10; Timer1.Interval := Timer1.Interval - 20; If ProgressBar1.Position = 100 Then Begin Timer2.Enabled := False; Timer1.Interval := 1; End Else Begin Timer2.Enabled := True; End; end; procedure TFormModoManual.Button3Click(Sender: TObject); begin ProgressBar1.Position := ProgressBar1.Position - 10; Timer1.Interval := Timer1.Interval + 20; If ProgressBar1.Position = 0 Then Begin Timer2.Enabled := False; Timer1.Enabled := False; End
50

Else Begin Timer2.Enabled := True; Timer1.Enabled := True; End; end; procedure TFormModoManual.Timer2Timer(Sender: TObject); begin outportb($378,0); sleep(1); end; end.

51

Anexo II
Cdigo Fonte Modo Comandos. implementation {$R *.dfm} // Declarao do componente Inpout32 procedure outportb(EndPorta: Integer; Valor:BYTE); stdcall; external 'inpout32.DLL' name 'Out32'; function inportb(EndPorta: Integer): BYTE stdcall; external 'inpout32.DLL' name 'Inp32'; // Identificao de erros nos comandos Function VerificaComandos(Comandos : String ) : Char; var i, Num : integer; Verifica : String; Begin Try For i := 1 to (Length(Comandos)) Do Begin If Comandos[i] = '-' Then Begin Verifica := copy( Comandos, 0, i - 2 ); If (Verifica = 'DIREITA') or (Verifica = 'ESQUERDA') or (Verifica = 'FRENTE') or (Verifica = 'RE') Then Begin Num := StrToInt(copy( Comandos, i + 2, i - 7 )); If Num <> 0 Then Begin Num := StrToInt( copy( Comandos, i + 7, i - 3 )); If Num <> 0 Then Begin exit; End; End;
52

End; End; End; Except ShowMessage('Erro no Comando'); exit; end; End; procedure TFormComandos.FormShow(Sender: TObject); begin Memo1.Lines.Clear; ProgressBar1.Max := 100; ProgressBar1.Position := 100; end; procedure TFormComandos.RadioGroupDirecaoClick(Sender: TObject); begin If (RadioGroupDirecao.ItemIndex = 2) Or (RadioGroupDirecao.ItemIndex = 3) Then Begin RadioGroupVirar.ItemIndex := -1; RadioGroupVirar.Enabled := False; RadioGroupVirar.Visible := False; RadioGroupDistancia.Visible := True; RadioGroupDistancia.Enabled := True; End Else Begin RadioGroupVirar.Visible := True; RadioGroupVirar.Enabled := True; RadioGroupDistancia.Visible := False; RadioGroupDistancia.ItemIndex := -1; End; end; procedure TFormComandos.RadioGroupVirarClick(Sender: TObject); begin
53

If RadioGroupVirar.ItemIndex = 0 Then Begin RadioGroupDistancia.ItemIndex := -1; RadioGroupDistancia.Enabled := False; End; end; procedure TFormComandos.Button2Click(Sender: TObject); begin ProgressBar1.Position := ProgressBar1.Position + 10; end; procedure TFormComandos.Button3Click(Sender: TObject); begin ProgressBar1.Position := ProgressBar1.Position - 10; end; procedure TFormComandos.CheckBox1Click(Sender: TObject); begin If CheckBox1.Checked = True Then GroupBox2.Visible := True Else GroupBox2.Visible := False; end; procedure TFormComandos.ButtonAbrirArquivoClick(Sender: TObject); Var NomeArquivo, Texto, Campo : String; TXT : TextFile; I : Integer; begin OpenDialog1.Execute; Memo1.Lines.Clear; AssignFile(TXT,OpenDialog1.FileName); Reset(TXT); While Not Eof (TXT) Do
54

Begin Readln(TXT,Texto); For I := 1 to (Length(Texto)) Do Begin Campo := Campo + Trim(Texto[i]); End; Memo1.Lines.Add(Trim(Campo)); Campo := ''; End; CloseFile(TXT); end; procedure TFormComandos.Button5Click(Sender: TObject); Var TextoFinal :String; F : TextFile; I : Integer; begin If FileExists('c:\arq.txt') Then Begin DeleteFile('c:\arq.txt'); End; Assignfile(F, 'c:\arq.txt'); Rewrite(F); For I := 0 To Memo1.Lines.Count -1 Do Begin TextoFinal := Memo1.Lines[I]; Writeln(F,TextoFinal); End; CloseFile(F); MessageBox(Handle,'Processo de Exportao Terminado.','Trmino.',mb_Ok or mb_IconInformation or mb_DefButton1); end; procedure TFormComandos.Button4Click(Sender: TObject); Var
55

TextoFinal :String; F : TextFile; I : Integer; begin Try SaveDialog1.Execute; If FileExists(SaveDialog1.Filename) Then Begin DeleteFile(SaveDialog1.Filename); End; Assignfile(F, SaveDialog1.Filename); Rewrite(F); For I := 0 To Memo1.Lines.Count -1 Do Begin TextoFinal := Memo1.Lines[I]; Writeln(F,TextoFinal); End; CloseFile(F); MessageBox(Handle,'Processo de Exportao Terminado.','Trmino.',mb_Ok or mb_IconInformation or mb_DefButton1); Except exit; End; end; procedure TFormComandos.Timer1Timer(Sender: TObject); begin outportb($378,0); sleep(1); end; procedure TFormComandos.Timer2Timer(Sender: TObject); begin outportb($378,64); // sleep(17); end;
56

procedure TFormComandos.Timer3Timer(Sender: TObject); begin outportb($378,0); // sleep(1); end; procedure TFormComandos.Button6Click(Sender: TObject); begin Timer1.Enabled := True; Timer2.Enabled := True; end; procedure TFormComandos.BitBtn1Click(Sender: TObject); begin Timer1.Enabled := True; Timer2.Enabled := True; end; procedure TFormComandos.BitBtnGravarClick(Sender: TObject); var Comandos : String; begin Comandos := ''; If RadioGroupDirecao.ItemIndex <> -1 Then Begin If RadioGroupDirecao.ItemIndex = 0 Then Comando := 'DIREITA'; If RadioGroupDirecao.ItemIndex = 1 Then Comando := 'ESQUERDA'; If RadioGroupVirar.ItemIndex <> -1 Then Begin If RadioGroupVirar.ItemIndex = 0 Then Comando := Comando + ' - ' + '30'; If RadioGroupVirar.ItemIndex = 1 Then Comando := Comando + ' - ' + '60'; End;
57

If RadioGroupDirecao.ItemIndex = 2 Then Comando := 'FRENTE'; If RadioGroupDirecao.ItemIndex = 3 Then Comando := 'RE'; If RadioGroupDistancia.ItemIndex <> -1 Then Begin If RadioGroupDistancia.ItemIndex = 0 Then Comando := Comando + ' - ' + '10'; If RadioGroupDistancia.ItemIndex = 1 Then Comando := Comando + ' - ' + '50'; If RadioGroupDistancia.ItemIndex = 2 Then Comando := Comando + ' - ' + '100'; End; Comando := Comando + ' ' + IntToStr(ProgressBar1.Position); End Else Begin If CheckBox1.Checked = True Then Begin Comandos := EditComandosDigitados.Text; VerificaComandos(Comandos); End; End; Memo1.Text := Comandos; end;

58