domingo, 20 de dezembro de 2015

BlocklyDuino - primeiras impressões

Depois de dois ou três circuitos para testar o BlockyDuino, deixo as minhas primeiras impressões:


  • O recurso ao botão upload torna-se inviável por duas razões: por um qualquer bug (que será certamente remediado em novas versões), existe um efeito de cache de programas anteriores, pelo que com frequência o programa é alterado e, no momento do upload, essa alteração não se verifica; a conversão para C está sempre sujeita a erros que não podem ser alterados na janela C do BlockyDuino. A solução passa por copiar o código C gerado para o interface do Arduino e fazer debuging e upload a partir daí.
  • Não nos sendo possível definir o tipo das variáveis que criamos, o código C gerado assume-as sempre como tipo int, o que gera erros caso, por exemplo se incremente uma variável por 0,5 (o programa assume a parte inteira de 0,5 e nao há incremento nenhum).

Estas observações não tiram o valor ao software. Continuo a achar que pode ser uma ótima ferramenta de ensino e que merece ser explorado.


BlocklyDuino

Quando iniciei o projeto de exploração de programação de arduino com linguagens acessíveis a crianças e jovens, lancei-me no Scratch por ser uma linguagem com a qual eu já tinha tido contacto e por ser o software lecionado atualmente nas aulas de TIC e que, por isso, os alunos já conheciam.

No entanto, à medida que os trabalhos evoluiam, tornou-se evidente que, se o Scratch é ótimo para uma primeira abordagem à programação de arduino (permitindo de forma lúdica a apropriação de conceitos como entrada/saída, digital/analógico, atuador/sensor), rapidamente começamos a sentir necessidade de um software menos limitado. São várias as razões:
  • Os projetos realizados em S4A estão sempre dependentes da ligação ao computador. Não é, por isso, possível criar projetos autónomos, ligados apenas a uma pilha, ou que necessitem de mobilidade, como um carrinho, por exemplo;
  • As entradas e saídas estão pré-definidas, limitando o tipo de projetos que podemos fazer;
  • A comunicação com o computador é lenta, o que complica a realização de projetos que envolvam componentes que necessitem de comunicar rapidamente com o computador, como me aconteceu quando quis usar o sensor de ultrassons SR04.
Para além destas limitações, tenho a intenção de começar a trabalhar com alunos do secundário e andava à procura de uma aplicação que fizesse a transição entre o Scratch e o C.

Foi assim que acabei por encontrar o BlocklyDuino, uma plataforma de programação por blocos, muito semelhante ao Scratch, que gera automaticamente o código em C.

O BloclyDuino corre diretamente num browser, pelo que pode correr a partir de um site ou do próprio computador.

Para correr o software a partir do site, basta aceder ao endereço:

Para correr o software a partir do próprio computador, há que fazer o download da pasta zip disponível em https://github.com/BlocklyDuino/BlocklyDuino. Depois, selecionar dessa pasta o ficheiro blockly/apps/blocklyduino/index.html e abri-lo num browser.

Estamos em condições agora de programar em BlocklyDuino. O inconveniente do software tal como está é que não faz o upload diretamente para o arduino. É necessário copiar o código C para o software original do Arduino e fazer o upload a partir daí.

Se quisermos fazer o upload a partir do BlocklyDuino, temos de ter instalado no computador  o interpretador Python (versão 2.7)  - o download do Python é feito a partir de
https://www.python.org/. Depois do Python instalado, há que correr o ficheiro que se encontra na raiz da pasta do BlocklyDuino: arduino_web_server. Ao clicar duas vezes no icon deste ficheiro, é criado um servidor web que pode ser acedido pelo endereço indicado: http://127.0.0.1:8080/ . Ao abrir esse endereço num browser, encontramos o ambiente BlocklyDuino a que já tínhamos acedido mas cujo botão "upload" já funciona.

Para testar o Bloclyduino, fiz um programa simples de um pisca com um LED ligado à saída digital 13. 

O programa em blocos:


O programa em C gerado pelo BloclyDuino:


De seguida, foi só clicar em "upload"...e pisca-pisca a funcionar!

Imagino que este software possa ser muito util para a introdução à linguagem em C, uma vez que os blocos têm já uma linguagem mais próxima do C que o Scratch. O BlocklyDuino não permite alterações diretamente no código C gerado, mas, caso se queira explorar esta possibilidade, basta copiar o código para o software Arduino e trabalhar a partir daí. 

Muito, muito entusiasmada com esta descoberta! Isto sim, é todo um outro mundo!

Teclado de bananas

Foi-me pedido que preparasse uma ação de formação em arduino programado em Scratch para professores do 1º ciclo. Esta proposta pôs-me a pensar em aplicações de arduino que alunos do 1º ciclo pudessem achar graça. Uma pesquisa rápida levou-me a um pequeno projeto (à venda por 25£), o banana piano, que achei que podia implementar facilmente com o material que tenho em casa (as bananas tive de ir ao supermercado de propósito para as comprar, confesso...)

A ideia é muito simples. Cada entrada analógica é ligada, através de um resistência de 2 Mohm (eu só tinha em casa resistências de 1 Mohm e por isso liguei duas em série) à tensão de 5V e, em simultâneo, à banana (furei simplesmente cada banana com o fio). Se não tocarmos na banana, esta encontra-se "no ar" e por isso não conduz corrente - a entrada analógica estará a 5V; no entanto, quando tocamos na banana e, com a outra mão, no fio ligada à terra (0V ou GND), passamos a conduzir corrente e o valor da entrada analógica desce, detetando o nosso toque.

Como só temos 6 entradas analógicas à disposição, ficamos espartilhados a 6 notas musicais. Mas, se aproveitarmos as 2 entradas digitais disponíveis no S4A, podemos ter uma escala completa, com 8 notas musicais. Faço essa proposta de trabalho na segunda parte da apresentação eletrónica que apresento de seguida.

Deixo a minha proposta de trabalho para o circuito eletrónico e o programa em Scratch:


...o circuito esquemático...


...e um vídeo com uma demonstração musical do teclado construído (bravíssimo!):