atelier de formação iniciação à robótica móvel bases de programação associação nacional...

64
Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica DEAR DEAR Robot Robot

Upload: internet

Post on 22-Apr-2015

103 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Atelier de FormaçãoIniciação à robótica móvel

Bases de Programação

Associação Nacional de Professores de Electrotecnia e Electrónica

DEAR DEAR RobotRobot

Page 2: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Microcontrolador

Circuito integrado em alta escala (VLSI) que incorpora a maior parte dos elementos que constituem um controlador e se destina a uma determinada tarefa.

Costuma estar incorporado no dispositivo que controla (controlador embebido - embedded controller).

Page 3: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

indústria informática (periféricos: rato, teclado,...)electrodomésticos (fornos, máq. lavar, vídeos, etc)sistemas AVACstelecomunicaçõesindústria automóvel

Aplicações

Page 4: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Um microcontrolador dispõe normalmente dos seguintes elementos:

processador ou CPUmemória de dados (RAM)memória de programa (ROM/PROM/EPROM/EEPROM)linhas de entrada/saída (E/S) programáveis

Constituição

Page 5: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

módulos de controlo de periféricos (portos série, paralelo,USB,I2C,etc.)gerador de impulsos de relógiotemporizadorescão-de-guarda (watchdog)conversores A/D e D/Acomparadores analógicos

Constituição

Page 6: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

microprocessador vs. microcontrolador

o microprocessador é um sistema aberto

constrói-se um computador com as características desejadas juntando os módulos necessários

o microcontrolador é um sistema fechado

contem um computador completo e as suas prestações limitadas não se podem modificar

Page 7: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Estrutura de um microprocessador

bus de controle

P

Memória controlador 2controlador 1

bus de endereços

bus de dados

periféricos periféricos

Page 8: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Estrutura de um microcontrolador

Cperiféricos periféricos

Page 9: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Arquitectura interna de um microprocessador

UCPMemória

Instruções

+

dadosbus de dados e instruções

bus comum de endereços

8

Arquitectura “von Neumann” ou “Princeton”

Page 10: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Arquitectura interna de um microcontrolador

Arquitectura “Harvard”

UCPMemória

de

dados

bus de dados

bus de endereços de dados

8

Memória

de

Instruções

9

bus de endereços de instruções

10

14

bus de instruções

Page 11: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Arquitectura interna de um microcontrolador

RISC - Reduced Instruction Set Computer (35 no 16F84)

versus

CISC - Complex Instruction Set Computer (+150 no 8086)

Page 12: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Arquitectura interna de um microcontrolador

Memória de Programa

Tipologia

PROM (Programmable Read Only Memory) EPROM (Electrically PROM) OTP (One Time Programmable) EEPROM (Electrically Erasable PROM) FLASH

Page 13: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Arquitectura interna de um microcontrolador

Memória de Dados

SRAM (Static RAM) EEPROM

Page 14: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Arquitectura interna de um microcontrolador

Programação

linguagem assemblylinguagens HLL (High Level Language):

Pascal, Basic, JAL, C

Compiladores vs. Interpretadores

Page 15: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Picaxe 28X

Características:

600 linhas código21 pinos E/S9-17 saídas0-12 entradas0-4 entradas A/D2 saídas PWM

Page 16: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Picaxe 28X

Pinos de Entrada/Saídaconfiguráveis

Pinos de Entrada/Saídaconfiguráveis

Entradas Analógicas ou Digitais Pinos de

Saída

Page 17: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Picaxe 28X

Pinos de SaídaPWM

Entradas Analógicas

A/D

Page 18: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Linguagens de programação

PBasic (compatível com Basic Stamp).

Ambiente integrado de desenvolvimento com suporte para programação gráfica por fluxogramas.

Editor, compilador, programador,debugger e simulador incorporados.

Page 19: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Lógica de Programação

O paradigma “tradicional”: Pressupõe um modelo do mundo

Sensores Interpretação dos sensores

Modelo do Mundo

PlaneamentoExecuçãoActuadores

Page 20: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Lógica de Programação O paradigma das interacções prioritárias de Rodney

Brooks Utiliza uma estratégia em que só os sensores são os

iniciadores dos comportamentos. Os comportamentos são sistemas em camadas de

controlo que funcionam em paralelo, cada vez que os sensores apropriados são activados.

Um sistema de arbitragem de prioridades é utilizado para activar o comportamento dominante.

Todos os comportamentos funcionam em paralelo, com os de mais alto nível a suprimirem o funcionamento dos de nível inferior.

Page 21: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Lógica de Programação O paradigma das interacções prioritárias de

Rodney Brooks Exemplo:

Sensor Pista MotoresSeguirPista S

Sensor Cor Detectar_Cor S

Bumpers Escapar

Sensor Procedimento Actuador

Page 22: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Programa = dados + instruções

Elementos da Linguagem de Programação BASIC

Símbolos Variáveis Constantes Instruções

Page 23: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

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

Page 24: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

O compilador não é case-sensitive (sensível a maiúsculas), pelo que podem ser usadas indiscriminadamente maiúsculas e minúsculas.

Exemplo:ciclo:

high 1 ; liga a saída 1pause 500 ; espera de 5 segundoslow 1 ; desliga a saída 1PAUSE 500 ; espera de 5 segundosgoto Ciclo ; salto para o início

Page 25: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Espaços em branco e Sintaxe

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.

Page 26: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

COMENTÁRIOS 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 2 ;coloca pin2 alto REM coloca pin3 alto

Page 27: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

CONSTANTES

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

Os números decimais são escritos directamente sem qualquer prefixo.

Os números hexadecimais (hex) são precedidos pelo sinal dólar ($).

Os números binários são precedidos pelo sinal de percentagem (%).

Os valores ASCII são colocados entre plicas (“).

Page 28: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Exemplos: 100 ‘ 100 em decimal $64 ‘ 64 hex %01100100 ‘ 01100100 binário “A” ‘ “A” ascii (65) “Hello” ‘ “Hello” – equivalente a “H”,

“e”, “l”, “l”, “o”. B1 = B0 ^ $AA ‘ ou exclusivo da

‘variável B0 com AA hex

Page 29: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

SÍMBOLOS Os símbolos podem ser associados a valores

constantes, nomes alias (alternativos) para variáveis e endereços de programa. Os valores constantes e os nomes alias 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 símbolos podem utilizar qualquer palavra que não seja reservada (instruções).

Os símbolos podem conter letras e números, mas o primeiro carácter é obrigatoriamente uma letra. O uso dos símbolos não aumenta a dimensão do programa e torna-o mais legível.

Page 30: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC Os endereços de programa são atribuídos fazendo seguir o

símbolo pelo sinal dois pontos (:).

Exemplo:

symbol LED_E = 7 ‘ define um pino de saídasymbol CONTA = B0 ‘ define o símbolo de uma variávellet CONTA = 200 ‘ carrega a variável com o valor

‘ 200CICLO: ‘ define endereço de programa

high LED_E ‘ liga a saída 7pause CONTA ‘ espera 0,2 segundos (200 milisegundos)

low LED_E ‘ desliga a saída 7pause CONTA ‘ espera 0,2 segundos goto CICLO ‘salta para o início CICLO

Page 31: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

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

Page 32: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

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 seleccionar o menu PICAXE>Check Syntax.

Memória de Dados 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.

Page 33: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

RAM (Variáveis) 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.

Page 34: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Variáveis de Usos Gerais (GPR – General Purpose Registers)

Existem 14 variáveis de usos gerais tipo byte. 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.

Para números maiores podem combinar-se duas variáveis byte de modo a criar uma variável word, que é capaz de guardar números inteiros entre 0 e 65535.

Page 35: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Estas variáveis word são designadas w0 a w6, e são construídas do seguinte modo:

w0 = b1 : b0

w1 = b3 : b2

w2 = b5 : b4

w3 = b7 : b6

w4 = b9 : b8

w5 = b11 : b10

w6 = b13 : b12

Page 36: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

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ávelb0 = bit7: bit6: bit5: bit4: bit3: bit2: bit1: bit0b1 = bit15: bit14: bit13: bit12: bit11: bit10: bit9: bit8

Pode utilizar qualquer variável word, byte ou bit numa expressão matemática ou instrução que utilize variáveis.

Page 37: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Variáveis para Funções Especiais (SFR) As variáveis disponíveis para funções especiais

dependem do tipo de PICAXE.

pins = representa o dado lido no porto de entrada pins = representa o porto de saída na escrita

Note que pins é uma ‘pseudo’ variável que se pode aplicar tanto a portos de entrada como de saída.

Quando usado à esquerda de uma expressão de atribuição de pinos aplica-se ao porto de saída.

Page 38: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Por exemplo,let pins = %11000011

vai colocar as saídas 7,6,1,0 altas e as restantes baixas.

O sinal % indica ao compilador que se está a trabalhar em binário, em vez de decimal.

Quando usado à direita de uma expressão de atribuição de pinos aplica-se ao porto de entrada (porto C no PICAXE28X).

Por exemplo,let b1 = pinsvai guardar em b1 o estado actual do porto de entrada.

Page 39: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

A variável pins está separada em variáveis bit individuais para leitura de entradas bit individuais através da instrução if...then. pins = pin7 : pin6 : pin5 : pin4 : pin3 : pin2 : pin1 : pin0

Page 40: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Programming Editor

Instalação e password (picaxebegin) Configuração (Menu View/Options)

Mode PICAXE-28X

Options: 4MHz

Serial Port

Language

Page 41: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Programming Editor

Programação em BASIC Programação por Fluxograma

Page 42: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Programming Editor Programação por Fluxograma

Simbologia Início/Fim Processo:

acção a ser realizada

E/S define entradas e saídas

Decisão a tomar

Conector

Subrotina

Page 43: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Programming Editor-exemplo

start

low 4

pin0=1Y

N high 4

pin0=0Y

N

pin6=1Y

N

pin7=1Y

N gosub blue gosub red

red blue

high 7

high 6

pause 3000

low 7

low 6

return

return

let b0= 0

let b0=b0+ 1

let pins = 96

let pins = 160

pause 2000

pause 2000

let pins = 16

high 0

low 0

let pins = 32

pause 3000

Green LED off

Green LED on

Door open again!

Check door switch

Test red & blue switches

Lock solenoid

Do motorsequence

Unlock door

Program for Washing Machine Model

b0> 10

Y

N

main:label_6: low 4label_D: if pin0=1 then label_19

goto label_D

label_19: high 4label_20: if pin0=0 then label_6

if pin6=1 then label_4Dif pin7=1 then label_44goto label_20

label_44: gosub bluegoto label_6

label_4D: gosub redgoto label_6

Page 44: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Programming Editor-exemplostart

avancar esquerda direita

forward left right

pwmout 1,10,40

pwmout 2,10,40

returnreturn

pwmout 2,10,40

pwmout 1,10,40 pwmout 1,10,40

pwmout 2,10,40

return return

pwmout 2,10,40

pwmout 1,10,40

let b0=pins& 224

b0= 0

Y

N b0= 32

Y

N b0= 64

Y

N b0= 96

Y

N b0= 128

Y

N b0= 224

Y

Nb0= 160

Y

N b0= 192

Y

N

gosub avancar gosub esquerda gosub avancar gosub esquerda gosub direita gosub avancar gosub esquerda gosub parar

000001 010 011 100 101 110 111

halt

parar

gosub ler_cor

alarmeler_cor

readadc 0,b1sound 0,(50,50)

pause 1000

return

b1> 20

Y

N

b1< 70

Y

N

b1> 132

Y

N

b1< 150

Y

N

gosub alarme

returnAs coisas complicam-se

Page 45: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC Instruções BASIC essenciais Controlo de pinos de Saída

– high 1– low 2– pins=%00000110– high portc 1

Leitura de pinos de entrada– b0=pins– if pin0=1…

Page 46: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Saídas PWM– Instrução pwmout– Sintaxe:

PWMOUT pino, período, dutycycle

Pino é uma variável/constante que especifica o pino E/S a usar (1 ou 2).Período é uma variável/constante (0-255) que estabelece o período do sinal de PWM.Duty cycle é uma variável/constante (valor de 10 bits, logo, de 0-1024) que define o ciclo de trabalho (tempo em que o sinal está alto em cada período).

Page 47: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Esta instrução difere de todas as outras pelo facto de ser executada continuamente (independente do resto do programa) até que outra instrução pwmout seja enviada.

Para parar o sinal pwmout, basta enviar uma instrução pwmout com o período 0.Período PWM = (período + 1) x 4 x (1/4000000) = (período + 1) usCiclo Trabalho = (dutycyle) x (1/4000000) = (dutycycle)/4 us

Page 48: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Exemplo: Controlo de um motor

Programa

Inicio:

high 7

low 6

pwmout 1,100,300

end

Page 49: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Salto incondicional– goto label

Controlo de fluxo– If condição then label

start

pin0=1Y

N

Aqui Ali

Page 50: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

inicio:if pin6 = 0 then direitagoto esquerda

‘**************************esquerda:

low 7low 6high 5low 4pwmout 1,10,25pwmout 2,10,25goto inicio

‘***************************direita:

high 7low 6low 5low 4pwmout 1,10,25pwmout 2,10,25goto inicio

‘*****************************

Page 51: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

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

Page 52: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

?? 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

Page 53: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Seguimento de pista– Com 1 sensor– Com 2 sensores– Com 3 sensores– Com 3 sensores e flags

Page 54: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

Esquema de ligações

M2 M1

9V

9,6V

Alimentação dos sensores

Ligação ao cabo série paraprogramar

Sensor de pista (3inputs)

Sensor de obstáculos(2outputs)

Sensor de obstáculos(1input)

Sensor de cor

BezouroLed

Page 55: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Subrotinas Os procedimentos ou subrotinas, 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 secção de código a partir de várias localizações do programa.

Page 56: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

GOSUB endereço Return

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 (ou 256 no Picaxe 28X), podendo ser aninhadas até 4 níveis.

Page 57: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

GOSUB endereço Return Informação: A instrução gosub (ir para um procedimento), é um

salto temporário para uma secçã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.

Page 58: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

start

pin0=1Y

N

gosub Esquerda gosub Direita

Esquerda Direita

return return

Vantagens face ao “spagheti” dos gotos.

Programa: If pin0=1 then…

Page 59: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Ciclos repetidos for … next Sintaxe: FOR variável = inicio TO fim {STEP {-} incremento} NEXT {variável} Variável vai ser usada como um contador Início é o valor inicial da variável Fim é o valor final da variável Incremento é um valor opcional que se sobrepõe ao valor de

incremento normal do contador (+1). Se o incremento for precedido de um ‘-‘, será considerado que Fim é menor que Inicio e, portanto, o valor de incremento é subtraído cada vez que o ciclo se realiza.

Page 60: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Informação:

Os ciclos for… next são utilizados para repetir secções de código um certo número de vezes. Quando se usa uma variável byte, o ciclo repete-se até 255 vezes. Cada vez que a linha next é encontrada, o valor da variável ´eincrementado (ou decrementado) do valor definido por step (+1 por omissão). Quando o valor final é ultrapassado o ciclo pára e o fluxo do programa continua a partir da linha seguinte à instrução next.

Os ciclos for…next podem ser encadeados até 8 níveis de profundidade.

Page 61: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Exemplo:ciclo:

for b0 = 1 to 20 ‘ define um ciclo de 20 vezeshigh 1 ‘ liga a saída 1pause 500 ‘ espera 0,5 segundoslow 1 ‘ desliga a saída 1pause 500 ‘ espera 0,5 segundos

next b0 ‘ salta para o início, incrementando b0 de +1, ‘ até que b0 = 20

pause 2000 ‘ espera 2 segundosgoto ciclo ‘ salto para o início

Page 62: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Leituras de tensões analógicas Instrução readadc10 Sintaxe: READADC10 canal, variávelword Canal é uma variável/constante especificando um

endereço (0-3) – pinos 2,3,4 e 5. Variávelword é uma variável word que recebe os

dados lidos (0-1024). Função: Lê um canal ADC (conversão analógico-digital) de 10

bits de resolução para uma variável de dimensão word (0-1024).

Page 63: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Exemplo: sensor de corsymbol leitura = w0inicio:

readadc10 0,leituraif leitura < 200 then alarmegoto inicio

alarme:sound 0,(50,50)sound 0,(100,50)sound 0,(120,50)pause 300goto inicio

Page 64: Atelier de Formação Iniciação à robótica móvel Bases de Programação Associação Nacional de Professores de Electrotecnia e Electrónica

BASIC

Outras instruções: PAUSE milisegundos

Milisegundos é uma variável/constante (0-65535) que especifica quantos milisegundos dura a pausa.

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.Duração(s) são variáveis/constantes (0-255) que especificam a duração múltiplos aproximados de 10ms).