Sei sulla pagina 1di 6

Programação

Tutorial de Noções
Básicas

Autor: Wagner Rambo


Área: Programação
Nível: Principiante

www.wrkits.com.br

Copyright WR Kits 2011 (todos os direitos reservados): Proibida


reprodução total ou parcial sem prévia autorização por escrito do autor.
Copyright protegido pela Lei de Direitos Autorais LEI N° 9.610, de 19 de
Fevereiro de 1998.
Programação: Tutorial de Noções Básicas

1 – Linguagem utilizada

Programar não é coisa de outro mundo, basta um pouco de dedicação,


habilidade em digitação e conhecimento da linguagem a ser utilizada. As
linguagens mais populares utilizadas na programação em robótica são a Basic,
C e Assembly. A linguagem Basic, como o próprio nome sugere, trata-se de
uma linguagem mais simples, pois muitos conceitos são omitidos para nós e
executados automaticamente pelo software compilador. Por este motivo, a
Basic é caracterizada como uma linguagem de alto nível. Em Assembly a
história muda, pois caracteriza-se por ser uma linguagem complexa, onde são
necessárias muitas linhas de comando para se realizar a mesma tarefa que se
faria em Basic com poucos comandos, e por este motivo é considerada
linguagem de baixo nível, ou linguagem de máquina. A linguagem C é
considerada por muitos uma linguagem de alto nível, assim como a Basic. Mas
há os que a consideram como uma linguagem de “médio nível”, por apresentar
alguns conceitos próximos à linguagem de máquina. E em razão disso, esta foi
a linguagem escolhida para utilizarmos com o kit Paradoxus 9 da W.R. Kits, por
não ser tão fácil nem tão difícil, afinal fácil demais também não tem graça
certo? Não enfatizaremos aqui aspectos sobre programação de um modo
geral, mas sim, direcionada aos objetivos do kit, que consistem na
programação de uma placa comandada por um microcontrolador da família 16F
e linha MicroChip, início de aprendizado de linguagem C no compilador MikroC,
sem mencionar os objetivos de conhecimentos desenvolvidos nas áreas de
mecânica, eletrônica e robótica. Ainda assim, vale salientar, que a Paradoxus 9
admite as mais diversas linguagens de progração e, se você já tem alguma de
sua preferência, sinta-se a vontade em usá-la.

2 – Programação aplicada à robótica

Em robótica, a programação consiste principalmente em se idealizar


uma sequência de algoritmos que um robô ou sistema de automação irá utilizar
para executar determinadas tarefas. Podemos por exemplo definir os sistemas
de controle que irão comandar um robô (automático, manual, a distância,
dependente da leitura obtida por sensores, etc). Um algoritmo é entendido
como um conjunto de passos, logicamente ordenados, para que um robô ou
sistema autônomo cumpra determinada tarefa ou atinja determinado objetivo.
Com o auxílio de uma linguagem de programação específica, os algoritmos são
desenvolvidos gerando um programa, que deverá ser compreendido pelo
sistema de automação, robô, computador ou máquina. Conhecimentos básicos
de física e matemática são fundamentais para o desenvolvimento de um código
fonte adequado. No caso da programação de robôs autônomos, é importante
ter o mínimo conhecimento em lógica digital ou mesmo em eletrônica digital.
3 – Introdução à lógica digital

Como já foi citado no início deste tutorial, a ideia é focar os conceitos


mais elementares para que o usuário possa desenvolver a programação e
utilizar a maior quantidade de recursos possíveis do kit Paradoxus 9, da W.R.
Kits. A programação do kit Paradoxus 9 consiste essencialmente na criação de
algoritmos que coordenem as entradas/saídas digitais do microcontrolador
PIC16F628A, que pode ser entendido como “cérebro” do circuito ou mesmo do
robô a ser controlado. Para facilitar a compreensão, abaixo podemos visualizar
o data sheet deste microcontrolador:

PIC16F628A Data Sheet

Um detalhe importante a ser observado são as setas presentes em cada


pino do CI. As setas duplas (que apontam para os dois lados), são os pinos
que podem ser programados tanto como entrada quanto como saída. As setas
simples (que apontam para dentro do CI), são os pinos que apenas podem ser
utilizados como entrada. E as cores diferentes foram utilizadas para facilitar a
compreensão do usuário, valendo apenas para o circuito Paradoxus 9. Os
pinos verdes estão interligados com os leds programáveis na placa (LED1 e
LED2), onde o LED1 está no pino RA3 e o LED2 está no pino RA2. Estes leds
podem ser programados das mais diferentes formas pelo usuário, desde
simples teste de funcionamento do circuito, até mesmo para realizar efeitos
visuais no robô controlado. Os pinos vermelhos estão interligados com os
botões programáveis S1 e S2 do circuito, onde S1 está no RA1 e S2 está no
RA0. Com estes botões, o microcontrolador pode executar comandos manuais,
no momento em que os mesmo forem pressionados como, por exemplo, o
próprio controle dos leds presentes na placa ou outras cargas conectadas aos
demais pinos de entrada/saída. Os pinos azuis referem-se às entradas/saídas
do circuito, onde podem ser conectados os mais diferentes tipos de
dispositivos, tais como leds, relés, drivers, sensores diversos, servomotores e
muitos outros. Na placa a linha Rx é em forma de soquete e Ry em forma de
pinos, todos no padrão motherboard, facilitando a interatividade com quaisquer
componentes eletrônicos. Estes pinos azuis contém todo portB do pic (RB0 a
RB7) e também o pino RA4. O pino laranja (RA5) é onde está conectado o
botão de RESET do microcontrolador, os pinos cinzas (RA6 e RA7) é onde
está o cristal oscilador externo de 4MHz e os pinos brancos (Vss e Vdd) são a
alimentação do CI.
Todos estes pinos do PIC (exceto RA5, RA6, RA7, Vss e Vdd) podem
ser programados a vontade pelo usuário, o que cria uma incrível versatilidade
para o circuito Paradoxus 9. Mas o que seria programar os pinos do
microcontrolador? Neste caso é nada menos que a base da eletrônica digital:
determinar se o pino programado apresentará nível alto, nível baixo ou se o
mesmo estará flutuante. Este simples tutorial não tem por objetivo entrar em
pormenores sobre eletrônica digital, pois trata-se de uma área muito ampla da
eletrônica. O importante é que o leitor entenda o que são os níveis lógicos e
como utilizá-los na programação. Estes níveis lógicos podem ser
representados pelos números zero (0) e um (1). O número zero refere-se ao
nível baixo (ou L, low do inglês) e o número um refere-se ao nível alto (ou H,
high do inglês). Esta é a famosa lógica binária, justamente por trabalhar com
apenas dois numerais. O valor da tensão elétrica, é o que definirá se o nível é
alto ou baixo. Estes valores podem variar de projeto para projeto e circuito para
circuito. Mas no caso do Paradoxus 9, o nível alto corresponde a 5Vcc (tensão
de trabalho do circuito), e o nível baixo corresponde ao terra (0V ou GND).
Na prática, o nível alto pode ser definido como um LED aceso e o baixo
como um LED apagado (é claro que o inverso também pode ser utilizado,
apenas definimos desse jeito para facilitar a compreensão). Por isto os
primeiros projetos propostos normalmente utilizam o acender e apagar de led’s,
ou controle dos mesmos; para o usuário se familiarizar com a lógica digital.
Uma dica muito útil para projetos nesta área é que, se conseguimos controlar
um led através de uma saída do CI, conseguiremos controlar qualquer outro
dispositivo eletrônico tais como drivers, relés, lâmpadas, motores, entre outros.
Não estamos dizendo que basta conectar um relé à saída do PIC e pronto.
Lembre-se que cada dispositivo requer os seus arranjos e ajustes para
funcionar adequadamente. Até mesmo um simples led, requer um resistor
limitador de corrente em série ao circuito, a fim de maximizar a sua vida útil.
Uma carga maior, tal como a bobina de um relé, ou mesmo um motor,
necessitará de uma etapa de potência para funcionar. Para relés ou motores de
pequeno porte, um simples transistor pode ser adotado como driver.
Analisando apenas o funcionamente do transistor como chave, podemos
afirmar que os transistores npn conduzem quando aplicamos nível 1 (alto) em
sua base. Aplicando nível 0 (baixo), os transistores npn não conduzem. Já os
transistores pnp funcionam com a lógica inversa. Conduzem com nível 0
(baixo) aplicado em sua base e não conduzem com nível 1 (alto) aplicado em
sua base. Quando um transistor conduz corrente elétrica, dizemos que o
mesmo encontra-se saturado. E quando ele não conduz corrente, dizemos que
o mesmo encontra-se em corte. No tutorial “Exemplos de circuitos em
protoboard para teste dos códigos fonte”, você encontrará diversos exemplos
de circuitos simples até um pouco mais complexos para testar os códigos
fontes apresentados no arquivo ” Exemplos de Códigos Fonte em MikroC”,
logo, não apresentaremos os respectivos diagramas esquemáticos dos
exemplos aqui citados. Abaixo podemos visualizar uma tabela-resumo, de tudo
que foi dito até o momento, sobre a lógica digital:

Nível Alto 1 (um) H (high) “led aceso” Npn conduz Pnp não conduz
Nível Baixo 0 (zero) L (low) “led apagado” Pnp conduz Npn não conduz

Lógica digital: tabela-resumo


Aprender a utilizar a lógica binária, controlando assim os mais diversos
dispositivos independentemente, é de suma importância para, mais tarde,
programarmos o Robot Paradoxus 9 de maneira adequada. Vale lembrar que
com esta placa, as mais diversas estruturas mecânicas podem ser controladas,
desde robôs móveis até robôs manipuladores (braço robótico). Se você
adquiriu o kit completo, que consiste no Robot Paradoxus 9, que acompanha,
além da estrutura mecânica total, todos os dispositivos periféricos necessários
para um robô móvel autônomo (driver para controle dos motores, sensores,
etc), já terá um ótimo ponto de partida, para aprender a programar robôs
móveis. Caso apenas tenha adquirido o kit Paradoxus 9, que consiste na placa
principal e no gravador de PIC, poderá criar seus próprios robôs para depois
programá-los. Uma excelente alternativa, é a montagem do robô de esteiras,
cujo tutorial para construção completa acompanha esta documentação.
Consulte o “Tutorial - Robô de Esteiras”, pois lá está o passo a passo, todo
ilustrado com fotografias, da construção de um robô autônomo, robusto, e
apenas com materiais aproveitados da reciclagem, ou então encontrados no
mercado local a preços baixíssimos.

À esquerda: Robot Paradoxus 9. À direita: Robô de Esteiras

Mas antes de partir para a programação de robôs, é aconselhável a


leitura de todos tutoriais sobre o kit, especialmente os que citam exemplos de
circuitos bem simples, com códigos fontes, para o controle de dispositivos
discretos. Aprendendo a manipular bem dispositivos discretos separadamente,
depois ficará mais fácil de controlá-los em conjunto, compondo assim, um robô
completo.
Agora que aprendemos algumas noções básicas de programação e
lógica digital, passaremos à criação de códigos fonte (ou programas) em
MikroC para utilizar no kit. Para isto é conveniente que o usuário leia a apostila
“Exemplos de Códigos Fonte em MikroC”, também inclusa neste disco de
drivers, onde serão abordados diversos conceitos úteis para se efetuar a
correta programação do kit.

Potrebbero piacerti anche