controle de protótipo de veículo por display touch screen

87
HUGO NAOKI MURAKAMI CONTROLE DE PROTÓTIPO DE VEÍCULO POR DISPLAY TOUCH SCREEN LONDRINA–PR 2014

Upload: doanminh

Post on 10-Jan-2017

229 views

Category:

Documents


6 download

TRANSCRIPT

Page 1: controle de protótipo de veículo por display touch screen

HUGO NAOKI MURAKAMI

CONTROLE DE PROTÓTIPO DE VEÍCULO PORDISPLAY TOUCH SCREEN

LONDRINA–PR

2014

Page 2: controle de protótipo de veículo por display touch screen

HUGO NAOKI MURAKAMI

CONTROLE DE PROTÓTIPO DE VEÍCULO PORDISPLAY TOUCH SCREEN

Trabalho de Conclusão de Curso apresentadoao curso de Bacharelado em Engenharia Elé-trica da Universidade Estadual de Londrinapara obtenção do título de Bacharel em En-genharia Elétrica.

Orientador: Prof. Dr. Leonimer Flávio deMeloCoorientador: Prof. Msc. Décio Luiz GazzoniFilho

LONDRINA–PR

2014

Page 3: controle de protótipo de veículo por display touch screen

Hugo Naoki MurakamiControle de Protótipo de Veículo Por Display Touch Screen/ Hugo Naoki

Murakami. – Londrina–PR, 2014-86 p. : 30 cm.

Orientador: Prof. Dr. Leonimer Flávio de Melo

Coorientador: Prof. Msc. Décio Luiz Gazzoni Filho

– Universidade Estadual de Londrina, 2014.

1. Display Touch Screen. 2. Microcontrolador ARM. 3. Bluetooh. 4. SistemaEmbarcado I. Orientador: Leonimer Flávio de Melo. II. Coorientador: Décio LuizGazzoni Filho. III. Universidade Estadual de Londrina. IV. Curso de EngenhariaElétrica.

Page 4: controle de protótipo de veículo por display touch screen

HUGO NAOKI MURAKAMI

CONTROLE DE PROTÓTIPO DE VEÍCULO PORDISPLAY TOUCH SCREEN

Trabalho de Conclusão de Curso apresentadoao curso de Bacharelado em Engenharia Elé-trica da Universidade Estadual de Londrinapara obtenção do título de Bacharel em En-genharia Elétrica.

BANCA EXAMINADORA

Prof. Dr. Leonimer Flávio de MeloUniversidade Estadual de Londrina

Orientador

Prof. Msc. Décio Luiz Gazzoni FilhoUniversidade Estaduao de Londrina

Coorientador

Prof. Msc. Francisco Granziera JúniorUniversidade Estadual de Londrina

Londrina–PR, 7 de Novembro de 2014

LONDRINA–PR2014

Page 5: controle de protótipo de veículo por display touch screen

Este trabalho é dedicado aos meus pais, irmãos, a toda minha família e amigos quesempre acreditaram, apoiaram e investiram para que eu chegasse até esta etapa de

minha vida.

Page 6: controle de protótipo de veículo por display touch screen

AGRADECIMENTOS

Agradeço, primeiramente, à minha família, pela força, confiança e paciência quetiveram comigo durante todos estes anos.

Aos meus amigos e colegas, com os quais passamos juntos pelas várias barreirasencontradas no caminho.

Ao meu orientador, Prof. Dr. Leonimer Flávio de Melo, pela oportunidade dada amim em fazer parte deste projeto.

Ao meu coorientador Prof. Me. Décio Luiz Gazzoni Filho pela disponibilidade eajudas recebidas durante o processo deste trabalho.

Aos meus amigos do grupo Ishindaiko, pela companhia, diversão e amizade.

E a todos aqueles que direta ou indiretamente fizeram parte da minha formação.Muito obrigado.

Page 7: controle de protótipo de veículo por display touch screen

“Bear in mind that the wonderful things you learn in your schools are the work of manygenerations. All this is put in your hands as your inheritance in order that you may

receive it, honor it, add to it, and one day faithfully hand it on to your children.”(Albert Einstein)

Page 8: controle de protótipo de veículo por display touch screen

MURAKAMI, H. N.. Controle de Protótipo de Veículo Por DisplayTouch Screen. 86 p. Trabalho de Conclusão de Curso (Graduação). Bacha-relado em Engenharia Elétrica – Universidade Estadual de Londrina, 2014.

RESUMO

Neste trabalho foram abordados os conceitos de sistemas de controle embarcado em robó-tica móvel. Fez-se o uso de microcontroladores PIC 18F452 e ARM Cortex-M3 STM32F103-VE, sendo o primeiro utilizado para o funcionamento do protótipo e o segundo para aimplementação do controle do veículo através de um display de toque, pertencente aokit de desenvolvimento HY-STM32_100P. Para a conexão entre o controle e o protótipo,foram utilizados dois módulos Bluetooth HC-05, sendo um deles utilizado no kit paratransmitir os comandos do controle e outro, no protótipo, para receber estes comandos,ou seja, fez-se o uso de uma comunicação sem fio para controlar o veículo. Será relatado,desde os primeiros passos da programação para o microcontrolador de arquitetura ARMaté o resultado final do controle e do protótipo

Palavras-chave: 1. Display Touch Screen . 2. Microcontrolador ARM. 3. Blu-etooth. 4. Sistema Embarcado.

Page 9: controle de protótipo de veículo por display touch screen

MURAKAMI, H. N.. Prototype Vehicle Control By Touch Screen Dis-play. 86 p. Final Project (Undergraduation). Bachelor in Electrical Enginee-ring – State University of Londrina, 2014.

ABSTRACT

In this paper the concepts of control systems embedded in mobile robotics were addressed.It was built using the PIC 18F452 and ARM Cortex-M3 STM32F103VE microcontrollers,the first being used for the operation of prototype and the second for implementationof vehicle control through a touch screen display, belonging to the HY-STM32_100Pdevelopment kit. For the connection between the control and prototype, two Bluetoothmodule HC-05 were used. One being used in the kit for transmitting the control commandsand the other in the prototype for receive these commands, ie it was built using wirelesscommunication for controlling the vehicle. Here it will be shown from the first steps ofprogramming in ARM architecture to the final results of control and prototype

Keywords: 1. Touch Screen Display. 2. ARM Microcontroller. 3. Bluetooth.4. Embedded System.

Page 10: controle de protótipo de veículo por display touch screen

LISTA DE ILUSTRAÇÕES

Figura 1 – Apollo Guidance Computer à esquerda e o display e teclado utilizadono projeto Apollo à direita. (Fonte: Computer History Museum, 2014) . 19

Figura 2 – Exemplo da organização de um microcontrolador. (Fonte: STM32F103xxfirmware library, 2014) . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Figura 3 – Esquemático geral do trabalho. (Fonte: Elaborada pelo autor) . . . . . 23Figura 4 – Display utilizado para a implementação do controle. (Fonte: Elaborada

pelo autor) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23Figura 5 – Vista geral do protótipo utilizado. (Fonte: Elaborada pelo autor) . . . . 24Figura 6 – Detalhes dos motores do protótipo. (Fonte: Elaborada pelo autor) . . . 24Figura 7 – Circuito Ponte H. (Fonte: Elaborada pelo autor) . . . . . . . . . . . . . 24Figura 8 – Controle implementado. (Fonte: Elaborada pelo autor) . . . . . . . . . 25Figura 9 – Módulos Bluetooth HC-05. (Fonte: Elaborada pelo autor) . . . . . . . . 25Figura 10 – Corpo do protótipo. (Fonte: Elaborada pelo autor) . . . . . . . . . . . 27Figura 11 – Detalhe das rodas do protótipo. (Fonte: Elaborada pelo autor) . . . . . 27Figura 12 – Esquema elétrico da ponte H L298N. (Fonte: Datasheet L298 Dual Full-

Bridge Driver) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27Figura 13 – Microcontrolador PIC18F452. (Fonte: Elaborada pelo autor) . . . . . . 28Figura 14 – Programador/Depurador PICkit2 . . . . . . . . . . . . . . . . . . . . . 28Figura 15 – Detalhe do conector de programação do PICkit2 . . . . . . . . . . . . . 29Figura 16 – Kit de desenvolvimento HY-STM32_100P. (Fonte: Elaborada pelo autor) 29Figura 17 – Entradas USB e porta serial. Sendo o USB da esquerda utilizado como

conversor para RS232. (Fonte: Elaborada pelo autor) . . . . . . . . . . 30Figura 18 – LEDs, push buttons e buzzer. (Fonte: Elaborada pelo autor) . . . . . . 30Figura 19 – Microcontrolador STM32F103VET6. (Fonte: Elaborada pelo autor) . . 31Figura 20 – Módulo display do kit. (Fonte: Elaborada pelo autor) . . . . . . . . . . 31Figura 21 – Esquema de montagem de um display touch screen resistivo. (Fonte:

Timóteo, 2012) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32Figura 22 – Programador/Depurador J-Link. (Fonte: Elaborada pelo autor) . . . . 32Figura 23 – Porta USB tipo B do J-Link. (Fonte: Elaborada pelo autor) . . . . . . 32Figura 24 – Módulo Bluetooth HC-05 com placa de adaptação. (Fonte: Elaborada

pelo autor) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33Figura 25 – Conversor USB/Serial FT232. (Fonte: Elaborada pelo autor) . . . . . . 33Figura 26 – Fluxograma da metodologia adotada. (Fonte: Elaborada pelo autor) . . 35Figura 27 – Esquemático geral do kit HY-STM32_100P. (Fonte: Heyaodz, 2014) . . 36Figura 28 – Tela inicial da instalação do 𝜇Vision4. (Fonte: Elaborada pelo autor) . 36

Page 11: controle de protótipo de veículo por display touch screen

Figura 29 – Tela inicial da instalação do software do J-Link. (Fonte: Elaborada peloautor) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

Figura 30 – Janela de configuração do depurador. (Fonte: Elaborada pelo autor) . . 37Figura 31 – Tela da configuração do RDI. (Fonte: Elaborada pelo autor) . . . . . . 37Figura 32 – Configuração do driver RDI. (Fonte: Elaborada pelo autor) . . . . . . 38Figura 33 – J-Link Commander - número serial. (Fonte: Elaborada pelo autor) . . . 38Figura 34 – Selecionando a interface RDI como programador. (Fonte: Elaborada

pelo autor) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38Figura 35 – Esquema para calibração de uma tela sensível ao toque resistivo. (Fonte:

Timóteo, 2012) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39Figura 36 – Indicação da compilação correta do programa. (Fonte: Elaborada pelo

autor) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40Figura 37 – LEDs ligados sequencialmente. (Fonte: Elaborada pelo autor) . . . . . 42Figura 38 – Parte principal do programa dos LEDs. (Fonte: Programa exemplo,

Heyaodz, 2014.) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Figura 39 – Esquema de ligação dos LEDs. (Fonte: Esquemático do kit, Heyaodz,

2014.) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43Figura 40 – Configuração do GPIO. (Fonte: Programa exemplo, Heyaodz, 2014.) . . 44Figura 41 – Teste do display. (Fonte: Elaborada pelo autor) . . . . . . . . . . . . . 45Figura 42 – Teste do controle. (Fonte: Elaborada pelo autor) . . . . . . . . . . . . . 47Figura 43 – Configuração do módulo HC-05. (Fonte: Elaborada pelo autor) . . . . . 48Figura 44 – Montagem para o teste dos módulos HC-05. (Fonte: Elaborada pelo

autor) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48Figura 45 – Resultado do pressionamento dos botões. (Fonte: Elaborada pelo autor) 49Figura 46 – Montagem para simulação da USART do PIC. (Fonte: Elaborada pelo

autor) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50Figura 47 – Resultado do envio dos caracteres “A”, “L,”, “R” e “B”. (Fonte: Ela-

borada pelo autor) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50Figura 48 – Montagem do protótipo com o HC-05. (Fonte: Elaborada pelo autor) . 51

Page 12: controle de protótipo de veículo por display touch screen

LISTA DE TABELAS

Tabela 1 – Tabela lógica do L298N. . . . . . . . . . . . . . . . . . . . . . . . . . . 28

Page 13: controle de protótipo de veículo por display touch screen

LISTA DE ABREVIATURAS E SIGLAS

ALU Arithmetic Logic Unit

ARM Advanced RISC Machine - Máquina RISC Avançado

CAN Controller Area Network - Rede de Controle Local

CD Compact Disk - Disco Compacto

CMOS Complementary Metal-Oxide Semiconductor - Semicondutor deÓxido Metálico Complementar

CPU Central Processing Unit - Unidade de Processamento Central

CSR Cambridge Silicon Radio

DC Direct Current - Corrente Contínua

DSC Digital Signal Controllers - Controle de Sinal Digital

EPROM Erasable Programmable Read-Only Memory - Memória So-mente Leitura Programável e Apagável

EEPROM Electrically-Erasable Programmable Read Only Memory -Memória Somente Leitura Programável e Apagável Eletricamente

FTDI Future Technology Devices International

GPIO General Purpose Input Output - Entrada e Saída de PropósitoGeral

HD Hard Disk - Disco Rígido

IBM International Business Machines - Máquina de Negócios Interna-cionais

IP Internet Protocol - Protocolo de Internet

JTAG Joint Test Action Group

LCD Liquid Crystal Display - Display de Cristal Líquido

LED Light Emitting Diode - Diodo Emissor de Luz

MCU Microcontroller Unit - Unidade Microcontrolador

Page 14: controle de protótipo de veículo por display touch screen

MIPS Milhões de Instruções Por Segundo

MIT Massachusetts Institute of Technology - Instituto de Tecnologiade Massachusetts

MMU Memory Management Unit - Unidade de Gerenciamento de Me-mória

NASA National Aeronautics and Space Administration - AdministraçãoNacional da Aeronáutica e do Espaço

PDA Personal Digital Assistants - Assistentes Digitais Pessoais

PIC Programmable Interface Controller - Controlador de Interface Pro-gramável

PWM Pulse Width Modulation - Modulação por Largura de Pulso

RAM Random Access Memory - Memória de Acesso Aleatório

RISC Reduced Instruction Set Computer - Computador com ConjuntoReduzido de Instruções

RTC Real Time Clock - Clock de Tempo Real

SDIO Secure Digital Input Output - Segurança de Entrada e SaídaDigital

SIG Special Interest Group - Grupo de Interesse Especial

SPI Serial Peripheral Interface - Interface Serial Periférico

SPP Serial Port Profile - Perfil Porta Serial

TCP Transmission Control Protocol - Protocolo de Controle de Trans-missão

ULA Unidade Lógica e Aritmética

USART Universal Synchronous Asynchronous Receiver Transmitter -Transmissor Receptor Universal Síncrono e Assíncrono.

USB Universal Serial Bus - Barramento Serial Universal

Page 15: controle de protótipo de veículo por display touch screen

SUMÁRIO

1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2 REVISÃO BIBLIOGRÁFICA . . . . . . . . . . . . . . . . . . . 182.1 Sistemas Embarcados . . . . . . . . . . . . . . . . . . . . . . . . . 182.2 Microcontroladores . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.3 Microcontrolador ARM . . . . . . . . . . . . . . . . . . . . . . . . 192.4 Microcontrolador PIC . . . . . . . . . . . . . . . . . . . . . . . . . 212.5 Comunicação Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . 21

3 DESCRIÇÃO DO TRABALHO . . . . . . . . . . . . . . . . . . 23

4 MATERIAIS E MÉTODOS . . . . . . . . . . . . . . . . . . . . 264.1 Materiais . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.1.1 Protótipo de Veículo . . . . . . . . . . . . . . . . . . . . . . . . . . 264.1.2 Microcontrolador PIC18F452 . . . . . . . . . . . . . . . . . . . . 284.1.3 Programador/Depurador PICkit2 . . . . . . . . . . . . . . . . . . 284.1.4 Kit de Desenvolvimento HY-STM32_100P . . . . . . . . . . . . 294.1.5 Programador/Depurador ARM J-Link . . . . . . . . . . . . . . 314.1.6 Módulos Bluetooth HC-05 . . . . . . . . . . . . . . . . . . . . . . 314.1.7 Conversor USB/Serial FT232 . . . . . . . . . . . . . . . . . . . . 334.2 Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.2.1 Pesquisa Sobre o Kit . . . . . . . . . . . . . . . . . . . . . . . . . . 344.2.2 Ambiente de Trabalho . . . . . . . . . . . . . . . . . . . . . . . . . 344.2.3 Primeira Programação do Kit . . . . . . . . . . . . . . . . . . . . 374.2.4 Teste do Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394.2.5 Implementação do Controle . . . . . . . . . . . . . . . . . . . . . 404.2.6 Teste do Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404.2.7 Configuração e Teste dos Módulos Bluetooth . . . . . . . . . . 414.2.8 Comunicação Controle - Protótipo . . . . . . . . . . . . . . . . . 41

5 RESULTADOS OBTIDOS . . . . . . . . . . . . . . . . . . . . . 425.1 Pesquisa Sobre o Kit . . . . . . . . . . . . . . . . . . . . . . . . . . 425.2 Primeira Programação do Kit . . . . . . . . . . . . . . . . . . . . 425.3 Teste do Display . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445.4 Implementação do Controle . . . . . . . . . . . . . . . . . . . . . 455.5 Teste do Controle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

Page 16: controle de protótipo de veículo por display touch screen

5.6 Configuração e Teste do Bluetooth . . . . . . . . . . . . . . . . . 465.7 Comunicação Controle - Protótipo . . . . . . . . . . . . . . . . . 49

6 CONCLUSÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

APÊNDICE A – CÓDIGO DE IMPLEMENTAÇÃO DO CON-TROLE . . . . . . . . . . . . . . . . . . . . . 55

APÊNDICE B – COMUNICAÇÃO USAR . . . . . . . . . . . 58

APÊNDICE C – CÓDIGO DO PROTÓTIPO . . . . . . . . . 59

APÊNDICE A – CONFIGURAÇÃO DOS PERIFÉRICOS . 63

ANEXO B – ROTINA DE CRIAÇÃO DO FRAME . . . . . 72

ANEXO C – ROTINA DE CRIAÇÃO DO BOTÃO . . . . . 76

ANEXO D – DATASHEET . . . . . . . . . . . . . . . . . . . . 80

ANEXO E – DATASHEET STM32F103XE . . . . . . . . . . 85

ANEXO F – FIRMWARE LIBRARY . . . . . . . . . . . . . . 86

Page 17: controle de protótipo de veículo por display touch screen

16

1 INTRODUÇÃO

É possível observar nos dias atuais, um enorme avanço na tecnologia, seja emcelulares, computadores, veículos, robóticas, entre várias outras áreas tecnológicas. Estasevoluções se devem muito ao aprimoramento, ao poder e à capacidade cada vez maior dosprocessadores e microcontroladores, e em consequência, os sistemas embarcados, podendoser utilizados com periféricos como uma tela sensível ao toque e conexão sem fio do tipoBluetooth, sendo estes últimos presentes cada vez mais nos dispositivos mais recentes.

Será abordado neste trabalho, a implementação de controle por uma conexão semfio para um protótipo de veículo, a partir do uso dos componentes citados acima, sendoque para a tela de toque será utilizado o microcontrolador ARM, para o protótipo oPIC, e em ambos terá a presença do módulo Bluetooth para realizar a conexão entre osmicrocontroladores.

O elemento a ser utilizado para a programação do display, bem como a própriatela, pertence a um kit fabricado por uma empresa de origem chinesa, tendo, portanto, amaior parte da documentação que o acompanha, escrita em sua língua de origem.

Para que se tenha mais confiança quanto ao kit a ser utilizado, será feito inici-almente uma pesquisa mais específica para obter o máximo de material possível sobreo mesmo, obtendo deste forma, uma confiabilidade maior em relação ao produto a sermanipulado.

O principal objetivo deste trabalho é realizar uma programação para a imple-mentação de um controle em um display touch screen, controlado pelo microcontroladorde arquitetura ARM, e um objetivo específico de utilizar o controle implementado paraguiar um protótipo de veículo via conexão sem fio, baseada no protocolo Bluetooth. Tem-se também, o objetivo de colocar em prática, o resultado de pesquisas e conhecimentosrelacionados à programação.

Verificando-se que as telas de toque e comunicação sem fio entre outros dispositivosvem sendo utilizados cada vez mais nos novos aparelhos, a importância deste trabalho époder dar o primeiro passo para o entendimento do uso dos componentes citados acima,e, posteriormente, aprimorar o uso destes, seja em residência para uma evolução do co-nhecimento pessoal, ou em empresas, como uso profissional.

Este trabalho será dividido em 6 capítulos, sendo elas: Introdução, Revisão Bibli-ográfica, Descrição do Trabalho, Materiais e Métodos, Resultados e Conclusões.

No capítulo referente à Revisão Bibliográfica (Capítulo 2), será descrito um his-tórico sobre os principais componentes utilizados neste projeto bem como um histórico

Page 18: controle de protótipo de veículo por display touch screen

Capítulo 1. Introdução 17

sobre a utilização e evolução das telas sensíveis ao toque.

Na Descrição do Trabalho (Capítulo 3), será descrito de forma mais específica sobreo trabalho a ser realizado, tendo uma descrição geral dos materiais utilizados e de comodeverá funcionar o controle e a comunicação da tela sensível ao toque com o protótipo.

Em Materiais e Métodos (Capítulo 4), terá o detalhamento completo dos materiaisutilizados, bem como a forma como foi desenvolvido todo o trabalho.

Nos Resultados (Capítulo 5), será descrito todos os resultados obtidos através dostestes, bem como o resultado final do trabalho.

Por fim, nas Conclusões (Capítulo 6), será colocado de forma geral, o que foipossível realizar e para qual, ou quais, finalidades este trabalho poderá ser útil.

Page 19: controle de protótipo de veículo por display touch screen

18

2 REVISÃO BIBLIOGRÁFICA

Desde 1965, quando foi publicado o primeiro artigo de forma simplificada, e em1967 um artigo mais detalhado sobre o touch screen capacitivo por Edward A. Johnson,alguns cientistas passaram a pesquisar mais sobre esta nova tecnologia. (Bellis, 2014)

Em 1971, o Dr. Sam Hurst, fundador da Elographics, hoje conhecida como Elo-touch Systems, desenvolveu o sensor touch e em 1977 patenteou o touch screen resistivo.Neste mesmo ano, a Siemens passou a financiar a Elographics para que produzissem aprimeira interface de vidro curvado com o sensor touch, sendo este o primeito dispositivochamado de touch screen. (Bellis, 2014)

Na década de 90 os estudos evoluiram para um patamar superior, sendo em 1996lançado os PDAs (Personal Digital Assistants), que foram os primeiros dispositivos autilizarem a tela sensível ao toque e que eram mais acessíveis aos consumidores.

Porém, somente a partir de 2007, com o lançamento do iPhone, da Apple, é quehouve um grande crescimento no uso destes displays, sendo hoje utilizados em váriosequipamentos, de forma a simplificar e reduzir os espaços onde antes eram ocupados porbotões físicos, visto que, com as telas de toque permitem criar várias funções que podemser divididas em quadros ou janelas.

Devido ao uso cada vez maior das telas sensíveis ao toque, alunos de graduaçãopassaram a realizar pesquisas sobre este dispositivo, como por exemplo, o trabalho “In-terface Touchscreen” (Lopes Filho, 2007), no qual o autor realiza a montagem de umainterface entre o display e o usuário, para que este último consiga escrever na própria telaatravés de um teclado QWERTY touch screen implementado na tela.

2.1 Sistemas Embarcados

Sistemas embarcados são sistemas projetados para realizarem funções específicas,através de microcontroladores já programados.

O primeiro uso de sistema embarcado considerado surgiu no início da década de1960, no Apollo Guidance Computer (NASA, 2014) (Figura 1), desenvolvido pelo labo-ratório de instrumentação do MIT (Massachusetts Institute of Technology)1, sendo queeste computador foi responsável pelos controles na orientação, navegação e controle domódulo de comando e do módulo lunar, os quais foram utilizados no projeto Apollo2.1 Centro universitário de educação e pesquisa privado localizado em Cambridge, Massashusetts, nos

Estados Unidos.2 Conjunto de missões espaciais coordenadas pela NASA(agência espacial dos Estados Unidos) para

enviar o homem à Lua.

Page 20: controle de protótipo de veículo por display touch screen

Capítulo 2. Revisão Bibliográfica 19

Figura 1 – Apollo Guidance Computer à esquerda e o display e teclado utilizado no projetoApollo à direita. (Fonte: Computer History Museum, 2014)

Com o avanço nos estudos sobre os microcontroladores, desde o primeiro micro-processador Intel 4004 até os microcontroladores mais conhecidos hoje, como o PIC e osde arquitetura ARM, foi surgindo cada vez mais o uso de sistemas embarcados no mundo.

Como pode-se observar, nos dias de hoje, há um amplo leque de aparelhos quefazem o uso destes sistemas, como por exemplo, os smartphones, calculadoras, relógiosde pulso, vários eletrodomésticos como microondas, TVs, máquina de lavar. podem serencontrados também em carros, aviões e vários outros aparelhos.

2.2 Microcontroladores

Os microcontroladores são pequenos componentes eletrônicos, com a capacidadede controle de processos lógicos através da ULA (Unidade Lógica Aritmética, ALU, eminglês) que possui. Ou seja, a partir de um programa implementado por um usuário, écapaz de controlar LCDs, LEDs, entre outros elementos externos ligados a ele.

Diferentemente dos microprocessadores, podem funcionar sem a necessidade deuma CPU, memória, ou outros periféricos necessários para o funcionamento de um com-putador, pois todos estes componentes já estão dentro de um microcontrolador (GazzoniFilho, 2013, p. 25), como pode-se observar na Figura 2

2.3 Microcontrolador ARM

Os processadores da arquitetura ARM são utilizados em vários produtos eletrôni-cos, desde kit de desenvolvimentos para estudantes, até os produtos de última geração,como smartphones, netbooks, TVs e até mesmo, em carros.

Estes microcontroladores e microprocessadores são divididos em 4 classes diferen-tes, são conhecidos como Cortex-A, Cortex-R, Cortex-M e SecurCore. Sendo que cadaclasse possui diferentes características e são utilizadas em áreas distintas, como explicado

Page 21: controle de protótipo de veículo por display touch screen

Capítulo 2. Revisão Bibliográfica 20

Figura 2 – Exemplo da organização de um microcontrolador. (Fonte: STM32F103xxfirmware library, 2014)

abaixo:(ARM, 2014)

∙ Cortex-A : Possuem a capacidade de executar sistemas operacionais mais comple-xos, como Linux, Android/Chrome e Microsoft Windows. Esta classe de processa-dores integra a chamada Unidade de Gerenciamento de Memória (Memory Mana-gement Unit (MMU)), que permite o gerenciamento dos requisitos de memória paraesses sistemas operacionais complexos. Devido a esta capacidade, são utilizados emsmartphones, tablets, TVs, entre outros produtos similares.

∙ Cortex-R: Controlador de tempo-real, utilizado em produtos cujo requerimentoseja confiança, alta disponibilidade, tolerância a falhas, manutenção e respostas emtempo real. Podem ser encontrados em sistemas automotivos (airbag, freio, manu-tenção do motor, etc.), discos de armazenamento de dados (HD), TV digital, etc.

∙ Cortex-M: Tem como característica, uma boa eficiência energetica, maior faixa decompatibilidade de uso e baixo custo. Podem ser encontrados em consoles de jogos,tecnologia Bluetooth, telas sensínveis ao toque, entre outros.

Page 22: controle de protótipo de veículo por display touch screen

Capítulo 2. Revisão Bibliográfica 21

∙ SecurCore: Processador de 32 bits dedicado especialmente para a área de segu-rança. Um exemplo de uso deste processador são os smart cards (cartões inteligen-tes), que são cartões que possuem, geralmente, memórias para o armazenamento dedados, como por exemplo, cartões de identificação pessoal e cartões bancários.

Neste projeto, será utilizado o microcontrolador STM32 com núcleo ARM Cortex-M3.

2.4 Microcontrolador PIC

Foi desenvolvido, em 1975 pela General Instruments, a mesma abandonou o projetoem 1985. Porém, em 1989, a Microchip Technology relança o PIC com utilização dememória EPROM (Gazzoni Filho, 2013, p. 11).

Os microcontroladores PIC, estão entre os mais utilizados por alunos, apreciadoresda tecnologia e até mesmo iniciantes na área de sistemas embarcados, devido ao baixocusto e amplo material didático que podem ser encontrados em livros e internet.

Estes MCUs, são divididos em 4 famílias, sendo elas:

∙ 8 bits - Caracterizado pelos prefixos: PIC10, PIC12, PIC16 e PIC 18;

∙ 16 bits - Caracterizado pelos prefixos: PIC24F, PIC24H e PIC24E;

∙ 16 bits DSC (Digital Signal Controller) - Caracterizado pelos prefixos: dsPIC30F,dsPIC33F e dsPIC33E;

∙ 32 bits - Caracterizado pelos prefixos: PIC32.

Informações mais detalhadas sobre cada tipo de microcontrolador PIC podem servistas no próprio endereço eletrônico da fabricante (Microchip, 2014).

2.5 Comunicação Bluetooth

O Bluetooth é uma tecnologia de comunicação sem fio criada pelos engenheiros daempresa sueca, Ericsson. A rede veio a receber esta denominação em homenagem ao reidinamarquês Harald Blåtand, ou, Harold Bluetooth, em inglês. A homenagem foi feita,pelo fato do rei dinamarquês ter ajudado na união das facções onde hoje é a Noruega,Suécia e Dinamarca. De forma similar, a tecnologia Bluetooth foi criado como um padrãoaberto para permitir a colaboração entre diferentes produtos e indústrias.

Page 23: controle de protótipo de veículo por display touch screen

Capítulo 2. Revisão Bibliográfica 22

Em 1998, a Ericsson, IBM, Intel, Nokia e Toshiba se uniram e formaram um grupochamado Bluetooth SIG(Special Interest Group), responsável por preservar, educar e trazercada vez mais dispositivos ao mundo conectado através desta tecnologia.

O uso do Bluetooh, como toda tecnologia, possui vantagens e desvantagens (Alves,2012):

Dentre as vantagens, podemos citar:

∙ Baixo custo;

∙ Podem ser facilmente integrada aos protocolos de comunicação Rx/Tx ou TCP/IP,por exemplo;

∙ Fácil conexão entre dispositivos.

Já entre as desvantagens:

∙ Curto alcance para conexão;

∙ Taxa de transferência limitada.

Tal tecnologia veio a substituir, portanto, várias conexões, cujas comunicaçõeseram realizadas por meio de cabos, diminuindo, desta forma, vários cabos de ligações,mantendo um local mais organizado. O Bluetooth é utilizado também como modo desegurança, realizando, por exemplo, comunicação entre celulares e rádio de carro parapoder atender a um chamado sem a necessidade de ficar segurando o celular. Ou seja, suautilização vem crescendo cada vez mais entre os dispositivos.

Page 24: controle de protótipo de veículo por display touch screen

23

3 DESCRIÇÃO DO TRABALHO

Neste trabalho foi realizado a implementação de um controle via display touchscreen (Figura 4) para atuar como controle de um protótipo de veículo (Figura 5). Umesquemático geral do trabalho pode ser visto na Figura 3

Figura 3 – Esquemático geral do trabalho. (Fonte: Elaborada pelo autor)

Como pode ser visto nas figuras abaixo, o protótipo possui dois motores DCscontrolados por um microcontrolador PIC e um circuito eletrônico de Ponte H (Figura 7),sendo este responsável pelo acionamento dos motores, visto que o microcontrolador nãoé capaz fornecer a corrente necessária para a alimentação dos mesmos.

Figura 4 – Display utilizado para a implementação do controle. (Fonte: Elaborada peloautor)

Page 25: controle de protótipo de veículo por display touch screen

Capítulo 3. Descrição do Trabalho 24

Figura 5 – Vista geral do protótipo utilizado. (Fonte: Elaborada pelo autor)

Figura 6 – Detalhes dos motores do protótipo. (Fonte: Elaborada pelo autor)

Figura 7 – Circuito Ponte H. (Fonte: Elaborada pelo autor)

O controle foi elaborado de forma a conter 4 botões, sendo eles responsáveis pelasações de fazer o protótipo andar para frente, frear, virar para a esquerda e virar para adireita. Tais botões foram dispostos no display com os seguintes nomes: “Accel”, “Brake”,“Left” e “Right”, respectivamente.

Page 26: controle de protótipo de veículo por display touch screen

Capítulo 3. Descrição do Trabalho 25

Figura 8 – Controle implementado. (Fonte: Elaborada pelo autor)

A conexão entre o controle criado e o protótipo foi realizada através de uma co-municação sem fio. Foi utilizado, para este fim, dois módulos Bluetooth HC-05 (Figura 9)com comunicação de alcance máximo de aproximadamente 10 metros.

Figura 9 – Módulos Bluetooth HC-05. (Fonte: Elaborada pelo autor)

Page 27: controle de protótipo de veículo por display touch screen

26

4 MATERIAIS E MÉTODOS

4.1 Materiais

Para a realização deste trabalho foram utilizados os seguintes materiais:

∙ Protótipo de veículo;

∙ 2 Motores DC;

∙ Circuito Ponte H;

∙ Microcontrolador PIC18F452;

∙ Programador/Depurador PICkit2;

∙ Kit HY-STM32_100P;

∙ Programador/Depurador ARM J-LinkV8;

∙ 2 Módulos Bluetooth HC-05;

∙ Conversor USB/Serial FT232.

4.1.1 Protótipo de Veículo

O protótipo (Figura 10) utilizado tem o corpo feito em acrílico e conta com váriosorifícios para que possa adaptar placas de circuito impresso, motores, rodas, sensores entreoutros componentes necessários.

Foram utilizados três rodas (Figura 11), sendo duas traseiras fixas e uma dianteiramóvel para que o protótipo possa fazer curvas.

O circuito Ponte H (Figura 7), cujo esquema elétrico pode ser visto na Figura12, conta com portas de alimentação, responsáveis pelo fornecimento da corrente dosmotores, e, com pinos de saídas para poder controlar até dois motores DC através depinos de entrada na qual chegam o sinal PWM do microcontrolador.

Observando-se a Figura 12, a montagem dos motores na ponte H, é realizadaconectando-se um motor entre “OUT1” e “OUT2” e outro motor entre “OUT3” e “OUT4”.Desta forma, após conectar as saídas PWM do PIC nas entradas “EnA” e EnB”, e alternarentre os níveis lógicos alto e baixo nas entradas “In1”, “In2”, “In3” e “In4”, é realizadoa combinação lógica devido às portas AND, o que determina como funcionará o motor,conforme a Tabela 1:

Page 28: controle de protótipo de veículo por display touch screen

Capítulo 4. Materiais e Métodos 27

Figura 10 – Corpo do protótipo. (Fonte: Elaborada pelo autor)

Figura 11 – Detalhe das rodas do protótipo. (Fonte: Elaborada pelo autor)

Figura 12 – Esquema elétrico da ponte H L298N. (Fonte: Datasheet L298 Dual Full-BridgeDriver)

Page 29: controle de protótipo de veículo por display touch screen

Capítulo 4. Materiais e Métodos 28

EnA In1 In2 Motor0 x x Paradox 0 0 Parado1 0 1 Anti-horário1 1 0 Horáriox 1 1 Parado

Tabela 1 – Tabela lógica do L298N.

4.1.2 Microcontrolador PIC18F452

O PIC18F452 (Figura 13) é um microcontrolador de 40 portas, com 32kB de me-mória FLASH para programação, 1536 bytes de memória RAM para dados e 256 bytesde memória EEPROM. Possui capacidade de processamento de até 10 MIPS, possui doiscanais PWM, comunicação USART, conversos analógico digital de 10 bits e 4 temporiza-dores. Permite até 100 mil ciclos de escrita e leitura na memória FLASH, com retençãode dados de até 40 anos, e, permite também até 1 milhão de ciclos de escrita e leitura namemória EEPROM.

Figura 13 – Microcontrolador PIC18F452. (Fonte: Elaborada pelo autor)

4.1.3 Programador/Depurador PICkit2

O PICkit2 (Figura 14) é uma ferramente de desenvolvimento de baixo custo queserve para programar e/ou depurar a maioria dos microcontroladores Flash da fabricanteMicrochip. A conexão com o computador é realizado pela porta USB e a conexão com odispositivo a ser programado é feito por um conector de 6 pinos (Figura 15).

Figura 14 – Programador/Depurador PICkit2

Page 30: controle de protótipo de veículo por display touch screen

Capítulo 4. Materiais e Métodos 29

Figura 15 – Detalhe do conector de programação do PICkit2

4.1.4 Kit de Desenvolvimento HY-STM32_100P

O kit de desenvolvimento HY-STM32_100P possui a seguinte estrutura:

∙ Microcontrolador STM32F103VET6 - ARM Cortex M3;

∙ Display touch screen de 2,4”;

∙ Entrada para conector JTAG ARM de 20 pinos;

∙ Porta serial DB9;

∙ Entrada USB tipo B para alimentação;

∙ Entrada USB tipo B para alimentação e com conversor USB para RS232;

∙ Entrada para cartão de memória micro SD;

∙ Memória flash de 16Mbit (2MB) M25P16;

∙ 4 LEDs vermelhos;

∙ 4 push buttons;

∙ Buzzer piezoelétrico;

∙ Dois potenciômetros;

∙ Bateria de litio de 3V para uso do RTC.

(a) Parte frontal do kit. (b) Parte posterior do kit.

Figura 16 – Kit de desenvolvimento HY-STM32_100P. (Fonte: Elaborada pelo autor)

Page 31: controle de protótipo de veículo por display touch screen

Capítulo 4. Materiais e Métodos 30

Figura 17 – Entradas USB e porta serial. Sendo o USB da esquerda utilizado como con-versor para RS232. (Fonte: Elaborada pelo autor)

Figura 18 – LEDs, push buttons e buzzer. (Fonte: Elaborada pelo autor)

1. Microcontrolador STM32F103VET6

Este microcontrolador é baseado na arquitetura ARM Cortex-M3 de 32 bits, cujasprincipais características são:

∙ Frequência máxima de 72MHz;

∙ 512 kB de memória Flash;

∙ 64 kB de memória SRAM;

∙ Oscilador RC de 8MHz e 40kHz;

∙ 32kHz de RTC;

∙ 3 Conversores A/D de 12 bits;

∙ 2 Conversores D/A de 12 bits;

∙ 11 Temporizadores;

∙ 13 Interfaces de comunicação, sendo: 2 I2C, 5 USART, 3 SPI, 1 CAN, 1 USBe um SDIO.

Maiores detalhes sobre este microcontrolador podem ser encontrados em seu da-tasheet (STMicroelectronics, 2014).

2. Display touch screen

O display touch screen utilizado é uma tela LCD de 2,4”, de 320x240 pixels, resistivo,e possui um conector de 40 pinos integrado para fácilitar a montagem no kit HY-STM32_100P. A seguir estão as fotos da parte frontal e posterior do display:

A montagem de uma tela sensível ao toque resistivo pode ser visto na Figura 21.

Page 32: controle de protótipo de veículo por display touch screen

Capítulo 4. Materiais e Métodos 31

Figura 19 – Microcontrolador STM32F103VET6. (Fonte: Elaborada pelo autor)

(a) Parte frontal do display. (b) Parte posterior do display.

Figura 20 – Módulo display do kit. (Fonte: Elaborada pelo autor)

4.1.5 Programador/Depurador ARM J-Link

O J-Link é um programador/depurador que serve para fazer a programação dosmicrocontroladores com núcleo ARM. A comunicação é realizada através de porta USBno computador e conector JTAG de 20 pinos na placa de desenvolvimento do microcon-trolador ARM.

Os sistemas operacionais suportados são:

∙ Microsoft Windows - 2000, XP, Vista, 7 e 8;

∙ Linux;

∙ Mac OS X 10.5 ou mais recentes.

4.1.6 Módulos Bluetooth HC-05

Os módulos HC-05 suportam o perfil SPP (Serial Port Profile), ou seja, funcio-nam através de comunicação serial RS-232 com os microcontroladores. Suas principaiscaracterísticas são:

∙ Alcance máximo de 10 metros;

Page 33: controle de protótipo de veículo por display touch screen

Capítulo 4. Materiais e Métodos 32

Figura 21 – Esquema de montagem de um display touch screen resistivo. (Fonte: Timóteo,2012)

Figura 22 – Programador/Depurador J-Link. (Fonte: Elaborada pelo autor)

Figura 23 – Porta USB tipo B do J-Link. (Fonte: Elaborada pelo autor)

∙ Frequência de 2,4GHz;

Page 34: controle de protótipo de veículo por display touch screen

Capítulo 4. Materiais e Métodos 33

∙ Utiliza um chip de sistema Bluetooth com tecnologia CMOS da CSR (CambridgeSilicon Radio);

∙ Antena integrada;

∙ Aceita as taxas de transmissão de 9600, 19200, 38400, 57600, 115200, 230400, 460800kbps;

∙ Configurável entre os modos Mestre-Escravo.

Para este trabalho, foram utilizados, com os módulos HC-05, placas que foramsoldadas a estes componentes para uma utilização mais fácil, como pode ser observadonas figuras a seguir:

(a) Parte frontal do módulo. (b) Parte posterior do módulo.

Figura 24 – Módulo Bluetooth HC-05 com placa de adaptação. (Fonte: Elaborada peloautor)

4.1.7 Conversor USB/Serial FT232

Este conversor, da fabricante FTDI Chip, é um conversor USB/Serial, que permite,portanto, uma comunicação a partir da porta USB de um computador, por exemplo, comum dispositivo que possui uma conexão serial. Tal conversor pode ser visto na Figura 25

Figura 25 – Conversor USB/Serial FT232. (Fonte: Elaborada pelo autor)

4.2 Métodos

Os métodos utilizados para atingir o resultado final foram baseados, inicialmente,em pesquisas sobre a placa de desenvolvimento e em seguida dado o início à programaçãono mesmo acompanhado por testes em cada passo para que fique mais fácil de se averiguaronde se encontra o erro, caso exista. Como mostra o fluxograma da Figura 26.

Page 35: controle de protótipo de veículo por display touch screen

Capítulo 4. Materiais e Métodos 34

Os principais passos realizados a serem comentado a seguir são:

∙ Pesquisa sobre o kit;

∙ Ambiente de trabalho

∙ Primeira programação no kit;

∙ Teste do display;

∙ Implementação do controle;

∙ Teste do controle;

∙ Teste e configuração dos módulos Bluetooth;

∙ Comunicação entre o controle e o protótipo.

4.2.1 Pesquisa Sobre o Kit

A pesquisa foi necessária, pois a maior parte dos documentos disponibilizados pelafabricante, em um CD que acompanha o kit, está em chinês. Portanto, fez-se necessáriobuscar por mais informações, em inglês ou português, sobre o funcionamento do mesmo.

Na Figura 27 pode ser visto o esquemático geral do kit utilizado.

4.2.2 Ambiente de Trabalho

1. 𝜇Vision4

A programação para microcontroladores ARM podem ser realizadas em diversossoftwares disponíveis na internet. Porém, o ambiente de trabalho utilizado nesteprojeto é o 𝜇Vision4 da fabricante Keil, pois este é um software que acompanha, emum CD, o kit de desenvolvimento utilizado.

A instalação do 𝜇Vision4 é realizada de forma simples, tendo apenas que inicializaro instalador do mesmo e seguir os passos mostados na tela conforme o progresso dainstalação.

Page 36: controle de protótipo de veículo por display touch screen

Capítulo 4. Materiais e Métodos 35

Figura 26 – Fluxograma da metodologia adotada. (Fonte: Elaborada pelo autor)

2. J-Link

Em seguida, fez-se a instalação do software do J-Link. Da mesma forma como o𝜇Vision4, a instalação deste software é realizado de forma simples, tendo apenasque seguir os passos mostrados durante a instalação do mesmo.

3. Comunicação 𝜇Vision4 e J-LInk

Após os dois softwares instalados, deve-se configurar a comunicação entre os doisdispositivos. Para realizar esta configuração, inicialmente deve-se abrir o 𝜇Vision4e ir em “Project → Options for Target” e selecionar a aba “Debug”, desta forma

Page 37: controle de protótipo de veículo por display touch screen

Capítulo 4. Materiais e Métodos 36

Figura 27 – Esquemático geral do kit HY-STM32_100P. (Fonte: Heyaodz, 2014)

Figura 28 – Tela inicial da instalação do 𝜇Vision4. (Fonte: Elaborada pelo autor)

Figura 29 – Tela inicial da instalação do software do J-Link. (Fonte: Elaborada pelo autor)

Page 38: controle de protótipo de veículo por display touch screen

Capítulo 4. Materiais e Métodos 37

abrirá uma janela de configuração (Figura 30). Nesta janela, marcar a opção “Use”e selecionar “RDI Interface Device”, em seguida, clicar em “Settings”, adicionaro arquivo “JLinkRDI.dll” em “Browse for RDI Driver DLL” e marcar as opçõesconforme mostra a Figura 31.

Figura 30 – Janela de configuração do depurador. (Fonte: Elaborada pelo autor)

Figura 31 – Tela da configuração do RDI. (Fonte: Elaborada pelo autor)

Em seguida, clicar em “Configure RDI Driver” (Figura 32), selecionar o modo decomunicação “USB” e adicionar o número serial do J-Link utilizado, o qual podeser encontrado ao abrir o programa “J-Link Commander”, sendo identificado com“S/N”, conforme mostra a Figura 33.

Após ter configurado o driver do RDI, voltar à janela “Options for Target”, ir naaba “Utilities” e selecionar “RDI Interface Driver” em “Use Target Driver for FlashProgramming” (Figura 34).

4.2.3 Primeira Programação do Kit

No CD que acompanha o kit há alguns exemplos de utilização do mesmo. Dentro doCD, na pasta “2.4LGDP4532”, há várias pastas com exemplos que podem ser carregados.

Page 39: controle de protótipo de veículo por display touch screen

Capítulo 4. Materiais e Métodos 38

Figura 32 – Configuração do driver RDI. (Fonte: Elaborada pelo autor)

Figura 33 – J-Link Commander - número serial. (Fonte: Elaborada pelo autor)

Figura 34 – Selecionando a interface RDI como programador. (Fonte: Elaborada pelo au-tor)

Como primeiro exemplo, será testado o mais simples, que é um programa para fazer osLEDs piscarem.

Page 40: controle de protótipo de veículo por display touch screen

Capítulo 4. Materiais e Métodos 39

Para carregar este programa, primeiro abre-se o 𝜇Vision4 (de preferência, abrircomo administrador, clicando com o botão direito do mouse e ir em “Executar comoAdministrador”, desta forma, fica-se livre de quaisquer restrições que se possam ter). Emseguida ir no “Project” na barra do menu e clicar em “Open Project”. Na janela que abrir,ir até a pasta onde se encontra os exemplos e abrir o arquivo “stm32-fd-FlashLED”. Apóster aberto o programa, ir em “Project” e clicar em “Build target”, ou, pode-se clicar natecla de atalho “F7”. Neste passo, caso tenha algum erro no código, o mesmo será acusado.Porém, se estiver tudo correto, aparecerá uma mensagem indicando 0(zero) erros, comomostra a Figura 36

4.2.4 Teste do Display

Para verificar o funcionamento do display touch screen disponível no kit, fez-se autilização de um programa de exemplo, presente no CD disponibilizado pela fabricantedo kit.

Este programa imprime na tela pontos vermelhos e pede para que seja pressionadoquatro pontos, em sequência, presentes em cada canto da tela, os quais podem servir pararealizar uma calibração da tela.

Uma das maneiras de se callibrar uma tela sensível ao toque resistivo é realizadaimprimindo-se quatro pontos próximos aos cantos da tela, os quais são detectados apóspressionados e verificado, através da tensão gerada, a distância em relação a um ponto dereferência, como mostra na Figura 35.

Figura 35 – Esquema para calibração de uma tela sensível ao toque resistivo. (Fonte:Timóteo, 2012)

A compilação deste programa foi realizado da mesma forma como descrito no item4.2.3

Page 41: controle de protótipo de veículo por display touch screen

Capítulo 4. Materiais e Métodos 40

Figura 36 – Indicação da compilação correta do programa. (Fonte: Elaborada pelo autor)

4.2.5 Implementação do Controle

Após ter realizado o teste do display e verificado que o mesmo se encontra emfuncionamento, foi feito em seguida um estudo baseado no programa exemplo para poderfazer a implementação do controle.

Inicialmente, foi feito uma tentativa de implementação utilizando o software STemWinda STMicroelectronics para criar a interface a ser carregado no display. Porém, teve-sevárias dificuldades em adicionar os códigos gerados por este software ao programa princi-pal.

Após várias tentativas, foi verificado certas similaridades entre os códigos da inter-face gerado e uma parte de outro programa exemplo. Desta forma, foi realizado a escritados códigos necessários dentro do programa para obter então o controle.

4.2.6 Teste do Controle

Antes de tentar a conexão com o protótipo, foi realizado primeiro um teste paraverificar se os botões do controle implementado estavam funcionando.

O teste foi realizado de forma simples, sendo configurado os botões para que acen-dessem ou apagassem 3 LEDs. Os LEDs foram posicionados de forma a simular as funçõesdo protótipo.

Cada botão foi configurado para uma ação diferente em relação aos 3 LEDs utili-zados.

Page 42: controle de protótipo de veículo por display touch screen

Capítulo 4. Materiais e Métodos 41

4.2.7 Configuração e Teste dos Módulos Bluetooth

Antes de poder realizar a comunicação entre o controle e o protótipo utilizando osmódulos Bluetooth, foi necessário fazer a configuração dos módulos.

Ambos os módulos foram configurados para uma taxa de transferência de 38400bps. Porém, um dos HC-05 foi ajustado como mestre e o outro como escravo.

Tanto para as configurações quanto para o teste realizado, fez-se a utilização doconversor FT232 como meio de comunicação entre o módulo e o computador, para quefosse possível obter dados da comunicação entre os módulos.

4.2.8 Comunicação Controle - Protótipo

Por fim, para realizar a comunicação entre o controle e o protótipo, foi realizadouma implementação dos códigos, baseado no código implementado por Alex Archela eRubens Galante Filho, também alunos de Engenharia Elétrica da UEL, a quem pertenceo projeto do protótipo.

No código implementado, foi necessário habilitar a comunicação USART e associara chegada dos dados pelo Baluetooth com as ações para fazer o protótipo andar para frente,virar para a esquerda ou direita e frear.

Para a conexão do módulo com o microcontrolador PIC, foi necessário realizaruma divisão de tensão, visto que a tensão das portas deste microcontrolador são de 5V eo módulo pode ser alimentado com no máximo 3.3V para não queimar.

Page 43: controle de protótipo de veículo por display touch screen

42

5 RESULTADOS OBTIDOS

A seguir, serão apresentados os resultados obtidos neste trabalho.

5.1 Pesquisa Sobre o Kit

Através das pesquisas realizadas sobre o kit, verificou-se que esta placa de desen-volvimento ainda é pouco conhecida e vários usuários também encontraram dificuldadesem encontrar documentos mais explicativos em outras línguas além da escrita chinesa.

5.2 Primeira Programação do Kit

Após ter realizado a compilação, sem erros, para fazer a gravação do programano microcontrolador, basta ir em “Flash” na barra de menu e clicar em “Download’, ou,pode-se tambem clicar no botão de atalho (ícone com detalhe escrito “load”) na barrade ferramentas. Desta forma, o programa exemplo será carregado no microcontrolador.Após terminado o processo de gravação, pressionar o botão “RST” do kit. Assim, poderáser visto os LEDs piscarem de forma sequencial em forma de loop, indo do LED D1 até oLED D4 (Figura 37)

(a) LED D1. (b) LED D2.

(c) LED D3. (d) LED D4.

Figura 37 – LEDs ligados sequencialmente. (Fonte: Elaborada pelo autor)

Na Figura 38, pode-se observar a parte principal do programa responsável por estecontrole dos LEDs:

Page 44: controle de protótipo de veículo por display touch screen

Capítulo 5. Resultados Obtidos 43

Figura 38 – Parte principal do programa dos LEDs. (Fonte: Programa exemplo, Heyaodz,2014.)

A partir do esquemático da ligação dos LEDs no kit (Figura 39), verifica-se aseguinte configuração:

∙ LED D1: PC6 (Porta C, pino 6);

∙ LED D2: PC7 (Porta C, pino 6);

∙ LED D3: PD13 (Porta D, pino 13);

∙ LED D4: PD6 (Porta D, pino 6);

Figura 39 – Esquema de ligação dos LEDs. (Fonte: Esquemático do kit, Heyaodz, 2014.)

Observa-se também que o ânodo dos LEDs estão ligados aos pinos do kit e o cátodoao terra. Portanto, para fazer acendê-los, deve-se colocar os pinos como modo de saídae deixar o pino referente ao LED em nível lógico alto, e, para apagá-los, deve-se colocareste mesmo pino em nível lógico baixo.

Desta forma, analisando algumas linhas específicas do código, como por exemplo:

Page 45: controle de protótipo de veículo por display touch screen

Capítulo 5. Resultados Obtidos 44

GPIO_SetBits(GPIOC, GPIO_Pin_6);GPIO_ResetBits(GPIOC, GPIO_Pin_6);

Vê-se como é a estrutura da programação em microcontroladores com núcleo ARM:

∙ GPIO (General Ports Input Output): Se refere às portas de entrada e saída do kit;

∙ SetBits/ResetBits: Quando presente o “SetBits”, siginifica deixar o bit de saída emnível lógico alto, e, quando presente o “ResetBits”, significa deixar o bit de saídaem nível lógico baixo;

∙ GPIOC: Indica qual a porta que será modificada através dos comandos “SetBits” e“ResetBits”;

∙ GPIO_Pin_6: Indica qual o pino da porta em questão que será modificada, tambémpelos comandos “SetBits” e “ResetBits”;

É necessário também, fazer a configuração dos periféricos a serem utilizados. Nestecaso, como a utilização é para as portas de entrada e saída, fez-se a configuração do GPIOe a ativação do clock respectivo:

Figura 40 – Configuração do GPIO. (Fonte: Programa exemplo, Heyaodz, 2014.)

Outras configurações podem ser vistas em no manual de usuário do microcontro-lador (STMicroelectronics, 2014).

5.3 Teste do DisplayApós ter feito a gravação do programa exemplo do display no microcontrolador,

obteve-se o seguinte resultado:

Os pontos apareceram em sequência, do primeiro até o último. Sendo que o pontoseguinte aparece apenas após o anterior ter sido pressionado.

Page 46: controle de protótipo de veículo por display touch screen

Capítulo 5. Resultados Obtidos 45

(a) Primeiro ponto. (b) Segundo ponto.

(c) Terceiro ponto. (d) Quarto ponto.

(e) Teste completo.

Figura 41 – Teste do display. (Fonte: Elaborada pelo autor)

5.4 Implementação do Controle

Com o display funcionando, após a observação da semelhança dos códigos geradospelo STemWin, para a criação de botões, e, o código presente no programa exemplo, foipossível realizar a implementação do controle baseando-se no programa de demonstração(Heyaodz, 2014).

O STemWin se trata de uma biblioteca que serve para ativar e ajudar na imple-mentação das telas sensíveis ao toque com o uso dos microcontroladores STM32.

Inicialmente foi feito um quadro (frame) na qual será posicionado os 4 botões paraas ações já citadas no capítulo 3.

Em seguida, foi implementado os botões e posicionados no quadro para o melhoraproveitamento possível, como pode-se observar na Figura 8.

Page 47: controle de protótipo de veículo por display touch screen

Capítulo 5. Resultados Obtidos 46

No código (Apêndice A), é mostrado, entre as linhas 108 a 147, a programaçãoresponsável pela configuração do tamanho e a posição do quadro (Frame) e dos botões.As variáveis iniciadas com “WM” são variáveis já definidas relacionadas aos componentesa serem adicionadas em uma janela. Neste caso, foi utilizado o “WM_CF_SHOW”, queé para mostrar na janela os componentes criados.

5.5 Teste do Controle

Para verificar o funcionamento do controle, foi feito a montagem utilizando LEDs(Figura 42) e adicionado ao código, entre as linhas 66 a 99, uma verificação do pressiona-mento dos botões, sendo que para cada botão foi relacionado uma ação diferente.

Desta forma, foi feito a conexão dos LEDs com os pinos PA9, PA10 e PA11 dokit, sendo estes configurados como saída, controlados pelo pressionamento dos botõesimplementados, como mostra no código citado acima.

O teste foi realizado de forma a simular as ações do protótipo. Ou seja, ao pres-sionar “Accel”, acende-se o LED mais a frente (Figura 42a), “Left”, acende-se o LED àesquerda e o LED mais a frente (Figura 42b), simulando o protótipo andando para afrente tendo uma inclinação à esquerda. Da mesma forma é feito ao pressionar “Right”,porém, acendendo o LED mais à direita (Figura 42c). Por fim, ao pressionar “Brake”,Apaga-se todos os LEDs (Figura 42d).

Tal comportamento pode ser visto abaixo (Figura 42).

5.6 Configuração e Teste do BluetoothAntes de iniciar a comunicação entre os módulos, foi necessário, em um deles,

realizar a configuração para que o mesmo trabalhe como mestre.

Para fazer esta configuração, fez-se o uso do conversor FT232. Desta forma, foipossível, de modo simples, efetuar a comunicação entre o módulo e o computador, sendoneste último, utilizado o terminal de comunicação serial.

Inicialmente, segundo o datasheet deste módulo (ITEAD, 2014), pede-se para fazera ligação do pino “Key” e a alimentação do mesmo ao mesmo tempo. Porém, comopode-se observar na Figura 24b, não se encontra o pino citado. Através de um teste decontinuidade, no entanto, pode-se verificar que o pino descrito como “WAKEUP”, é, naverdade, o pino em questão.

Assim, fez-se a conexão da forma como informado pela fabricante e verificou-seque o módulo entrou no modo AT, ou seja, entrou em um modo que permite ao usuário

Page 48: controle de protótipo de veículo por display touch screen

Capítulo 5. Resultados Obtidos 47

(a) Botão “Accel”. (b) Botão “Left”.

(c) Botão “Right”. (d) Botão “Break”.

Figura 42 – Teste do controle. (Fonte: Elaborada pelo autor)

realizar as configurações necessárias para o funcionamento. Tal modo pôde ser verificadoenviando o comando “AT” pelo terminal, recebendo um “OK” como resposta do HC-05.

Na Figura 43, está a resposta do módulo aos comandos:

∙ AT

∙ AT+VERSION?

∙ AT+ROLE=1

∙ AT+NAME = Controle

∙ AT+NAME?

∙ AT+CMODE=0

∙ AT+BIND=2014,5,153040

∙ AT+INIT

Page 49: controle de protótipo de veículo por display touch screen

Capítulo 5. Resultados Obtidos 48

∙ AT+INQ

Figura 43 – Configuração do módulo HC-05. (Fonte: Elaborada pelo autor)

Sendo que, para os comandos “AT+VERSION?” e “AT+NAME?”, é enviado, pelomódulo, a resposta para a pergunta, seguido de um “OK”, e, para o comando “AT+INQ”,é mostrado o endereço do outro módulo a ser conectado, seguido também de um “OK”.Após feita a configuração do módulo, fez-se um teste para verificar o funcionamento domesmo. Foi montado então o circuito mostrado na Figura 44, no qual está conectado ummódulo ao kit para enviar os dados do controle, e outro HC-05 conectado ao computadoratravés do conversor FT232 para receber os dados e imprimir na tela.

Figura 44 – Montagem para o teste dos módulos HC-05. (Fonte: Elaborada pelo autor)

Foi necessário fazer também uma alteração no código, entre as linhas 66 a 99. Paraque este teste funcione, é preciso utilizar a USART para poder realizar a comunicaçãoentre os dois módulos. Desta forma, foi configurada a USART, nos pinos PC9 (TX) ePC10(RX) e substituído o código do teste com os LEDs pelo código da transmissão dosdados. O código da USART pode ser visto no Apêndice B.

Page 50: controle de protótipo de veículo por display touch screen

Capítulo 5. Resultados Obtidos 49

Após ter realizado a troca dos códigos e verificado o pareamento entre os doismódulos, pressionando uma sequência de: “Accel”, “Left”, “Accel”, “Right”, “Accel”,“Break”, obteve-se o seguinte resultado impresso na tela do computador:

Figura 45 – Resultado do pressionamento dos botões. (Fonte: Elaborada pelo autor)

Ou seja, foi obtido o resultado esperado, visto que obteve-se os caracteres corres-pondentes para cada botão do controle.

5.7 Comunicação Controle - Protótipo

Primeiramente, fez-se a implementação do código do protótipo para que o mesmopossa receber dados via comunicação serial, conforme pode ser visto no Apêndice C.

As principais alterações feitas no código original foram a adição da interrupçãopela USART, a obtenção do caracter transmitido pelo controle e a associação dos caraterespara cada ação, sendo “A” para fazer o protótipo andar para frente, “L” para virar paraa esquerda, “R” para virar para a direita e “B” para fazê-lo parar.

Para habilitar a USART nas mesmas configurações do módulo Bluetooth, adicionou-se ao arquivo include(.h) (Anexo D) a seguinte linha de comando: “#use rs232(BAUD=38400,parity=N, BITS=8, XMIT=pin_c6, RCV=pin_c7)”.

Após realizado a implementação do código, fez-se uma simulação com a utilizaçãodo software Proteus, no qual realizou-se a seguinte montagem:

Para esta simulação foi conectado o “Virtual Terminal” às portas “RX” e “TX”do microcontrolador, e um osciloscópio nas saídas do sinal PWM do PIC. Desta forma,obteve-se o resultado da Figura 47.

Como pode-se observar, ao enviar a letra “A”, os sinais PWM responsáveis pelofuncionamento dos motores são iguais, ou seja, com os dois motores na mesma velocidade,

Page 51: controle de protótipo de veículo por display touch screen

Capítulo 5. Resultados Obtidos 50

Figura 46 – Montagem para simulação da USART do PIC. (Fonte: Elaborada pelo autor)

o protótipo tende a andar reto para frente. Já quando é enviado as letras “L” ou “R”,percebe-se que os sinais PWM possuem uma razão cíclica diferentes, fazendo com que osmotores tenham também velocidades diferentes. Por fim, ao enviar “B”, o sinal vai a zero,fazendo o protótipo parar.

(a) Envio do caractere “A”. (b) Envio do caractere “L”.

(c) Envio do caractere “R”. (d) Envio do caractere “B”.

Figura 47 – Resultado do envio dos caracteres “A”, “L,”, “R” e “B”. (Fonte: Elaboradapelo autor)

Após realizado ter realizado a simulação e obtido resultados positivos, fez-se amontagem da Figura 48, à qual está conectado o módulo Bluetooth nos pinos 25 e 26 doPIC (PC6(TX) e PC7(RX)) respectivamente).

Verificado o pareamento entre os dois módulos HC-05, pressionou-se os botões dodisplay, porém, não foi possível obter os resultados que eram esperados.

Foi verificado novamente as conexões, o programa implementado no PIC e a co-municação entre os módulos e não foi possível ainda encontrar o que possa estar errado,visto que foram realizados os testes do controle, da comunicação Bluetooth e a simulaçãodo código do protótipo, obtendo-se resultados positivos.

Page 52: controle de protótipo de veículo por display touch screen

Capítulo 5. Resultados Obtidos 51

Figura 48 – Montagem do protótipo com o HC-05. (Fonte: Elaborada pelo autor)

Apesar de não estar atingindo o resultado esperado com o protótipo, serão feitoestudos mais específicos sobre o PIC e novas verificações nas conexões realizadas entre oHC-05 e o protótipo.

Page 53: controle de protótipo de veículo por display touch screen

52

6 CONCLUSÃO

A partir da realização deste trabalho, pôde-se verificar a dificuldade na imple-mentação de um display touch screen, principalmente se os documentos dos materiaisutilizados se encontrarem em uma linguagem pouco conhecida, como o chinês.

Porém, com pesquisas realizadas e ajudas recebidas durante o processo, obteve-seresultados positivos em relação aos objetivos propostos, visto que, através do kit HY-STM32_100P e dos módulos Bluetooth, foi possível elaborar um controle via conexão semfio para um protótipo de veículo.

Apesar de não ter sido analisado como é feita uma comunicação sem fio, verificou-se que a troca de dados entre um módulo Bluetooth e um microcontrolador é realizado deforma simples, através de uma comunicação serial.

Mesmo com as dificuldades apontadas, foi possível tirar grande proveito na apren-dizagem em relação às pesquisas e à programação. Foi possível também, observar o fun-cionamento da parte do código, no qual ocorre a interação entre o usuário e o display,sendo esta parte, a configuração dos botões que serão apresentadas na tela de toque parao usuário final. A partir da conexão do kit com o protótipo e dos testes realizados, foipossível ainda constatar que é possível utilizar este mesmo display para outras funções.Como por exemplo, utilizá-lo como interruptor, para ligar/desligar uma iluminação ououtros aparelhos programáveis, visto que o uso de telas de toque vem aumentando cadavez mais no mercado.

Pode-se realizar, futuramente, estudos mais específicos sobre a utilização do STemWin,pelo fato deste pacote oferecer várias outras funções relacionadas à tela sensível ao toque etambém pela facilidade que a mesma pode oferecer após o conhecimento de como utilizá-lo corretamente. Desta forma seria possível a verificação sobre outras aplicabilidades dodisplay touch screen.

Page 54: controle de protótipo de veículo por display touch screen

53

REFERÊNCIAS

Bellis, 2014 BELLIS, M. Who Invented Touch Screen Technology? Disponível em:http://inventors.about.com/od/tstartinventions/a/Touch-Screen.htm. Acesso em: 01 denov. 2014.

Alves (2012), ALVES, P. M. G. Funcionamento, Vanta-gens e Desvantagens da Diversas Tecnologias. Disponível em:http://alumni.ipt.pt/∼pmgalves/Funcionamento_Tecnologias.pdf. Acesso em: 23de jun. 2014.

ARM (2014), ARM THE ARCHITECTURE FOR THE DIGITAL WORLD.Processors. Disponível em: http://www.arm.com/products/processors/index.php. Acessoem: 13 de jun. 2014.

Bluetooth (2014), BLUETOOTH. Fast Facts. Disponível em:http://www.bluetooth.com/Pages/Fast-Facts.aspx. Acesso em: 23 de jun. 2014.

Museum (2014), COMPUTER HISTORY MUSEUM. ApolloGuidance Computer and Display Keyboard. Disponível em:http://www.computerhistory.org/collections/catalog/102626973. Acesso em: 25de jun. 2014.

Gazzoni Filho (2013), GAZZONI FILHO, D. L. Sistemas Embarcados e de Tempo Real- Módulo I Data: 30 de set. 2013

Heyaodz (2014), HEYAODZ. 2.4 LGDP4532. (CD)

Heyaodz (2014), HEYAODZ. HY-STM32_100P. (CD)

ITEAD (2014), ITEAD STUDIO. HC-05 - Blu-etooth to Serial Port Module. Disponível em:ftp://imall.iteadstudio.com/IM120417010_BT_Shield_v2.2/DS_BluetoothHC05.pdf.Acesso em: 15 de out. 2014.

Lopes Filho, 2007 LOPES FILHO, H. INTERFACE TOUCHSCREEN. Disopnível em:http://www.expounimedcuritiba.com.br/painelgpa/uploads/imagens/files/EngComputacao/Projetos%20Finais/2007/Hildeberto%20Lopes%20Filho%20-%20INTERFACE%20TOUCHSCREEN.pdf. Acesso em: 10 de nov. 2014.

Microchip (2014), MICROCHIP TECHNOLOGY INC. PIC18FXX2 Datasheet.Disponível em: http://ww1.microchip.com/downloads/en/DeviceDoc/39564c.pdf. Acessoem 15 de jun. 2014.

Page 55: controle de protótipo de veículo por display touch screen

Referências 54

Microchip (2014), MICROCHIP TECHNOLOGY INC. PIC R○ Microcontrolers. Dispo-nível em: http://www.microchip.com/pagehandler/en-us/products/picmicrocontrollers.Acesso em: 15 de jun. 2014.

NASA (2014), NATIONAL AERONAUTICS AND SPACE ADMINIS-TRATION. Computers On Board The Apollo Spacecraft. Disponível em:http://history.nasa.gov/computers/Part1.html. Acesso em: 25 de jun. 2014.

Segger (2014), SEGGER. J-Link PLUS. Disponível em: https://www.segger.com/j-link-plus.html. Acesso em: 24 de jun. 2014.

STMicroelectronics (2014), STMICROELECTRONICS. STM32F103VE. Dispoível em:http://www.st.com/web/catalog/mmc/FM141/SC1169/SS1031/LN1565/PF164491.Acesso em: 24 de jun. 2014.

STMicroelectronics (2014), STMICROELECTRONICS. UM0427 - User Manual:ARM R○-based 32-bit MCU STM32F101xx and STM32F103xx firmware library. Dispoívelem: http://www.datasheetarchive.com/UM0427-datasheet.html. Acesso em 13 de jun.2014.

Alves (2012), TIMÓTEO, L. Touch Screens. Disponível em:http://pt.slideshare.net/MarioTimotius/touch-screens1. Acesso em 15 de nov.2014.

Page 56: controle de protótipo de veículo por display touch screen

55

APÊNDICE A – CÓDIGO DEIMPLEMENTAÇÃO DO CONTROLE

1 #inc lude <s td de f . h>2 #inc lude " . . \ GUIinc\GUI . h "3 #inc lude " . . \ GUIinc\FRAMEWIN. h"4 #inc lude " . . \ GUIinc\BUTTON. h"567 /*********************************************************************8 *9 * S t a t i c v a r i a b l e s

10 *11 **********************************************************************12 */1314 s t a t i c BUTTON_Handle Button [ 4 ] ;15 s t a t i c FRAMEWIN_Handle Frame [ 1 ] ;16 s t a t i c FRAMEWIN_Handle InfoWin [ 1 ] ;17 s t a t i c i n t ButtonSizeX , ButtonSizeY ;1819 #d e f i n e LED_LEDA_ON( ) GPIO_SetBits (GPIOA, GPIO_Pin_9 ) ; //LEDA_ON20 #d e f i n e LED_LEDA_OFF( ) GPIO_ResetBits (GPIOA, GPIO_Pin_9 ) ; //LEDA_OFF2122 #d e f i n e LED_LEDL_ON( ) GPIO_SetBits (GPIOA, GPIO_Pin_10 ) ; //LEDL_ON23 #d e f i n e LED_LEDL_OFF( ) GPIO_ResetBits (GPIOA, GPIO_Pin_10 ) ; //LEDL_OFF2425 #d e f i n e LED_LEDR_ON( ) GPIO_SetBits (GPIOA, GPIO_Pin_11 ) ; //LEDR_ON26 #d e f i n e LED_LEDR_OFF( ) GPIO_ResetBits (GPIOA, GPIO_Pin_11 ) ; //LEDR_OFF2728 /*********************************************************************29 *30 * S t a t i c r o u t i n e s31 *32 **********************************************************************33 */3435 s t a t i c void BgColor ( void )36 {3738 GUI_SetBkColor (GUI_BLACK) ; // S e l e c i o n a r cor de fundo do FRAME39 GUI_Clear ( ) ;4041 }4243 /*********************************************************************44 *45 * Exported r o u t i n e s46 *47 **********************************************************************48 */49

Page 57: controle de protótipo de veículo por display touch screen

APÊNDICE A. Código de Implementação do Controle 56

50 i n t GUIDEMO_Delay( i n t t ) //Tempo de r e sp o s ta dos botoes51 {52 i n t r = 0 ;53 i n t tm , va lue ;54 tm = GUI_GetTime ( ) ;5556 do57 {58 value = GUI_GetTime ( ) − tm ;59 GUI_Delay ( 1 0 ) ;60 }61 whi le ( ( va lue < t ) && !GUIDEMO_Check ( ) ) ;6263 re turn r ;64 }6566 i n t GUIDEMO_Check( void )67 {68 i n t c = GUI_GetKey ( ) ;6970 i f ( ( c == ’ a ’ ) | | ( c==’A’ ) ) //Caso aper te o " Accel "71 {72 LED_LEDA_ON( ) ;73 LED_LEDL_OFF( ) ;74 LED_LEDR_OFF( ) ;75 }7677 i f ( ( c == ’ l ’ ) | | ( c==’L ’ ) ) //Caso aper te o " Le f t "78 {79 LED_LEDL_ON( ) ;80 LED_LEDA_ON( ) ;81 LED_LEDR_OFF( ) ;82 }8384 i f ( ( c == ’ r ’ ) | | ( c==’R’ ) ) //Caso aper te o " Right "85 {86 LED_LEDR_ON( ) ;87 LED_LEDA_ON( ) ;88 LED_LEDL_OFF( ) ;89 }9091 i f ( ( c == ’b ’ ) | | ( c==’B’ ) ) //Caso aper te o " Break "92 {93 LED_LEDA_OFF( ) ;94 LED_LEDL_OFF( ) ;95 LED_LEDR_OFF( ) ;96 }9798 re turn 0 ;99 }

100101 /*********************************************************************102 *103 * Control_main ( ) :104 *105 **********************************************************************106 */

Page 58: controle de protótipo de veículo por display touch screen

APÊNDICE A. Código de Implementação do Controle 57

107108 void Control_main ( void )109 {110111 GUI_CURSOR_Show( ) ;112113 /* Para c a l c u l a r a pos i cao e o tamanho do FrameWin [ 0 ] */114 ButtonSizeX = 90 ;115 ButtonSizeY = 70 ;116117 /* Criar o Frame*/118 Frame [ 0 ] = FRAMEWIN_Create( " Contro le para Protot ipo " , NULL, WM_CF_SHOW,119 LCD_GetXSize ( ) − 320 , LCD_GetYSize ( ) − 240 ,320 ,240) ;120121 /* Config . Frame*/122 InfoWin [ 0 ] = WM_CreateWindowAsChild (0 , 0 , 0 , 0 , WM_GetFirstChild (Frame [ 0 ] ) ,123 WM_CF_SHOW, &BgColor , 0 ) ;124 /* Config . Botao 1*/125 Button [ 0 ] = BUTTON_CreateAsChild (110 ,4 , ButtonSizeX , ButtonSizeY , InfoWin [ 0 ] ,126 ’A’ , WM_CF_SHOW) ;127128 /* Config . Botao 2*/129 Button [ 1 ] = BUTTON_CreateAsChild (4 ,77 , ButtonSizeX , ButtonSizeY , InfoWin [ 0 ] ,130 ’L ’ , WM_CF_SHOW) ;131132 /* Config . Botao 3*/133 Button [ 2 ] = BUTTON_CreateAsChild (110 ,150 , ButtonSizeX , ButtonSizeY , InfoWin [ 0 ] ,134 ’B’ , WM_CF_SHOW;135136 /* Config . Botao 4*/137 Button [ 3 ] = BUTTON_CreateAsChild (220 , 77 , ButtonSizeX , ButtonSizeY , InfoWin [ 0 ] ,138 ’R’ , WM_CF_SHOW) ;139140141 BUTTON_SetText( Button [ 0 ] , " Accel " ) ; //Texto do Botao 1142 BUTTON_SetText( Button [ 1 ] , " Le f t " ) ; //Texto do Botao 2143 BUTTON_SetText( Button [ 2 ] , " Break " ) ; //Texto do Botao 3144 BUTTON_SetText( Button [ 3 ] , " Right " ) ; //Texto do Botao 4145146 GUIDEMO_Delay(500000 ) ; //Manter o d i s p l a y l igado , 1 ~ 0 .008 segundos .147 }

Page 59: controle de protótipo de veículo por display touch screen

58

APÊNDICE B – COMUNICAÇÃO USAR

1 i n t GUIDEMO_Check( void )2 {3 i n t c = GUI_GetKey ( ) ;45 i f ( c != 0)6 {7 whi le ( ! USART_GetFlagStatus (UART4, USART_FLAG_TXE) )8 {9 }

10 USART_SendData(UART4, c ) ;11 }12 }

Page 60: controle de protótipo de veículo por display touch screen

59

APÊNDICE C – CÓDIGO DO PROTÓTIPO

1 #inc lude "C: \ Users \Hugo\Desktop\ Pro je to \PIC01\hugo . h "23 // Determina a ve l o c idade i n i c i a l ( va l o r DO pwm de 0 − 1023) .4 #d e f i n e VEL_INICIAL 40056 // Var i ave i s u t i l i z a d a s para contar a duracao dos pu l so s dos encoders .78 // A palavra VOLATILE i n d i c a que e s s a s v a r i a v e i s sao aces sadas f o r a do programa9 // p r i n c i p a l .

10 v o l a t i l e SIGNED INT16 cntA , cntB ;11 v o l a t i l e char Recebe ;1213 // Constantes DO cont ro l ador PID .14 const FLOAT Kp = 2 . 1 ; // Constante p ropor c i ona l .15 const FLOAT Ki = 0 . 5 ; // Constante i n t e g r a l .16 const FLOAT Kd = 0 . 1 ; // Constante d i f e r e n c i a l .1718 SIGNED INT16 VelA ; // Contem a ve l o c idade da roda A.19 SIGNED INT16 VelB ; // Contem a ve l o c idade da roda B.2021 FLOAT Err ; // Erro u t i l i z a d o no PID .22 FLOAT I ; // Soma dos e r r o s ao longo do tempo .23 FLOAT Err_Tmp ; // Erro a n t e r i o r .24 FLOAT D; // Di f e r enca ent re o e r ro atua l e o a n t e r i o r .25 FLOAT Correcao ; // Valor a s e r a justado na ve l o c idade de B.2627 // in t8 LED;28 i n t16 FRENTE_B, FRENTE_A,TRAS_B, TRAS_A;2930 #int_rda31 void Receive_Usart ( void )32 {33 Recebe = getc ( ) ; // Pega o c a r a c t e r no r e g i s t r a d o r da UART3435 IF ( Recebe == ’A’ ) // Caso receba o c a r a c t e r "A"36 {37 // Liga as rodas para andar para f r e n t e .38 output_high (FRENTE_B) ;39 output_high (FRENTE_A) ;4041 // Ajusta o duty DO pwm da roda A e B.42 set_pwm2_duty ( VelA ) ; // PWM2 − > Roda A.43 set_pwm1_duty ( VelB ) ; // PWM1 − > Roda B.4445 // Zera os contadores dos encoders .46 cntA = cntB = 0 ;4748 // H a b i l i t a chave g l o b a l de in t e r rupcao para contagem de49 // pu l so s dos encoders .50 enab l e_inte r rupt s (GLOBAL) ;5152 // Pega a ve l o c idade das rodas a t rave s dos encoders .

Page 61: controle de protótipo de veículo por display touch screen

APÊNDICE C. Código do Protótipo 60

53 delay_ms ( 4 0 0 ) ; // Espera 200ms .5455 // D e s a b i l i t a a contagem de pu l so s dos encoders .56 // d i s a b l e _ i n t e r r u p t s (GLOBAL) ;5758 // Controlador P. I .D.59 // Ajusta a ve l o c idade da roda B para f i c a r i guar a roda A.60 Err = cntA − cntB ; // Calcu la o Erro .61 I += Err ; // Add o e r ro ao I ( Calcula a i n t e g r a l DO er ro ) .6263 D = Err − Err_Tmp ; // Calcu la o d i f e r e n c i a l DO er ro .64 Err_Tmp = Err ; // Salva o e r ro atua l .65 Correcao = Err * Kp + I * Ki + D * Kd; // Calcu la o a j u s t e da roda B.66 VelB = VelB + ( (SIGNED INT16) Correcao ) ; // Calcula a nova ve l o c idade .6768 set_pwm2_duty ( VelB ) ; // Ajusta a ve l o c idade da roda B.69 }7071 IF ( Recebe == ’B’ ) // Caso receba o c a r a c t e r "B"72 {73 set_pwm1_duty ( 1 7 0 ) ;74 set_pwm2_duty ( 1 7 0 ) ;7576 // Inve r t e o s en t ido da roda A.77 output_low (FRENTE_A) ;78 output_high (TRAS_A) ;7980 // Inve r t e o s en t ido da roda B.81 output_low (FRENTE_B) ;82 output_high (TRAS_B) ;8384 delay_ms (150) ;8586 // Des l i ga os motores .87 set_pwm1_duty ( 0 ) ;88 set_pwm2_duty ( 0 ) ;8990 // Espera o motor parar .91 delay_ms ( 2 0 0 ) ;92 }9394 IF ( Recebe == ’R’ ) // Caso receba o c a r a c t e r "R"95 {96 // Ajusta o duty DO pwm da roda A e B.97 set_pwm2_duty ( 4 0 0 ) ; // PWM2 − > Roda A.98 set_pwm1_duty ( 3 0 0 ) ; // PWM1 − > Roda B.99 }

100101 IF ( Recebe == ’L ’ ) // Caso receba o c a r a c t e r "L"102 {103 // Ajusta o duty DO pwm da roda A e B.104 set_pwm2_duty ( 3 0 0 ) ; // PWM2 − > Roda A.105 set_pwm1_duty ( 4 0 0 ) ; // PWM1 − > Roda B.106 }107108 I = 0 ;109 Err_Tmp = 0 ;

Page 62: controle de protótipo de veículo por display touch screen

APÊNDICE C. Código do Protótipo 61

110 }111112113 void main ( )114 {115 enab l e_inte r rupt s ( int_rda ) ;116 enab l e_inte r rupt s (GLOBAL) ;117118 setup_adc_ports (NO_ANALOGS) ;119 setup_adc (ADC_OFF) ;120 setup_spi (SPI_SS_DISABLED ) ;121 setup_wdt (WDT_OFF) ;122 setup_timer_0 (RTCC_INTERNAL) ;123 setup_timer_1 (T1_DISABLED) ;124125 // Coloca os p inos de c o n t r o l e de s en t ido em 0V para o ca r r inho nao andar126 // durante a con f i gu racao .127 output_low (FRENTE_B) ;128 output_low (FRENTE_A) ;129 output_low (TRAS_B) ;130 output_low (TRAS_A) ;131132 // Conf igura o CCP1 e 2 para modo PWM.133 setup_ccp1 (CCP_PWM) ;134 setup_ccp2 (CCP_PWM) ;135136 // Ajusta a f r e q u e n c i a DO PWM.137 // Fpwm = Fosc / (4 * t2d iv * ( t2max + 1)138 // Nesse caso : Fpwm = 8e6 / (4 * 16 * (255 + 1) = 488 , 6 Hz139 setup_timer_2 (T2_DIV_BY_16, 255 , 1 ) ;140141 set_pwm2_duty ( 0 ) ; // PWM2 − > Roda A.142 set_pwm1_duty ( 0 ) ; // PWM1 − > Roda B.143144 // H a b i l i t a as i n t e r r u p c o e s exte rnas ( INT0 e INT1) para o encoder .145 enab l e_inte r rupt s (INT_EXT) ;146 enab l e_inte r rupt s (INT_EXT1) ;147148 // Def ine a ve l o c idade i n i c i a l .149 VelA = VEL_INICIAL ;150 VelB = VEL_INICIAL ;151152 // Loop i n f i n i t o153 WHILE (TRUE)154 {155 }156 }157158 // Inte r rupcao INT0 , conta pu l so s DO encoder A.159 // Cada vez que der um pulso pino RB0, incrementa o contador de pu l so s A.160 #INT_EXT161 void EXT_isr (VOID)162 {163 cntA++;164 }165166 // Inte r rupcao INT0 , conta pu l so s DO encoder B.

Page 63: controle de protótipo de veículo por display touch screen

APÊNDICE C. Código do Protótipo 62

167 // Cada vez que der um pulso pino RB1, incrementa o contador de pu l so s B.168 #INT_EXT1169 void EXT1_isr (VOID)170 {171 cntB++;172 }

Page 64: controle de protótipo de veículo por display touch screen

63

ANEXO A – CONFIGURAÇÃO DOSPERIFÉRICOS

1 #inc lude " . . \ App\ i n c l u d e s . h "23 /*******************************************************************************4 * Function Name : RCC_Configuration5 * Desc r ip t i on : Conf igures the d i f f e r e n t system c l o c k s .6 * Input : None7 * Output : None8 * Return : None9 *******************************************************************************/

1011 #d e f i n e TP_CS( ) GPIO_ResetBits (GPIOB, GPIO_Pin_7)12 #d e f i n e TP_DCS( ) GPIO_SetBits (GPIOB, GPIO_Pin_7)13 void tp_Config ( void ) ;14 void Light_PWM( void ) ;1516 void RCC_Configuration ( void )17 {18 ErrorStatus HSEStartUpStatus ;1920 /* RCC system r e s e t ( f o r debug purpose ) */21 RCC_DeInit ( ) ;2223 /* Enable HSE */24 RCC_HSEConfig(RCC_HSE_ON) ;2526 /* Wait t i l l HSE i s ready */27 HSEStartUpStatus = RCC_WaitForHSEStartUp ( ) ;2829 i f ( HSEStartUpStatus == SUCCESS)30 {31 /* Enable Pre f e tch Buf f e r */32 FLASH_PrefetchBufferCmd ( FLASH_PrefetchBuffer_Enable ) ;3334 /* Flash 2 wait s t a t e */35 FLASH_SetLatency (FLASH_Latency_2 ) ;3637 /* HCLK = SYSCLK */38 RCC_HCLKConfig(RCC_SYSCLK_Div1) ;3940 /* PCLK2 = HCLK */41 RCC_PCLK2Config(RCC_HCLK_Div1) ;4243 /* PCLK1 = HCLK/2 */44 RCC_PCLK1Config(RCC_HCLK_Div2) ;4546 /* PLLCLK = 8MHz * 9 = 72 MHz */47 RCC_PLLConfig(RCC_PLLSource_HSE_Div1 , RCC_PLLMul_9) ;4849 /* Enable PLL */50 RCC_PLLCmd(ENABLE) ;

Page 65: controle de protótipo de veículo por display touch screen

ANEXO A. Configuração dos Periféricos 64

5152 /* Wait t i l l PLL i s ready */53 whi le ( RCC_GetFlagStatus (RCC_FLAG_PLLRDY) == RESET)54 {55 }5657 /* S e l e c t PLL as system c lock source */58 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK ) ;5960 /* Wait t i l l PLL i s used as system c lock source */61 whi le (RCC_GetSYSCLKSource ( ) != 0x08 )62 {63 }64 }6566 /* Enable GPIO_LED c lock */67 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |68 RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD, ENABLE) ;69 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE) ;70 }717273 void UnableJTAG( void )74 {7576 RCC−>APB2ENR |= RCC_APB2ENR_AFIOEN; // enable c l o ck f o r Al te rnate Function77 AFIO−>MAPR &= ~(7UL<<24); // c l e a r used b i t78 AFIO−>MAPR |= (4UL<<24); // s e t used b i t s79 }808182 /*******************************************************************************83 * Function Name : GPIO_Configuration84 * Desc r ip t i on : Conf igures the d i f f e r e n t GPIO port s .85 * Input : None86 * Output : None87 * Return : None88 *******************************************************************************/8990 void GPIO_Configuration ( void )91 {92 GPIO_InitTypeDef GPIO_InitStructure ;9394 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |95 RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |96 RCC_APB2Periph_GPIOE , ENABLE) ;9798 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_5 ;99 GPIO_InitStructure .GPIO_Mode = GPIO_Mode_Out_PP;

100 GPIO_InitStructure .GPIO_Mode = GPIO_Mode_Out_PP;101 GPIO_InitStructure . GPIO_Speed = GPIO_Speed_50MHz ;102 GPIO_Init (GPIOB, &GPIO_InitStructure ) ;103104 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_3 |105 GPIO_Pin_13 ; //LCD, LED3106 GPIO_Init (GPIOD, &GPIO_InitStructure ) ;107

Page 66: controle de protótipo de veículo por display touch screen

ANEXO A. Configuração dos Periféricos 65

108 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_12 ;109 GPIO_Init (GPIOC, &GPIO_InitStructure ) ;110111 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_0 ; //LCD112 GPIO_Init (GPIOE, &GPIO_InitStructure ) ;113114 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_1 ; //LCD−RST115 GPIO_Init (GPIOE, &GPIO_InitStructure ) ;116117 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 ;118 GPIO_Init (GPIOA, &GPIO_InitStructure ) ;119120 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 |121 GPIO_Pin_5 | GPIO_Pin_8 | GPIO_Pin_9 |122 GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15 ;123 GPIO_InitStructure . GPIO_Speed = GPIO_Speed_50MHz ;124 GPIO_InitStructure .GPIO_Mode = GPIO_Mode_AF_PP;125 GPIO_Init (GPIOD, &GPIO_InitStructure ) ;126127 /* Set PE. 0 7 (D4) , PE. 0 8 (D5) , PE. 0 9 (D6) , PE. 1 0 (D7) , PE. 1 1 (D8) , PE. 1 2 (D9) ,128 PE. 1 3 ( D10 ) , PE. 1 4 ( D11 ) , PE. 1 5 ( D12) as a l t e r n a t e func t i on push p u l l */129 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 |130 GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 |131 GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15 ;132 GPIO_Init (GPIOE, &GPIO_InitStructure ) ;133134135 /* NE1 c o n f i g u r a t i o n */136 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_7 ;137 GPIO_Init (GPIOD, &GPIO_InitStructure ) ;138139 /* RS */140 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_11 ;141 GPIO_Init (GPIOD, &GPIO_InitStructure ) ;142143 GPIO_SetBits (GPIOD, GPIO_Pin_7 ) ; //CS=1144 GPIO_SetBits (GPIOD, GPIO_Pin_14 | GPIO_Pin_15 | GPIO_Pin_0 | GPIO_Pin_1 ) ;145 GPIO_SetBits (GPIOE, GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 ) ;146 GPIO_ResetBits (GPIOE, GPIO_Pin_0 ) ;147 GPIO_ResetBits (GPIOE, GPIO_Pin_1 ) ; //RESET=0148 GPIO_SetBits (GPIOD, GPIO_Pin_4 ) ; //RD=1149 GPIO_SetBits (GPIOD, GPIO_Pin_5 ) ; //WR=1150 }151152 /*********************************/153 /* Star t USART c o n f i g u r a t i o n */154 /*********************************/155156 void USART_Config( void )157 {158 USART_InitTypeDef USART_InitStructure ;159 GPIO_InitTypeDef GPIO_InitStructure ;160161 RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART4, ENABLE) ;162163 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE) ;164

Page 67: controle de protótipo de veículo por display touch screen

ANEXO A. Configuração dos Periféricos 66

165 GPIO_StructInit(&GPIO_InitStructure ) ;166 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_10 ; //USART4 TX167 GPIO_InitStructure .GPIO_Mode = GPIO_Mode_AF_PP;168 GPIO_Init (GPIOC, &GPIO_InitStructure ) ;169170 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_11 ; //USART4 RX171 GPIO_InitStructure .GPIO_Mode = GPIO_Mode_IN_FLOATING;172 GPIO_Init (GPIOC, &GPIO_InitStructure ) ;173174 USART_InitStructure . USART_BaudRate = 38400 ;175 USART_InitStructure . USART_WordLength = USART_WordLength_8b ;176 USART_InitStructure . USART_StopBits = USART_StopBits_1 ;177 USART_InitStructure . USART_Parity = USART_Parity_No ;178 USART_InitStructure . USART_HardwareFlowControl = USART_HardwareFlowControl_None ;179 USART_InitStructure .USART_Mode = USART_Mode_Rx | USART_Mode_Tx;180181 USART_Init (UART4, &USART_InitStructure ) ;182183 USART_Cmd(UART4,ENABLE) ;184 }185186 /*********************************/187 /* End USART c o n f i g u r a t i o n */188 /*********************************/189190 /*******************************************************************************191 * Function Name : NVIC_Configuration192 * Desc r ip t i on : Conf igures Vector Table base l o c a t i o n .193 * Input : None194 * Output : None195 * Return : None196 *******************************************************************************/197 void NVIC_Configuration ( void )198 {199 NVIC_InitTypeDef NVIC_InitStructure ;200201 //# i f d e f VECT_TAB_RAM202 #i f de f ined (VECT_TAB_RAM)203 /* Set the Vector Table base l o c a t i o n at 0 x20000000 */204 NVIC_SetVectorTable (NVIC_VectTab_RAM, 0x0 ) ;205 #e l i f de f in ed (VECT_TAB_FLASH_IAP)206 NVIC_SetVectorTable (NVIC_VectTab_FLASH, 0x2000 ) ;207 #e l s e /* VECT_TAB_FLASH */208 /* Set the Vector Table base l o c a t i o n at 0 x08000000 */209 NVIC_SetVectorTable (NVIC_VectTab_FLASH, 0x0 ) ;210 #e n d i f211212 /* Conf igure the NVIC Preemption P r i o r i t y Bi t s */213 NVIC_PriorityGroupConfig ( NVIC_PriorityGroup_0 ) ;214 }215216 void RCC1_Configuration ( void )217 {218 ErrorStatus HSEStartUpStatus ;219220 /* RCC system r e s e t ( f o r debug purpose ) */221 RCC_DeInit ( ) ;

Page 68: controle de protótipo de veículo por display touch screen

ANEXO A. Configuração dos Periféricos 67

222223 /* Enable HSE */224 RCC_HSEConfig(RCC_HSE_ON) ;225226 /* Wait t i l l HSE i s ready */227 HSEStartUpStatus = RCC_WaitForHSEStartUp ( ) ;228229 i f ( HSEStartUpStatus == SUCCESS)230 {231 /* HCLK = SYSCLK */232 RCC_HCLKConfig(RCC_SYSCLK_Div1) ;233234 /* PCLK2 = HCLK */235 RCC_PCLK2Config(RCC_HCLK_Div1) ;236237 /* PCLK1 = HCLK/2 */238 RCC_PCLK1Config(RCC_HCLK_Div2) ;239240 /* Flash 2 wait s t a t e */241 FLASH_SetLatency (FLASH_Latency_2 ) ;242 /* Enable Pre f e tch Buf f e r */243 FLASH_PrefetchBufferCmd ( FLASH_PrefetchBuffer_Enable ) ;244245 /* PLLCLK = 8MHz * 9 = 72 MHz */246 RCC_PLLConfig(RCC_PLLSource_HSE_Div1 , RCC_PLLMul_9) ;247248 /* Enable PLL */249 RCC_PLLCmd(ENABLE) ;250251 /* Wait t i l l PLL i s ready */252 whi le ( RCC_GetFlagStatus (RCC_FLAG_PLLRDY) == RESET)253 {254 }255256 /* S e l e c t PLL as system c lock source */257 RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK ) ;258259 /* Wait t i l l PLL i s used as system c lock source */260 whi le (RCC_GetSYSCLKSource ( ) != 0x08 )261 {262 }263 }264265 /* TIM1, GPIOA and GPIOB c lock enable */266 RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_TIM1 |267 RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB |268 RCC_APB2Periph_GPIOD, ENABLE) ;269 }270271 void BSP_Init ( void )272 {273 /* System Clocks Conf igurat ion */274 RCC1_Configuration ( ) ;275276 GPIO_Configuration ( ) ;277278 /* NVIC c o n f i g u r a t i o n */

Page 69: controle de protótipo de veículo por display touch screen

ANEXO A. Configuração dos Periféricos 68

279 NVIC_Configuration ( ) ;280281 //USART1_InitConfig (115200 ) ;282 USART_Config ( ) ;283284 tp_Config ( ) ;285 RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE) ;286287 FSMC_LCD_Init ( ) ;288 Light_PWM ( ) ;289 }290291 CPU_INT32U BSP_CPU_ClkFreq ( void )292 {293 RCC_ClocksTypeDef rcc_c locks ;294 RCC_GetClocksFreq(& rcc_c locks ) ;295 re turn ( (CPU_INT32U) rcc_c locks . HCLK_Frequency ) ;296 }297298 INT32U OS_CPU_SysTickClkFreq ( void )299 {300 INT32U f r e q ;301 f r e q = BSP_CPU_ClkFreq ( ) ;302 re turn ( f r e q ) ;303 }304305 void OS_CPU_SysTickInit ( void )306 {307 RCC_ClocksTypeDef rcc_c locks ;308 INT32U cnts ;309 RCC_GetClocksFreq(& rcc_c locks ) ;310 cnts = (INT32U) rcc_c locks . HCLK_Frequency/OS_TICKS_PER_SEC;311 SysTick_Config ( cnts ) ;312 }313314 void Light_PWM( void )315 {316 TIM_TimeBaseInitTypeDef TIM4_TimeBaseStructure ;317 TIM_OCInitTypeDef TIM4_OCInitStructure ;318 TIM_BDTRInitTypeDef TIM4_BDTRInitStructure ;319 GPIO_InitTypeDef GPIO_InitStructure ;320321 u16 CCR1_Val = 0 x f f f f ;322323 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE) ;324325 GPIO_PinRemapConfig (GPIO_Remap_TIM4 , ENABLE) ;326327 TIM_DeInit (TIM4 ) ;328329 /* Time Base c o n f i g u r a t i o n */330 TIM4_TimeBaseStructure . TIM_Prescaler = 0x00 ;331 TIM4_TimeBaseStructure . TIM_CounterMode = TIM_CounterMode_Up ;332 TIM4_TimeBaseStructure . TIM_Period = 0xFFFF ;333 TIM4_TimeBaseStructure . TIM_ClockDivision = 0x0 ;334 TIM4_TimeBaseStructure . TIM_RepetitionCounter = 0x0 ;335

Page 70: controle de protótipo de veículo por display touch screen

ANEXO A. Configuração dos Periféricos 69

336 TIM_TimeBaseInit (TIM4,&TIM4_TimeBaseStructure ) ;337338 /* Channel 1 , 2 ,3 and 4 Conf igurat ion in PWM mode */339 TIM4_OCInitStructure .TIM_OCMode = TIM_OCMode_PWM2;340 TIM4_OCInitStructure . TIM_OutputState = TIM_OutputState_Enable ;341 TIM4_OCInitStructure . TIM_Pulse = CCR1_Val ;342 TIM4_OCInitStructure . TIM_OCPolarity = TIM_OCPolarity_Low ;343 TIM4_OCInitStructure . TIM_OCNPolarity = TIM_OCNPolarity_Low ;344 TIM4_OCInitStructure . TIM_OCIdleState = TIM_OCIdleState_Set ;345 TIM4_OCInitStructure . TIM_OCNIdleState = TIM_OCIdleState_Reset ;346347 TIM_OC2Init (TIM4,&TIM4_OCInitStructure ) ;348349 /* Automatic Output enable , Break , dead time and lock c o n f i g u r a t i o n */350 TIM4_BDTRInitStructure . TIM_OSSRState = TIM_OSSRState_Enable ;351 TIM4_BDTRInitStructure . TIM_OSSIState = TIM_OSSIState_Enable ;352 TIM4_BDTRInitStructure . TIM_LOCKLevel = TIM_LOCKLevel_1 ;353 TIM4_BDTRInitStructure . TIM_DeadTime = 0x75 ;354 TIM4_BDTRInitStructure . TIM_Break = TIM_Break_Enable ;355 TIM4_BDTRInitStructure . TIM_BreakPolarity = TIM_BreakPolarity_High ;356 TIM4_BDTRInitStructure . TIM_AutomaticOutput = TIM_AutomaticOutput_Enable ;357358 TIM_BDTRConfig(TIM4,&TIM4_BDTRInitStructure ) ;359360 /* TIM1 counter enable */361 TIM_Cmd(TIM4,ENABLE) ;362 }363364 void tp_Config ( void )365 {366367 GPIO_InitTypeDef GPIO_InitStructure ;368 SPI_InitTypeDef SPI_Ini tStructure ;369370 //SPI1 Periph c l o ck enable371 RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1 ,ENABLE) ;372373 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 ;374 GPIO_InitStructure . GPIO_Speed = GPIO_Speed_50MHz ;375 GPIO_InitStructure .GPIO_Mode = GPIO_Mode_AF_PP;376 GPIO_Init (GPIOA, &GPIO_InitStructure ) ;377378 /* Conf igure PB.12 as Output push−pul l , used as Flash Chip s e l e c t */379 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_7 ;380 GPIO_InitStructure . GPIO_Speed = GPIO_Speed_50MHz ;381 GPIO_InitStructure .GPIO_Mode = GPIO_Mode_Out_PP;382 GPIO_Init (GPIOB, &GPIO_InitStructure ) ;383384 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_4 ; //SPI1 CS1385 GPIO_Init (GPIOC, &GPIO_InitStructure ) ;386 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_12 ; //SPI1 CS4387 GPIO_Init (GPIOB, &GPIO_InitStructure ) ;388 GPIO_InitStructure . GPIO_Pin = GPIO_Pin_4 ; //SPI1 NSS389 GPIO_Init (GPIOA, &GPIO_InitStructure ) ;390391 GPIO_SetBits (GPIOC, GPIO_Pin_4 ) ; //SPI CS1392 GPIO_SetBits (GPIOB, GPIO_Pin_12 ) ; //SPI CS4

Page 71: controle de protótipo de veículo por display touch screen

ANEXO A. Configuração dos Periféricos 70

393 GPIO_SetBits (GPIOA, GPIO_Pin_4 ) ; //SPI NSS394395 // SPI3 Config396 SPI_Ini tStructure . SPI_Direction = SPI_Direction_2Lines_FullDuplex ;397 SPI_Ini tStructure . SPI_Mode = SPI_Mode_Master ;398 SPI_Ini tStructure . SPI_DataSize = SPI_DataSize_8b ;399 SPI_Ini tStructure .SPI_CPOL = SPI_CPOL_Low;400 SPI_Ini tStructure .SPI_CPHA = SPI_CPHA_1Edge ;401 SPI_Ini tStructure . SPI_NSS = SPI_NSS_Soft ; //SPI_NSS_Hard402 SPI_Ini tStructure . SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64 ;403 SPI_Ini tStructure . SPI_FirstBit = SPI_FirstBit_MSB ;404 SPI_Ini tStructure . SPI_CRCPolynomial = 7 ;405 SPI_Init ( SPI1 ,& SPI_Ini tStructure ) ;406407 // SPI1 enable408 SPI_Cmd( SPI1 ,ENABLE) ;409 }410411 unsigned char SPI_WriteByte ( unsigned char data )412 {413 unsigned char Data = 0 ;414415 //Wait u n t i l the transmit b u f f e r i s empty416 whi le ( SPI_I2S_GetFlagStatus ( SPI1 ,SPI_I2S_FLAG_TXE)==RESET) ;417 // Send the byte418 SPI_I2S_SendData ( SPI1 , data ) ;419420 //Wait u n t i l a data i s r e c e i v e d421 whi le ( SPI_I2S_GetFlagStatus ( SPI1 ,SPI_I2S_FLAG_RXNE)==RESET) ;422 // Get the r e c e i v e d data423 Data = SPI_I2S_ReceiveData ( SPI1 ) ;424425 // Return the s h i f t e d data426 re turn Data ;427 }428429430 void SpiDelay ( unsigned i n t DelayCnt )431 {432 unsigned i n t i ;433 f o r ( i =0; i<DelayCnt ; i ++);434 }435436 u16 TPReadX( void )437 {438 u16 x=0;439 TP_CS( ) ;440 SpiDelay ( 1 0 ) ;441 SPI_WriteByte (0 x90 ) ;442 SpiDelay ( 1 0 ) ;443 x=SPI_WriteByte (0 x00 ) ;444 x<<=8;445 x+=SPI_WriteByte (0 x00 ) ;446 SpiDelay ( 1 0 ) ;447 TP_DCS( ) ;448 x = x>>3;449 re turn ( x ) ;

Page 72: controle de protótipo de veículo por display touch screen

ANEXO A. Configuração dos Periféricos 71

450 }451452 u16 TPReadY( void )453 {454 u16 y=0;455 TP_CS( ) ;456 SpiDelay ( 1 0 ) ;457 SPI_WriteByte (0xD0 ) ;458 SpiDelay ( 1 0 ) ;459 y=SPI_WriteByte (0 x00 ) ;460 y<<=8;461 y+=SPI_WriteByte (0 x00 ) ;462 SpiDelay ( 1 0 ) ;463 TP_DCS( ) ;464 y = y>>3;465 re turn ( y ) ;466 }467468 #i f d e f DEBUG469 /*******************************************************************************470 * Function Name : a s s e r t _ f a i l e d471 * Desc r ip t i on : Reports the name o f the source f i l e and the source l i n e number472 * where the assert_param e r r o r has occurred .473 * Input : − f i l e : po in t e r to the source f i l e name474 * − l i n e : assert_param e r r o r l i n e source number475 * Output : None476 * Return : None477 *******************************************************************************/478479 void a s s e r t _ f a i l e d ( u8* f i l e , u32 l i n e )480 {481 /* User can add h i s own implementation to r epor t the f i l e name and l i n e number ,482 ex : p r i n t f ( " Wrong parameters va lue : f i l e %s on l i n e %d\ r \n " , f i l e , l i n e ) */483484 /* I n f i n i t e loop */485 whi le (1 )486 {487 }488 }489 #e n d i f

Page 73: controle de protótipo de veículo por display touch screen

72

ANEXO B – ROTINA DE CRIAÇÃO DOFRAME

1 #i f n d e f FRAMEWIN_H2 #d e f i n e FRAMEWIN_H34 #inc lude "WM. h"5 #i f GUI_WINSUPPORT6 #inc lude "DIALOG_Intern . h " /* Req . f o r Create i n d i r e c t data s t r u c t u r e */78 #i f de f ined ( __cplusplus )9 extern "C" { /* Make sure we have C−d e c l a r a t i o n s in C++ programs */

10 #e n d i f1112 /************************************************************13 *14 * #d e f i n e s15 *16 *************************************************************17 */18 /************************************************************19 *20 * Create / Status f l a g s21 */22 #d e f i n e FRAMEWIN_CF_ACTIVE (1<<3)23 #d e f i n e FRAMEWIN_CF_MOVEABLE (1<<4)24 #d e f i n e FRAMEWIN_CF_TITLEVIS (1<<5)25 #d e f i n e FRAMEWIN_CF_MINIMIZED (1<<6)26 #d e f i n e FRAMEWIN_CF_MAXIMIZED (1<<7)2728 #d e f i n e FRAMEWIN_SF_ACTIVE FRAMEWIN_CF_ACTIVE29 #d e f i n e FRAMEWIN_SF_MOVEABLE FRAMEWIN_CF_MOVEABLE30 #d e f i n e FRAMEWIN_SF_TITLEVIS FRAMEWIN_CF_TITLEVIS31 #d e f i n e FRAMEWIN_SF_MINIMIZED FRAMEWIN_CF_MINIMIZED32 #d e f i n e FRAMEWIN_SF_MAXIMIZED FRAMEWIN_CF_MAXIMIZED3334 /************************************************************35 *36 * BUTTON Flags37 */3839 #d e f i n e FRAMEWIN_BUTTON_RIGHT (1<<0)40 #d e f i n e FRAMEWIN_BUTTON_LEFT (1<<1)4142 /************************************************************43 * *44 * Types *45 * *46 *************************************************************47 */4849 typede f WM_HMEM FRAMEWIN_Handle ;50

Page 74: controle de protótipo de veículo por display touch screen

ANEXO B. Rotina de Criação do Frame 73

51 /*********************************************************************52 *53 * Create f u n c t i o n s54 *55 **********************************************************************56 */57 FRAMEWIN_Handle FRAMEWIN_Create ( const char * pTit le , WM_CALLBACK* cb ,58 i n t Flags , i n t x0 , i n t y0 , i n t x s i z e , i n t y s i z e ) ;59 FRAMEWIN_Handle FRAMEWIN_CreateAsChild ( i n t x0 , i n t y0 , i n t xs i z e , i n t y s i z e ,60 WM_HWIN hParent , const char * pText ,61 WM_CALLBACK* cb , i n t Flags ) ;62 FRAMEWIN_Handle FRAMEWIN_CreateIndirect ( const GUI_WIDGET_CREATE_INFO* pCreateInfo ,63 WM_HWIN hWinParent , i n t x0 , i n t y0 ,64 WM_CALLBACK* cb ) ;65 FRAMEWIN_Handle FRAMEWIN_CreateEx ( i n t x0 , i n t y0 , i n t x s i z e , i n t y s i z e , WM_HWIN66 hParent , i n t WinFlags , i n t ExFlags , i n t Id ,67 const char * pTit le , WM_CALLBACK* cb ) ;6869 /*********************************************************************70 *71 * Standard member f u n c t i o n s72 *73 **********************************************************************74 */7576 #d e f i n e FRAMEWIN_EnableMemdev( hObj ) WM_EnableMemdev( hObj )77 #d e f i n e FRAMEWIN_DisableMemdev( hObj ) WM_DisableMemdev( hObj )78 #d e f i n e FRAMEWIN_Delete( hObj ) WM_DeleteWindow( hObj )79 #d e f i n e FRAMEWIN_Paint( hObj ) WM_Paint( hObj )80 #d e f i n e FRAMEWIN_Invalidate ( hObj ) WM_InvalidateWindow ( hObj )8182 WM_HWIN FRAMEWIN_AddButton (FRAMEWIN_Handle hObj , i n t Flags , i n t Off , i n t Id ) ;83 WM_HWIN FRAMEWIN_AddCloseButton(FRAMEWIN_Handle hObj , i n t Flags , i n t Off ) ;84 WM_HWIN FRAMEWIN_AddMaxButton (FRAMEWIN_Handle hObj , i n t Flags , i n t Off ) ;85 void FRAMEWIN_AddMenu (FRAMEWIN_Handle hObj , WM_HWIN hMenu ) ;86 WM_HWIN FRAMEWIN_AddMinButton (FRAMEWIN_Handle hObj , i n t Flags , i n t Off ) ;8788 void FRAMEWIN_Minimize (FRAMEWIN_Handle hObj ) ;89 void FRAMEWIN_Maximize (FRAMEWIN_Handle hObj ) ;90 void FRAMEWIN_Restore (FRAMEWIN_Handle hObj ) ;9192 /*********************************************************************93 *94 * Member f u n c t i o n s : Set P r o p e r t i e s95 *96 **********************************************************************97 */98 void FRAMEWIN_SetActive (FRAMEWIN_Handle hObj , i n t State ) ;99 void FRAMEWIN_SetBarColor (FRAMEWIN_Handle hObj , unsigned Index , GUI_COLOR

100 Color ) ;101 void FRAMEWIN_SetBorderSize (FRAMEWIN_Handle hObj , unsigned S i z e ) ;102 void FRAMEWIN_SetClientColor (FRAMEWIN_Handle hObj , GUI_COLOR Color ) ;103 void FRAMEWIN_SetFont (FRAMEWIN_Handle hObj , const GUI_FONT GUI_UNI_PTR104 * pFont ) ;105 void FRAMEWIN_SetMoveable (FRAMEWIN_Handle hObj , i n t State ) ;106 void FRAMEWIN_SetResizeable (FRAMEWIN_Handle hObj , i n t State ) ;107 void FRAMEWIN_SetText (FRAMEWIN_Handle hObj , const char * s ) ;

Page 75: controle de protótipo de veículo por display touch screen

ANEXO B. Rotina de Criação do Frame 74

108 void FRAMEWIN_SetTextAlign (FRAMEWIN_Handle hObj , i n t Align ) ;109 void FRAMEWIN_SetTextColor (FRAMEWIN_Handle hObj , GUI_COLOR Color ) ;110 void FRAMEWIN_SetTextColorEx (FRAMEWIN_Handle hObj , unsigned Index , GUI_COLOR111 Color ) ;112 void FRAMEWIN_SetTitleVis (FRAMEWIN_Handle hObj , i n t Show ) ;113 i n t FRAMEWIN_SetTitleHeight (FRAMEWIN_Handle hObj , i n t Height ) ;114115 /*********************************************************************116 *117 * Member f u n c t i o n s : Get P r o p e r t i e s118 *119 **********************************************************************120 */121 i n t FRAMEWIN_GetTitleHeight (FRAMEWIN_Handle hObj ) ;122 i n t FRAMEWIN_GetBorderSize (FRAMEWIN_Handle hObj ) ;123 i n t FRAMEWIN_IsMinimized (FRAMEWIN_Handle hObj ) ;124 i n t FRAMEWIN_IsMaximized (FRAMEWIN_Handle hObj ) ;125126 /*********************************************************************127 *128 * Global f u n c t i o n s129 *130 **********************************************************************131 */132 GUI_COLOR FRAMEWIN_GetDefaultBarColor ( unsigned Index ) ;133 i n t FRAMEWIN_GetDefaultBorderSize ( void ) ;134 i n t FRAMEWIN_GetDefaultTitleHeight ( void ) ;135 GUI_COLOR FRAMEWIN_GetDefaultClientColor ( void ) ;136 const GUI_FONT GUI_UNI_PTR * FRAMEWIN_GetDefaultFont ( void ) ;137 GUI_COLOR FRAMEWIN_GetDefaultTextColor ( unsigned Index ) ;138 void FRAMEWIN_SetDefaultBarColor ( unsigned Index , GUI_COLOR Color ) ;139 void FRAMEWIN_SetDefaultBorderSize ( i n t De fau l tBorderS ize ) ;140 void FRAMEWIN_SetDefaultTitleHeight ( i n t De fau l tT i t l eHe ight ) ;141 void FRAMEWIN_SetDefaultClientColor (GUI_COLOR Color ) ;142 void FRAMEWIN_SetDefaultFont ( const GUI_FONT GUI_UNI_PTR * pFont ) ;143 void FRAMEWIN_SetDefaultTextColor ( unsigned Index , GUI_COLOR Color ) ;144145 /*********************************************************************146 *147 * Macros f o r c o m p a t i b i l i t y148 *149 **********************************************************************150 */151 #d e f i n e FRAMEWIN_SetDefaultCaptionSize ( Height )152 FRAMEWIN_SetDefaultTitleHeight ( Height )153 #d e f i n e FRAMEWIN_GetDefaultCaptionSize ( )154 FRAMEWIN_GetDefaultTitleHeight ( )155 #d e f i n e FRAMEWIN_CreateButton( hObj , Flags , Off , Id )156 FRAMEWIN_AddButton( hObj , Flags , Off , Id )157 #d e f i n e FRAMEWIN_CreateCloseButton( hObj , Flags , Off )158 FRAMEWIN_AddCloseButton( hObj , Flags , Off )159 #d e f i n e FRAMEWIN_CreateMaxButton( hObj , Flags , Off )160 FRAMEWIN_AddMaxButton( hObj , Flags , Off )161 #d e f i n e FRAMEWIN_CreateMinButton( hObj , Flags , Off )162 FRAMEWIN_AddMinButton( hObj , Flags , Off )163164 #i f de f ined ( __cplusplus )

Page 76: controle de protótipo de veículo por display touch screen

ANEXO B. Rotina de Criação do Frame 75

165 }166 #e n d i f167168 #e n d i f169 #e n d i f /* FRAMEWIN_H */

Page 77: controle de protótipo de veículo por display touch screen

76

ANEXO C – ROTINA DE CRIAÇÃO DO BOTÃO

1 #i f n d e f BUTTON_H2 #d e f i n e BUTTON_H34 #inc lude "WM. h"5 #inc lude "DIALOG_Intern . h " /* Req . f o r Create i n d i r e c t data s t r u c t u r e */6 #inc lude "WIDGET. h"789 #i f de f ined ( __cplusplus )

10 extern "C" { /* Make sure we have C−d e c l a r a t i o n s in C++ programs */11 #e n d i f1213 #i f GUI_WINSUPPORT1415 /************************************************************16 *17 * Create f l a g s18 */19 /* For c o m p a t i b i l i t y only ! */20 #d e f i n e BUTTON_CF_HIDE WM_CF_HIDE21 #d e f i n e BUTTON_CF_SHOW WM_CF_SHOW22 #d e f i n e BUTTON_CF_MEMDEV WM_CF_MEMDEV2324 /*********************************************************************25 *26 * Color i n d i c e s27 */28 #d e f i n e BUTTON_CI_UNPRESSED 029 #d e f i n e BUTTON_CI_PRESSED 130 #d e f i n e BUTTON_CI_DISABLED 23132 /*********************************************************************33 *34 * Bitmap i n d i c e s35 */36 #d e f i n e BUTTON_BI_UNPRESSED 037 #d e f i n e BUTTON_BI_PRESSED 138 #d e f i n e BUTTON_BI_DISABLED 23940 /************************************************************41 *42 * Messages43 */4445 /************************************************************46 *47 * Sta te s48 */4950 #d e f i n e BUTTON_STATE_FOCUS WIDGET_STATE_FOCUS

Page 78: controle de protótipo de veículo por display touch screen

ANEXO C. Rotina de Criação do Botão 77

51 #d e f i n e BUTTON_STATE_PRESSED WIDGET_STATE_USER05253 /************************************************************54 *55 * Types56 *57 *************************************************************58 */59 typede f WM_HMEM BUTTON_Handle ;6061 /************************************************************62 *63 * Create func t i on ( s )6465 Note : the parameters to a c r e a t e func t i on may vary .66 Some widgets may have mul t ip l e c r e a t e f u n c t i o n s67 */6869 BUTTON_Handle BUTTON_Create ( i n t x0 , i n t y0 , i n t x s i z e , i n t y s i z e , i n t ID ,70 i n t Flags ) ;71 BUTTON_Handle BUTTON_CreateAsChild ( i n t x0 , i n t y0 , i n t x s i z e , i n t y s i z e , WM_HWIN72 hParent , i n t Id , i n t Flags ) ;73 BUTTON_Handle BUTTON_CreateIndirect ( const GUI_WIDGET_CREATE_INFO* pCreateInfo ,74 WM_HWIN hWinParent , i n t x0 , i n t y0 ,75 WM_CALLBACK* cb ) ;76 BUTTON_Handle BUTTON_CreateEx ( i n t x0 , i n t y0 , i n t xs i z e , i n t y s i z e , WM_HWIN77 hParent , i n t WinFlags , i n t ExFlags , i n t Id ) ;7879 /*********************************************************************80 *81 * Standard member f u n c t i o n s82 *83 **********************************************************************84 */8586 GUI_COLOR BUTTON_GetDefaultBkColor ( unsigned Index ) ;87 const GUI_FONT GUI_UNI_PTR * BUTTON_GetDefaultFont ( void ) ;88 i n t BUTTON_GetDefaultTextAlign ( void ) ;89 GUI_COLOR BUTTON_GetDefaultTextColor ( unsigned Index ) ;90 void BUTTON_SetDefaultBkColor (GUI_COLOR Color ,91 unsigned Index ) ;92 void BUTTON_SetDefaultFont ( const GUI_FONT GUI_UNI_PTR93 * pFont ) ;94 void BUTTON_SetDefaultTextAlign ( i n t Align ) ;95 void BUTTON_SetDefaultTextColor (GUI_COLOR Color ,96 unsigned Index ) ;9798 #d e f i n e BUTTON_EnableMemdev( hObj ) WM_EnableMemdev ( hObj )99 #d e f i n e BUTTON_DisableMemdev( hObj ) WM_DisableMemdev ( hObj )

100 #d e f i n e BUTTON_Delete( hObj ) WM_DeleteWindow ( hObj )101 #d e f i n e BUTTON_Paint( hObj ) WM_Paint ( hObj )102 #d e f i n e BUTTON_Invalidate ( hObj ) WM_InvalidateWindow ( hObj )103104 /*********************************************************************105 *106 * The c a l l b a c k . . .107 *

Page 79: controle de protótipo de veículo por display touch screen

ANEXO C. Rotina de Criação do Botão 78

108 * Do not c a l l i t d i r e c t l y ! I t i s only to be used from with in an109 * ove rwr i t t en c a l l b a c k .110 */111 void BUTTON_Callback(WM_MESSAGE *pMsg ) ;112113 /*********************************************************************114 *115 * Member f u n c t i o n s116 *117 **********************************************************************118 */119120 GUI_COLOR BUTTON_GetBkColor (BUTTON_Handle hObj ,121 unsigned i n t Index ) ;122 const GUI_FONT GUI_UNI_PTR * BUTTON_GetFont(BUTTON_Handle hObj ) ;123 void BUTTON_GetText (BUTTON_Handle hObj , char * pBuffer ,124 i n t MaxLen ) ;125 GUI_COLOR BUTTON_GetTextColor (BUTTON_Handle hObj ,126 unsigned i n t Index ) ;127 unsigned BUTTON_IsPressed (BUTTON_Handle hObj ) ;128 void BUTTON_SetBitmap (BUTTON_Handle hObj , unsigned i n t Index ,129 const GUI_BITMAP * pBitmap ) ;130 void BUTTON_SetBitmapEx (BUTTON_Handle hObj , unsigned i n t Index ,131 const GUI_BITMAP * pBitmap ,132 i n t x , i n t y ) ;133 void BUTTON_SetBkColor (BUTTON_Handle hObj , unsigned i n t Index ,134 GUI_COLOR Color ) ;135 void BUTTON_SetBMP (BUTTON_Handle hObj , unsigned i n t Index ,136 const void * pBitmap ) ;137 void BUTTON_SetBMPEx (BUTTON_Handle hObj , unsigned i n t Index ,138 const void * pBitmap , i n t x , i n t y ) ;139 void BUTTON_SetFont (BUTTON_Handle hObj , const GUI_FONT140 GUI_UNI_PTR * pfont ) ;141 void BUTTON_SetState (BUTTON_Handle hObj , i n t State ) ;142 void BUTTON_SetPressed (BUTTON_Handle hObj , i n t State ) ;143 void BUTTON_SetFocussable (BUTTON_Handle hObj , i n t State ) ;144 void BUTTON_SetStreamedBitmap (BUTTON_Handle hObj , unsigned i n t Index ,145 const GUI_BITMAP_STREAM * pBitmap ) ;146 void BUTTON_SetStreamedBitmapEx(BUTTON_Handle hObj , unsigned i n t Index ,147 const GUI_BITMAP_STREAM * pBitmap ,148 i n t x , i n t y ) ;149 void BUTTON_SetText (BUTTON_Handle hObj , const char * s ) ;150 void BUTTON_SetTextAlign (BUTTON_Handle hObj , i n t Al ign ) ;151 void BUTTON_SetTextColor (BUTTON_Handle hObj , unsigned i n t Index ,152 GUI_COLOR Color ) ;153 void BUTTON_SetSelfDrawEx (BUTTON_Handle hObj , unsigned i n t Index ,154 void (*pDraw ) ( void ) , i n t x , i n t y ) ;155 void BUTTON_SetSelfDraw (BUTTON_Handle hObj , unsigned i n t Index ,156 void (*pDraw ) ( void ) ) ;157158 /************************************************************159 *160 * Sta te s161 */162 #d e f i n e BUTTON_STATE_HASFOCUS 0163164 #e n d i f /* BUTTON_H */

Page 80: controle de protótipo de veículo por display touch screen

ANEXO C. Rotina de Criação do Botão 79

165166 #i f de f ined ( __cplusplus )167 }168 #e n d i f169170 #e n d i f /* BUTTON_H */

Page 81: controle de protótipo de veículo por display touch screen

80

ANEXO D – DATASHEET

Page 82: controle de protótipo de veículo por display touch screen

ANEXO D. Datasheet 81

Page 83: controle de protótipo de veículo por display touch screen

ANEXO D. Datasheet 82

Page 84: controle de protótipo de veículo por display touch screen

ANEXO D. Datasheet 83

Page 85: controle de protótipo de veículo por display touch screen

ANEXO D. Datasheet 84

Page 86: controle de protótipo de veículo por display touch screen

85

ANEXO E – DATASHEET STM32F103XE

Page 87: controle de protótipo de veículo por display touch screen

86

ANEXO F – FIRMWARE LIBRARY