Sunteți pe pagina 1din 35

Espaço

Programação + Eletrónica
Estudo Comparativo entre
Mblock e BloclyDuino
BlocklyDuino
O 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 Blocos
BlocklyDuino mBlock

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 C
BlocklyDuino mBlock

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

Controlo 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 Blocos
BlocklyDuino mBlock

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 C
BlocklyDuino mBlock
BlocklyDuino e
mBlock – Teste 2.2

Controlo 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 Blocos
BlocklyDuino mBlock
Teste 2.2 – A Conversão em C

mBlock
BlocklyDuino

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 3

Controlo 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 Blocos
BlocklyDuino mBlock
Teste 3 – A Conversão em C

mBlock
BlocklyDuino
BlocklyDuino e
mBlock – Teste 4.1
Controlo de
servomotores:

Fazer o motor rodar


sucessivamente entre 0º,
90º e 180º.
Teste 4.1 – A Programação por Blocos
BlocklyDuino mBlock
Teste 4.1 – A Conversão em C

mBlock
BlocklyDuino
BlocklyDuino e
mBlock – Teste 4.2
Controlo de
servomotores:

Fazer o motor rodar uma


única vez entre 0º, 90º e
180º.
Teste 4.2 – A Programação por Blocos
BlocklyDuino mBlock
Estranhamente, 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 C

mBlock
BlocklyDuino

Nã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.3
Controlo de
servomotores:

A rotação do servomotor
deve ser definida por
uma resistência variável.
Teste 4.3 – A Programação por Blocos
BlocklyDuino

Verificou-se que o programa não funciona.


Esta operação
Depois de analisar o código em C, conclui-se teria de ser feita
que as variáveis do código gerado são sempre com variáveis tipo
long, opção que
do tipo int (cujos valores mínimo e máximo não nos é
para um processador de 8 bits são -32 768 e disponibilizada.
+32 768). Como o resultado de 180*A0 Em C, bastaria
acrescentar um “l”
ultrapassa com facilidade esse valor, o valor à frente dos
obtido para o ângulo do servo é incoerente. números.

Por isso, nestes casos, há que usar a função


map, disponível nos blocos dos BlocklyDuino.
Teste 4.3 – A Programação por Blocos
mBlock

Verificou-se que o programa não funciona.


Depois de analisar o código em C, conclui-se Esta operação
que se verifica também com este software a teria de ser feita
com variáveis tipo
questão do tipo das variáveis. long, opção que
não nos é
disponibilizada.
O mBlok não disponibiliza a função map. Em C, bastaria
acrescentar um “l”
à frente dos
números.
Teste 4.3 – A Programação por Blocos
BlocklyDuino

mBlock
Não praticável
Teste 4.3 – A Conversão em C

mBlock
BlocklyDuino
Não praticável
BlocklyDuino e
mBlock – Teste 5
A saída PWM:

Fazer um LED aumentar


e diminuir a sua
luminosidade
gradualmente.
Teste 5 – A Programação por Blocos
BlocklyDuino mBlock
Teste 5 – A Conversão em C

mBlock
BlocklyDuino
BlocklyDuino e
mBlock – Teste 6
Usando 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 Blocos
BlocklyDuino mBlock
O 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 C

mBlock
BlocklyDuino
Não praticável
BlocklyDuino e mBlock – Algumas Conclusões #1
BlocklyDuino mBlock
Corre… Online ou através de Através de software
sofware instalado no PC instalado no PC
Facilidade em transferir
código C para o arduino
através do próprio
software
Aparência Sóbrio e minimalista Infantil
Aprendizagem para Fácil, ainda que seja A programação é igual ao
quem sabe Scratch necessária alguma Scratch
exploração do software
Código C gerado Simples e de fácil Complicado e não
compreensão adequado para uma
introdução ao C
Continua…
BlocklyDuino e mBlock – Algumas Conclusões#2
BlocklyDuino mBlock
Inicializaçã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
digitais
Leitura de entradas
analógicas

Continua…
BlocklyDuino e mBlock – Algumas Conclusões #3
BlocklyDuino mBlock
Controlo de
servomotores
Realização de operações Limitada pelo facto de não ser possível
aritméticas especificar o tamanho dos inteiros utilizados
Conversão de valores de
entradas analógicas para
uma dada escala Através do bloco map
Saída PWM

Recurso ao sensor SR04

S-ar putea să vă placă și