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.

Robótica Livre
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.

Arduíno
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.

Arduíno e Motor Control Shield
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.
Arduino, Latinoware, Robótica Livre, Software Livre