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

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

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

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.

, , ,
Amanhã inicia-se mais um dia de aventuras. Nós do Colméia e alguns outros graduandos de Ciência da Computação da UDESC, enfrentaremos uma jornada de 12 horas de estrada rumo a V Conferência Latino-Americana de Software Livre. Esse ano a viagem será mais tranqüila - é o que se espera - pois iremos em um micro-ônibus com 21 lugares, ao invés de uma besta, como no ano passado. Esperamos que o novo motorista tenha tendências menos suicidas.
Parada na viagem em 2007

Parada para admirar o por do sol, 2007

Este ano vou participar novamente da Olimpíada de Robótica Livre. Dessa vez vou entrar na Olimpíada avançada onde teremos a oportunidade de brincar com o Arduíno! Ano passado eu e minha equipe montamos um elevador com 3 sensores e 2 motores controlados pela porta paralela do computador, utilizando o Kdevelop e shell script. Nada muito sofisticado, mas foi muito divertido transformar sucata - peças de impressoras, scanners, etc - em um brinquedinho.

Como a II Olimpíada de Robótica Livre vai acontecer durante todo o evento, acho que não vou conseguir ver todas as palestras que tenho vontade. Abaixo segue a lista das palestras que selecionei:

30/10/08

  • 13h-14h Desenvolvimento em Linux para dispositivos móveis com Moblin - Sulamita Garcia
  • 15h-19h Maemo, Desenvolvimento para essa plataforma - Osvaldo Santana
  • 18h-19h Do Consumo em sociedades pós-coloniais: Mobilização sobre consumo consciente e sustentabilidade Ao Projeto Robótica Livre: Uma alternativa para a forma - Danilo Rodrigues César

31/10/08

  • 09h-10h PunkRock, Anarquismo e SoftwareLivre: Faça você mesmo - Antonio Carlos C. Marques
  • 13h-17h Administración de contenido con Plone - Roberto Allende
  • 17h-21h Super Dojo Python - APyB - Fabricio de Sousa Nascimento
  • 19h-20h Debian Squeeze: Uma distro de outro mundo! - Felipe Augusto van de Wiel
  • 20h-21h Projeto Reciclagem de Computadores - Ana Lúcia Rodrigues Wiggers, Viviane Aparecida

01/11/08

  • 09h-10h Palestras relâmpago - ApyB
  • 10h-11h Computação sustentável. Computação para o seculo XXI. - John “Maddog” Hall
  • 12h-13h Vamos traduzir o Gnome? - Fábio “Elvis” Nogueira
  • 15h-16h Comunicação em rede sociais - Novas mídias, nova geração. - Gustavo Guanabara
  • 16h-17h Programación de Extensiones para Nautilus Usando Python - Germán Póo-Caamaño
  • 18h-19h Desenvolvendo o X11 - Tiago Vignatti
  • 19h-20h Robótica Educacional de Baixo Custo- Uma Realidade para as Escolas Brasileiras - Paulo Cesar Gonçalves

Ano passado dormimos a primeira noite em um posto de gasolina. Nada legal! Este ano vamos dormir no alojamento de uma igreja em Foz do iguaçu. Vamos pagar 15 reais a estadia, sem rango. Mas o lugar parece ser bem confortável.

Partindo de Foz do Iguaçu, 2007

Partindo de Foz do Iguaçu, 2007

Vou tentar escrever todos os dias falando um pouco sobre as palestras, sobre a olimpíada e sobre as nossas aventuras em Foz do Iguaçu e Cidad Del Leste!

See ya!

<ESC>ZZ

, , , , ,