manual PICAXE
-
Upload
joao-carlos-lazaro -
Category
Documents
-
view
293 -
download
17
description
Transcript of manual PICAXE
PICAXE
Tradução livre e parcial por João Carlos Lazaro
Adaptação para o PIC 20M (16F677)
www.picaxe.co.uk
BRASIL -2010- V. 1.1
Sistema PICAXE 2010 Prof. João Carlos Lazaro
1
INDICE
O que é um microcontrolador? 1
Microcontroladores, input e outputs 2
O que é um sistema PICAXE? 3
Construindo o próprio circuito / PCI 4
Utilizando o sistema PICAXE 5
Instalação do Software 5
Fonte de alimentação para o PICAXE 6
Considerações tecnicas do Project Board PICAXE 20M 8
PICAXE-20X2 Pinout e Circuito 8
ULN 2803 - Oito drives de Corrente - Relação de pinagem 9 Diagrama eletrônico do project Board do 20M 10
Conhecendo a PCI - project Board PICAXE 11
Circuito série para transferência de dados (download) (Cabos) 12
Clock frequência – Ressonador 14 Consideraçõs especiais sobre a familia X2 15 Mensagem de erro 17
Procedimento Hard-reset 17
Compreendendo a memória do PICAXE 18
Variáveis de Usos Gerais (GPR – General Purpose Registers) 19
Resumo dos Circuitos para Interface 20
BASIC Commands Summary 22 TUTORIAL 1 – relacionando entradas (INPUTS) e saídas (OUTPUTS) 23
TUTORIAL 2 - Usando Símbolos, Comentários e Espaços 26 LABEL - sintaxe 26 Comentários -sintaxe 26 Espaços em branco Whitespace - sintaxe 27 GOTO - Sintaxe 28
Tutorial 3 - Temporizações 29 PAUSE - Sintaxe 29 NAP - Sintaxe 30 SLEEP - Sintaxe 31 SYMBOL - Sintaxe 31 TUTORIAL 4 - Uso das Constantes e variáveis 34 CONSTANTES - Sintaxe 34 VARIAVEIS - Sintaxe 34 Quadro de resumo sobre variáveis 36 TUTORIAL 5 - Trabalhando com as saídas (OUTPUT) 38 LOW – Sintaxe 38 HIGH – Sintaxe 38 LET PINS=” – Sintaxe 39 TOGGLE 40 TUTORIAL 6 – Compreendendo e usando o sistema PICAXE 41 Experimento 1: Acionamento de um LED 42 Experimento 2: Sinalizador para saída de veículos 44 Experiência 3: Seqüencial de 6 canais 45
Sistema PICAXE 2010 Prof. João Carlos Lazaro
2
TUTORIAL 7 – Ciclos For…Next 48
FOR…NEXT 48
TUTORIAL 8 – Usando Entradas Digitais 50
IF ...THEN 50
PULSIN 52
BUTTON 52
Aplicação em interruptores (microswitch) 54
Aplicação em teclados - Keypads 55
TUTORIAL 9 – Usando Sensores Analógicos 56
READADC 56
LDR – uso do resistor LDR 57
TUTORIAL 10 - Utilização da instrução Debug 58
DEBUG 58
Sistema PICAXE 2010 Prof. João Carlos Lazaro
3
CAPITULO – 1
O que é um microcontrolador?
Trata-se de um circuito integrado de baixo custo
que contém memória, unidade de
processamento e circuitos de entradas/saídas
num mesmo circuito integrado.
Os microcontroladores são adquiridos “limpos” e
programados pelo utilizador com software
específico para uma dada tarefa.
Uma vez programado, o microcontrolador é
inserido num produto para o tornar mais inteligente e fácil de usar.
Tome-se, como exemplo, o forno de micro-ondas, onde um microcontrolador trata a
informação proveniente do teclado, mostra as informações no display e controla os
dispositivos de saída (motor do prato-rotativo, luz, sonorizador, atuadores
eletromagneticos). Um microcontrolador pode freqüentemente substituir uma quantidade de
componentes separados, ou mesmo um circuito eletrônico completo.
Algumas das vantagens de utilizar microcontroladores no design de um produto são:
Elevada facilidade.
Níveis de armazenamento reduzidos, pois um microcontrolador substitui vários
componentes.
Montagem simplificada do produto e redução do tempo de produção.
Maior flexibilidade de produtos e adaptabilidade pois as características do produto
são programadas no microcontrolador e não embutidas no hardware eletrônico.
Modificações rápidas no produto e seu desenvolvimento por alteração do programa e
não do hardware eletrônico.
Algumas aplicações dos microcontroladores são na aparelhagem doméstica, nos sistemas de
alarme, nos equipamentos médicos, nos subsistemas dos veículos automóveis,
instrumentação eletrônica, telecomunicações, etc.
Alguns dos modernos automóveis utilizam mais de trinta microcontroladores – em
subsistemas como sistema de injeção, ar condicionado, alarme, sinalização, air-bags, ABS,
etc.
Na indústria os microcontroladores são usualmente programados em linguagens assembly ou
C.
Contudo, face à complexidade destas linguagens, não é realista o seu uso com jovens
estudantes no ensino, ou por curiosos sem treino formal.
O sistema PICAXE ultrapassa este problema pelo uso de uma linguagem com uma curva de
aprendizagem mais rápida, a linguagem BASIC. Os programas podem ainda ser especificados
graficamente utilizando um editor de fluxogramas.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
4
Microcontroladores, input e outputs
Na imagem seguinte é mostrado um brinquedo popular de alguns anos, o Furby. Trata-se de
um excelente exemplo de um sistema mecatrônico, pois utiliza um circuito de controle
eletrônico para controlar um elevado número de mecanismos. Contém ainda um elevado
número de sensores pelo que pode reagir a mudanças quando é movido (por exemplo,
quando é colocado num local escuro ou virado de cabeça-para-baixo).
Os transdutores de Input (entrada) são dispositivos eletrônicos que detectam alterações no
“mundo real” e enviam sinais para o bloco de processamento do sistema eletrônico.
Alguns dos transdutores de entrada deste brinquedo são:
Interruptores de pressão à frente e a trás para detectar se o brinquedo é “acariciado”
e um interruptor na boca para detectar quando é “alimentado”.
Uma resistência dependente da luz (LDR) entre os olhos para detectar se é dia ou
noite,
Um microfone para detectar sons.
Um interruptor de inclinação para detectar quando o brinquedo é deitado ou virado.
Um detector de infra-vermelhos para detectar sinais enviados por outros brinquedos.
Os transdutores de Output (saída) são dispositivos eletrônicos que podem ser acionados
(ligados) pelo bloco de processamento do sistema eletrônico. Alguns dos transdutores de
saída neste brinquedo são:
Um motor para fazer mover os olhos e a boca.
Um altofalante para produzir sons.
Um LED de infra-vermelhos para enviar sinais para outros brinquedos.
O microcontrolador utiliza a informação dos transdutores de entrada para tomar decisões
sobre como controlar os dispositivos de saída. Estas decisões são tomadas pelo programa de
controle, que é transferido (download) para o microcontrolador. Para modificar o
Sistema PICAXE 2010 Prof. João Carlos Lazaro
5
“comportamento” do brinquedo basta proceder a alterações no programa e voltar a enviá-lo
para o microcontrolador.
O que é um sistema PICAXE?
O sistema PICAXE explora as características singulares da nova geração de
microcontroladores de baixo custo com memória FLASH. Estes microcontroladores podem ser
programados uma vez e outra (tipicamente 100.000 vezes) sem a necessidade de
programadores caros.
O PICAXE utiliza uma linguagem BASIC simples (ou fluxogramas gráficos) que podem ser
usados por jovens estudantes para se iniciarem na criação de programas uma hora depois de
começarem. É muito mais fácil aprender e detectar erros do que com linguagens de
programação como o C ou o assembly.
Ao contrário de outros sistemas baseados em “módulos” BASIC, toda a programação do
PICAXE é realizada ao nível do “chip”. Assim, ao contrário de comprar um módulo caro pré-
assemblado (de difícil reparação), com um sistema PICAXE pode simplesmente adquirir um
chip standard e usá-lo diretamente na placa do seu projeto.
A potência do sistema PICAXE reside na sua simplicidade. Não é necessário programador,
apagador ou sistemas eletrônicos complicados – o microcontrolador é programado através de
um cabo série com três condutores ligado a um PC. Um sistema funcional PICAXE é
constituído por 3 componentes e pode ser construído num breadboard, stripborad ou placa
de circuito impresso.
O software PICAXE „Programming Editor‟ é gratuito pelo que o único custo reside no cabo de
download. Num ambiente educativo isto facilita a possibilidade de os estudantes comprarem
o seu próprio material e às escolas equiparem cada computador com um cabo. Outros
sistemas que exigem programadores ou “módulos” caros são normalmente excessivamente
caros de implementar.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
6
Finalmente, como o chip PICAXE nunca é retirado da placa de projeto, não existem danos
nos pinos (que ocorrem facilmente cada vez que se retira um microcontrolador da placa para
o programador).
Construindo o próprio circuito / PCI
O sistema PICAXE foi desenhado para permitir que estudantes/curiosos construam os seus
próprios circuitos. Contudo, se não quiser construir o seu próprio circuito, existe uma enorme
variedade de placas em PCI disponíveis - ver catálogo on-line para mais detalhes.
Se quiser fazer o seu próprio circuito, siga as indicações disponíveis no sítio na Internet
www.picaxe.co.uk.
O que é um microcontrolador PICAXE?
Um microcontrolador PICAXE é um microcontrolador standard da Microchip PICmicro™ que
foi previamente pré-programado com código bootstrap.
O código bootstrap possibilita que o microcontrolador possa ser programado através de uma
ligação série ao PC. Isto elimina a necessidade de um programador convencional (e caro),
tornando todo o sistema muito barato.
O código bootstrap pré-programado contem ainda rotinas comuns (como a que gera atrasos
ou saídas para som), pelo que cada transferência de programa não necessita de perder
tempo a carregar esse código. Isso torna a transferência de programas para o
microcontrolador muito rápida.
Como os microcontroladores não-programados comprados para fazer microcontroladores
PICAXE são adquiridos em grandes quantidades, é possível aos fabricantes vender os PICAXE
a preços próximos do microcontrolador não-programado. O código bootstrap PICAXE não é
disponibilizado para programação de microcontroladores virgens.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
7
Utilizando o sistema PICAXE
Para usar o sistema PICAXE é necessário possuir:
• Um microcontrolador PICAXE;
• Uma placa de circuito impresso PICAXE ou uma breadborad/stripboard;
• Uma fonte de alimentação (i.e.. 4 baterias recarregáveis AA (4.8V) ou 3 pilhas
alcalinas AA (4.5V);
• Um cabo série para download;
• O software gratuito „Programming Editor‟.
Todos estes itens estão contidos nos packs para iniciação da PICAXE.
Para correr o software é necessário possuir um computador com sistema operativo Windows
95 ou posterior. Qualquer sistema que possua o S.O. Windows funcionará no modo BASIC,
embora para programação no modo gráfico (fluxogramas) seja aconselhado um Pentium 4
ou superior.
O computador deve possuir uma saída de comunicação série de 9 pinos para ligar o cabo de
transferência de dados.
No caso dos novos portáteis que não possuem porto série, é necessário adquirir um cabo de
conversão USB/série. Veja também a seção referente à definição do porto série para mais
informações.
Para comparação entre as características dos diferentes chips PICAXE e para
informação sobre as várias placas C.I. disponíveis para iniciação, veja o original da
Revolution em picaxe_manual1.pdf.
Instalação do Software
Características do computador
Para instalar o software é necessário um computador com sistema operativo Windows 95 ou
superior com aproximadamente 20MB de espaço livre em disco. Qualquer computador que
corra o sistema operativo Windows funcionará no modo „BASIC‟. Contudo para programação
no modo fluxograma, é necessário no mínimo um Pentium 4.
Instalação
1) Ligue o computador e autentique-se (alguns sistemas operativos exigem autorização
do administrador para instalação do software – contate o administrador do sistema).
2) Insira o CD, ou faça download do sítio Internet da PICAXE em www.picaxe.co.uk e
execute o ficheiro de instalação do software.
3) Siga as instruções na tela para instalar o software. Nos computadores mais antigos
pode ser necessário reiniciar o computador para completar a instalação.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
8
4) Insira o cabo série no conector série de 9 pinos do computador. Se o computador for
portátil e recente poderá não possuir esse conector. Nesse caso terá que instalar
previamente o cabo de conversão USB/série com o software que o acompanha (veja
a seção Instalação do conversor USB/série). Anote qual o número do porto série
utilizado „COM‟ (geralmente COM1 ou COM2).
5) Clique em Start>Programs>Revolution Education>Programming Editor para
executar o software. Se a tela de Options não aparecer automaticamente, clique no
menu View>Options. No separador „Mode‟ selecione o tipo e versão de
microcontrolador (neste caso PICAXE 28X a 4MHz). No separador „Port‟ selecione o
porto série COM apropriado e selecione OK.
Está pronto para usar o PICAXE.
Instalação do conversor USB/série
A maior parte dos computadores desktop possuem um conector série de 9 pinos para ligação
do cabo de transferência de ficheiros (download) do PICAXE. Contudo, a maior parte dos
atuais computadores portáteis não possuem esse conector, mas sim conectores USB. O
sistema de interface USB é um sistema inteligente em que o dispositivo que é ligado se
configura quando ligado ao porto USB. Embora seja teoricamente possível fabricar uma
versão USB do PICAXE, a memória extra necessária iria encarecer o custo do integrado em
cerca de £3 ($5).
Assim, utiliza-se um sistema alternativo. O utilizador deverá adquirir um cabo conversor
USB/série. Este cabo custa aproximadamente £15 ($20) e pode ser usado para quaisquer
outros dispositivos.
Fonte de alimentação para o PICAXE
Todos os chips PICAXE podem funcionar com tensões de alimentação entre 3 e 5.5V CC.
Contudo, alguns computadores podem exigir uma alimentação do PICAXE entre 4.5V e 5.5V
para que as comunicações se façam corretamente na transferência de arquivos (download).
Recomenda-se assim que a fonte de alimentação seja uma das seguintes:
• 3xAA pilhas alcalinas AA (4.5V)
• 4xbaterias recarregáveis AA (NiCad ou NiMh) (4.8V)
• fonte de alimentação regulada de 5V a partir de 9V CC.
Não deve utilizar baterias ou pilhas de 9V PP3, pois estão muito acima do máximo admitido e
podem provocar danos permanentes no PICAXE. As baterias PP3 9V são projetadas para
aplicações de baixo consumo de corrente e longa duração (por ex. alarmes ou multímetros).
Embora uma bateria PP3 9V regulada para 5V possa funcionar por curtos períodos na
alimentação do microcontrolador, assim que forem ligados dispositivos às saídas (por ex.
leds, motores, buzzer, etc.) irá rapidamente descarregar. Deverá portanto utilizar packs de
baterias e não pilhas 9V PP3 em projetos de microcontroladores.
Tenha cuidado na inserção dos integrados PICAXE nos circuitos assegurando-se de que estão
na posição correta, pois a inversão dos pinos pode provocar danos permanentes.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
9
Packs de bateria AA
As pilhas Alcalinas AA possuem uma tensão nominal de 1.5V, pelo que bastam 3 unidades
para obter os 4.5V mínimos da alimentação. Se utilizar 4 unidades (4 x 1,5V=6V) já terá que
inserir um díodo 1N4001 em série para reduzir a tensão. O díodo além de proteger de
inversão de polaridade provoca uma queda de tensão de 0,7V, logo obterá uns aceitáveis
5.3V (6V-0.7V).
As baterias recarregáveis AA (NiCad e NiMh) possuem uma tensão nominal de 1.2V, pelo que
4 unidades produzem 4.8V.
Tenha cuidado em não curto-circuitar os terminais dos packs de baterias, pois a enorme
corrente de curto-circuito pode danificá-los produzindo aquecimento ou mesmo o início de
um incêndio.
Fontes de alimentação reguladas
Alguns utilizadores podem desejar utilizar fontes de alimentação fixas. É essencial que se
utilize uma fonte de qualidade de 9V CC com um regulador de tensão de 5V. As fontes não-
reguladas (com cargas reduzidas) produzem tensões excessivas e podem danificar o
microcontrolador.
A fonte de alimentação 9V CC deve ser regulada para 5V utilizando um regulador de tensão
como o 7805
(1A corrente) ou 78L05 (100mA corrente). O circuito completo do regulador é o apresentado
na figura junta.
O díodo1N4001 garante proteção contra a inversão de polaridade e os condensadores
ajudam a estabilizar a tensão de 5V. Note que estes reguladores de tensão não funcionam
adequadamente senão quando a tensão de entrada é 8V ou superior.
Nota do tradutor: Caso queira pode usar o LM2940 CT-05 que apenas precisa de 6V para
fornecer uma tensão regulada de 5V. Isto é, possibilita o uso de packs 6x1,2V=7,2V sem
problemas.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
10
Considerações tecnicas do Project Board PICAXE 20M
PICAXE-20M Pinout e Circuito
Diagrama de pinos do PICAXE20M
(PIC16F677)
Circuito eletrônico mínimo para
utilizar o PICAXE20M :
Notas:
1) As resistências 10k/22k são essenciais.
Não deixe o pino (19) serial flutuar, o
programa não sera executado!
2) não é necessário um ressonador
cerâmico externo.
3) Veja mais detalhes para o circuito
USB/serial download na seção de cabos
para download de programas.
4) Este manual descreve o uso standart do
chip, (3-5V). Para os Chips X2 existem
alimentação especial para os low power (1,8
– 3V). Use somente fontes de alimentação
de 5V para o 20M e 3,3 para o X2, pois o uso de outras tensões pode danificar
permanentemente o PICAXE.
PICAXE-20X2 Pinout e
Circuito
Diagrama de pinos do
PICAXE20X2 (18F14K22)
Veja o anexo para mais detalhes
sobre o 20 X2.
Nota: O circuito eletrônico mínimo para o PICAXE 20X2 é o mesmo do 20M.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
11
ULN 2803 - Oito drives de Corrente - Relação de pinagem
ULN2803 - é composto de oito drives tipo
transistores NPN Darlington interligados. São ideais
para fazer interfaces entre o nível lógico baixo de
circuitos digitais (como TTL, CMOS ou PMOS /
NMOS) e maiores corrente. É possivel a ligações de
dispositivos como lâmpadas, relés, valvulas
solenoides, motores, ou outras cargas similares para
ampla gama de aplicações em computadores, area
industrial e de aplicações de consumo. Todos os
dispositivos
tem característica de coletor aberto e diodos de
proteção para supressão de transientes. O ULN2803
é projetado para ser compatível com as famílias
padrão TTL, enquanto o ULN2804 é otimizado para 6
a 15 volts CMOS para nivel alto.
Pinos de 1 à 8 são ENTRADAS, 9 é GND, de 18 à 11
são saidas e pino 10 é ligado ao controle (ligado ao
Vcc 5 V).
Sistema PICAXE 2010 Prof. João Carlos Lazaro
12
Diagrama eletrônico do project Board do 20M
Sistema PICAXE 2010 Prof. João Carlos Lazaro
13
Conhecendo a PCI - project Board PICAXE
O project Board PICAXE-20M fornece um sistema de desenvolvimento rápido para
montagens utilizando o microcontrolador PICAXE-20M. Ele fornece o circuito de download,
pontos de conexão para entradas / saídas, e um driver darlington buffered opcional para o
circuito de saída, ou seja, cada saída é assistida pelo driver darlington ULN2803A). O
PICAXE requer uma fonte de 4.5V ou 5V. Nunca utilize tensões superiores a esta.
Descrição da placa:
A- A7 à A0 - Entradas de sinais digital e analógicos, de cima para baixo respectivamente,
IN 7 até IN 0.
B- B0 à B7 – Saídas para acionamento de dispositivos, estas saídas estão assistidas pelo
driver ULN 2803. Note que essas saídas assistidas pelo driver darlington, são
de coletor aberto e devem ser conectadas entre V + e a saída, não 0V e a
Sistema PICAXE 2010 Prof. João Carlos Lazaro
14
saída).
C- Pontos de alimentação positiva (V+).
D- Pontos de alimentação NEGATIVA ( GND).
E- Ponto de ligação do Buzzer piezo (PZ). Este ponto esta ligado com a saída OUT 1
(pino 17). O outro pino do Buzzer deve ser ligado ao ponto de GND (D) ao lado.
F- Drive ULN 2803
G- JUMP LK1 - O Drive de saída ULN2803A pode usar sua própria fonte de alimentação
separada (ligada à direita) ou o a mesma alimentação fornecida ao do chip PICAXE.
Para usar a mesma alimentação um jump deve ser soldado na posição LK1.
H- PIC 16F677 (PICAXE 20M)
I- Jack de download. Conector para P2.
J- Saídas auxiliares para acionamento de dispositivos, estas saídas não são assistidas
pelo drive, isto é, não passam pelo drive ULN 2803. Alguns dispositivos de saída (por
exemplo, LCD Serial) exigem uma conexão direta com a saída do PICAXE e não
através do drive darlington buffer de saída). Cada entrada / saída do chip PICAXE
tem um ponto de conexão direta junto ao pino do o chip.
K- Entradas auxiliares de sinais digital e analógicos, de cima para baixo respectivamente,
IN 7 ate IN 0.
L- Resistor RPD ou RPU. A entrada 0 (INPUT 0) pode ser opcionalmente preparada para
receber níveis baixos (use resistor de 10k na posição RPU), isto é, o resistor que
define o nível da entrada poderá ser um “PULL-UP” RPU, mas somente essa entrada
pode ser modificada, as outras por default são “PULL-DOWN” RPD, isto significa que
as entradas estão definidas em nível baixo, aguardando a mudança de nível para
nova interpretação..
Circuito série para transferência de dados (download) (Cabos)
O circuito série para transferência de dados (download) é idêntico para todos os chips
PICAXE. É constituído por 3 condutores que vão do PICAXE para o porto série do
computador. Um dos condutores transmite dados do computador para o microcontrolador,
outro transmite dados da saída de dados do microcontrolador para o computador e o terceiro
é a massa comum (referência).
O circuito mínimo é apresentado na próxima figura. Este circuito é adequado para a maior
parte das aplicações educativas.
Note que as duas resistências constituem um divisor de tensão. A resistência de 22k,
juntamente com os diodos internos do microcontrolador, adaptam a tensão de saída série à
alimentação do PICAXE, limitando a corrente a valores aceitáveis. A resistência de 10k
bloqueia a flutuação da entrada série enquanto o cabo série não é ligado.
As duas resistências devem ser incluídas em qualquer projeto com circuitos PICAXE (não
estão incluídas no cabo série).
A entrada série não deve ficar desligada. Caso fique desligada a entrada série irá flutuar
entre alto e baixo, provocando mau funcionamento – o PICAXE vai interpretar essa flutuação
como transferência de dados.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
15
Circuito série melhorado para transferência de dados
O díodo Shottky BAT85 funciona com tensão mais reduzida do que os díodos internos do
microcontrolador, estabelecendo uma tensão de referência mais precisa. A resistência
adicional de180R garante uma proteção adicional contra curto-circuitos no pino de saída
série.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
16
Cabos para transferência de dados (download)
O cabo série de transferência de dados é constituído por um cabo de 4 condutores (TVHV ou
equivalente), possui uma ficha standard 3 pinos Molex 0.1" (2.54 mm) num dos terminais e
uma ficha série D 9 pinos macho na outra extremidade. São apenas ligados os pinos 2, 3 e 5
da ficha D. Veja na figura anterior.
Esquema de ligações
Ficha Molex Ficha D série
Pino do PICAXE
Saída série (7) pino 2
Entrada série (6) pino 3
Massa (8) pino 5
No caso de o computador não possuir porto série deve usar um adaptador USB/série.
Para computadores mais antigos com ficha série de 25 pinos, vai precisar de um adaptador
25-9 pinos.
Circuito de Reset
Todos os PICAXE de 18, 28 e 40 pinos possuem um pino de „reset‟. Este pino deve estar no
estado alto para que o microcontrolador funcione. Se o pino ficar desligado o
microcontrolador não funciona. Para ligá-lo basta inserir uma resistência de 4k7 entre o pino
e a alimentação de +5V. Opcionalmente pode incluir um microswitch entre o pino e a massa
(0V) – isso permite-lhe reinicializar o microcontrolador.
Todos os PICAXE DE 8, 14 E 20 não possuem pino de reset. Todavia o reset pode ser
conseguido desconectando a alimentação do chip. Observe que em todas as fontes são
utilizados capacitores para os filtros, assim existe um tempo de descarga (alguns segundos )
que deve ser observado para conseguirmos o efeito de reset.
Clock frequência – Ressonador
Todos os PICAXE de 28 e 40 pinos necessitam de um ressonador (ou cristal de quartzo)
externo.
Recomenda-se o uso de um ressonador cerâmico 4MHz 3 pinos (referência RES035).
Este dispositivo é constituído por um ressonador e dois condensadores num único invólucro
de 3 pinos (N.T - caso opte por um cristal de quartzo, mais caro mas mais preciso, terá que
incluir os dois condensadores de 22pF entre os pinos terminais e a massa). O pino central é
ligado à massa (0V) e os outros dois pinos, indiferentemente, aos pinos respectivos do
PICAXE (9 e 10 no PICAXE28X).
Caso necessário pode fazer overclock no PICAXE usando ressonadores de 8MHz ou
16MHz.Veja a seção „Over-clocking‟ para mais detalhes.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
17
Veja a tabela comparativa abaixo:
Todos Chips 08, 14, 20 e 18 pinos PICAXE não requerem cristal ressonador externo. Alguns
projetos que requeiram mais precisão podem requerer o cristal ressonador externo.
Todos os chips por default tem freqüência de operação em 4 MHZ. Os chips com códigos
terminados em X2 tem por default operação interna em 8MHZ.
Se desejar o PICAXE pode ser "over-clocked 'pelo uso de um 8MHz ou 16MHz. Consulte a
seção 'Over-clocking' para mais detalhes.
O 28x2 e 40X2 contem um circuito interno 4xPLL. Isto significa que a freqüência de operação
interna é 4x a frequência do cristal ressonador externo. A máxima Frequencia desses
dispositivos é, portanto, 64MHz (utilizando um ressonador de 16MHz). Se desejar um
ressonador de 2 pinos ou 2 pinos à cristal, pode ser usado com codigos X, X1 ou X2. Neste
caso dois capacitores de carga com valores adequados também devem ser usados com o
ressonador / cristal. Veja folha de dados do fabricante do ressonador cristal para mais
informações.
Consideraçõs especiais sobre a familia X2
Nessa familia de PICAXE as taxas de clock são maiores. Isso melhora consideravelmente a
velocidade de processamento do PICAXE. O padrão de freqüência de operação é 8MHz,
usando o ressonador interno. Assim os comandos de pausa agora estão calibrados em
8MHz, não 4MHz. Isto também significa que o padrão sertxd e serrxd taxa de
transmissão é agora 9600, n, 8,1.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
18
O chip 20X2 tem opções de clock interno de freqüência de até 64MHz - 16x mais rápido do
que 4MHz!. O 28X2/40X2 tem opções de freqüência de clock externo de até 40MHz (8MHz
interno). O 28X2-3V/40X2-3V tem opções de freqüência de clock externo de até 64MHz
(16MHz interno).
As freqüências de clock externo fazem uso de um ressonador interno 4x Phased Lock Loop
(PLL). Isto significa que o valor do ressonador externo é 25% da velocidade de operação
final, por exemplo, um ressonador 8MHz externo da uma velocidade de operação de 32MHz
(4 x 8MHZ = 32MHZ). Portanto, se um projeto usa um ressonador 8MHz, a velocidade de
funcionamento no PICAXE X2 será instantaneamente de 32MHz sem qualquer modificação de
hardware. Veja o anexo especial sobre o 20X2.
Testando o sistema
Este primeiro e simples programa pode ser utilizado para testar o sistema. Requer a ligação
de um LED (e uma resistência de 330R em série) ao pino 4 (assegure-se da polaridade
correta do LED).
1. Ligue o cabo do PICAXE ao porto série do computador. Registre qual o número do porto a
que está ligado (normalmente designado por COM1 ou COM2).
2. Execute o software Programming.
3. Selecione View>Options para visualizar a janela Options (em princípio aparece
automaticamente).
4.Click no separador „Mode‟ e selecione o tipo de PICAXE correto.
5.Click no separador „Serial Port‟ e selecione o porto série onde o cabo do PICAXE está
ligado.
6.Click em „OK‟
7. Escreva o programa seguinte:
main:
high 4
pause 1000
low 4
pause 1000
goto main
(NOTA: repare no sinal (:) a seguir à label „main‟ e nos espaços entre as instruções e os
números operados).
8. Verifique se o circuito do PICAXE está ligado ao cabo série, e de que as baterias estão
ligadas. Verifique se o LED e a resistência 330R estão ligadas à saída 4.
9. Selecione PICAXE>Run
Sistema PICAXE 2010 Prof. João Carlos Lazaro
19
Deverá aparecer na tela uma barra de download enquanto o programa é transferido. Quando
a transferência terminar o programa deverá começar a executar-se no PICAXE
imediatamente – o LED da saída 4 deverá piscar on e off segundo a segundo.
Se a transferência de dados não tiver sido concluída verifique a lista de causas possíveis e
efetue um hard-reset como indicado na seção seguinte
MENSAGEM DE ERRO
Caso surja uma mensagem de erro, após o clique no ícone compile, dê ok na tela de
mensagem e revise todo o texto. O compilador está lhe dizendo que existe um erro no
código fonte, um “Bug”. Por isso “Debugar” um programa é fundamental antes da
compilação final.
Agora pressione novamente o ícone compile, ele irá compilar o programa. Agora faça o
download para o μC. Verifique o cabo de gravação.
Aguarde, o compilador está estabelecendo comunicação com o μC.
Procedimento Hard-reset
O processo de transferência de dados (download) chama o PICAXE permanentemente
testando a linha de entrada série em busca de um novo sinal vindo do computador. Isto
processa-se automaticamente e não é notado pelo utilizador. Contudo, em raras ocasiões
pode o PICAXE não ler com rapidez suficiente a linha série enquanto executa um programa.
Estas situações verificam-se quando:
Existe um programa corrompido no PICAXE (remoção da alimentação ou do cabo
durante a transferência);
Instruções pause ou wait mais longas que 5 segundos usadas no programa;
Utilização das instruções serin, infrain ou keyin no programa.
Mesmo assim, é muito simples resolver este problema, pois a primeira coisa que qualquer
PICAXE executa quando há um reset é verificar se se trata de uma nova transferência de
dados (download). Portanto, se fizer reset ao PICAXE enquanto uma transferência se inicia, a
nova transferência é sempre reconhecida. Este processo designa-se por hard-reset.
Para realizar um hard-reset utilizando o interruptor de reset.
1) Pressione o interruptor e mantenha-o pressionado.
2) Selecione o menu PICAXE>Run para se iniciar o download.
3) Aguarde até que a barra de progressão apareça na tela.
4) Largue o interruptor de reset.
Para realizar um hard reset utilizando a fonte de alimentação:
1) Desligue a fonte de alimentação.
2) Aguarde até que os capacitores da fonte de alimentação descarreguem (pode
demorar até 30 segundos, conforme o circuito).
3) Selecione o menu PICAXE>Run para iniciar a transferência.
4) Aguarde até que a barra de progressão apareça na tela.
5) Ligue a fonte de alimentação.
Lista de controle (Download CheckList)
Sistema PICAXE 2010 Prof. João Carlos Lazaro
20
Se não conseguir fazer download, verifique cada um dos itens da lista abaixo.
Se o programa falhar a seguir a um download isso deve-se geralmente a falha de
alimentação (ou falha de ligação do cabo). Experimente com uma bateria nova.
Microcontrolador PICAXE
• O integrado PICAXE está corretamente inserido no suporte.
• Está a usar um integrado PICAXE (e não um PIC não programado).
• Está a usar um PICAXE avariado (por ex. o chip sofreu uma sobre-tensão ou
inversão de polaridade).
• A alimentação provem de uma fonte CC 4.5V a 5.5V DC regulada.
• O pino reset está ligado a V+ através de uma resistência 4.7k.
• O ressonador de 3 pinos está corretamente ligado.
• As resistências10k/22k para o circuito série de download estão corretamente ligadas.
Software
• Instalou a última versão do software Programming Editor (v4.1.0 ou posterior, veja a
página sobre software em “www.picaxe.co.uk” para informação atualizada);
• O porto série está corretamente selecionado (menu View>Options>Port);
• A velocidade do ressonador está corretamente selecionada (menu
View>Options>Mode)
• Não existe software em execução no computador em conflito com o porto série
utilizado.
Cabo de transferência (Download)
• O cabo está corretamente ligado.
• O suporte está corretamente ligado às resistências 10k/22k.
• Os pinos do suporte estão corretamente soldadas à placa de circuito impresso.
• O cabo está corretamente inserido na ficha série do computador.
• O cabo está devidamente inserido no suporte da placa.
Adaptador USB
• O adaptador USB/série está corretamente configurado para um porto série.
• O adaptador USB/série utiliza o driver correto (procure no sítio www.picaxe.co.uk
o driver para o efeito).
Compreendendo a memória do PICAXE
A memória do PICAXE é constituída por três áreas diferentes. A quantidade de memória varia
conforme o tipo de PICAXE.
Memória de Programa (FLASH)
A memória de programa é onde o programa é guardado após uma transferência (download).
Trata-se de uma memória rápida tipo FLASH, que se pode reprogramar até cerca de 100.000
vezes. O programa não se perde quando se desliga a alimentação, pelo que é executado
assim que esta é ligada de novo. Não é normalmente necessário apagar um programa, pois
cada novo download reprograma toda a memória. No entanto se quiser parar um programa
pode utilizar o menu PICAXE>Clear Hardware Memory para efetuar o download de um
programa “vazio” para o PICAXE.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
21
Num PICAXE28X pode carregar cerca de 600 linhas de programa. Este valor é aproximado,
pois cada instrução ocupa espaços diferentes em memória.
Para verificar a memória livre basta selecionar o menu PICAXE>Check Syntax.
Memória de Dados (EEPROM)
A memória de dados é um espaço adicional de memória do microcontrolador. Os dados
também não são perdidos quando se desliga a alimentação. Em cada transferência de dados
(download) esta memória é posta a “0”, a não ser no caso de ser usada a instrução EEPROM
para carregar dados na memória.
Veja mais detalhes nas descrições das instruções EEPROM, read e write.
Memória para as variáveis (RAM)
A memória RAM é usada para guardar dados temporários em variáveis durante a execução
do programa. Esta memória perde toda a informação quando se desliga a alimentação.
Existem três tipos de variáveis – usos gerais, armazenamento e funções especiais.
Para informações sobre as variáveis matemáticas veja a informação contida na descrição da
instrução let do Manual de Instruções BASIC.
Variáveis de Usos Gerais (GPR – General Purpose Registers)
Existem 14 variáveis tipo byte de usos gerais. Estas variáveis byte são designadas b0 a b13.
As variáveis tipo byte (8 bits) podem guardar números inteiros entre 0 e 255. As variáveis
tipo byte não podem representar números negativos nem fracionários e, no caso de ser
excedido o referido intervalo 0-255 darão „overflow‟ sem aviso (por ex.. 254 + 3 = 1) (2 - 3
= 255).
Para números maiores podem combinar-se duas variáveis byte de modo a criar uma variável
word (16 bits), que é capaz de guardar números inteiros entre 0 e 65535.
Estas variáveis word são designadas w0 a w6, e são construídas do seguinte modo:
w0 = b1 : b0
w1 = b3 : b2
w2 = b5 : b4
w3 = b7 : b6
w4 = b9 : b8
w5 = b11 : b10
w6 = b13 : b12
Portanto, o byte mais significativo de w0 é b1, e o byte menos significativo de w0 é b0.
Para além disso os bytes b0 e b1 (w0) podem ser divididos em variáveis bit.
As variáveis bit podem ser utilizadas onde for necessário guardar um único bit (0 ou 1) numa
variável
b0 = bit7: bit6: bit5: bit4: bit3: bit2: bit1: bit0
b1 = bit15: bit14: bit13: bit12: bit11: bit10: bit9: bit8
Pode-se utilizar qualquer variável word, byte ou bit numa expressão matemática ou
instrução que utilize variáveis. Deve contudo precaver-se para a possibilidade de
acidentalmente usar a mesma variável „byte‟ ou „bit‟ que está a ser usada como parte de
uma variável „word‟ noutra variável.
Todas as variáveis de uso geral são inicializadas a 0 quando é feito reset.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
22
Variáveis para armazenamento
As variáveis de armazenamento são localizações de memória adicional atribuídas para
armazenamento temporário de dados tipo byte. Não podem ser usadas em cálculos
matemáticos, mas podem ser usadas para armazenar temporariamente valores byte através
das instruções peek e poke.
O número de localizações de memória disponíveis varia conforme o tipo de PICAXE.
Para o PICAXE28X são:
112 do endereço 80 ao 127 ($50 to $7F) e ainda do endereço 192 ao 255 ($C0 to $FF)
Estes endereços variam de acordo com as especificações técnicas do microcontrolador.
Para informações sobre as instruções poke e peek veja a informação contida na descrição da
instrução let do Manual de Instruções PBASIC.
RESUMO DOS CIRCUITOS PARA INTERFACE
Esta seção apresenta um breve resumo das interfaces de
entrada/saída com o microcontrolador PICAXE. Para explicações
mais detalhadas, veja a seção 3 do Manual de Circuitos de
Interface. Nessa seção são fornecidos esquemas de ligação
detalhados e programas para a maioria dos dispositivos correntes.
Saídas Digitais (Digital Outputs)
O microcontrolador pode deixar passar (sink) ou fornecer
(source) correntes de 20 mA nos pinos de saída. Assim
dispositivos de baixa corrente, como os LEDs, podem ser
diretamente ligados aos pinos de saída. Dispositivos que exijam
mais corrente podem ser interfaceados através de um transistor
(p.ex. BC548B9, um FET ou um Darlington).
Entradas Digitais (Digital Inputs)
Os interruptores podem ser ligados como entradas digitais através de
uma simples resistência de 10k. A resistência é essencial pois impede
que a entrada fique a “flutuar” quando o interruptor estiver aberto.
Isso levaria a um funcionamento imprevisível.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
23
Entradas Analógicas (Analogue Inputs)
As entradas analógicas podem ser ligadas a um divisor
potenciométrico entre V+ e 0V. A tensão de referência é a tensão de
alimentação, e o sinal analógico não deve exceder a tensão de
alimentação.
Fluxogramas ou BASIC?
O software possui dois tipos de programação, a programação por instruções escritas BASIC e
a programação gráfica por fluxogramas. Ambos os métodos utilizam as mesmas instruções e
sintaxe. O fluxograma constitui um método gráfico simples de juntar as instruções BASIC,
prescindindo-se da escrita. Os fluxogramas usam um subconjunto das instruções BASIC e é
particularmente destinado ao uso por alunos mais jovens em ambientes escolares.
Uma vantagem da programação por fluxogramas é o ambiente gráfico de simulação. Isso
permite que os alunos “vejam” o seu programa ser executado antes de o transferirem para o
microcontrolador. Contudo, apenas algumas instruções são suportadas pelo editor.
A maioria dos iniciados e utilizadores educativos preferem as instruções BASIC como método
de programação. Trata-se de um sistema mais potente do que o método dos fluxogramas,
que se tornam complexos para programas de certa dimensão.
Os fluxogramas são automaticamente convertidos para instruções BASIC antes do programa
ser transferido para o microcontrolador. Assim, a principal preocupação deste manual vai ser
na programação por instruções BASIC.
Para mais informações sobre o método de programação por fluxogramas, veja o apêndice F,
sobre fluxogramas.
main:
high 0
wait 1
low 0
wait 1
goto main
Anotações
Sistema PICAXE 2010 Prof. João Carlos Lazaro
24
BASIC Commands Summary
Esta tabela fornece uma visão geral dos comandos disponíveis. Consulte a seção 2 do
o manual para informações mais específicas e exemplos para cada Comando BASIC
Necessidade Possíveis Instruções (PICAXE-08 / 08M/14M/20M
Commands)
Output high, low, toggle, pulsout, let pins =
ADC Readadc
I/O Config. input, output, reverse, let dirs =
PWM Pwm
Sound Sound
Input if...then, readadc, pulsin, button
Serial serin, serout
Program Flow goto, gosub, return, branch
Loops for...next
Mathematics let (+, -, *, **, /, //, max, min, &, |, ^, &/, |/, ^/ )
Variables if...then, random, lookdown, lookup
Data memory eeprom, write, read
Delays pause, wait, nap, sleep, end
Miscellaneous symbol, debug
Anotações
Sistema PICAXE 2010 Prof. João Carlos Lazaro
25
CAPITULO – 2 TUTORIAIS
Tutorial 1 – relacionando entradas (INPUTS) e saídas (OUTPUTS)
Os componentes abaixo podem ser considerados como componentes de entradas e
saídas ligados ao microcontroladores PIC. Observe cada um dos componentes e pesquise
cada um dos seu simbolos correspondente, faça o desenho ao lado da figura. Lembre-se,
eles são componentes que servem às entradas ou saídas do microcontrolador.
Se estiver usando cores, os fios vermelhos são positivos e os fios negativos são negros.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
26
2) Relacionar o desenho anterior com este. Escolher quais componentes estão
relacionados com entrada (INPUT) e saída (OUTPUT). Faça o desenho de conecção
respeitanto a polaridade do componente.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
27
3) Nesta tabela relacionar os desenhos com os respectivos simbolos, preenchendo a
primeira coluna com o nome do componente escolhido, a segunda coluna com o
desenho do componente correspondente à saídas (OUTPUT) ou entrada (INPUT) e a
terceira coluna com o símbolo do componente escolhido.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
28
Tutorial 2 - Usando Rotulos (labels), Comentários e Espaços
Sintaxe:
As labels (etiquetas) são usadas como marcadores em todo o programa. As labels são
usadas para marcar uma posição para onde “saltar” no programa através de uma instrução
goto, gosub ou outra instrução. Uma label pode ser qualquer palavra (não reservada) e pode
conter dígitos e o carácter underscore ( _ ). As labels devem ter como carácter inicial uma
letra (não um dígito), e são definidas com o sinal dois-pontos (:) a seguir ao nome. O sinal
não é necessário quando a label faz parte integrante de instruções.
O compilador não é case-sensitive (sensível a maiúsculas), pelo que podem ser usadas
indiscriminadamente maiúsculas e minúsculas.
Exemplo:
repete: „ Rotulo - Label “repete”
high 1 „ liga a saída 1
pause 1000 „ espera de 1000 milisegundos
low 1 „ desliga a saída 1
pause 500 „ espera de 0,5 segundo
goto repete „ salto para o início
Os comentários começam por um apóstrofe („) ou ponto e vírgula (;) e continuam até ao fim da linha. A instrução REM pode também ser utilizada para inserir comentários. Exemplos:
high 0 „coloca pin0 alto high 0 ;coloca pin0 alto
REM coloca pin0 alto
Lembre-se que os comentários (uma explicação inserida após o sinal („)) podem tornar
cada linha do programa mais fácil de entender. Os comentários são ignorados pelo
computador quando é feita a transferência do programa para o PICAXE.
É também uma boa técnica de programação o uso de tabulações no início das linhas sem
labels, de modo a que as instruções fiquem alinhadas. O termo „whitespace‟ (espaço em
branco) é usado pelos programadores para se referirem a tabulações, espaços e linhas em
branco nos programas, que podem tornar a leitura mais fácil.
Nota:
Output
instruções PBasic – Comandos e Sintaxe
Rótulos (labels)/comentários/espaços
Goto
Labels, Comentarios e Espaços
Comentarios
Sistema PICAXE 2010 Prof. João Carlos Lazaro
29
Algumas linguagens BASIC mais antigas utilizavam „números de linha em vez de labels
nas instruções „goto‟.
Este sistema é inconveniente pois alterações posteriores no programa, obrigam a alterar a
numeração. O sistema de labels (etiquetas) é usado na maioria das linguagens modernas.
Cuidado para não rotular palavras que são comandos suportados pelo programa, isso gera
conflito. Veja o exemplo abaixo:
LOOP: ' define endereço de programa
' um símbolo endereço termina por dois pontos
high 7 ' liga a saída 7
pause 200 'espera 0,2 segundos (200 milisegundos)
low 7 ' desliga a saída 7
pause 200 ' espera 0,2 segundos (200 milisegundos)
goto LOOP ' efetua um salto para o início LOOP (ciclo)
A palavra LOOP é considerada uma instrução pelo compilador e gera um erro na
linha de programação.
Whitespace (espaço em branco) é o termo utilizado pelos programadores para definirem a
área branca na impressão de um programa. Nela se incluem os espaços, as tabulações e as
linhas vazias. Qualquer uma delas pode ser utilizada no programa para o tornar mais
compreensível e facilitar a leitura.
Convencionou-se colocar as labels encostadas à esquerda. Todas as outras instruções
devem ser espaçadas através da tecla de tabulação. Esta convenção torna o programa mais
fácil de ler e de seguir. Exemplo:
novamente: ‘novamente: é um label, uma posição
low 0 ‘pino 0 está em nível baixo
high 1 ‘pino 1 está em nível alto
pause 1000 ‘pausa a saída por 1000ms = 1seg.
high 0 ‘pino 0 está em nível alto
low 1 ‘pino 1 está em nível baixo
pause 1000 ‘pausa a saída por 1000ms = 1seg.
goto novamente ‘goto manda saltar para label novamente,entra em
ciclo
Espaço em branco - Whitespace
Sistema PICAXE 2010 Prof. João Carlos Lazaro
30
Sintaxe:
GOTO endereço
Endereço é uma label (etiqueta) que especifica para onde saltar.
Função:
O programa passa a ser executado a partir do endereço especificado (salto
incondicional).
Informação:
A instrução goto é um salto permanente para uma nova seção do programa. O local de
salto é assinalado por uma label.
Exemplo1:
ciclo: „ LABEL
high 1 „ liga a saída 1
pause 500 „ espera 0,5 segundos
low 1 „ desliga a saída 1
pause 500 „ espera 0,5 segundos
goto ciclo
Exemplo2:
ledflash: ' LED flash rate & mark/space experiment
high 2 ' turn on output pin 2- LED lights up
high 5 ' turn on output pin 5- LED lights up
pause 5 ' keep it on for 5 milliseconds
low 2 ' turn off pin 2 - LED goes out
pause 50 ' keep it off for 50 ms
low 5 ' turn off pin 2 - LED goes out
goto ledflash ' repeat routine
GOTO
Sistema PICAXE 2010 Prof. João Carlos Lazaro
31
Tutorial 3 - Temporizações
Sintaxe:
PAUSE milisegundos
Milisegundos é uma variável/constante (0-65535) que especifica quantos
milisegundos dura a pausa.
Função:
Pausa com a duração especificada em milisegundos. A duração da pausa na execução do
programa possui a precisão do relógio do microcontrolador – neste caso um ressoador
cerâmico a 4 MHz.
Informação:
A instrução pause cria um atraso de tempo (em milisegundos a 4 MHz). O maior atraso
possível é de cerca de 65 segundos
Durante a pausa o único modo de reagir às entradas é através de interrupts (veja a
informação sobre a instrução setint). Não inclua longas pausas em ciclos que se
destinam a detectar alterações nas entradas.
Para criar um atraso de maior duração (por ex. 5 minutos) deverá utilizar um ciclo
for…next (os detalhes desse comando será visto em outro tutorial ).
for b1 = 1 to 5 „ 5 ciclos
Pause 60000 „ espera de 60 segundos
next b1
Exemplo1:
ciclo:
high 1 „ liga a saída 1
pause 500 „ espera 0,5 segundos
low 1 „ desliga a saída 1
pause 500 „ espera 0,5 segundos
goto ciclo
Exemplo 2:
repete: „ Rotulo - Label “repete”
high 1 „ liga a saída 1
wait 1 „ espera de 1 segundo
low 1 „ desliga a saída 1
pause 500 „ espera de 0,5 segundo
goto repete „ salto para o início
Output
Temporizadores/ Controle de consumo
instruções PBasic – Comandos e Sintaxe
Pause, nap, Sleep, Wait, Symbol
PAUSE
Sistema PICAXE 2010 Prof. João Carlos Lazaro
32
Este programa usa a instrução wait. As instruções wait e pause criam ambas atrasos.
Contudo a instrução wait só pode ser usada para segundos, enquanto a instrução pause
pode ser usada para atrasos mais pequenos (medida em milisegundos (1/1000 do segundo)).
Wait pode ser seguida por um número entre 1 e 65.
Pause pode ser seguida por um número entre 1 e 65535.
Sintaxe:
NAP período
Período é uma variável/constante que determina a duração da suspensão de funcionamento a consumo reduzido. A duração é calculada como 2^período * 18 ms (aproximadamente). O período pode variar entre 0 e 7.
Função: Suspende a operação do microcontrolador durante o período indicado. O consumo é
reduzido em função do valor do período.
Informação:
A instrução nap coloca o microcontrolador no modo de consumo reduzido durante um
curto período de tempo. Quando está no modo de consumo reduzido, todos os
temporizadores são desligados, pelo que as instruções servo e pwmout deixam de
funcionar. O período de tempo nominal é dado pela tabela junta. Devido a tolerâncias
nos temporizadores, a duração está sujeita a -50 a +100% de tolerância. A temperatura
ambiente também afta esta tolerância, pelo que em nenhum projeto que necessite de
uma base de tempo precisa se deve usar esta instrução.
Período Tempo de
atraso
0 18 ms
1 36 ms
2 72 ms
3 144 ms
4 288 ms
5 576 ms
6 1,152 s
7 2,304 s
A instrução nap usa o temporizador do watchdog interno, que não é alterado por
alteração na frequência do relógio do sistema.
Exemplo:
ciclo: high 1 „ liga a saída 1
nap 4 „ suspende durante 2^4 x 18ms low 1 „ desliga a saída 1 nap 7 „ suspende durante 2^7 x 18ms goto ciclo „ salta para o início
NAP
Sistema PICAXE 2010 Prof. João Carlos Lazaro
33
Sintaxe:
SLEEP período
Período é uma variável/constante (0-65535) que especifica a duração da instrução em múltiplos de 2,3 segundos.
Função: Fica em estado sleep durante o período especificado (período x 2,3 s).
Informação: A instrução sleep coloca o microcontrolador no modo de baixo consumo durante um
certo tempo. Neste estado de baixo consumo, os temporizadores internos são
desligados, pelo que as instruções pwmout e servo deixam de funcionar. O período
nominal é de 2,3 s, pelo que um sleep 10 corresponde a 23 segundos. A instrução sleep
não é precisa, pelo que devido a tolerâncias de fabricação dos temporizadores internos,
existe uma tolerância de -50% a +100%. A temperatura ambiente também influencia
esta tolerância, pelo que não deve ser utilizada esta instrução como base de tempo, em
programas que exijam precisão.
Para “sonos” mais curtos pode usar-se a instrução nap.
Exemplo:
ciclo: high 1 „ liga (on) a saída 1 sleep 10 „ dorme durante 23 segundos low 1 „ desliga (off) a saída 1
sleep 100 „ dorme durante 230 segundos goto ciclo „ volta ao início
Sintaxe:
Symbol nome símbolo = valor
Symbol nome símbolo = valor ?? constante
Nome símbolo é uma cadeia de caracteres (string) que deve começar com um
caractere alfabético ou um “_”. Após o primeiro caractere, pode conter também
caracteres numéricos (“0” – “9”).
Valor é uma variável ou constante a que se atribui um nome simbólico
alternativo.
?? pode ser qualquer uma das funções matemáticas suportadas.
Função:
Atribui um valor a um novo nome simbólico. Os operadores matemáticos podem também
ser usados em constantes (não variáveis).
SYMBOL
SLEEP
Sistema PICAXE 2010 Prof. João Carlos Lazaro
34
Informação:
Os símbolos são utilizados para renomear constantes ou variáveis para torná-las mais fáceis
de lembrar na programação. Os símbolos não produzem qualquer alteração ao tamanho dos
programas pois são convertidos para “números” antes do download, portanto, o uso dos
símbolos não aumenta a dimensão do programa e torna-o mais legível. Os valores
constantes e os nomes de variáveis são atribuídos fazendo seguir ao nome do símbolo o sinal
de igual (=), seguido da variável ou constante.
Os nomes dos símbolos podem conter letras e números (flash1, led3, etc.), mas o primeiro
caractere é obrigatoriamente uma letra. Naturalmente os nomes dos símbolos não podem
ser palavras reservadas como input, step, pause, etc.
Quando utilizar definições de pinos de entrada ou saída tenha cuidado em usar o termo
“pin0” e não “0” para descrever as variáveis de entrada nas instruções if…then.
Veja os exemplos 1 e 2.
Exemplo 1:
symbol LED = 4 „ renomeia output4 „LED‟
symbol buzzer = 2 „ renomeia output2 „buzzer‟
principal: „ cria uma label „principal‟
high LED „ liga o LED (on)
low buzzer „ desliga o buzzer (off)
pause 1000 „ espera 1 segundo (1000 ms)
low LED „ desliga o LED (off)
high buzzer „ liga o buzzer (on)
wait 1 „ espera 1 segundo
goto principal „ salta para o início
Exemplo 2:
symbol RED_LED = 7 „ define um pino de saída
symbol CONTA = B0 „ define o símbolo de uma variável
let CONTA = 200 „ carrega a variável com o valor 200
repete: „ define endereço de programa:
„ um símbolo endereço termina por dois pontos
high RED_LED „ liga a saída 7
pause CONTA „ espera 0,2 segundos (200 milisegundos)
low RED_LED „ desliga a saída 7
pause CONTA „ espera 0,2 segundos (200 milisegundos)
goto repete „ efetua um salto para o início repete (ciclo)
Sistema PICAXE 2010 Prof. João Carlos Lazaro
35
Exercicios:
1) Acione a seqüência de leds pausando 1s em cada led. Use o comando Symbol para
nomear cada saída conforme os nomes : - Vermelho1, amarelo1, verde1,
vermelho2, amarelo2, verde2.
Solução: symbol VERMELHO1 = 0 ' renomeia output0
symbol AMARELO1 = 1 'renomeia output1
symbol VERDE1 = 2 ' renomeia output2
symbol VERMELHO2 = 3 ' renomeia output3
symbol AMARELO2 = 4 ' renomeia output4
symbol VERDE2 = 5 ' renomeia output5
principal: ' cria uma label „principal‟
high VERMELHO1 ' liga o LED (on) VERMELHO1
wait 1 'espera 1 segundo
low VERMELHO1 ' desliga o VERMELHO1 (off)
wait 1 ' espera 1 segundo (1000 ms)
high AMARELO1 ' liga o LED (on) AMARELO1
wait 1 'espera 1 segundo
low AMARELO1 ' desliga o AMARELO1 (off)
wait 1 ' espera 1 segundo (1000 ms)
high VERDE1 ' liga o LED (on) VERDE1
wait 1 'espera 1 segundo
low VERDE1 ' desliga o VERDE1(off)
wait 1
high VERMELHO2 ' liga o LED (on) VERMELHO2
wait 1 'espera 1 segundo
low VERMELHO2 ' desliga o VERMELHO2 (off)
wait 1 ' espera 1 segundo (1000 ms)
high AMARELO2 ' liga o LED (on) AMARELO2
wait 1 'espera 1 segundo
low AMARELO2 ' desliga o AMARELO2 (off)
wait 1 ' espera 1 segundo (1000 ms)
high VERDE2 ' liga o LED (on) VERDE2
wait 1 'espera 1 segundo
low VERDE2 ' desliga o VERDE2(off)
goto principal ' salta para o início
2) Programar a saida output 4 para temporizar por 7,5 s. Usar a variavel b1 e nomear a palavra LED para a saida 4 (symbol).
3) Projetar um simulador de presença para uma residencia com 5 itens para serem
acionados. Temporizar para o periodo noturno de 6 horas. Cada item deve ser
acionado de forma sequencial e repetindo alguns, isto é, distribua os equipamentos numa linha de tempo acionando um de cada vez. Acionar: - Luz da frente da casa 6hX1(FRcasa), Luz da sala 4hX1 (Lsala), TV 2hX1 (TV), Liquidificador 30sX10 (Lq), Radio 1hX3 (radio). Fazer o exercicio para uma temporização real parao periodo de 6 horas.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
36
TUTORIAL 4 - Uso das Constantes e variáveis
SINTAXES:
As constantes podem ser declaradas de quatro modos diferentes:
decimais, hexadecimais, binárias e ASCII.
Os números decimais são escritos diretamente sem qualquer prefixo.
Os números hexadecimais (hex) são precedidos pelo sinal dólar ($).
Os números binários são precedidos pelo sinal de percentagem (%).
Os valores ASCII são colocados entre aspas (“).
Exemplos:
100 „ 100 em decimal
$64 „ 64 hex
%01100100 „ 01100100 binário
“A” „ “A” ascii (65)
“Hello” „ “Hello” – equivalente a “H”, “e”, “l”, “l”, “o”.
B1 = B0 ^ $AA „ ou exclusivo da variável B0 com AA hex
SINTAXES:
A memória RAM é utilizada para armazenar dados temporários em variáveis durante a
execução do programa. A memória perde todos os dados quando é feito reset
(reinicialização) ou quando se desliga a alimentação. Existem três tipos de variáveis – de
usos gerais, de armazenamento e para fins especiais.
Veja a instrução let para mais pormenores sobre as variáveis matemáticas.
Variáveis de usos gerais
Existem 14 variáveis de usos gerais tipo byte. Estas variáveis byte são designadas b0
a b13. As variáveis byte podem guardar números inteiros entre 0 e 255. As variáveis
byte não podem guardar números negativos ou fracionários, e produzem “overflow”
(transbordo) sem qualquer aviso, se o valor guardado exceder a gama 0-255. Por
exemplo, 254 + 3 = 1 ou 2 – 3 = 255.
Output
Instruções PBasic – Comandos e Sintaxe
CONSTANTES e VARIAVEIS
VARIAVEIS
CONSTANTES
Sistema PICAXE 2010 Prof. João Carlos Lazaro
37
É possível guardar números grandes em duas variáveis byte combinadas para constituir
uma variável tipo word, que é capaz de guardar números inteiros de 0 a 65535. Estas
variáveis word são designadas de w0 a w6 e são construídas de seguinte modo:
w0 = b1:b0
w1 = b3:b2
w2 = b5:b4
w3 = b7:b6
w4 = b9:b8
w5 = b11:b10
w6 = b13:b12
Portanto o byte mais significativo de w0 é b1, e o menos significativo é b0. Por outro
lado, os bytes b0 e b1 (w0) estão separados em variáveis bit. Estas variáveis bit podem
ser usadas sempre que se pretender guardar um dado de 1 bit.
b0 = bit7:bit6:bit5:bit4:bit3:bit2:bit1:bit0
b1 = bit15:bit14:bit13:bit12:bit11:bit10:bit9:bit8
Pode usar-se uma variável byte, word ou bit em qualquer expressão matemática ou
instrução que utilize variáveis. Deve-se contudo ter cuidado com a possível repetição da
mesma variável usada individualmente e como parte de outra. Por exemplo, não usar b0
e w0 separadamente no mesmo programa.
Todas as variáveis de usos gerais são postas a 0, quando há uma reinicialização do
programa.
Variáveis de armazenamento
As variáveis de armazenamento são localizações de memória adicionais destinadas ao
armazenamento temporário de dados byte. Estas variáveis não podem ser utilizadas
diretamente em operações matemáticas, mas podem guardar temporariamente valores
tipo byte através das instruções peek e poke.
Veja as instruções peek e poke para mais informações.
Variáveis para funções especiais (SFRs)
o PICAXE-14M/20M SFR
o
As informações a seguir serão abordadas no tutorial 5
pins = o porto de entrada quando se faz leitura do porto
pins = o porto de saída quando se escreve no porto
Repare que pins é uma “pseudo” variável que pode ser utilizada quer na leitura quer na
escrita do porto.
Quando usada à esquerda de uma declaração, pins aplica-se ao porto de “saída”,
exemplo:
let pins = %11000011
vai ligar as saídas 7,6,1 e 0 deixando as outras desligadas.
Quando se usa pins à direita de uma declaração, estamos a referir-nos ao porto de
entrada, ex:
let b1 = pins
vai guardar em b1 a leitura do porto de entrada.
Acrescenta-se que a declaração
Sistema PICAXE 2010 Prof. João Carlos Lazaro
38
let pins = pins
é válida e significa fazer o porto de saída igual ao porto de entrada.
Para evitar esta confusão, entre porto de entrada e saída, recomenda-se que o nome
'outpins " seja utilizada na instrução, por exemplo,
let outpins = pins
A variável pins pode ser subdividida em variáveis bit individuais para leitura dos pinos
individualmente, através da instrução if … then. (Tutorial 8)
pins = pin7:pin6:pin5:pin4:pin3:pin2:pin1:pin0. (20M)
pins = x : x : x : pin4 : pin3 : pin2 : pin1 : pin0 (14M) (x = não existe)
infra = Variavel usada em separado quando utilizada dentro do comando infrain
keyValue = Outro nome para infra, usada no comando keyin.
Quadro de resumo:
Informações sobre variáveis
Variáveis são muito utilizadas em programação, elas podem assumir valores numéricos e
podem mudar seu valor ao longo do programa. Se houver necessidade de realizar cálculos
num programa, o resultado sempre deve ser dado à uma variável. Para declarar variáveis
devemos utilizar o comando “symbol”.
Os nomes das variáveis podem ser de três tipos: 1bit, 1byte (8bits) ou 1word(16bits).
Sempre devemos declarar as variáveis no menor tamanho possível para o dado que ela irá
armazenar.
O PICAXE tem um número limitado de variáveis. Elas são organizadas em 7 variáveis
words (w0 até w6), 14 variáveis bytes (b0 até b13) e 16 variáveis bits (bit0 até bit15).
- 1 byte pode guardar valores de 0 até 255
- 1 word pode guardar valores de 0 até 65.535
Exemplos de atribuição de números nos sistemas: decimal, hexadecimal e binário
a = 15 „atribuição no sistema decimal (a = 15)
a = $f „atribuição no sistema hexadecimal - $ (a = 15)
a = %00001111 „atribuição no sistema binário - % (a = 15)
a = % 11111111 (a= 255)
Anotações
Sistema PICAXE 2010 Prof. João Carlos Lazaro
39
Exemplos:
1) Acionamento de um led na saída 7 com pausa de 200 milisegundos.
symbol RED_LED = 7 ' define um pino de saída
symbol CONTA = b0 ' define o símbolo de uma variável
let CONTA = 200 ' carrega a variável com o valor 200
repete: ' define endereço de programa
' um símbolo endereço termina por dois pontos
high RED_LED ' liga a saída 7
pause CONTA 'espera 0,2 segundos (200 milisegundos)
low RED_LED ' desliga a saída 7
pause CONTA ' espera 0,2 segundos (200 milisegundos)
goto repete ' efetua um salto para o início LOOP (ciclo)
2) Faça um seqüencial de 5 leds, acionando um de cada vez pausados de 100
milisegundos cada. Utlize a instrução ” let pins=” para isso.
'*************************************
'*PROGRAMA: Seqüencial de 5 canais *
'*PROGRAMADOR: João Carlos *
'*DATA: 18/03/10 *
'*VERSÃO: 1.0 *
'*************************************
novamente: 'label
Let pins= %00000001 'põe nível alto na porta 0
PAUSE 100 'aguarda 100ms
Let pins = %00000010 'põe nível alto na porta 1
PAUSE 100 'aguarda 100ms
Let pins = %00000100 'põe nível alto na porta 2
PAUSE 100 'aguarda 100ms
Let pins = %00001000 'põe nível alto na porta 3
PAUSE 100 'aguarda 100ms
Let pins = %00010000 'põe nível alto na porta 4
PAUSE 100 'aguarda 100ms
Let pins = %00100000 'põe nível alto na porta 5
PAUSE 100 'aguarda 100ms
GOTO novamente 'retorna para o início do programa
3) Faça o mesmo seqüencial utilizando decimal para as atribuições “let pins =”
4) Faça o mesmo seqüencial utilizando hexadecimal para as atribuições “let pins =”
Sistema PICAXE 2010 Prof. João Carlos Lazaro
40
Tutorial 5 - Tabalhando com as saidas (OUTPUT)
Os camando mais utilizados para controle de saidas são:
high, low, toggle, pulsout, let pins =
Sintaxe:
LOW pino
Pino é uma variável/constante (0-7) que especifica o pino de E/S a usar.
Função:
Coloca o pino no nível lógico baixo.
Informação:
A instrução low desliga uma saída, colocando-a no nível lógico baixo.
Exemplo:
ciclo:
high 1 „ liga a saída 1
pause 500 „ espera 0,5 segundos
low 1 „ desliga a saída 1
pause 500 „ espera 0,5 segundos
goto ciclo
Sintaxe:
HIGH pino
Pino é uma variável/constante (0-7) que especifica o pino E/S a usar.
Função:
Coloca o pino no nível lógico alto.
Informação:
A instrução high coloca um pino de saída alto (ligado).
Exemplo:
ciclo:
high 1 „ liga a saída 1
pause 500 „ espera 0,5 segundos
low 1 „ desliga a saída 1
pause 500 „ espera 0,5 segundos
goto ciclo
Output
Instruções PBasic – Comandos e Sintaxe
Low, High, “let pins =”, toggle
HIGH
LOW
Sistema PICAXE 2010 Prof. João Carlos Lazaro
41
Um microcontrolador funciona executando uma enorme quantidade de instruções, no mais
curto intervalo de tempo, processando sinais digitais. Estes sinais são codificados no sistema
binário – o sinal pode ser high (1) ou low (0).
Por comparação, lembre-se que o sistema de numeração corrente é o sistema decimal. Este
sistema de numeração usa dez dígitos, de 0 a 9 para representar valores maiores ou
menores.
Contudo, quando se trabalha com microcontroladores é mais fácil pensar em código binário.
Isto é particularmente verdade quando se tenta controlar múltiplas saídas ao mesmo tempo.
Um dígito binário é designado por bit (binary digit). O sistema PICAXE utiliza 8 bits (1 byte),
com o bit menos significativo ao lado direito e o mais significativo ao lado esquerdo.
Assim, o número binário %11001000 significa que os bits 7,6,3 estão altos (high=1) e os
outros baixos (low=0). O sinal % indica ao compilador que se está a trabalhar em binário,
em vez de decimal.
Isso significa que todas as 8 saídas podem ser controladas ao mesmo tempo, em vez de
utilizar múltiplas instruções high ou low. O programa seguinte mostra como apresentar num
display de 7 segmentos uma contagem de 0 to 9.
Exemplo1:
Cada instrução „let pins=‟ modifica o número de segmentos que é ligado no display.
Isto é mais rápido, e mais eficiente em termos de memória, do que utilizar muitas instruções
high e low.
main:
let pins = %00111111 „ dígito 0
pause 250 „ espera 0.25 segundos
let pins = %00000110 „ dígito 1
pause 250 „ espera 0.25 segundos
let pins = %01011011 „ dígito 2
pause 250 „ espera 0.25 segundos
let pins = %01001111 „ dígito 3
pause 250 „ espera 0.25 segundos
let pins = %01100110 „ dígito 4
pause 250 „ espera 0.25 segundos
let pins = %01101101 „ dígito 5
pause 250 „ espera 0.25 segundos
let pins = %01111101 „ dígito 6
pause 250 „ espera 0.25 segundos
let pins = %00000111 „ dígito 7
pause 250 „ espera 0.25 segundos
let pins = %01111111 „ dígito 8
pause 250 „ espera 0.25 segundos
let pins = %01101111 „ dígito 9
pause 250 „ espera 0.25 segundos
goto main
“Let pins =”
Sistema PICAXE 2010 Prof. João Carlos Lazaro
42
Sintaxe:
TOGGLE pino
Pino é uma variável/constante (0-7) que especifica o pino E/S a usar.
Função:
Configura o pino como saída e muda-lhe o estado (de 1 para 0, ou de 0 para 1)
Informação:
A instrução toggle inverte uma saída (se estiver baixa passa a alta e vice-versa).
Exemplo:
inicio:
toggle 7 „ faz toggle à saída 7
pause 1000 „ espera de 1 segundo
goto inicio „ volta para início
Exercicios:
1) Explicar as diferenças no acionamento das saídas por:
High 7, Let pins = 1000000, Toggle 7, Let pins = 128
2) No exercício 1 todas as aplicações estão levando o sinal do port de saída para o
“nível alto”. Fazer o inverso, isto é, faça o nível da saída ir ao “nível baixo”
3) Projetar um programa para a execução das seguintes maquinas:
a) Maquina de lavar (não utilizar o sensor de nível d‟água para esse exemplo).
b) Maquina de fazer pão.
c) Maquina de lavar louças.
TOGGLE
Sistema PICAXE 2010 Prof. João Carlos Lazaro
43
Tutorial 6 – Compreendendo e usando o sistema PICAXE.
Objetivo:
Conhecimento de HARDWARE
Pinos do 20 M
Alimentação,
Saidas
Entradas
Serial in
Serial out
Uso do cabo de tranferencia de programas
Conhecimento de software
Uso do programa editor
Aplicação das instruções abordadas nos tutoriais anteriores
O chip PICAXE, o „cérebro‟ do sistema PICAXE, quando comprado sem programa de controle,
não faz absolutamente nada!
O utilizador tem que escrever o programa de controle no computador e transferi-lo para o
microcontrolador PICAXE.
Assim, um sistema PICAXE é constituído por três componentes principais:
O software „Programming Editor‟
Este software é executado num computador e permite-lhe utilizar o teclado deste para
escrever programas numa linguagem BASIC simplificada.
Os programas podem ainda ser gerados através do desenho de fluxogramas.
O cabo série
Este é o cabo que liga o computador ao sistema PICAXE. O cabo apenas precisa de ser ligado
durante a transferência do programa. Não precisa de estar ligado durante a execução do
programa pois o programa fica permanentemente guardado no microcontrolador – mesmo
quando se desliga a alimentação!
O chip PICAXE numa placa
O microcontrolador PICAXE executa um programa que tenha sido para ele transferido.
Contudo, o integrado precisa de estar montado numa placa que lhe forneça alimentação e
possua os outros componentes, a saber, as resistências para comunicação série, a
resistência de reset e o ressonador.
Esta placa pode ser adquirida ou construída pelo utilizador em stripboard ou placa de circuito
impresso.
Output
Instruções mais utilizadas neste tutorial:
Experimento 1
Sistema PICAXE 2010 Prof. João Carlos Lazaro
44
Resumo – procedimentos de programação
1. Escreva o programa no computador utilizando o software Programming Editor.
2. Ligue o cabo de transferência entre o computador e a placa PICAXE.
3. Ligue a fonte de alimentação à placa do PICAXE.
4. Use o software Programming Editor para fazer download do programa. O cabo pode ser
retirado após a transferência.
O programa começa imediatamente a ser executado no PICAXE. No entanto, o programa
pode ser inicializado em qualquer altura premindo o botão de reset (caso exista, ou
desligando e ligando a alimentação).
Instruções detalhadas para a transferência e montagem do hardware.
Antes de transferir o programa para o PICAXE, verifique se o programa esta correto,
verifique a sintaxe atraves do botão Syntax e após essa verificação, simule o programa
verificando seus detalhes.
1. Ligue o cabo PICAXE à saida sérial do computador. Anote em que porto está ligado
(normalmente designado COM1 ou COM2).
2. Execute o software Programming Editor.
3. Selecione o menu View>Options para poder escolher as Opções (deverá aparecer
automaticamente).
4. selecione no separador „Mode‟ e o chip PICAXE apropriado.
5. Selecione no separador „Serial Port‟ e selecione o porto série onde está ligado o cabo.
Selecione „OK‟.
6. Escreva o seguinte programa:
inicio:
high 4
pause 1000
low 4
pause 1000
goto inicio
(NB repare no sinal (:) a seguir à label „inicio‟ e os espaços entre as
instruções e os números.)
7. Ligue um LED (com uma resistência 330R em série) entre o pino de saida
4 e o terra (0V) FIGURA A. Observe que output 4 não se refere ao
pino 4 do CI, mas sim ao numero da saida output 4 que esta no pino
14. (Assegure-se de que o LED é ligado com a polaridade correta!).
Depois faça o mesmo para a figura B. Observe que o led somente será aceso
quando low 4 for acionado.
8. Verifique se o circuito com o PICAXE está ligado ao cabo série, e que a
alimentação está ligada.
Experiência 1:
Acionamento de um LED
A
B
Sistema PICAXE 2010 Prof. João Carlos Lazaro
45
9. Selecione PICAXE>Run. Uma barra de download deve aparecer à medida que o programa
é transferido.
Assim que tiver terminado a transferência, o programa entra em execução imediatamente –
o LED começa a piscar segundo a segundo.
10-Veja o resultado! Caso o led não tenha piscado, revise o hardware e seu software.
11- Digite o mesmo texto da figura em seu compilador, alterando os valores de tempo e
observe o resultado.
12- Depois de digitado cada tempo, clique com mouse sobre o ícone “compile” para
transformar seu programa em linguagem de máquina e ser transferido para o PICAXE.
LOCALIZAÇÃO DAS SAIDAS NO PICAXE 20M
Os pinos do PICAXE quando estiverem trabalhando como saída drenam no máximo 25mA
em sua saída, para cargas que necessitem de uma capacidade maior de corrente há a
necessidade de ser adicionado um amplificador de corrente na saída (transistor, driver,
tiristor, relé, contatora). Abaixo observa-se um driver – ULM 2803. O C.I. possui 7
transistores darlington NPN. O C.I. 2803 pode ser utilizado com o PICAXE sempre que
houver necessidade de elevação da corrente dos pinos. Não esqueça que o 2004 inverte o
sinal (lógica invertida). Para acionar cargas de baixa potência, como diodos emissores de luz,
não se faz necessário utilizar o driver. Desde que não ultrapasse 25mA por pino.
Pin refere-se à cada output, assim pin 0 será a saida “output” 0, pin 1 será output 1 e assim
por diante até output 7.
Tempos [ms]: 100, 500, 1000, 3000, 10000
Sistema PICAXE 2010 Prof. João Carlos Lazaro
46
Hardware:
Projetar um sinalizador de saída e entrada para
veículos. Faça um programa que cumpra essa função.
OBS.: Os pinos 0 e 1 referem-se às saídas (pinos 17 e
18 do CI ).
Programa:
„***********************************
„*PROGRAMA: Sinalizador de saída de „veículos *
„*PROGRAMADOR: João Carlos *
„*DATA: 17/03/10 *
„*VERSÃO: 1.0 *
„***********************************
novamente: „novamente: é um label, uma posição de memória
pin0 = 0 „ estamos atribuindo a saída 0 o binário 0 – o led liga
pin1 = 1 „estamos atribuindo a saída 1 o binário 1 – o led desl.
pause 1000 „pausa a saída por 1000ms = 1seg.
pin0 = 1 „estamos atribuindo a saída 0 o binário 1 – led desl.
pin1 = 0 „estamos atribuindo a saída 1 o binário 1 – led liga
pause 1000 „pausa a saída por 1000ms = 1seg.
goto novamente „goto manda saltar para label novamente
O resultado no compilador deve ficar igual à tela a baixo:
Note que agora foi usado o comando pin para se referir à saida. Agora revise o
programa e corrija erros se houver. Salve o programa. Depois compile o programa.
Por último, transfira o programa para o PICAXE, clicando no ícone Download.
Aguarde a transferência! Se seu programa estiver funcionando você deve ter observado que
somente um led está oscilando, é necessário terminar o programa. Acrescente os comandos
para fazer o segundo led piscar.
Experiência 2: Sinalizador para saída de veículos
Sistema PICAXE 2010 Prof. João Carlos Lazaro
47
Uma outra forma de escrever o programa anterior é utilizando os comandos
“high” e “low”.
Veja:
novamente: „novamente: é um label, uma posição
low 0 „pino 0 está em nível baixo
high 1 „pino 1 está em nível alto
pause 1000 „pausa a saída por 1000ms = 1seg.
high 0 „pino 0 está em nível baixo
low 1 „pino 1 está em nível alto
pause 1000 „pausa a saída por 1000ms = 1seg.
goto novamente „goto manda saltar para label
novamente,entra em ciclo
Os comandos low e high atribuem nível lógico às saídas e ao mesmo tempo
configura o pin0 declarado como uma saída. Para conhecer detalhadamente todos
os comandos neste texto ou na apostila especifica de comandos.
Monte o circuito abaixo no protobard. Vamos construir um seqüencial de 6 canais, lembra do
C.I. 4017...
HARDWARE:
Os “pino” 0 a 5 referem-se aos pinos de saída do PICAXE 20M (pinos 10 à 18 no CI)
Experiência 3:
Seqüencial de 6 canais
Sistema PICAXE 2010 Prof. João Carlos Lazaro
48
PROGRAMA:
„******************************
„*PROGRAMA: Seqüencial de 6 canais *
„*PROGRAMADOR: João Carlos *
„*DATA: 18/03/10 *
„*VERSÃO: 1.0 *
„*******************************
REPITA: „label
LOW 0 „põe nível baixo na porta 0
HIGH 0 „põe nível alto na porta 0
PAUSE 100 „aguarda 100ms
LOW 0 „põe nível baixo na porta 0
LOW 1 „põe nível baixo na porta 1
HIGH 1 „põe nível alto na porta 1
PAUSE 100 „aguarda 100ms
LOW 1 „põe nível baixo na porta 1
LOW 2 „põe nível baixo na porta 2
HIGH 2 „põe nível alto na porta 2
PAUSE 100 „aguarda 100ms
LOW 2 „põe nível baixo na porta 2
LOW 3 „põe nível baixo na porta 3
HIGH 3 „põe nível alto na porta 3
PAUSE 100 „aguarda 100ms
LOW 3 „põe nível baixo na porta 3
LOW 4 „põe nível baixo na porta 4
HIGH 4 „põe nível alto na porta 4
PAUSE 100 „aguarda 100ms
LOW 4 „põe nível baixo na porta 4
LOW 5 „põe nível baixo na porta 5
HIGH 5 „põe nível alto na porta 5
PAUSE 100 „aguarda 100ms
LOW 5 „põe nível baixo na porta 5
GOTO REPITA „retorna para o início do programa
C) Repetir a experiência acionando agora um seqüencial de 8 canais.
D)Escreva agora um seqüencial de 8 canais usando o comando “LET pins”
E) Execute a seqüência de saídas relacionada abaixo e observe o efeito.
00000001, 00000010, 00000100, 00001000, 00010000, 00100000,
01000000, 10000000
Todas as sequencias pausadas em 100 ms.
F) Execute a seqüência de saídas relacionada abaixo e observe o efeito.
10000001, 01000010, 00100100, 00011000, 00011000, 00100100, 01000010,
10000001 . Todas as sequencias pausadas em 100 ms.
G) Execute a seqüência de saídas relacionada abaixo e observe o efeito.
63, 6, 91, 79, 102, 109, 125, 7, 127, 111. Todas as sequencias pausadas em 500
ms.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
49
EXERCICIOS PROPOSTOS
1) Fazer um LED piscar no pin 7 com um intervalo de tempo de 1 Hz. Desenhar o
esquema de ligação para o circuito.
Solução:
main:
high 7 'make output 7 high
pause 1000 'wait 1 second
low 7 'make output 7 low
pause 1000
goto main
2) Acionar 8 LEDs em linha. Ligar todas as saídas do PICAXE 20M com os LEDs e
utilizar resistores de 180 para uma tensão de 4,5 a 5 V – Esse é um protótipo de
luzes seqüenciais de natal acendendo o LEDs em seqüência pré definida.
3) Fazer um programa que liga a saída 7 (output 7 = ON) e mantenha essa saída ativa
por 10 segundos, depois desligue essa saída por 20 segundos e volte a liga-la na
mesma seqüência. Utilize o comando PAUSE (“pause 500” significa esperar 500mS
(=0.5 second))
main: high 7
pause 500
low 7
pause 500
goto main
4) Agora faça os LEDs 0,2,4,6 piscarem alternadamente com os LEDs 1,3,5,7.
5) Utilize a variável pins para acionar as saidas com um único comando, para isso
repita os exercícios 1, 2 e 3. (Você pode ligar várias saídas e desliga com um único
comando)
6) Construa um gráfico de efeito de barras, fazendo com que os leds se acendam e
depois retornem.
7) Projete um semáforo seqüencial para um cruzamento, levando em consideração que
o tempo de imobilização será de 15 s.
Label comandos descrição
Desafio: Você pode fazer o LED 4 entrar quando o LED 7 se apagar, e apaga quando o LED 7 se acende?
4 7
180R
180R
Sistema PICAXE 2010 Prof. João Carlos Lazaro
50
TUTORIAL 7 – Ciclos For…Next
A utilização de ciclos de repetição é muito útil, a repetição de parte do programa num certo
número de vezes, como, por exemplo, no piscar de LEDs. Nestes casos, pode usar-se um
ciclo for…next.
O programa seguinte pisca um LED ligado ao pino de saída 1, 15 vezes. O número de vezes
que será repetido o código é guardado numa variável de uso geral na memória RAM do
PICAXE, utilizando a variável b1 (o PICAXE possui 14 variáveis para usos gerais designadas
b0 a b13). Estas variáveis podem ser renomeadas usando a instrução symbol para nos
lembrarmos mais facilmente.
Exemplo 1
- Contador até 15
symbol contador = b1 „ define a variável b1 como “contador”
symbol LED = 4 „ define o pin 4 com o nome “LED”
principal:
for contador = 1 to 15 „ inicia um ciclo for...next
high LED „ liga o pino 7 alto
pause 500 „ espera 0.5 segundos
low LED „ liga o pino 7 baixo
pause 500 „ espera 0.5 segundos
next contador „ fim do ciclo for...next, repete 15 vezes
end „ fim do programa
Note ainda como os espaços em branco foram usados para tornar mais clara a seqüência de
instruções contidas entre as instruções for e next.
Exemplo 2
- 8 LEDs in a Line
Utilizar 8 saidas do PICAXE 20M para acionar leds. Os resistores em serie com os leds devem
ser de 180 e a tensão de 4,5 ou 5V. Esses resitores produzem um brilho adequado e
corrente que pode ser suportada pelo PICAXE. Com essa montagem podemos criar flash
luminosos de leds e protótipos de luzes de natal.
Aqui está um programa de “flash” em que todos os LEDs estão em seqüência:
LOOPs Ciclos
Instruções PBasic – Comandos e Sintaxe
For…Next
For…Next
Sistema PICAXE 2010 Prof. João Carlos Lazaro
51
symbol led = b0 'define variable "led"
main: for led=0 to 7 'start a for ... next loop
high led 'switch output high. Carrega led com o valor da variav b0
pause 300 'wait for 0.3 second
low led 'switch output low
pause 300 'wait for 0.3 second
next led 'end of for ... next loop
goto main
Exemplo 3
- Ampliando o tempo de pause para 1 minuto
symbol minuto = b1 ' define a variável b1 como “minuto”
symbol time = 7 ' define o pin 7 com o nome time
inicio:
for minuto = 1 to 60 ' fim do ciclo for...next, repete 60 vezes
high time ' liga o pino 7 alto
wait 1 ' espera 1 segundos
next minuto 'contador
low time ' liga o pino 7 baixo
end ' finaliza o programa
Anotações
label Comandos descrição
Sistema PICAXE 2010 Prof. João Carlos Lazaro
52
Tutorial 8 – Usando Entradas Digitais
Sintaxe:
IF variável ?? valor (AND/OR variável ?? valor ...) THEN endereço
Variável(s) é comparada com o valor(s).
Valor é uma variável/constante.
Endereço é uma label (etiqueta) que especifica o endereço para onde saltar se a
condição se verificar (for verdadeira).
?? pode ser qualquer uma das seguintes condições:
= igual a
<> não igual a (diferente)
!= não igual a (diferente)
> maior que
>= maior que ou igual a
< menor que
<= menor que ou igual a
Função:
Compara e efetua salto condicional para uma nova posição no programa.
Informação:
A instrução if … then é usada para testar variáveis de pinos de entradada (ou variáveis
de uso geral) perante certas condições. Se essas condições se verificam o fluxo do
programa continua numa nova localização indicada pela label. Se a condição não se
verifica, a instrução é ignorada e o programa continua na linha seguinte.
No caso de utilização com entradas, deve usar-se a variável de entrada (pin1, pin2, etc.)
e não o nome do pino (1, 2, etc.), isto é a linha deve ser “if pin1 = 1 then…” e não “if 1
= 1 then…”.
A instrução if … then apenas verifica uma entrada na altura em que a instrução é
executada. É portanto normal colocar a instrução if…then dentro de um ciclo do
Input digital
Instruções PBasic – Comandos e Sintaxe
if...then, pulsin, button
if … then
if … and … then
if … or … then
Sistema PICAXE 2010 Prof. João Carlos Lazaro
53
programa que verifica regularmente a entrada. Para mais detalhes sobre como verificar
permanentemente uma condição usando interrupts, veja a instrução setint.
Exemplo:
Teste de uma entrada em um ciclo.
inicio:
if pin0 = 1 then acende „ salta para acende se o pin0 estiver alto
goto inicio
acende:
high 1 „ põe alta a saída 1
pause 5000 „ espera 5 segundos
low 1 „ põe baixa a saída 1
pause 5000 „ espera 5 segundos
goto inicio „ salto incondicional para o inicio
Podem combinar-se múltiplas comparações usando os operadores lógicos AND e OR.
Porta AND de duas entradas
if pin1 = 1 and pin2 = 1 then label
Porta AND de três entradas
if pin1 = 1 and pin2 = 1 and pin3 = 1 then label
Porta OR de duas entradas
if pin1 = 1 or pin2 = 1 then label
Valor analógico dentro de um intervalo
readadc 1, b1
if b1 >= 100 and b1 <= 200 then label
A instrução readadc sera estudada no tutorial 9.
Leitura de todo o porto de uma só vez usando a variável pins
if pins = %10101010 then label
Para ler o porto de entrada e mascarar entradas individuais (por ex. 6 e 7)
Let b1 = pins %11000000
If b1 = %11000000 then label
As palavras is (=), on (1) e off (0) podem tambem ser usadas.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
54
Sintaxe:
PULSIN pino, estado, variável
Pino é uma variável/constante (0-7) que especifica o pino E/S a usar.
Estado é uma variável/constante (0 ou 1) que especifica que flanco deve ocorrer
para se iniciar a medição do impulso – contagem de unidades de 10s (para um
relógio de 4 MHz).
Variável recebe o resultado (1-65536). Se ocorrer timout (0,65536 s) o
resultado será 0.
Função:
Mede a largura de um impulso no pino e guarda o resultado na variável.
Informação:
A instrução pulsin mede a largura de um impulso. Se não ocorrer nenhum impulso, o
resultado será 0. Se estado = 1 então o início da contagem inicia-se numa transição do
sinal de baixo para alto. Se estado = 0 então o início da contagem inicia-se numa
transição do sinal de alto para baixo. Utilize a instrução count para contar o número de
impulsos num determinado período.
Exemplo:
pulsin 3, 1, w1 „ guarda a duração do impulso no pino 3 em w1
SINTAXE:
BUTTON pin,downstate,delay,rate,bytevariable,targetstate,address
►Pin é uma variável/constante (0-7) que especifica o pino de I/O a ser usado.
►Downstate é uma variável/constante que especifica qual estado lógico é lido quando o
botão é pressionado.
►Delay é uma variável/constante (0-255) que especifica quanto tempo o botão precisa ser
pressionado antes que a repetição automática comece. O tempo é medido em ciclos da
rotina Button. O Delay tem dois valores especiais; 0 e 255. Quando for 0, a rotina retorna o
estado do botão sem debounce ou repetição automática. Quando for 255, a rotina faz
debounce, mas não repetição automática.
►Rate é uma variável/constante (0-255) que especifica a taxa de repetição automática. A
taxa é expressa em ciclos da rotina Button.
►Bytevariable é a área de trabalho da rotina. Ela precisa ser apagada antes de ser usada
pela rotina Button pela primeira vez.
►Targetstate é uma variável/constante (0 ou 1) que especifica qual estado o botão tem
que estar para ocorrer o desvio (0=não pressionada, 1=pressionada).
►Address é um label que especifica para onde desviar se o botão estiver no estado
desejado.
BUTTON
PULSIN
Sistema PICAXE 2010 Prof. João Carlos Lazaro
55
Quando você pressiona um botão ou muda uma chave, os contatos fecham ou abrem a
conexão. Um pulso de ruído elétrico ocorre, já que os contatos repicam um contra o outro. A
função debounce previne estes ruídos de serem interpretados como mais de uma ação do
botão. O comando Button permite ao PICAXE responder ao pressionamento de um botão do
mesmo modo que o teclado do PC faz. Quando você aperta uma tecla, o caractere aparece
no monitor. Se você mantém a tecla apertada por um curto periodo de tempo, uma rápida
seqüência de caracteres aparece no monitor. A função repetição automática pode ser
programada para funcionar do mesmo modo.
O comando Button foi criado para ser usada dentro de um loop. A cada interação do loop, o
comando Button checa o estado do pino especificado. Quando ele encontra pela primeira vez
o estado especificado em downstate, o comando elimina o ruído elétrico. Ele então de acordo
com o valor de targetstate, desvia para address (targetstate=1) ou não (targetstate=0). Se
o botão é mantido em downstate, o comando Button conta o número de vezes que o loop
executa. Quando esta contagem chega a delay, o comando executa novamente a ação
especificada por downstate e address. A partir de então, se o botão permanece em
downstate, o comando espera rate número de ciclos entre as ações.
O mais importante a lembrar sobre o comando Button, é que ele não interrompe a execução
do programa. De modo a função delay repetição automática funcionarem, o comando Button
deve ser executado dentro de um loop.
Exemplo1: Este programa toggles (inverte) o estado de um LED no pin 0 quando
' active-low switch on pin 7 is pressed. When the switch is held down, Button
' waits, then rapidly autorepeats the Toggle instruction, making the LED ' flash rapidly. When the switch is not pressed, Button skips the Toggle ' instruction. Note that b2, the workspace variable for Button, is cleared
' before its first use. Don't clear it within the loop.
let b2 = 0 ' Button workspace cleared.
Loop: BUTTON 7,0,200,100,b2,0,skip ' Go to skip unless pin7=0. Toggle 0 ' Invert LED. ... ' Other instructions.
skip: goto Loop ' Skip toggle and go to Loop.
Examplo2:
main:
button 0,0,200,100,b2,0,cont ' jump to cont unless pin0 = 0
toggle 1 ' else toggle input
pause 10
goto main
cont:
... ' Other instructions.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
56
O sensor digital mais simples é um interruptor (microswitch) que possua duas
posições,
ligado (on) e desligado (off):
Exemplos comuns de sensores digitais são:
• microinterruptores
• interruptores de pressão
• interruptores reed
• Teclados
O programa abaixo mostra como usar botões de pressão. Neste programa a saída 4 pisca
cada vez que a entrada 3 é acionada.
inicio: „ cria a label „inicio‟
if pin3 = 1 then flash „ salta se a entrada estiver ligada
goto inicio „ caso contrário volta para „inicio‟
flash: „ cria a label„flash‟
high 4 „ liga a saída 4 (on)
pause 2000 „ wait 2 seconds
low 4 „ desliga a saída 4 (off)
goto inicio „ salto para o início
No programa as três primeiras linhas ficam em ciclo permanente. Se a entrada estiver
desligada (=0) o programa permanece aqui. Se a entrada ficar alta (=1) o programa salta
para a label de nome „flash‟. Nesse caso, a saída 4 liga durante dois segundos e depois
desliga voltando ao início.
Repare-se na sintaxe da linha if…then: pin3 é uma palavra (sem espaços). Isso resulta de
pin3 ser o nome de uma variável que contem o dado do pino de entrada respectivo. Note-se
ainda que após then apenas se coloca a label (localização do ponto para onde o programa
salta), não são permitidas outras variantes.
Podemos combinar os dados de dois ou mais interruptores através dos operadores lógicos
AND ou OR.
Uma porta AND de duas entradas é programada como:
if pin2 = 1 and pin3 = 1 then flash
Uma porta OR de três entradas é programada como:
if pin1 = 1 or pin2 = 1 or pin3 = 1 then flash
Para ler todo o porto de entrada pode escrever-se:
let b1 = pins
ou
b1 = pins
Para isolar pinos individualmente (por ex. 6 e 7) no porto, temos que mascarar a variável
com o operador lógico AND
let b1 = pins & %11000000
Aplicação em interruptores (microswitch)
Sistema PICAXE 2010 Prof. João Carlos Lazaro
57
4 key input
Para a entrada do PICAXE você pode usar uma matriz de 4 chaves. Ele usa os pinos de
entrada 0,1,6,7 na ordem mostrada no layout do PCB. Entrada pino 2 não é usado, mas
está ligado à entrada do bloco central de modo que você pode usar outro switch ou bloco
sensor. Pin 2 pode ter uma entrada analógica para que você possa usar um bloco sensor de
luz ou bloquear outros sensores analógicos. Há um resistor de 1M pull-up indicado na
entrada 2, mas isso não precisa ser usado em muitos casos.
Aqui está um programa que acende um LED correspondente à tecla pressionada:
symbol key1=input1 'rename input
symbol key2=input0
symbol key3=input7
symbol key4=input6
main: if key1=0 then flash1
if key2=0 then flash2
if key3=0 then flash3
if key4=0 then flash4
goto main
flash1: high 1
goto endloop
flash2: high 2
goto endloop
flash3: high 3
goto endloop
flash4: high 4
endloop:
let pins=%00000000 'reset all LEDs
goto main
Exercicios…
Anotações
label comandos descrição
Aplicação em teclados - Keypads
Sistema PICAXE 2010 Prof. João Carlos Lazaro
58
Tutorial 9 – Usando Sensores Analógicos
Sintaxe:
READADC canal, variávelbyte
Canal é uma variável/constante especificando um endereço (0-3). Variávelbyte é uma variável byte (0-255) que recebe os dados lidos.
Função:
Lê um canal ADC (conversão analógico-digital) de 8 bits de resolução. Para uma
variável.
Informação:
A instrução readadc é utilizada para ler um valor analógico de um pino do
microcontrolador. Note que nem todos os pinos possuem esta funcionalidade. No Picaxe-
28X apenas podem ser utilizados os pinos 0, 1, 2 e 3. O valor calculado pelo conversor
A/D possui 10 bits de resolução mas é arredondado para 8 bits. Deve usar-se a instrução
readadc10 para obter um valor de 10 bits.
Exemplo:
inicio:
readadc 1, b1 „ lê tensão analógica presente no canal 1 e converte-o
para
„ valor de 8 bits em b1
if b1 > 50 then flsh „ salta para a subrotina flsh se b1 for maior que 50
goto inicio „ caso contrário salta para o início e repete
flsh:
high 1 „ liga a saída 1
pause 5000 „ espera 5 segundos
low 1 „ desliga a saída 1
pause 5000 „ espera 5 segundos
goto inicio „ salto para o inicio
Um sensor analógico mede um sinal contínuo como a luz, a temperatura ou a posição. O
sensor analógico fornece uma tensão variável contínua. Esta tensão do sinal pode ser
representada por um número no intervalo de 0 a 255 (por ex. escuro=0, luz=255).
Exemplos comuns de sensores analógicos são:
• LDR (Light Dependent Resistor)
• Termistores (resistências variáveis com a temperatura)
• Resistências variáveis (potenciômetros)
Input
analogical
Instruções PBasic – Comandos e Sintaxe
READADC
readadc
Sistema PICAXE 2010 Prof. João Carlos Lazaro
59
Light Dependent Resistor (LDR)
A LDR é bem exemplo de um sensor analógico. Pode ligar-se a uma entrada
ADC do PICAXE28X (pinos ADC0 a ADC3). Note que apenas estas entradas possuem a capacidade de conversão analógico-digital (ADC). O valor de entrada analógica pode ser guardado numa variável através da instrução readadc. O valor da variável (0 a 1024) pode ser então testado. O programa seguinte liga um LED1 se o valor lido for superior a 512 e um LED2 se o valor
for inferior a 128. Para valores entre 128 e 512 ambos os LEDs ficam apagados
main: „ define uma label chamada main readadc 1,b0 „ lê ADC1 para a variável b0
if b0 > 512 then top „ se b0 > 512 vai para top if b0 < 128 then bot „ if b0 < 128 vai para bot low 0 „ caso contrário desliga a saída 0
low 4 „ e a saída 4 goto main „ salta para o início
top: „ define label top
high 0 „ liga a saída 0 (LED1) low 4 „ desliga a saída 4
goto main „ salta para o início
bot: „ define label bot high 4 „ liga a saída 4 (LED2) low 0 „ desliga a saída 0
goto main „ salta para o início
Exercicios....
Anotações
label comandos descrição
Sistema PICAXE 2010 Prof. João Carlos Lazaro
60
Tutorial 10 - Utilização da instrução Debug
Sintaxe:
DEBUG {var}
Var é um valor de variável opcional (por ex. b1). O seu valor não tem significado e é incluído
apenas para compatibilidade com programas mais antigos.
Função:
Mostra informação na janela debug do PC sobre a execução do programa.
Informação:
A instrução debug faz “upload” dos valores de todas as variáveis através do cabo série de
comunicação com o PC, mostrando esses valores numa janela do ecrã. Isso permite ao
programador a detecção de erros e o ajuste de parâmetros do programa.
Note que a instrução debug faz “upload” de uma grande quantidade de dados pelo que
atrasa bastante a execução do programa. Deve-se portanto retirar esta instrução do
programa após a depuração e ajustes.
Para apresentar no ecrã mensagens de utilizador utilize a instrução sertxd.
Exemplo:
loop: debug b1 „ mostra valor
let b1 = b1 + 1 „ incrementa o valor de b1
pause 500 „ espera 0,5 segundos
goto loop „ volta para o início
Quando se usam sensores analógicos é por vezes necessário calcular um valor de referência
(„threshold‟). Isto é, valores como os 128 e 512 do programa tutorial 6.
A instrução debug fornece um modo simples de visualizar “em tempo real”, o valor do
sensor, pelo que o valor de referência pode ser assim calculado experimentalmente.
main: „ define uma label designada main
readadc 1,b0 „ lê o ADC1 para a variável b0
debug b0 „ transmite o valor para o ecrã do PC
pause 500 „ pequeno atraso
goto main „ salta para o início
Assim que este programa é executado, surge na tela do PC uma janela „debug‟ apresentando
os valores de todas as variáveis.
Uso do Debug
Instruções PBasic – Comandos e Sintaxe
DEBUG
debug
Sistema PICAXE 2010 Prof. João Carlos Lazaro
61
À medida que varia a luz incidente sobre o sensor LDR, o valor da variável
mostra o valor lido.
A janela debug abre automaticamente após a transferência de um programa
que contenha a instrução debug. A janela pode ainda ser aberta no menu
PICAXE>Debug menu.
Tutorial 11 – Uso do Terminal Série com a instrução Sertxd
Sintaxe:
SERTXD ({#}data, {#}data…)
Data são variáveis/contantes (0-255) que fornecem dados para serem enviados para a saída.
Função:
Saída série através do pino de download (4800 baud, 8 data bits, no parity, 1 stop bit).
Informação:
A instrução sertxd é semelhante à instrução serout, mas diz respeito ao pino de saída série e
não a um pino genérico de saída qualquer. Isso permite enviar dados de volta ao computador
através do cabo de programação. A instrução pode ser muito útil durante a fase de testes –
visualização dos dados na janela PICAXE>Terminal window. Existe uma opção em
View>Options para abrir automaticamente a janela Terminal a seguir a um download.
A velocidade de transferência (baud rate) está fixa em 4800, n, 8, 1.
Exemplo:
ciclo:
for b1 = 0 to 63 „ início do ciclo
sertxd (“Valor de b1 “, #b1,13,10)
pause 1000
next b1 „ novo ciclo
SERIAL
Instruções PBasic – Comandos e Sintaxe
SERTXD
sertxt
Sistema PICAXE 2010 Prof. João Carlos Lazaro
62
Todas as versões PICAXE suportam a instrução debug. Contudo, as versões M e X também
suportam mensagens série de debug mais complexas através da instrução sertxd, que envia
uma string definida pelo utilizador em série para o computador (a uma baud rate 4800).
As mensagens podem ser visualizadas através da função Serial Terminal (PICAXE>Terminal
menu). O Serial Terminal pode ainda ser aberto sempre que se realiza um download através
do menu View>Options>Options menu.
main: „define a label main
readtemp 1,b0 „lê o canal 1 para a variável b0
sertxd (“O valor e‟ “,#b0,cr,lf)
pause 500 „pequeno atraso
goto main „volta para o inicio
A instrução sertxd transmite a string “O valor e´” seguida
da string ASCII contendo o valor atual da variável b1 (o
prefixo # da variável indica uma string ASCII que
representa o valor correto transmitido). As constantes CR e
LF são valores pré-definidos. (13 e 10) que fazem com que
o terminal série mostre uma linha nova para cada valor, de
modo a atualizar corretamente a tela.
Este programa usa a instrução readtemp para ir mostrando
na tela a temperatura lida por um sensor de temperatura
digital DS18B20, ligado ao canal 1.
Tutorial 12 – Produzindo sons
Sintaxe:
SOUND pino, (nota, duração, nota, duração, …)
Pino é uma variável/constante (0-7) que especifica o pino E/S a usar.
Nota(s) são variáveis/constantes (0-255) que especificam o tipo e a frequência. Nota 0 é silêncio. Notas 1-127 são tons crescentes. Notas 128-255 são ruídos brancos crescentes.
Sound
Instruções PBasic – Comandos e Sintaxe
SOUND
sound
Sistema PICAXE 2010 Prof. João Carlos Lazaro
63
Duração(s) são variáveis/constantes (0-255) que especificam a duração múltiplos
aproximados de 10ms).
Função: Produz sons e ruídos.
Informação:
Esta instrução é destinada a produzir sons audíveis (bips) para jogos e
teclado. Nota e duração devem ser usados na instrução aos pares.
Exemplo:
ciclo:
let b0 = b0 + 1 „ incrementa b0
sound 7, (b0, 50) „ produz tom b0 de duração 0,5s no pino 7
goto ciclo „ vai para ciclo
Os buzzers produzem uma freqüência fixa quando ligados.
Contudo, o sistema PICAXE pode criar som de freqüências diferentes através
da instrução sound com um altofalante piezoelétrico. Todos os chips PICAXE
suportam a instrução sound, que é destinada a produzir “bips” de aviso.
Recomenda-se o seu uso em vez de besouros, que consomem mais corrente.
Exemplo de programa para som:
inicio:
sound 2,(50,100) „ freq 50, duração 100 ms
sound 2,(100,100) „ freq 100, duração 100 ms
sound 2,(120,100) „ freq 120, duração 100 ms
pause 1000 „ espera 1 segundo
goto inicio „ salta para o início
Para testar este programa deve colocar um altofalante piezoelétrico entre o pino de saída
(neste caso a saída 2) e 0V.
O primeiro número indica o número do pino (neste caso a saída 2). O número seguinte
(entre parêntesis) é o tom, seguido da duração. Quanto mais alto for o tom, mais alto será o
som (os valores válidos vão de 0 a 127).
O programa seguinte usa um ciclo for...next para produzir 120 sons diferentes.
main:
for b0 = 1 to 120 „ início de um ciclo for...next
sound 2,(b0,50) „ produz um som de freq b0
next b0 „ ciclo seguinte
end
O número armazenado na variável b0 aumenta de 1 em cada ciclo (1-2-3 etc.)
Portanto, ao usar a variável b0 como tom, a nota vai ser modificada em cada ciclo.
O programa seguinte produz a mesma tarefa mas, agora de trás para a frente, usando o
como valor de step -1 (em vez do valor +1 por omissão do exemplo acima).
main:
for b0 = 120 to 1 step -1 „ contagem decrescente
sound 2,(b0,50) „ produz um som de freq b0
next b0 „ ciclo seguinte
end
Sistema PICAXE 2010 Prof. João Carlos Lazaro
64
Tutorial 13 – Subrotinas
Sintaxe:
return
Função:
Retorno de uma subrotina (procedimento).
Informação:
A instrução return apenas se usa com a respectiva instrução gosub, para retornar do
fim de uma subrotina ao programa principal. O uso de return sem o correspondente
gosub produz uma falha na execução do programa.
Exemplo:
loop:
let b2 = 15 „ atribui 15 ao valor de b2
pause 2000 „ espera 2 segundos (2000 milisegundos)
gosub flsh „ chama procedimento flsh
let b2 = 5 „ atribui 5 ao valor de b2
pause 2000 „ espera 2 segundos (2000 milisegundos)
gosub flsh „ chama procedimento flsh
end „ impede entrada acidental no procedimento
flsh:
for b0 = 1 to b2 „define b2 como número de ciclos
high 1 „ liga a saída 1
pause 500 „ espera 0,5 segundos
low 1 „ desliga a saída 1
pause 500 „ espera 0,5 segundos
next b0 „ fim do ciclo
return „ retorno do procedimento
Program Flow
Instruções PBasic – Comandos e Sintaxe
RETURN, GOSUB, GOTO
Return
Goto – Essa instrução foi abordada no tutorial 2
Sistema PICAXE 2010 Prof. João Carlos Lazaro
65
Sintaxe:
GOSUB endereço
Endereço é uma label (etiqueta) que especifica o endereço.
Função:
Salta para a subrotina (procedimento) localizado no endereço, regressando quando
encontra a instrução return. São permitidas até 16 GOSUBs, podendo ser aninhadas
até 4 níveis.
Informação:
A instrução gosub (ir para um procedimento), é um salto temporário para uma seção
separada do código, de onde regressará, através da instrução return. Cada instrução
gosub, deve ter uma instrução return correspondente.
Não deve confundir esta instrução com a instrução goto, que é um salto incondicional
para uma nova localização no programa.
Os procedimentos ou sub-rotinas, são largamente utilizados na programação para
reduzir o tamanho dos programas, usando secções de código que se repetem num único
procedimento. A passagem de valores para o procedimento por variáveis, permite repetir
a mesma seção de código a partir de várias localizações do programa.
Exemplo1:
loop:
let b2 = 15 „ atribui 15 ao valor de b2
pause 2000 „ espera 2 segundos (2000 milisegundos)
gosub flsh „ chama procedimento flsh
let b2 = 5 „ atribui 5 ao valor de b2
pause 2000 „ espera 2 segundos (2000 milisegundos)
gosub flsh „ chama procedimento flsh
end „ impede entrada acidental no procedimento
flsh:
for b0 = 1 to b2 „define b2 como número de ciclos
high 1 „ liga a saída 1
pause 500 „ espera 0,5 segundos
low 1 „ desliga a saída 1
pause 500 „ espera 0,5 segundos
next b0 „ fim do ciclo
return „ retorno do procedimento
gosub
Sistema PICAXE 2010 Prof. João Carlos Lazaro
66
Exemplo2:
O programa seguinte utiliza duas subrotinas para implementar as duas seções do programa
( „flash‟ e „noise‟).
symbol LED = 4 „ renomeia output4 como „LED‟
symbol buzzer = 2 „ renomeia output2 como „buzzer‟
symbol counter = b1 „ define um contador na variável b1
main: „ cria uma label designada „main‟
gosub flash „ chama subrotina flash
gosub noise „ chama subrotina noise
goto main „ volta para o início
end „ fim do programa principal
flash: „ subrotina flash
for counter = 1 to 25 „ começa o ciclo for…next
high LED „ LED on
pause 50 „ espera 0.05 s
low LED „ LED off
pause 50 „espera 0.05 s
next counter „ continua o ciclo
return „ retorno da subrotina
noise:
high buzzer „ liga o besouro
pause 2000 „ espera 2 segundos
low buzzer „ desliga o besouro
return „ retorno da subrotina
Exemplo3:
Este segundo programa mostra como uma variável pode ser usada para transferir
informação para dentro da subrotina. Neste caso, a variável b2 é usada para dizer ao
microcontrolador para piscar 5 vezes o LED e depois 15 vezes.
symbol LED = 4 „ renomeia output4 como „LED‟
symbol counter = b1 „ define um contador na variável b1
main: „ cria label designada „main‟
let b2 = 5 „ carrega b2 com 5
gosub flash „ chama subrotina flash
pause 500 „ espera
let b2 = 15 „ carrega b2 com 15
gosub flash „ chama subrotina flash
pause 500 „ espera
goto main „ volta ao início
end „ fim do programa principal
flash: „ cria subrotina flash
for counter = 1 to b2 „ inicio do ciclo for…next
high LED „ LED on
pause 250 „ espera 0.25 segundos
low LED „ LED off
pause 250 „ espera 0.25 segundos
next counter „ ciclo seguinte
return „ retorno da subrotina
Sistema PICAXE 2010 Prof. João Carlos Lazaro
67
Tutorial 14 - Usando Interrupts
Sintaxe:
Um interrupt é um caso especial de sub-rotina. A sub-rotina ocorre imediatamente após
verificar-se uma combinação particular dos sinais nas entradas.
Uma polled interrupt é um modo rápido de reagir a uma combinação particular de entradas.
Trata-se do único tipo de interrupt disponível no PICAXE. O porto de entrada é lido entre a
execução de duas instruções, e durante a execução de uma instrução como pause.
Se a combinação de entradas prevista se verificar (verdade), dá-se um „gosub‟ para a sub-
rotina interrupt, que é executada imediatamente. Quando terminar a execução da sub-rotina
dá-se o regresso ao programa principal, na exata localização onde se deu a interrupção.
A condição das entradas que produzem a interrupção é um padrão de „0‟s e „1‟s no porto de
entrada, mascarados pelo byte mask. Portanto, quaisquer bits mascarados com „0‟ no byte
mask serão ignorados.
Por exemplo:
para se produzir um interrupt quando o input1 está alto (high)
setint %00000010,%00000010
para se produzir um interrupt quando o input1 está baixo (low)
setint %00000000,%00000010
para se produzir um interrupt quando o input0 está alto (high), o input1 alto (high) e o input
2 baixo (low)
setint %00000011,%00000111
etc.
Em cada instante apenas pode haver um padrão de entradas ativo (condição a verificar).
Para desativar o interrupt execute a instrução SETINT com o valor 0 como mask byte.
Notas:
1) Qualquer programa que possua uma instrução SETINT deve ter a correspondente sub-
rotina interrupt: (devidamente terminada pela instrução return).
2) Quando se verifica o interrupt, as interrupções ficam desativadas. Portanto, para voltar a
ativar as interrupções deve usar-se a instrução SETINT no fim da sub-rotina interrupt:. A
interrupção não fica ativa senão depois da execução da instrução return.
Interrupt
Instruções PBasic – Comandos e Sintaxe
setint
setint
Sistema PICAXE 2010 Prof. João Carlos Lazaro
68
3) Se a interrupção for reativada e a condição de interrupção não for reinicializada na sub-
rotina, verificar-se-á nova interrupção logo após a execução da instrução return.
4) Após a execução do código constante da sub-rotina interrupt, o programa continua a
executar-se na instrução seguinte do programa principal. No caso de a interrupção se ter
verificado quando da execução de instruções como wait ou pause, o tempo restante é
ignorado e o programa continua na instrução seguinte.
Explicações mais detalhadas sobre a instrução SETINT.
A instrução SETINT deve ser seguida por dois números – um número „a comparar com‟
(input) e uma „máscara de entradas‟ (mask).
É habitual apresentar esses números na forma binária, pois torna mais claro quais os pinos
em questão. No formato binário a entrada7 (input7) fica à esquerda da entrada0 (input0).
O segundo número, a „máscara de entradas‟, define quais os pinos que serão testados para
verificar se a interrupção se deve dar …
- %00000001 testa a entrada no pino 0
- %00000010 testa a entrada no pino 1
- %01000000 testa a entrada no pino 6
- %10000000 testa a entrada no pino 7
- etc.
Podem combinar-se várias condições a verificar em diferentes pinos ao mesmo tempo...
- %00000011 testa as entradas nos pinos 1 e 0
- %10000100 testa as entradas nos pinos 7 e 2
Tendo decidido quais os pinos que vão ser usados para produzir o interrupt, o primeiro
número (valor das entradas) define se queremos que a interrupção ocorra quando esses
pinos fiquem altos (1) ou baixos (0).
Uma vez a instrução SETINT ativa, o PICAXE monitoriza os pinos especificados na máscara
de entrada „input mask‟, onde estão presentes „1‟, ignorando os outros pinos.
Uma máscara de entrada %10000100 verificará os pinos 7 e 2 criando um valor %a0000b00
onde o bit „a‟ será 1 se o pino 7 estiver alto (high) e 0 se estiver baixo (low), e o bit „b‟ será
1 se o pino 2 estiver alto (high) e 0 se estiver baixo (low).
O número „a comparar com‟ (inputs), o primeiro operando da instrução SETINT, é o número
com o qual e valor criado vais ser comparado e, se os dois se igualarem, então ocorrerá o
interrupt, caso contrário não haverá interrupt.
Se „máscara de entradas‟ for %10000100, serão os pinos 7 e 2 testados, pelo que podemos
criar valores „a comparar com‟ do tipo...
- %00000000 Pino 7 = 0 e pino 2 = 0
- %00000100 Pino 7 = 0 e pino 2 = 1
- %10000000 Pino 7 = 1 e pino 2 = 0
- %10000100 Pino 7 = 1 e pino 2 = 1
Assim, se se pretender gerar um interrupt quando o pino 7 ficar alto e o pino 2 ficar baixo, a
máscara a usar será %10000100 e o valor „a comparar com‟ deverá ser %10000000, donde
a sintaxe da instrução SETINT...
Sistema PICAXE 2010 Prof. João Carlos Lazaro
69
- SETINT %10000000,%10000100
O interrupt ocorrerá quando, e apenas quando, o pino 7 ficar alto e o pino 2 ficar baixo.
Exemplo:
setint %10000000,%10000000
„ activa o interrupt quando o pin7 fica alto (high)
loop:
low 1 „ desliga a saída 1
pause 2000 „ espera 2 segundos
goto loop „ volta ao início
interrupt:
high 1 „ liga a saída 1
if pin7 = 1 then interrupt „ fica em ciclo aqui até que a
„ condição desapareça
pause 2000 „ espera 2 segundos
setint %10000000,%10000000 „ reactiva o interrupt
return „ retorno da subrotina
Neste exemplo um LED na saída 1 acenderá imediatamente quando a entrada ficar alta.
Com uma instrução if pin7 =1 then.... o programa poderia ter que esperar até dois segundos
para acender o LED pois a instrução if não é executada durante o tempo de espera produzido
pela instrução pause 2000 do programa principal (o programa standard é apresentado a
seguir para termo de comparação).
loop:
low 1 „ desliga a saída 1
pause 2000 „ espera 2 segundos
if pin7 = 1 then sw_on
goto loop „ volta ao início
sw_on:
high 1 „ liga a saída 1
if pin7 = 1 then sw_on
„ fica em ciclo aqui até que a
„ condição desapareça
pause 2000 „ espera 2 segundos
goto loop „ volta ao programa principal
Sistema PICAXE 2010 Prof. João Carlos Lazaro
70
ANEXO A
DATASHEET PIC16F677 MICROCHIP
Sistema PICAXE 2010 Prof. João Carlos Lazaro
71
Sistema PICAXE 2010 Prof. João Carlos Lazaro
72
Sistema PICAXE 2010 Prof. João Carlos Lazaro
73
Sistema PICAXE 2010 Prof. João Carlos Lazaro
74
Sistema PICAXE 2010 Prof. João Carlos Lazaro
75
Sistema PICAXE 2010 Prof. João Carlos Lazaro
76
Sistema PICAXE 2010 Prof. João Carlos Lazaro
77
Sistema PICAXE 2010 Prof. João Carlos Lazaro
78
Sistema PICAXE 2010 Prof. João Carlos Lazaro
79
Sistema PICAXE 2010 Prof. João Carlos Lazaro
80
ANEXO B - SIMBOLOGIA
Sistema PICAXE 2010 Prof. João Carlos Lazaro
81
ANEXO II Exercicios de fixação PRATICANDO 1
LISTA 1 DE EXERCICIOS DE MICROCONTROLADORES
1) Quais são os itens BASICOS necessários para a utilização do sistema PICAXE?
2) Quais as características mínimas para a instalação do software de programação do
PIC?
3) Quais os valores requeridos de tensão de alimentação, adequados para um perfeito
funcionamento do PICAXE e do Project Board.?
4) Porque não se deve utilizar para alimentação do Project Board baterias de 9V PP3?
5) No caso do sistema ser portátil qual a forma mais adequada de alimentação sugerida
pelo manual?
6) Faça um desenho do integrado PIC 16F677 (PICAXE 20M) e relacione cada pino com
sua função, tentando entender a função de cada um.
7) Desenhe o esquema de ligação do circuito mínimo para gravação e leitura de dados
do PICAXE 20M.
8) Qual a função das resistências de 10 Ke 22 k na ligação do pino 2 do CI PIC
16F677 no circuito de programação?
9) Porque o pino 9 do CI PIC 16F677 não pode ficar em flutuação?
10) Existem diferenças nos valores de alimentação do CI PIC18F14K22 (20X2) para o
PICAXE 20M. Quais são elas?
11) Qual a função do CI ULM 2808?
12) Faça um diagrama do CI ULM 2808 relacionando a função de cada pino desse
integrado.
13) Relacionar o diagrama eletrônico da pagina 12 com a figura do Project board da
pagina 11. Inicialmente explique cada item relacionado abaixo:
a) Banco de resistores RA1 de 10K.
b) Resistores de 22Ke 10K.
c) Pontos de ligação V+ de 0 à 7.
d) Resistor RPD.
e) Resistor RPU.
f) Pontos de ligação 0V.
g) Capacitor C1.
h) Ponto de ligação LK1.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
82
i) Ponto de ligação PZ.
j) Pinos 3,4,5,6,7,8,9,10 do CI 1.
k) Pinos 2, 19 do CI 1.
l) Pinos 11 à 18 do CI1.
m) Pino 1 do CI1.
n) Pino 20 do CI1
o) Pinos de 1 à 8 do CI2.
p) Pinos de 11 à 18 do CI2.
q) Pino 10 do CI2.
r) Pino 9 do CI2.
14) A placa do Project board na pagina 11 esta demarcada por letras relacionadas com a
função de cada item nessa placa. Faça uma relação de cada letra e sua função em
ordem alfabética de A até L.
15) Desenhe o circuito referente à confecção do cabo de download, mostrando detalhes
dos pinos do conector DB9 SERIAL e das ligações no P2.
16) Qual a função dos componentes, mostrados no circuito serie melhorado para
transferência de dados mostrado na pagina 15. Explique a função do resistor de 180 W
e do diodo shottky BAT85.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
83
PRATICANDO 2
Laboratório de medições de tensões na placa de treinamento project board 20M. OBJETIVO: estudo da PCB de microntroladores.
Todas as informações
estão contidas na apostila
de microcontroladores
PICAXE.
Todas as medidas serão
feitas sem o circuito
integrado soquetado na
placa, somente será
medido o valor da tensão
diretamente no conector
do socket.
PRATICANDO:
1- Ligar todos os cabos
conforme o esquema ao
lado. Observe as seqüências de A0...A7 (entradas) e B0...B7.(saídas)
2- Medir cada ponto requerido na tabela I com o voltímetro
e anotar no campo correto.
3- Medir o valor da tensão no pino 10 do ULM 2803, com o
jump e sem o jump. Anotar na tabela II
PIC Com o jump LK1
Sem o jump LK1
PIN 10 (v)
PIN 10 (v)
Voltar o jump para o lugar para continuar as medições.
Sistema PICAXE 2010 Prof. João Carlos Lazaro
84
4- O banco de resistores de 10 k garantem que as entradas do PIC assumam
quais valores?
5- Os resistores RPD e RPU estão ligados a qual
pino do PIC?. Qual a função deles?
Pino:_______ A entrada A0 corresponde à imput 0, assim
proceder com os níveis lógicos requeridos na tabela III e anotar os valores observados nos pontos pedidos na tabela.
6- Medir os pontos nos pinos 19 e 2 do socket do PIC
conforme a tabela III. Essa operação deve ser feita com o
cabo de gravação conctado no PC e o pino conector P2
na placa. Todas as medidas são em relação ao terra.
Preencha tabela IV conforme esta sendo requerido
7- Medir o valor da tensão entre os resistores de
22k e 10 Kpto F, referente ao pino 2 do
PIC. Preencha tabela IV conforme o
requerido.
Níveis de tensão em A0
Pto A Pto B Pto C
H – nível alto
L – nível baixo
F L- em flutuação
PIC CCom cabo de download
SSem o cabo de download
PIN 19 D (v)
PIN 2 E (v)
PIC Com cabo de download
Sem o cabo de download
PPonto F (v)
D
F
E
Sistema PICAXE 2010 Prof. João Carlos Lazaro
85
8- Qual são os valores de tensão no cabo de download nos pontos
requeridos. Preencha a tabela V. Medidas em relação ao GND.
TABELA I medidas em Volts [V] . Todas em relação ao terra
Pinos de entradas do PIC in0...in7 medidos diretamente no socket.
En
trad
as
da
pla
ca
de
A7
...A0
10 9 8 7 6 5 4 3 Descrição da situação
A7 H
L
FL
A6 H
L
FL
A5 H
L
FL
A4 H
L
FL
Ponto a (V)
Ponto b (V)
Ponto c (V)
Sistema PICAXE 2010 Prof. João Carlos Lazaro
86
A3 H
L
FL
A2 H
L
FL
A1 H
L
FL
A0 H
L
FL