manual PICAXE

Page 1

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


INDICE 1 2 3 4 5 5

O que é um microcontrolador? Microcontroladores, input e outputs O que é um sistema PICAXE? Construindo o próprio circuito / PCI Utilizando o sistema PICAXE Instalação do Software

Experimento 2: Sinalizador para saída de veículos

6 8 8 9 10 11 12 14 15 17 17 18 19 20 22 23 26 26 26 27 28 29 29 30 31 31 34 34 34 36 38 38 38 39 40 41 42 44

Experiência 3: Seqüencial de 6 canais

45

Fonte de alimentação para o PICAXE Considerações tecnicas do Project Board PICAXE 20M PICAXE-20X2 Pinout e Circuito ULN 2803 - Oito drives de Corrente - Relação de pinagem Diagrama eletrônico do project Board do 20M Conhecendo a PCI - project Board PICAXE Circuito série para transferência de dados (download) (Cabos) Clock frequência – Ressonador Consideraçõs especiais sobre a familia X2

Mensagem de erro Procedimento Hard-reset Compreendendo a memória do PICAXE Variáveis de Usos Gerais (GPR – General Purpose Registers) Resumo dos Circuitos para Interface BASIC Commands Summary TUTORIAL 1 – relacionando entradas (INPUTS) e saídas (OUTPUTS) TUTORIAL 2 - Usando Símbolos, Comentários e Espaços LABEL - sintaxe Comentários -sintaxe Espaços em branco Whitespace - sintaxe GOTO - Sintaxe Tutorial 3 - Temporizações PAUSE - Sintaxe NAP - Sintaxe SLEEP - Sintaxe SYMBOL - Sintaxe TUTORIAL 4 - Uso das Constantes e variáveis CONSTANTES - Sintaxe VARIAVEIS - Sintaxe Quadro de resumo sobre variáveis TUTORIAL 5 - Trabalhando com as saídas (OUTPUT) LOW – Sintaxe HIGH – Sintaxe LET PINS=” – Sintaxe TOGGLE TUTORIAL 6 – Compreendendo e usando o sistema PICAXE Experimento 1: Acionamento de um LED

1

Sistema PICAXE 2010

Prof. João Carlos Lazaro


TUTORIAL 7 – Ciclos For…Next FOR…NEXT TUTORIAL 8 – Usando Entradas Digitais IF ...THEN PULSIN BUTTON Aplicação em interruptores (microswitch) Aplicação em teclados - Keypads TUTORIAL 9 – Usando Sensores Analógicos READADC LDR – uso do resistor LDR TUTORIAL 10 - Utilização da instrução Debug DEBUG

48 48 50 50 52 52 54 55 56 56

57 58 58

2

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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.

3

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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 4

Sistema PICAXE 2010

Prof. João Carlos Lazaro


“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.

5

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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.

6

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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.

7

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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. 8

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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ãoreguladas (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.

9

Sistema PICAXE 2010

Prof. João Carlos Lazaro


Considerações tecnicas do Project Board PICAXE 20M PICAXE-20M Pinout e Circuito Diagrama de pinos do PICAXE20M (PIC16F677)

Circuito eletrônico mínimo utilizar o PICAXE20M :

para

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.

10

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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).

11

Sistema PICAXE 2010

Prof. João Carlos Lazaro


Diagrama eletr么nico do project Board do 20M

12

Sistema PICAXE 2010

Prof. Jo茫o Carlos Lazaro


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

13

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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. 14

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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.

15

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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 Pino do PICAXE

Ficha D série

Saída série (7) Entrada série (6) Massa (8)

pino 2 pino 3 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.

16

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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. 17

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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

18

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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)

19

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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. 20

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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 w1 w2 w3 w4 w5 w6

= = = = = = =

b1 : b0 b3 : b2 b5 : b4 b7 : b6 b9 : b8 b11 : b10 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. 21

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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.

22

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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

23

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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

24

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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.

25

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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.

26

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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.

27

Sistema PICAXE 2010

Prof. João Carlos Lazaro


Tutorial 2 - Usando Rotulos (labels), Comentários e Espaços Output

instruções PBasic – Comandos e Sintaxe Rótulos (labels)/comentários/espaços Goto

Labels, Comentarios 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 pause 1000 low 1 pause 500 goto repete

„ „ „ „ „

liga a saída 1 espera de 1000 milisegundos desliga a saída 1 espera de 0,5 segundo 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

Comentarios 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:

28

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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: high 7 pause 200 low 7 pause 200 goto LOOP

' define endereço de programa ' um símbolo endereço termina por dois pontos ' liga a saída 7 'espera 0,2 segundos (200 milisegundos) ' desliga a saída 7 ' espera 0,2 segundos (200 milisegundos) ' 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.

Espaço em branco - Whitespace 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: low 0 high 1 pause 1000 high 0 low 1 pause 1000 goto novamente

‘novamente: é um label, uma posição ‘pino 0 está em nível baixo ‘pino 1 está em nível alto ‘pausa a saída por 1000ms = 1seg. ‘pino 0 está em nível alto ‘pino 1 está em nível baixo ‘pausa a saída por 1000ms = 1seg. ‘goto manda saltar para label novamente,entra em ciclo

29

Sistema PICAXE 2010

Prof. João Carlos Lazaro


GOTO 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: high 1 pause 500 low 1 pause 500 goto ciclo

„ LABEL „ liga a saída 1 „ espera 0,5 segundos „ desliga a saída 1 „ espera 0,5 segundos

Exemplo2: ledflash: high 2 high 5 pause 5 low 2 pause 50 low 5 goto ledflash

' ' ' ' ' ' ' '

LED flash rate & mark/space experiment turn on output pin 2- LED lights up turn on output pin 5- LED lights up keep it on for 5 milliseconds turn off pin 2 - LED goes out keep it off for 50 ms turn off pin 2 - LED goes out repeat routine

30

Sistema PICAXE 2010

Prof. João Carlos Lazaro


Tutorial 3 - Temporizações Output

instruções PBasic – Comandos e Sintaxe

Temporizadores/ Controle de consumo

Pause, nap, Sleep, Wait, Symbol

PAUSE 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 Pause 60000 next b1

„ 5 ciclos „ espera de 60 segundos

Exemplo1: ciclo: high 1 pause 500 low 1 pause 500 goto ciclo Exemplo 2: repete: high 1 wait 1 low 1 pause 500 goto repete

„ „ „ „

liga a saída 1 espera 0,5 segundos desliga a saída 1 espera 0,5 segundos

„ Rotulo - Label “repete” „ liga a saída 1 „ espera de 1 segundo „ desliga a saída 1 „ espera de 0,5 segundo „ salto para o início

31

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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.

NAP 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 0 1 2 3 4 5 6 7

Tempo de atraso 18 ms 36 ms 72 ms 144 ms 288 ms 576 ms 1,152 s 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 nap 4 low 1 nap 7 goto ciclo

„ „ „ „ „

liga a saída 1 suspende durante 2^4 x 18ms desliga a saída 1 suspende durante 2^7 x 18ms salta para o início 32

Sistema PICAXE 2010

Prof. João Carlos Lazaro


SLEEP 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 sleep 10 low 1 sleep 100 goto ciclo

„ liga (on) a saída 1 „ dorme durante 23 segundos „ desliga (off) a saída 1 „ dorme durante 230 segundos „ volta ao início

SYMBOL 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).

33

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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 symbol buzzer = 2

„ renomeia output4 „LED‟ „ renomeia output2 „buzzer‟

principal:

„ „ „ „ „ „ „ „

high LED low buzzer pause 1000 low LED high buzzer wait 1 goto principal

cria uma label „principal‟ liga o LED (on) desliga o buzzer (off) espera 1 segundo (1000 ms) desliga o LED (off) liga o buzzer (on) espera 1 segundo salta para o início

Exemplo 2:

symbol RED_LED = 7 symbol CONTA = B0 let CONTA = 200

„ define um pino de saída „ define o símbolo de uma variável „ carrega a variável com o valor 200

repete: high RED_LED pause CONTA low RED_LED pause CONTA goto repete

„ „ „ „ „ „

„ define endereço de programa: um símbolo endereço termina por dois pontos liga a saída 7 espera 0,2 segundos (200 milisegundos) desliga a saída 7 espera 0,2 segundos (200 milisegundos) efetua um salto para o início repete (ciclo)

34

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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. 35

Sistema PICAXE 2010

Prof. João Carlos Lazaro


TUTORIAL 4 - Uso das Constantes e variáveis

Output

Instruções PBasic – Comandos e Sintaxe

CONSTANTES e VARIAVEIS

CONSTANTES SINTAXES: As constantes podem ser declaradas de quatro modos diferentes: decimais, hexadecimais, binárias e ASCII. Os Os Os Os

números decimais são escritos diretamente sem qualquer prefixo. números hexadecimais (hex) são precedidos pelo sinal dólar ($). números binários são precedidos pelo sinal de percentagem (%). valores ASCII são colocados entre aspas (“).

Exemplos: 100 $64 %01100100 “A” “Hello” B1 = B0 ^ $AA

„ „ „ „ „ „

100 em decimal 64 hex 01100100 binário “A” ascii (65) “Hello” – equivalente a “H”, “e”, “l”, “l”, “o”. ou exclusivo da variável B0 com AA hex

VARIAVEIS 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.

36

Sistema PICAXE 2010

Prof. João Carlos Lazaro


É 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 w1 w2 w3 w4 w5 w6

= = = = = = =

b1:b0 b3:b2 b5:b4 b7:b6 b9:b8 b11:b10 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 instrução que utilize variáveis. Deve-se contudo ter cuidado com a possível repetição mesma variável usada individualmente e como parte de outra. Por exemplo, não usar e w0 separadamente no mesmo programa. Todas as variáveis de usos gerais são postas a 0, quando há uma reinicialização programa.

ou da b0 do

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 37

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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

38

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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 PAUSE 100 Let pins = %00000010 PAUSE 100 Let pins = %00000100 PAUSE 100 Let pins = %00001000 PAUSE 100 Let pins = %00010000 PAUSE 100 Let pins = %00100000 PAUSE 100 GOTO novamente

'põe nível alto na porta 0 'aguarda 100ms 'põe nível alto na porta 1 'aguarda 100ms 'põe nível alto na porta 2 'aguarda 100ms 'põe nível alto na porta 3 'aguarda 100ms 'põe nível alto na porta 4 'aguarda 100ms 'põe nível alto na porta 5 'aguarda 100ms '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 =”

39

Sistema PICAXE 2010

Prof. João Carlos Lazaro


Tutorial 5 - Tabalhando com as saidas (OUTPUT)

Output

Instruções PBasic – Comandos e Sintaxe Low, High, “let pins =”, toggle

Os camando mais utilizados para controle de saidas são: high, low, toggle, pulsout, let pins =

LOW 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

HIGH 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 40

Sistema PICAXE 2010

Prof. João Carlos Lazaro


“Let pins =”

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 pause 250 let pins = %00000110 pause 250 let pins = %01011011 pause 250 let pins = %01001111 pause 250 let pins = %01100110 pause 250 let pins = %01101101 pause 250 let pins = %01111101 pause 250 let pins = %00000111 pause 250 let pins = %01111111 pause 250 let pins = %01101111 pause 250 goto main

„ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „ „

dígito 0 espera 0.25 dígito 1 espera 0.25 dígito 2 espera 0.25 dígito 3 espera 0.25 dígito 4 espera 0.25 dígito 5 espera 0.25 dígito 6 espera 0.25 dígito 7 espera 0.25 dígito 8 espera 0.25 dígito 9 espera 0.25

segundos segundos segundos segundos segundos segundos segundos segundos segundos segundos

41

Sistema PICAXE 2010

Prof. João Carlos Lazaro


TOGGLE 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 pause 1000 goto inicio

„ faz toggle à saída 7 „ espera de 1 segundo „ 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.

42

Sistema PICAXE 2010

Prof. João Carlos Lazaro


Tutorial 6 – Compreendendo e usando o sistema PICAXE. Output

Instruções mais utilizadas neste tutorial:

Experimento 1 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.

43

Sistema PICAXE 2010

Prof. João Carlos Lazaro


Experiência 1: Acionamento de um LED 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

A

(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.

B

8. Verifique se o circuito com o PICAXE está ligado ao cabo série, e que a alimentação está ligada.

44

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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.

Tempos [ms]: 100, 500, 1000, 3000, 10000 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.

45

Sistema PICAXE 2010

Prof. João Carlos Lazaro


Experiência 2:

Sinalizador para saída de veículos

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: pin0 = 0 pin1 = 1 pause 1000 pin0 = 1 pin1 = 0 pause 1000 goto novamente

„novamente: é um label, uma posição de memória „ estamos atribuindo a saída 0 o binário 0 – o led liga „estamos atribuindo a saída 1 o binário 1 – o led desl. „pausa a saída por 1000ms = 1seg. „estamos atribuindo a saída 0 o binário 1 – led desl. „estamos atribuindo a saída 1 o binário 1 – led liga „pausa a saída por 1000ms = 1seg. „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.

46

Sistema PICAXE 2010

Prof. João Carlos Lazaro


Uma outra forma de escrever o programa anterior é utilizando os comandos

“high” e “low”. Veja: novamente: low 0 high 1 pause 1000 high 0 low 1 pause 1000 goto novamente

„novamente: é um label, uma posição „pino 0 está em nível baixo „pino 1 está em nível alto „pausa a saída por 1000ms = 1seg. „pino 0 está em nível baixo „pino 1 está em nível alto „pausa a saída por 1000ms = 1seg. „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.

Experiência 3:

Seqüencial de 6 canais

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)

47

Sistema PICAXE 2010

Prof. João Carlos Lazaro


PROGRAMA: „****************************** „*PROGRAMA: Seqüencial de 6 canais * „*PROGRAMADOR: João Carlos * „*DATA: 18/03/10 * „*VERSÃO: 1.0 * „******************************* REPITA: LOW 0 HIGH 0 PAUSE 100 LOW 0 LOW 1 HIGH 1 PAUSE 100 LOW 1 LOW 2 HIGH 2 PAUSE 100 LOW 2 LOW 3 HIGH 3 PAUSE 100 LOW 3 LOW 4 HIGH 4 PAUSE 100 LOW 4 LOW 5 HIGH 5 PAUSE 100 LOW 5 GOTO REPITA

„label „põe nível baixo na porta 0 „põe nível alto na porta 0 „aguarda 100ms „põe nível baixo na porta 0 „põe nível baixo na porta 1 „põe nível alto na porta 1 „aguarda 100ms „põe nível baixo na porta 1 „põe nível baixo na porta 2 „põe nível alto na porta 2 „aguarda 100ms „põe nível baixo na porta 2 „põe nível baixo na porta 3 „põe nível alto na porta 3 „aguarda 100ms „põe nível baixo na porta 3 „põe nível baixo na porta 4 „põe nível alto na porta 4 „aguarda 100ms „põe nível baixo na porta 4 „põe nível baixo na porta 5 „põe nível alto na porta 5 „aguarda 100ms „põe nível baixo na porta 5 „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.

48

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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 pause 1000 low 7 pause 1000 goto main

'make output 7 high 'wait 1 second 'make output 7 low

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

Desafio: Você pode fazer o LED 4 entrar quando o LED 7 se apagar, e apaga quando o LED 7 se acende? 180R

4

180R

7

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

49

Sistema PICAXE 2010

Prof. João Carlos Lazaro


TUTORIAL 7 – Ciclos For…Next LOOPs

Instruções PBasic – Comandos e Sintaxe

Ciclos

For…Next

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 symbol LED = 4

„ define a variável b1 como “contador” „ define o pin 4 com o nome “LED”

principal: for contador = 1 to 15 high LED pause 500 low LED pause 500 next contador

„ „ „ „ „ „

end

„ fim do programa

inicia um ciclo for...next liga o pino 7 alto espera 0.5 segundos liga o pino 7 baixo espera 0.5 segundos fim do ciclo for...next, repete 15 vezes

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:

50

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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 symbol time = 7

' define a variável b1 como “minuto” ' define o pin 7 com o nome time

inicio: for minuto = 1 to 60 high time wait 1 next minuto low time end

Anotações label Comandos

' fim do ciclo for...next, repete 60 vezes ' liga o pino 7 alto ' espera 1 segundos 'contador ' liga o pino 7 baixo ' finaliza o programa

descrição

51

Sistema PICAXE 2010

Prof. João Carlos Lazaro


Tutorial 8 – Usando Entradas Digitais

Input digital

Instruções PBasic – Comandos e Sintaxe if...then, pulsin, button

if … then

if … and … then

if … or … then

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

52

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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 goto inicio acende: high 1 pause 5000 low 1 pause 5000 goto inicio

„ „ „ „ „

„ salta para acende se o pin0 estiver alto

põe alta a saída 1 espera 5 segundos põe baixa a saída 1 espera 5 segundos 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.

53

Sistema PICAXE 2010

Prof. João Carlos Lazaro


PULSIN 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 10s (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

BUTTON 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. 54

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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 Toggle 0 ... skip: goto Loop Examplo2: main: button 0,0,200,100,b2,0,cont toggle 1 pause 10 goto main cont: ...

' Go to skip unless pin7=0. ' Invert LED. ' Other instructions. ' Skip toggle and go to Loop.

' jump to cont unless pin0 = 0 ' else toggle input

' Other instructions. 55

Sistema PICAXE 2010

Prof. João Carlos Lazaro


Aplicação em interruptores (microswitch)

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: if pin3 = 1 then flash goto inicio

„ cria a label „inicio‟ „ salta se a entrada estiver ligada „ caso contrário volta para „inicio‟

high 4 pause 2000 low 4 goto inicio

„ „ „ „ „

flash:

cria a label„flash‟ liga a saída 4 (on) wait 2 seconds desliga a saída 4 (off) 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 56

Sistema PICAXE 2010

Prof. João Carlos Lazaro


Aplicação em teclados - Keypads

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 symbol symbol symbol main:

flash1: flash2: flash3: flash4:

key1=input1 key2=input0 key3=input7 key4=input6 if key1=0 then if key2=0 then if key3=0 then if key4=0 then goto main high 1 goto endloop high 2 goto endloop high 3 goto endloop high 4

'rename input

flash1 flash2 flash3 flash4

endloop: let pins=%00000000 goto main

'reset all LEDs

Exercicios…

Anotações label comandos

descrição

57

Sistema PICAXE 2010

Prof. João Carlos Lazaro


Tutorial 9 – Usando Sensores Analógicos

Input analogical

Instruções PBasic – Comandos e Sintaxe

READADC readadc 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 Picaxe28X 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 para if b1 > 50 then flsh goto inicio flsh: high 1 pause 5000 low 1 pause 5000 goto inicio

„ lê tensão analógica presente no canal 1 e converte-o „ valor de 8 bits em b1 „ salta para a subrotina flsh se b1 for maior que 50 „ caso contrário salta para o início e repete

„ „ „ „ „

liga a saída 1 espera 5 segundos desliga a saída 1 espera 5 segundos 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) 58

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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: readadc 1,b0 if b0 > 512 then top if b0 < 128 then bot low 0 low 4 goto main

„ „ „ „ „ „ „

define uma label chamada main lê ADC1 para a variável b0 se b0 > 512 vai para top if b0 < 128 vai para bot caso contrário desliga a saída 0 e a saída 4 salta para o início

high 0 low 4 goto main

„ „ „ „

define label top liga a saída 0 (LED1) desliga a saída 4 salta para o início

high 4 low 0 goto main

„ „ „ „

define label bot liga a saída 4 (LED2) desliga a saída 0 salta para o início

top:

bot:

Exercicios....

Anotações label comandos

descrição

59

Sistema PICAXE 2010

Prof. João Carlos Lazaro


Tutorial 10 - Utilização da instrução Debug

Uso do Debug

Instruções PBasic – Comandos e Sintaxe

DEBUG 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: readadc 1,b0 debug b0 pause 500 goto main

„ define uma label designada main „ lê o ADC1 para a variável b0 „ transmite o valor para o ecrã do PC „ pequeno atraso „ 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. 60

Sistema PICAXE 2010

Prof. João Carlos Lazaro


À 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

SERIAL

Instruções PBasic – Comandos e Sintaxe

SERTXD

sertxt 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

61

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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

Sound

Instruções PBasic – Comandos e Sintaxe

SOUND sound 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. 62

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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 sound 7, (b0, 50) goto ciclo

„ incrementa b0 „ produz tom b0 de duração 0,5s no pino 7 „ 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) sound 2,(100,100) sound 2,(120,100) pause 1000 goto inicio

„ „ „ „ „

freq 50, duração 100 ms freq 100, duração 100 ms freq 120, duração 100 ms espera 1 segundo 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 sound 2,(b0,50) next b0

„ início de um ciclo for...next „ produz um som de freq 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 sound 2,(b0,50) next b0

„ contagem decrescente „ produz um som de freq b0 „ ciclo seguinte

end

63

Sistema PICAXE 2010

Prof. João Carlos Lazaro


Tutorial 13 – Subrotinas

Program Flow

Instruções PBasic – Comandos e Sintaxe

RETURN, GOSUB, GOTO Return 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 pause 2000 gosub flsh let b2 = 5 pause 2000 gosub flsh end

„ „ „ „ „ „ „

atribui 15 ao valor de b2 espera 2 segundos (2000 milisegundos) chama procedimento flsh atribui 5 ao valor de b2 espera 2 segundos (2000 milisegundos) chama procedimento flsh impede entrada acidental no procedimento

flsh: for b0 = 1 to b2 high 1 pause 500 low 1 pause 500 next b0 return

„ „ „ „ „ „

„define b2 como número de ciclos liga a saída 1 espera 0,5 segundos desliga a saída 1 espera 0,5 segundos fim do ciclo retorno do procedimento

Goto – Essa instrução foi abordada no tutorial 2

64

Sistema PICAXE 2010

Prof. João Carlos Lazaro


gosub 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 pause 2000 gosub flsh let b2 = 5 pause 2000 gosub flsh end

„ „ „ „ „ „ „

atribui 15 ao valor de b2 espera 2 segundos (2000 milisegundos) chama procedimento flsh atribui 5 ao valor de b2 espera 2 segundos (2000 milisegundos) chama procedimento flsh impede entrada acidental no procedimento

flsh: for b0 = 1 to b2 high 1 pause 500 low 1 pause 500 next b0 return

„ „ „ „ „ „

„define b2 como número de ciclos liga a saída 1 espera 0,5 segundos desliga a saída 1 espera 0,5 segundos fim do ciclo retorno do procedimento

65

Sistema PICAXE 2010

Prof. João Carlos Lazaro


Exemplo2: O programa seguinte utiliza duas subrotinas para implementar as duas seções do programa ( „flash‟ e „noise‟). symbol LED = 4 symbol buzzer = 2 symbol counter = b1

„ renomeia output4 como „LED‟ „ renomeia output2 como „buzzer‟ „ define um contador na variável b1

main:

„ „ „ „ „

gosub flash gosub noise goto main end flash:

cria uma label designada „main‟ chama subrotina flash chama subrotina noise volta para o início fim do programa principal

„ 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 pause 2000 low buzzer return

„ „ „ „

liga o besouro espera 2 segundos desliga o besouro 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 symbol counter = b1

„ renomeia output4 como „LED‟ „ define um contador na variável b1

main:

„ „ „ „ „ „ „ „ „

let b2 = 5 gosub flash pause 500 let b2 = 15 gosub flash pause 500 goto main end flash:

cria label designada „main‟ carrega b2 com 5 chama subrotina flash espera carrega b2 com 15 chama subrotina flash espera volta ao início fim do programa principal

„ 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 66

Sistema PICAXE 2010

Prof. João Carlos Lazaro


Tutorial 14 - Usando Interrupts

Interrupt

Instruções PBasic – Comandos e Sintaxe

setint setint 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 subrotina 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 subrotina 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.

67

Sistema PICAXE 2010

Prof. João Carlos Lazaro


3) Se a interrupção for reativada e a condição de interrupção não for reinicializada na subrotina, 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 %00000010 %01000000 %10000000 etc.

testa testa testa testa

a a a a

entrada entrada entrada entrada

no no no no

pino pino pino pino

0 1 6 7

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 %00000100 %10000000 %10000100

Pino Pino Pino Pino

7 7 7 7

= = = =

0 0 1 1

e e e e

pino pino pino pino

2 2 2 2

= = = =

0 1 0 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...

68

Sistema PICAXE 2010

Prof. João Carlos Lazaro


-

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 pause 2000 goto loop

„ desliga a saída 1 „ espera 2 segundos „ volta ao início

interrupt: high 1 if pin7 = 1 then interrupt pause 2000 setint %10000000,%10000000 return

„ „ „ „ „ „

liga a saída 1 fica em ciclo aqui até que a condição desapareça espera 2 segundos reactiva o interrupt 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 pause 2000 if pin7 = 1 then sw_on goto loop sw_on: high 1 if pin7 = 1 then sw_on

pause 2000 goto loop

„ desliga a saída 1 „ espera 2 segundos „ volta ao início

„ liga a saída 1 „ „ „ „

fica em ciclo aqui até que a condição desapareça espera 2 segundos volta ao programa principal

69

Sistema PICAXE 2010

Prof. João Carlos Lazaro


ANEXO A

DATASHEET PIC16F677 MICROCHIP

70

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


ANEXO B - SIMBOLOGIA

80

Sistema PICAXE 2010

Prof. Jo達o Carlos Lazaro


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 Ke 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 22Ke 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. 81

Sistema PICAXE 2010

Prof. João Carlos Lazaro


i) j) k) l) m) n) o) p) q) r)

Ponto de ligação PZ. Pinos 3,4,5,6,7,8,9,10 do CI 1. Pinos 2, 19 do CI 1. Pinos 11 à 18 do CI1. Pino 1 do CI1. Pino 20 do CI1 Pinos de 1 à 8 do CI2. Pinos de 11 à 18 do CI2. Pino 10 do CI2. 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.

82

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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.

83

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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.

Níveis de tensão emPto A A0 H – nível alto L – nível baixo F L- em flutuação

Pto B

Pto C

D E

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 PIC

CCom cabo de download PIN 19 D (v) PIN 2 E (v)

SSem o cabo de download

7- Medir o valor da tensão entre os resistores de 22k e 10 Kpto F, referente ao pino 2 do PIC. Preencha tabela IV conforme o requerido.

PIC

F

Com cabo de Sem o cabo de download download

PPonto F (v) 84

Sistema PICAXE 2010

Prof. João Carlos Lazaro


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. Ponto a (V)

Ponto b (V)

Ponto c (V)

TABELA I medidas em Volts [V] . Todas em relação ao terra Pinos de entradas do PIC in0...in7 medidos diretamente no socket. 10 9 8 7 6 5 4 3

Descrição da situação

A7 H L Entradas da placa de A7...A0

FL

A6

H L FL

A5

H L FL

A4

H L FL

85

Sistema PICAXE 2010

Prof. João Carlos Lazaro


A3

H L FL

A2

H L FL

A1

H L FL

A0

H L FL

86

Sistema PICAXE 2010

Prof. Jo達o Carlos Lazaro


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.