blocklyduino e mblock - um estudo comparativo
TRANSCRIPT
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.
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 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.
BlocklyDuino e mBlock – Teste
4.1Controlo de servomotores:
Fazer o motor rodar sucessivamente entre 0º, 90º e 180º.
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.
BlocklyDuino e mBlock – Teste
5A saída PWM:
Fazer um LED aumentar e diminuir a sua luminosidade gradualmente.
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.
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