O S4A (Scratch 4 Arduino) é uma ferramenta sensacional, mas é engessado em alguns aspectos. O principal dele é a disponibilidade de portas do Arduino. Normalmente é liberado apenas uma pequena seleção de portas.
Por padrão temos o seguinte disponível:
- 6 entradas analógicas (A0, A1, A2, A3, A4 e A5)
- 2 entradas digitais (2 e 3)
- 3 saídas analógicas (5, 6 e 9)
- 3 saídas digitais (10, 11 e 13)
- 2 saídas para motores (4 e 7)
- 2 saídas para servos (8 e 12)
Portanto para acender um display de 7 segmentos por exemplo, que é composto de 7 leds no dígito e mais um led no ponto decimal, precisamos de 8 saídas digitais.
Temos 3 saídas analógicas e 3 saídas digitais, o que ainda não é suficiente nem elegante (misturar digitais e analógicos), isso significa que não podemos utilizá-lo? Não necessariamente.
Os pinos no S4A são delegados diretamente no código fonte do software (que roda no computador) e do firmware (que é enviado ao Arduino), mas felizmente como o S4A e o próprio Scratch (Até o 1.4) foram desenvolvidos em Squeak SmallTalk é fácil modificarmos.
Ou seja, precisaremos modificar os pinos que desejarmos em dois lugares:
- No código fonte do próprio S4A instalado no computador.
- No firmware do S4A que vai para o Arduino.
1) No S4A alterar o código fonte é tão simples quanto usar código de trapaça em um jogo de videogame:
Aparecerá então o seguinte menu:
Nota-se logo que apareceram mais opções no menu que estavam escondidas. A que queremos é "Exit User Mode" (Sair do Modo Usuário).
Esse recurso é herdado da própria origem do S4A/Scratch 1.4 de Squeak SmallTalk. Quando saímos do modo usuário (que utilizamos normalmente), temos acesso direto ao código fonte.
Nossa tela vai ficar estranha, com blocos na parte inferior e lateral direita:
É normal. Clique com o botão esquerdo nessa lateral em branco e irá aparecer o seguinte menu:
Escolha "open..." e em seguida "browser".
Teremos agora a seguinte janela, que pode assustar na primeira vista:
Nessa janela está o código fonte do S4A. Não se preocupe em entender o que é cada componente, tudo que precisaremos editar está em um mesmo local.
Atente na caixa selecionada na imagem acima, "instance". Iremos editar primeiramente em "instance" e em seguida em "class".
Primeiro, siga o caminho da imagem abaixo conforme as opções em vermelho:
Em "digitalPinNumbers" estão os números dos pinos digitais a serem utilizados. No caso do nosso exemplo com o display de 7 segmentos, faça como na imagem e preencha com os pinos 4 a 13.
Agora clique em "class" e siga o caminho em vermelho na imagem abaixo:
Remova o trecho de código destacado em verde, que diz respeito a usos dos pinos que iremos descartar para libera-los como pinos digitais de saída.
Agora para gravar nossas modificações precisamos fazer o seguinte:
Clicando com o botão esquerdo segurando ALT aparecerá o seguinte menu:
Clique em "
accept" para verificar se há algum erro no código. Caso nenhuma mensagem apareça, está tudo de acordo.
Feche a janela verde do System Browser clicando no "
X" no canto superior esquerdo e então clique no espaço em branco na lateral direita ou inferior e escolha "
save".
Aparecerão duas mensagens indicando erro, porém não é necessário se preocupar. Clique em "
Ok" para ambos.
Voltaremos agora ao Modo Usuário:
Clicando em seguida em "Enter User Mode":
Tudo deverá estar como estava antes de começarmos a modificação. Exceto que ao clicar nas opções de pinos digitais...
Agora temos pinos o suficiente!
2) Falta agora modificar o firmware que será enviado ao Arduino e então se comunicará com o S4A. Baixe o firmware e abra-o com a IDE do Arduino. Nele procure por "configurePins".
Aqui não há muito segredo, note que em cinza estão comentados quais são os pinos. Em azul, logo à esquerda há uma letra que determina qual tipo de pino é cada pino:
- a - analógico
- d - digital
- c - motor
- s - servo
Vamos mudar todos pinos de 4 a 13 para digitais (d):
Neste exemplo não é necessário mais modificações, basta enviar o firmware modificado ao Arduino e já deverá ser possível utilizar até 10 pinos digitais.
Note que ainda assim não é possível modificar os pinos de qualquer maneira - há restrições quanto a pinos de entrada/saída e só é possível utilizar como pino analógico de saída aqueles com PWM (Pulse Width Modulation): 3, 5, 6, 9, 10 e 11.
Bons projetos!