Atelier de Forma - PowerPoint PPT Presentation

1 / 64
About This Presentation
Title:

Atelier de Forma

Description:

Picaxe 28X Caracter sticas: 600 linhas c digo 21 pinos E/S 9-17 sa das 0-12 entradas 0-4 entradas A/D 2 sa das PWM Picaxe 28X Picaxe 28X Linguagens de ... – PowerPoint PPT presentation

Number of Views:89
Avg rating:3.0/5.0
Slides: 65
Provided by: Ludg5
Category:
Tags: atelier | forma | picaxe

less

Transcript and Presenter's Notes

Title: Atelier de Forma


1
Atelier de FormaçãoIniciação à robótica móvel
DEAR Robot
  • Bases de Programação

Associação Nacional de Professores de
Electrotecnia e Electrónica
2
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).

3
Aplicações
  • indústria informática (periféricos rato,
    teclado,...)
  • electrodomésticos (fornos, máq. lavar, vídeos,
    etc)
  • sistemas AVACs
  • telecomunicações
  • indústria automóvel

4
Constituição
  • Um microcontrolador dispõe normalmente dos
    seguintes elementos
  • processador ou CPU
  • memória de dados (RAM)
  • memória de programa (ROM/PROM/EPROM/EEPROM)
  • linhas de entrada/saída (E/S) programáveis

5
Constituição
  • módulos de controlo de periféricos (portos série,
    paralelo,USB,I2C,etc.)
  • gerador de impulsos de relógio
  • temporizadores
  • cão-de-guarda (watchdog)
  • conversores A/D e D/A
  • comparadores analógicos

6
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

7
Estrutura de um microprocessador
8
Estrutura de um microcontrolador
9
Arquitectura interna de um microprocessador
UCP
bus comum de endereços
Memória
Instruções dados
8
bus de dados e instruções
Arquitectura von Neumann ou Princeton
10
Arquitectura interna de um microcontrolador
bus de endereços de instruções
bus de endereços de dados
UCP
Memória de dados
Memória de Instruções
9
10
8
14
bus de instruções
bus de dados
Arquitectura Harvard
11
Arquitectura interna de um microcontrolador
  • RISC - Reduced Instruction Set Computer (35 no
    16F84)
  • versus
  • CISC - Complex Instruction Set Computer (150 no
    8086)

12
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

13
Arquitectura interna de um microcontrolador
  • Memória de Dados
  • SRAM (Static RAM)
  • EEPROM

14
Arquitectura interna de um microcontrolador
  • Programação
  • linguagem assembly
  • linguagens HLL (High Level Language)
  • Pascal, Basic, JAL, C
  • Compiladores vs. Interpretadores

15
Picaxe 28X
  • Características
  • 600 linhas código
  • 21 pinos E/S
  • 9-17 saídas
  • 0-12 entradas
  • 0-4 entradas A/D
  • 2 saídas PWM

16
Picaxe 28X
Entradas Analógicas ou Digitais
Pinos de Saída
Pinos de Entrada/Saída configuráveis
Pinos de Entrada/Saída configuráveis
17
Picaxe 28X
Entradas Analógicas A/D
Pinos de Saída PWM
18
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.

19
Lógica de Programação
  • O paradigma tradicional
  • Pressupõe um modelo do mundo

Interpretação dos sensores
Modelo do Mundo
Sensores
Execução
Planeamento
Actuadores
20
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.

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

Escapar
Bumpers
Detectar_Cor
Sensor Cor
S
SeguirPista
Sensor Pista
Motores
S
Sensor Procedimento Actuador
22
BASIC
Programa dados instruções
  • Elementos da Linguagem de Programação BASIC
  • Símbolos
  • Variáveis
  • Constantes
  • Instruções

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

24
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 1
  • pause 500 espera de 5 segundos
  • low 1 desliga a saída 1
  • PAUSE 500 espera de 5 segundos
  • goto Ciclo salto para o início

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

26
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

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

28
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

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

30
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ída
  • symbol CONTA B0 define o símbolo de uma
    variável
  • let CONTA 200 carrega a variável com o valor
    200
  • CICLO define endereço de programa
  • high LED_E liga a saída 7
  • pause CONTA espera 0,2 segundos (200
    milisegundos)
  • low LED_E desliga a saída 7
  • pause CONTA espera 0,2 segundos
  • goto CICLO salta para o início CICLO

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

32
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 PICAXEgtCheck 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.

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

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

35
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

36
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ável
  • b0 bit7 bit6 bit5 bit4 bit3 bit2 bit1
    bit0
  • b1 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.

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

38
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 pins
  • vai guardar em b1 o estado actual do porto de
    entrada.

39
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

40
Programming Editor
  • Instalação e password (picaxebegin)
  • Configuração (Menu View/Options)

Mode PICAXE-28X Options 4MHz Serial
Port Language
41
Programming Editor
  • Programação em BASIC
  • Programação por Fluxograma

42
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

43
Programming Editor-exemplo
main label_6 low 4 label_D if pin01 then
label_19 goto label_D label_19 high
4 label_20 if pin00 then label_6 if pin61
then label_4D if pin71 then label_44 goto
label_20 label_44 gosub blue goto
label_6 label_4D gosub red goto label_6
44
Programming Editor-exemplo
As coisas complicam-se
45
BASIC
  • Instruções BASIC essenciais
  • Controlo de pinos de Saída
  • high 1
  • low 2
  • pins00000110
  • high portc 1
  • Leitura de pinos de entrada
  • b0pins
  • if pin01

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

47
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) us
  • Ciclo Trabalho (dutycyle) x (1/4000000)
    (dutycycle)/4 us

48
BASIC
  • Exemplo Controlo de um motor
  • Programa
  • Inicio
  • high 7
  • low 6
  • pwmout 1,100,300
  • end

49
BASIC
  • Salto incondicional
  • goto label
  • Controlo de fluxo
  • If condição then label

50
BASIC
  • inicio
  • if pin6 0 then direita
  • goto esquerda
  • esquerda
  • low 7
  • low 6
  • high 5
  • low 4
  • pwmout 1,10,25
  • pwmout 2,10,25
  • goto inicio

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

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

52
BASIC
  • ?? pode ser qualquer uma das seguintes condições
  • igual a
  • ltgt não igual a (diferente)
  • ! não igual a (diferente)
  • gt maior que
  • gt maior que ou igual a
  • lt menor que
  • lt menor que ou igual a

53
BASIC
  • Seguimento de pista
  • Com 1 sensor
  • Com 2 sensores
  • Com 3 sensores
  • Com 3 sensores e flags

54
Esquema de ligações
55
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.

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

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

58
BASIC
  • Vantagens face ao spagheti dos gotos.
  • Programa
  • If pin01 then

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

60
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 fornext podem ser encadeados até 8
    níveis de profundidade.

61
BASIC
  • Exemplo
  • ciclo
  • for b0 1 to 20 define um ciclo de 20 vezes
  • high 1 liga a saída 1
  • pause 500 espera 0,5 segundos
  • low 1 desliga a saída 1
  • pause 500 espera 0,5 segundos
  • next b0 salta para o início, incrementando b0
    de 1,
  • até que b0 20
  • pause 2000 espera 2 segundos
  • goto ciclo salto para o início

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

63
BASIC
  • Exemplo sensor de cor
  • symbol leitura w0
  • inicio
  • readadc10 0,leitura
  • if leitura lt 200 then alarme
  • goto inicio
  • alarme
  • sound 0,(50,50)
  • sound 0,(100,50)
  • sound 0,(120,50)
  • pause 300
  • goto inicio

64
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).
Write a Comment
User Comments (0)
About PowerShow.com