Finalmente consegui um tempo para escrever! Os 5 dias que passei fora, participando da Latinoware 2008 e viajando foram muito interessantes. Fiquei quase que por tempo integral participando da Olimpíada de Robótica Livre, onde eu e o restante da equipe brincamos com o Arduíno e construímos o que foi chamado de TDPSM (Theremin Digital com Percussão Sintetizada Mecanicamente), uma mistura de Theremin com percussão feita com um HD velho.
O Theremin foi um dos primeiros instrumentos musicais eletrônicos e produz som sem ser tocado. Ele possui duas antenas que funcionam como sensores, fazendo com que o som gerado seja modificado de acordo com a posição em que as mãos do músico se encontram. Uma das antenas controla o volume e a outra o oscilador de rádio freqüência.
O Theremin digital baseia-se nessa idéia, porém, em vez de antenas ele utiliza um Resistor Variável Conforme Incidência De Luz (LDR), um tipo de resistor cuja resistência varia conforme a intensidade de radiação eletromagnética do espectro visível que incide sobre ele. Variando-se a resistência, ocorre a variação da tensão elétrica que é enviada para uma das portas analógicas do Arduíno. No Arduíno, após programado, realiza-se a conversão do valor obtido em um delay que será utilizado para a geração do sinal digital de saída para a geração do som. Este som se assemelha ao do Theremin, mas é digital. Em vez de um auto-falante analógico, utilizamos um piezo elétrico colado no fundo de copinhos de plástico.
A percussão sintetizada mecanicamente foi criada com um HD estragado, aproveitando o disco e a cabeça de leitura/gravação. A primeira idéia que nos ocorreu foi de aproveitar o movimento da cabeça para gerar batidas como qualquer outro instrumento de percussão. Porém, variando-se a freqüência de mudança da polaridade da cabeça, criou-se ressonância no disco gerando um som muito peculiar semelhante ao produzido por alguns sintetizadores, mas de forma mecânica. Para fazer a mudança de polaridade da cabeça do HD, usamos o Shield Motor Control, que consiste em um circuito de ponte H para o Arduíno para controlar dois motores. Também utilizamos um potenciômetro para controlar a freqüência da mudança de polaridade do braço do HD.
Nós não montamos um esquema elétrico do que fizemos, mas boa parte dos conhecimentos que utilizamos para construir o TDPSM foi extraído do livro Getting Started with Arduino, que possui uma versão online com 30 páginas livre para downloads. Nesse documento é possível encontrar os esquemas de ligação dos sensores LDR e do potenciômetro e programas de exemplo.
Código do Theremin:
int sensorPin = 0; // pino do sensor LDR int somPin = 7; // pino do piezo int val = 0; void setup() { pinMode(sensorPin, INPUT); pinMode(somPin, OUTPUT); } void loop() { digitalWrite(somPin, HIGH); val = analogRead(sensorPin); //recebe sinal do sensor for( int i=0; i<200; i++ ) { digitalWrite(somPin, HIGH); //envia 1 para o piezo delayMicroseconds(val); //o valor pego do LDR e utilizado para alterar a frequencia do sinal digitalWrite(somPin, LOW); //envia 0 para o piezo delayMicroseconds(val); //o valor pego do LDR e utilizado para alterar a frequencia do sinal } }
Código da Percussão:
int dirPin = 12; //pino de controle de direcao int enablePin = 8; //pino de enable int veloPin = 9; // pino de controle de velocidade int potenciometroPin = 0; //pino do potenciometro int var = 0; void setup() { pinMode (potenciometroPin, INPUT); pinMode(dirPin, OUTPUT); pinMode(veloPin, OUTPUT); pinMode(enablePin, OUTPUT); digitalWrite(dirPin, LOW); analogWrite(veloPin , 100); digitalWrite(enablePin, HIGH); } void loop() { int vardelay; var = analogRead(potenciometroPin); vardelay = var; digitalWrite(dirPin, LOW); //move para um lado delay(vardelay); digitalWrite(dirPin, HIGH); //move para outro delay(vardelay); }
Fácil, não? O Arduíno é uma plataforma de desenvolvimento Open-Source que inclui uma placa com entradas e saídas, Software de desenvolvimento e uma enorme comunidade crescente ao seu redor. O microcontrolador usado normalmente na plataforma é o ATMEGA8, para algumas de suas versões e ATMEGA128, para outras. O mais interessante de tudo, como pode-se ver, é que não é necessário o uso de instruções em Assembly ou em C para se programar o microcontrolador, sendo que as instruções são todas muito simples e com pouco estudo qualquer pessoa pode utilizar a plataforma.
Vídeo da Percussão Sintetizada Mecanicamente.





