Programação Eletrónica+
Espaço
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 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.
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 CBlocklyDuino
mBlock
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 CBlocklyDuino
mBlock
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 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.
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.
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 Blocos
BlocklyDuino
mBlock
Não praticável
Teste 4.3 – A Conversão em CBlocklyDuino
mBlock
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 CBlocklyDuino
mBlock
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 CBlocklyDuino
mBlock
Não praticável
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…
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
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

BlocklyDuino e mBlock - um estudo comparativo

  • 1.
  • 2.
  • 3.
    mBlock (Edit ArduinoMode) O Ambiente de Trabalho
  • 4.
    BlocklyDuino e mBlock –Teste 1 LED pisca-pisca
  • 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
  • 15.
    Teste 3 –A Conversão em CBlocklyDuino 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
  • 29.
    Teste 5 –A Conversão em CBlocklyDuino 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