Controlador de luz DMX com Arduíno

Estou começando a fazer um controlador de luzes com Arduíno. Primeiro construí um shield usando um circuito integrado MAX485 de acordo com este site. Mas estou usando outra biblioteca para acessar os canais. Usei a SimpleDMX e o seguinte código:

#include <DmxSimple.h>

bool aceso = true;

void setup() {
DmxSimple.usePin (1);
}

void loop() {
    DmxSimple.write (1, 20); // R
    DmxSimple.write (2, 0); // G
    DmxSimple.write (3, 0); // B

if(aceso){
    DmxSimple.write (4, 0); // R
    DmxSimple.write (5, 0); // G
    DmxSimple.write (6, 20); // B
        
    aceso = false;
  } else {
    DmxSimple.write (4, 0); // R
    DmxSimple.write (5, 0); // G
    DmxSimple.write (6, 0); // B
    
    aceso = true;
  }
delay(3000);

}

Isso fez o primeiro fixture ficar sempre em vermelho e o segundo piscar em azul. Descobri que estes fixtures não fazem um bom strobo – eles demoram demais para perder o brilho então a próxima piscada perde a força.

A música de Suzanne Vega faz perder o brilho dos olhos

No SESC Carmo aconteceu a exposição Maquinações. Eu nem estava sabendo na época mas algumas pessoas que conhecem meu trabalho identificaram alguma relação e me avisaram. Fui visitar e gostei bastante de ter sido identificado naquele monte de máquinas sem uso e de estética bagunçada com as entranhas eletrônicas e mecânicas expostas.

Um dos artistas com trabalho exposto lá é meu mestre amigo Guto Lacaz. Falei com ele sobre a exposição e ele me colocou em contato com o curador e um dos cabeças do movimento da Gambiologia, o Fred Paulino.

O Fred me avisou que fariam uma oficina/workshop no SESC 24 de Maio no final do mês de Janeiro e fui lá conhecer a pessoa e o trabalho dos gambiólogos. Tinha me preparado apenas para ir trocar uma ideia, mas como o SESC e os gambiarrentos (Fred + Juliana Porfírio) estavam disponibilizando o espaço e muitos materiais, decidi me juntar aos participantes da oficina e desenvolvi um projeto.

O que desenvolvi foi muito para testar uma tecnologia que há algum tempo eu havia ouvido falar mas nunca havia conseguido ver funcionando na prática, que é o audio de samples no arduíno.

O jeito mais fácil de entender como funciona um áudio digitalizado foi apresentado muito bem pelo Bitluni neste vídeo e nos subsequentes. O primeiro mostra apenas como funciona um conversor digital-analógico usando ‘filtros resistivos’ do tipo R/2R. Como neste vídeo ele já mete um arduíno para apresentar mais facilmente seu estudo na prática, o próprio Bitluni prossegue no raciocínio e leva a pensar em como uma onda sonora pode ser digitalizada e enfiada dentro da fraca memória do arduíno.

Eu gostaria muito de usar o método apresentado por Bitluni para meu projeto, mas por uma limitação de tempo e material, não consegui… Só o citei aqui para poder levar a um lugar onde a explicação do desmantelamento da onda para caber na memória fraca fosse bem dada. O jeito foi pegar alguma coisa que estivesse mais pronta (ainda) e meter dentro do arduíno. Aí, pesquisando, cheguei na biblioteca Talkie. Algumas coisas me chamaram a atenção neste biblioteca: o fato dela usar apenas um pino de saída para o áudio e o fato dela já ter um vocabulário pronto. Aliás, esta biblioteca é cheia de características interessantes. Os áudios ridiculamente diminuídos de sua resolução original tem uma voz que faz arrepiar de medo do futuro putrefato. Eram usados em projetos da Texas Instruments, Atari e outras empresas deste tamanho. Mas o que mais me prendeu ao uso desta biblioteca foi o fato de haver nos exemplos de uso dela um áudio de uma música que gosto muito e costumo usar para testar áudios quando instalo algum equipamento de som: a belíssima Tom´s Diner, da Suzanne Vega, inteira.

Pois bem, meu projeto era uma cabeça de boneca que fazia alguma coisa com os olhos enquanto “cantava” Tom´s Diner. Mas não deu certo… Esta biblioteca usa todo o processamento do arduíno para conseguir colocar o áudio no alto-falante. Assim, enquanto tocava a música, eu não conseguia fazer os LEDs dos olhos da cabeça fazerem nada… )-:

Tive que adaptar meu projeto e o tempo estava curto então usei outro dos exemplos da Talkie e apenas adaptei alguma função para fazer uma graça nos olhos. Precisava ser um áudio mais curto, então o exemplo de voltímetro foi ótimo: o arduíno era instruído a seguidamente ler a tensão do pino 5, transformar o número em caracteres, procurar o áudio de cada caractere e “dizê-lo” seguido da palavra “milivolts”. Como este áudio é curto, consigo liberar o processamento para depois disso os LEDs RGB instalados nos olhos da cabeça fazerem alguma graça. Fiz 3 funções de gracinhas para os olhos e elas se alternam conforme a cabeça termina de dizer sua análise.

Por enquanto tem um vídeo disto no meu instagram, mas farei um melhor para pendurar aqui.

Progressos dos testes com SVG

Este texto é uma continuação deste.

Criei um repositório no GitHub para manter as versões organizadas. Vou fazer aqui uma lista de backlog para eu não me perder no projeto. Na real já deturpei um pouco a primeira intenção. Mas o que importa é o desgoverno do avanço epistemológico. Affe…

Acabei criando também um kanban no Trello. Puxa vida, que rapaz mais organizado.

Mas o maior avanço deste tema aconteceu hoje durante uma conversa com meu primo Marcel. Marcel é professor de matemática na Universidade Federal do Pará. Perguntei pra ele sobre a existência de alguma solução para criar as curvas fechadas simples – que elas não fossem do tipo não-simples. Ele não sabia. Mas fomos conversando sobre o assunto e a conclusão que cheguei com a ajuda dele foi que melhor será não trabalhar com o desenho, mas sim com as formas. Fazer um amontoado de formas para montar as que eu quero. Um número de formas pré-definidas que fossem alteradas em sua escala, deformação horizontal e vertical, rotação. Depois seriam amontoadas e soldadas. Como na imagem destacada desta publicação.

Produtos

OK, tenho formação em design e preciso ganhar dinheiro. Não sou besta de achar que existe dinheiro fácil por aí, mas acho que um produto pode ser legal. Um que junte meus conhecimentos em escultura, design, usabilidade, eletrônica e figurino. Uma almofada com luz. ã?

Este desenho é baseado no uso do verniz pink com fio eletroluminescente aplicado (costurado) nas emendas. A peça é uma mistura de escultura com almofada.

Quero pensar em uma linha de almofadas tecnológicas. Com luz e com função (tipo uma com vibração, uma com aquecimento, uma com massageador).

Formas aleatórias

Ontem consegui fazer funcionar a biblioteca de JavaScript SVG.js. Aí consegui fazer um morph com um retângulo (que seria um botão) para um retangulão (que viraria uma cor de fundo de tela). Primeiro peguei o tamanho da tela do ‘cliente’, posicionei o botão no meio da tela e, quando ele era clicado, os 4 pontos que o formam viravam uma imagem final e um comando de morph era lançado.

Hoje pensei que poderia retomar uma ideia antiga: criar um gerador de formas aleatório. Baseado nas formas que costumo fazer nas minhas séries de desenho/pintura, um criador de curvas vetoriais fechadas simples que se alternassem em morph.

Na real, esta galeria mostra a investigação com formas que eu estava fazendo um ano atrás. Ela imediatamente me dá a ideia de outra possibilidade de exploração de um gerador de imagens aleatórias – que seria esta composição com as formas criadas de modo a gerar uma imagem harmoniosa ou não. Enfim, vou organizar um método para explorar isso.

Também devo dizer que esta volta ao digital se deve a minha condição de estar desempregado e sem trabalho e sem meu local de desenvolvimento de projetos artísticos – a salinha. Ela está em reforma, estão trocando o telhado! Que beleza! E aqui vai o método de criação das formas:

1 – Uma imagem em SVG pode ser do tipo polígono, retângulo, círculo, etc, etc. Estas são figuras geométricas primitivas. As que eu pretendo trabalhar são do tipo path – que não tem um nome e são formadas ora por retas, ora por curvas entre um ponto e outro.

2 – Uma curva fechada simples tem no mínimo 3 pontos. Acho importante estabelecer um número de pontos inicial para trabalhar por causa do efeito morph que pretendo aplicar à forma resultante. Apesar de que, ao que me parece, o morph funcionou bem para formas com números diferentes de pontos.

3 – Um path em SVG pode ser formado pelos seguintes comandos – e cada um exige um formato de números posteriores que determinarão o que acontecerá a partir deste comando. Aqui está uma boa referência que ensina quais são estes ‘comandos’ e que ‘argumentos’ eles solicitam.

 M = moveto
L = lineto
H = horizontal lineto
V = vertical lineto
C = curveto
S = smooth curveto
Q = quadratic Bézier curve
T = smooth quadratic Bézier curveto
A = elliptical Arc
Z = closepath

Quando usado o comando com letra minúscula, o deslocamento é relativo. Com letra maiúscula é absoluto. Provavelmente vou usar a linha para o próximo ponto ser feita com deslocamento para um ponto cartesiano absoluto para manter os pontos dentro de um conjunto.

Os limites dos números que serão usados como argumentos de cada comando para fazer a forma serão estudados conforme o desenvolvimento do projeto – assim como de que maneira farei uma forma aleatória ser uma curva fechada simples (que não tenha cruzamento na linha que a forma).


Vou iniciar o projeto usando apenas as linhas retas. Portanto usando apenas os comandos das letras M, L, H, V e Z. Vamos lá.