blocklyduino e mblock - um estudo comparativo

35
Programação Eletrónic a + Espaço Estudo Comparativo entre Mblock e BloclyDuino

Upload: ana-carneirinho

Post on 12-Jan-2017

1.129 views

Category:

Education


2 download

TRANSCRIPT

Programação

Eletrónica+Espaço

Estudo Comparativo entre

Mblock e BloclyDuino

BlocklyDuinoO Ambiente de Trabalho

mBlock (Edit Arduino Mode)O Ambiente de Trabalho

BlocklyDuino e mBlock – Teste 1

LED pisca-pisca

Teste 1 – A Programação por BlocosBlocklyDui

nomBlo

ck

No BlocklyDuino, o corpo do programa é repetido num loop contínuo (e por isso não é necessária a função que faz repetir as instruções). O mBlock, tal como o Scratch, para que se dê a repetição em contínuo, é necessário o bloco “forever” – ou “sempre”, no Scratch.

Teste 1 – A Conversão em CBlocklyDui

nomBlo

ck

O mBlock inclui livrarias que a generalidade das pessoas não conhecerá; cria ainda variáveis desnecessárias. Programa do Bloclyduino mais compreensível e limpo.

BlocklyDuino e mBlock – Teste

2.1Controlo do LED por botão de pressão:• Quando botão

pressionado, LED acende;

• Quando botão não é pressionado, LED mantém-se apagado.

Teste 2.1 – A Programação por BlocosBlocklyDui

nomBlo

ck

Mais uma vez, a principal diferença faz-se notar ao nível da necessidade do loop do programa principal no software mBlock, que não se verifica quando se programa em BloclyDuino.

Teste 2.1 – A Conversão em CBlocklyDui

nomBlo

ck

BlocklyDuino e mBlock – Teste

2.2Controlo do LED por botão de pressão:• O LED deve

acender e apagar sucessivamente sempre que o botão de pressão é acionado.

Teste 2.2 – A Programação por BlocosBlocklyDui

nomBlo

ck

Teste 2.2 – A Conversão em CBl

ockl

yDui

no mBl

ock

O facto de no Blocklyduino a inicialização de variáveis não poder ser feita fora do loop principal, obriga à utilização de um loop (While) que seria desnecessário caso a programação em C fosse feita de raíz.

BlocklyDuino e mBlock – Teste

3Controlo do LED por fotorresistência:• Para valores

baixos de luminosidade, o LED deve acender;

• Para valores elevados de luminosidade, o LED deve apagar.

Teste 3 – A Programação por BlocosBlocklyDui

nomBlo

ck

Teste 3 – A Conversão em CBl

ockl

yDui

no mBl

ock

BlocklyDuino e mBlock – Teste

4.1Controlo de servomotores:

Fazer o motor rodar sucessivamente entre 0º, 90º e 180º.

Teste 4.1 – A Programação por BlocosBlocklyDui

nomBlo

ck

Teste 4.1 – A Conversão em CBl

ockl

yDui

no mBl

ock

BlocklyDuino e mBlock – Teste

4.2Controlo de servomotores:

Fazer o motor rodar uma única vez entre 0º, 90º e 180º.

Teste 4.2 – A Programação por BlocosBlocklyDui

nomBlo

ckEstranhamente, este exercício mostrou-se praticamente impraticável em BlocklyDuino, uma vez que este software assume a inicialização das variáveis dentro do loop principal, pelo que, depois de incrementadas, o programa volta ao início e as variáveis tornam a adquirir de novo o valor inicial, repetindo as instruções. A questão resolver-se-ia com facilidade com um bloco “end” que terminasse o programa num determinado ponto (o equivalente à instrução em C “exit(0)”).

Teste 4.2 – A Conversão em CBl

ockl

yDui

no mBl

ockNão

praticável

A incapacidade do BlocklyDuino de lidar com este programa é uma deceção. A solução do mBlock, funcionando, não deixa também de ser estranha por fazer correr a função principal na função Setup e não na função Loop.

BlocklyDuino e mBlock – Teste

4.3Controlo de servomotores:

A rotação do servomotor deve ser definida por uma resistência variável.

Teste 4.3 – A Programação por BlocosBlocklyDui

no

Verificou-se que o programa não funciona. Depois de analisar o código em C, conclui-se que as variáveis do código gerado são sempre do tipo int (cujos valores mínimo e máximo para um processador de 8 bits são -32 768 e +32 768). Como o resultado de 180*A0 ultrapassa com facilidade esse valor, o valor obtido para o ângulo do servo é incoerente. Por isso, nestes casos, há que usar a função map, disponível nos blocos dos BlocklyDuino.

Esta operação teria de ser feita com variáveis tipo long, opção que não nos é disponibilizada. Em C, bastaria acrescentar um “l” à frente dos números.

Teste 4.3 – A Programação por Blocos

Verificou-se que o programa não funciona. Depois de analisar o código em C, conclui-se que se verifica também com este software a questão do tipo das variáveis.

O mBlok não disponibiliza a função map.

mBlock

Esta operação teria de ser feita com variáveis tipo long, opção que não nos é disponibilizada. Em C, bastaria acrescentar um “l” à frente dos números.

Teste 4.3 – A Programação por BlocosBlocklyDui

no

mBlock

Não praticável

Teste 4.3 – A Conversão em CBl

ockl

yDui

no mBl

ock

Não praticável

BlocklyDuino e mBlock – Teste

5A saída PWM:

Fazer um LED aumentar e diminuir a sua luminosidade gradualmente.

Teste 5 – A Programação por BlocosBlocklyDui

nomBlo

ck

Teste 5 – A Conversão em CBl

ockl

yDui

no mBl

ock

BlocklyDuino e mBlock – Teste

6Usando o sensor SR04:

Fazer ligar o LED verde quando a distância a um obstáculo for superior a um valor pré-determinado; caso essa distância seja inferior, deve ligar o LED vermelho.

Teste 6 – A Programação por BlocosBlocklyDui

nomBlo

ckO BlocklyDuino não tem um bloco que permita o uso do SR04. Existe um bloco preparado para equipamento da Grove, com uma só entrada / saída (serão curto-circuitadas?) mas cuja compilação em C usa uma livraria que o compilador do Arduino não reconhece. Provavelmente, terão de se adicionar livrarias relacionadas com o equipamento Grove.A programação direta do SR04 não é possível pelas limitações já referidas nas operações aritméticas.

Teste 6 – A Conversão em CBl

ockl

yDui

no mBl

ock

Não praticável

BlocklyDuino e mBlock – Algumas Conclusões #1

BlocklyDuino mBlockCorre… Online ou através de

sofware instalado no PCAtravés de software instalado no PC

Facilidade em transferir código C para o arduino através do próprio softwareAparência Sóbrio e minimalista InfantilAprendizagem para quem sabe Scratch

Fácil, ainda que seja necessária alguma exploração do software

A programação é igual ao Scratch

Código C gerado Simples e de fácil compreensão

Complicado e não adequado para uma introdução ao C

Continua…

BlocklyDuino e mBlock – Algumas Conclusões#2

BlocklyDuino mBlockInicialização das variáveis Sendo feita na função

Loop, adquirem o seu valor inicial cada vez que o programa é repetido – o que complica bastante a programação de situações em que se pretende uma repetição limitada de funções.

Leitura de entradas digitaisLeitura de entradas analógicas

Continua…

BlocklyDuino e mBlock – Algumas Conclusões #3

BlocklyDuino mBlockControlo de servomotoresRealização de operações aritméticasConversão de valores de entradas analógicas para uma dada escala Através do bloco map

Saída PWM

Recurso ao sensor SR04

Limitada pelo facto de não ser possível especificar o tamanho dos inteiros utilizados