O documento compara as plataformas BlocklyDuino e mBlock para programação de Arduinos através de blocos. BlocklyDuino gera código C mais simples e direto, enquanto mBlock gera código mais complexo com variáveis desnecessárias. BlocklyDuino tem limitações na inicialização de variáveis e operações aritméticas que dificultam alguns testes, ao contrário do mBlock. No geral, BlocklyDuino parece ser melhor para introdução à programação e ao C.
5. 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.
6. 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.
7. 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.
8. 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.
9. Teste 2.1 – A Conversão em C
BlocklyDuino mBlock
10. 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.
11. Teste 2.2 – A Programação por Blocos
BlocklyDuino mBlock
12. Teste 2.2 – A Conversão em CBlocklyDuino
mBlock
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.
13. 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.
14. Teste 3 – A Programação por Blocos
BlocklyDuino mBlock
16. BlocklyDuino e
mBlock – Teste 4.1
Controlo de
servomotores:
Fazer o motor rodar
sucessivamente entre 0º,
90º e 180º.
17. Teste 4.1 – A Programação por Blocos
BlocklyDuino mBlock
18. Teste 4.1 – A Conversão em CBlocklyDuino
mBlock
19. BlocklyDuino e
mBlock – Teste 4.2
Controlo de
servomotores:
Fazer o motor rodar uma
única vez entre 0º, 90º e
180º.
20. 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)”).
21. Teste 4.2 – A Conversão em CBlocklyDuino
mBlock
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.
22. BlocklyDuino e
mBlock – Teste 4.3
Controlo de
servomotores:
A rotação do servomotor
deve ser definida por
uma resistência variável.
23. Teste 4.3 – A Programação por Blocos
BlocklyDuino
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.
24. 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.
25. Teste 4.3 – A Programação por Blocos
BlocklyDuino
mBlock
Não praticável
26. Teste 4.3 – A Conversão em CBlocklyDuino
mBlock
Não praticável
27. BlocklyDuino e
mBlock – Teste 5
A saída PWM:
Fazer um LED aumentar
e diminuir a sua
luminosidade
gradualmente.
28. Teste 5 – A Programação por Blocos
BlocklyDuino mBlock
30. 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.
31. 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.
32. Teste 6 – A Conversão em CBlocklyDuino
mBlock
Não praticável
33. BlocklyDuino e mBlock – Algumas Conclusões #1
BlocklyDuino mBlock
Corre… Online ou através de
sofware instalado no PC
Através de software
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
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…
34. 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…
35. BlocklyDuino e mBlock – Algumas Conclusões #3
BlocklyDuino mBlock
Controlo de
servomotores
Realização de operações
aritméticas
Conversã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