O MC14067bcp é um (de)multiplexador. Basicamente, um multiplexador é um circuito chaveador capaz de combinar vários canais de entrada em uma única via de saída. Um de-multiplexador tem a função contrária, através de um canal de entrada temos várias vias de saída.

Multiplexadores e de-multiplexadores são circuitos muito úteis quando estamos lidando com plataformas que possuem quantidades de pinos de entrada e saída limitados, como é o caso do Arduino, com apenas 6 pinos de entrada analógica. O 4067 possui 16 pinos que podem ser utilizados como entradas ou saídas, para realizar a transmissão ou recebimento de dados analógicos.

Seu funcionamento é simples. Através de 1 pino enviamos ou recebemos os dados, e energizando outros 4 pinos conseguimos indicar para qual canal queremos enviar os dados ou recebê-los.

Estive testando outro circuito lógico com as mesmas funções para o projeto Modular Synth, o 4051. Ao meu ver o 4067 tem algumas vantagens. Possui 16 pinos que podem ser utilizados como entradas ou saídas contra 8 do 4051, a organização dos pinos do 4067 é melhor, aparentemente ele é mais fácil de se encontrar em Joinville, Santa Catarina, por um preço menor comparado ao preço do 4051. Para ambos encontra-se alguma informação on-line, e para o 4067, o tutorial do ITP Physical Computing é uma boa documentação, esse post é baseado no que li por lá.


pinos do 4067

pinagem do 4067


Colocar esse circuito lógico para funcionar é simples. Para exemplificar seu uso, vou aproveitar o circuito que estou montando para o Modular Synth, um módulo com várias entradas analógicas. Nesse caso, o pino 1 (X), é o pino onde faremos a leitura dos dados. Os pinos de 2 à 9 (X0 até X7) e de 16 à 23 (X8 até X15) são os pinos de entrada, os pinos 12 (VSS, o terra) e 15 (INHIBIT) são ligados ao terra do circuito, e o pino 24 (VDD) deve ser ligado a uma fonte de alimentação de 5 volts. Para realizar o chaveamento entre os 16 canais de entrada, escolhendo um deles para fazer a leitura pelo pino 1 (X), usamos os pinos 10 (A), 11 (B), 14(C) e 13(D).

A tabela abaixo mostra a relação entre os pinos de controle A, B, C, D e o canal que será lido a partir do pino de entrada 1(X).

A B C D Canal Selecionado
0 0 0 0 0
1 0 0 0 1
0 1 0 0 2
1 1 0 0 3
0 0 1 0 4
1 0 1 0 5
0 1 1 0 6
1 1 1 0 7
0 0 0 1 8
1 0 0 1 9
0 1 0 1 10
1 1 0 1 11
0 0 1 1 12
1 0 1 1 13
0 1 1 1 14
1 1 1 1 15

Para entender essa tabela é necessário entender um pouco sobre números binários:

Dado um número N, binário, para expressá-lo em decimal, deve-se escrever cada número que o compõe (bit), multiplicado pela base do sistema (base = 2), elevado à posição que ocupa. Uma posição à esquerda da vírgula representa uma potência positiva e à direita, uma potência negativa. A soma de cada multiplicação de cada dígito binário pelo valor das potências resulta no número real representado. Exemplo:

1011(binário)

1 × 23 + 0 × 22 + 1 × 21 + 1 × 20 = 11

Portanto, 1011 é 11 em decimal

(via wikipedia)

Então, escolhendo quais dos pinos A, B, C e D são energizados, selecionamos o canal do qual vamos realizar a leitura a partir do pino 1 (X).

A ligação do 4067 ao Arduino é simples, nesse exemplo vou utilizar os pinos digitais 2, 3, 4 e 5 para selecionar os canais e o pino analógico 0 para a leitura. No diagrama abaixo não consta a ligação dos pinos 12 e 15 ao terra e o pino 24 na fonte de alimentação, não esqueça deles!


Ligação do 4067 com o Arduino

Ligação do 4067 com o Arduino


Nos pinos de X0 até X15 estão ligados os potenciômetros. O código abaixo demonstra de forma simples como realizar a leitura de um determinado pino:

void setup() {
        Serial.begin(9600);
        pinMode(2, OUTPUT);
        pinMode(3, OUTPUT);
        pinMode(4, OUTPUT);
        pinMode(5, OUTPUT);
        digitalWrite(2, HIGH);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
}
 
void loop() {
        int valor = analogRead(0);
        Serial.print("Valor lido no canal: ");
        Serial.println(valor, DEC);
        delay(1000);
}

Veja que na função setup o único pino setado como HIGH é o pino dois, assim obtemos o valor em binário 0001, ou seja, 1 em decinal, selecionando então o canal X1 para realizar a leitura. No tutorial do ITP Physical Computing é apresentada a função setChannel que nos facilita a leitura de dados de um determinado canal. Reproduzo essa função abaixo com algumas modificações:

int pino_entrada = 0;
void setup() {
        Serial.begin(9600);
        pinMode(2, OUTPUT);
        pinMode(3, OUTPUT);
        pinMode(4, OUTPUT);
        pinMode(5, OUTPUT);
        digitalWrite(2, LOW);
        digitalWrite(3, HIGH);
        digitalWrite(4, LOW);
        digitalWrite(5, LOW);
}
 
void loop() {
        int valor_entrada;
        for (int canal = 0; canal < 16; canal++) {
                setChannel(canal);
                valor_entrada = analogRead(pino_entrada);
                Serial.print("Leitura do Canal ");
                Serial.print(canal);
                Serial.print(": ");
                Serial.println(valor_entrada, DEC);
                delay(1000);
        }
}
 
void setChannel(int canal) {
        for (int posicao_bit = 0; posicao_bit < 4; posicao_bit++) {
                // Realiza o deslocamento à direita (&gt;&gt;) e
                //a função bitwise AND (&amp;)
                int valor_bit = (canal >> posicao_bit) & 1;
                // Como o primeiro pino de controle é o pino 2,
                // soma-se posicao_bit a ele
                int pino = 2 + posicao_bit;
                // Escreve no pino indicando se ele está ligado
                // ou desligado
                digitalWrite(pino, valor_bit);
        }
}

A função setChannel realiza um shift (deslocamento à direita) para cada canal e realiza a função bitwise AND (&) para verificar se o canal deve ser colocado como ligado ou desligado. Ok, mas como assim? Por exemplo, se o canal selecionado for o canal 5, sua representação em binário é 0101. Assim, ao realizar o deslocamento à direita (>>) na primeira iteração do loop, obteremos 0101, na segunda iteração, 0010, na terceira, 0001 e na quarta, 0000.
Dessa forma, ao realizarmos a função de bitwite AND (&) comparando o número 1 com o resultado obtido com o deslocamento à direita, receberemos como retorno 1 ou 0, indicando se o pino de controle deve estar ligado ou desligado, e o setamos usando a função digitalWrite logo em seguida.

Pronto, 16 entradas ou saídas analógicas usando 5 pinos do Arduino.

arduinomc14067

Yah! Tenho que agradecer ao Pedro Rito pelos jumpers! Foram um presente muito giro, isso tem facilitado a vida imensamente, thks!

, , , , , , , ,

É claro que o título é uma brincadeira, mas a relação existe através da cultura do “faça-você-mesmo”. O tecnobrega é um estilo musical que vive na marginalidade, e seus personagens se assumem assim, como marginais, falando abertamente sobre a pirataria e seu benefício para a divulgação do trabalho que realizam, declarando apoio ao mercado paralelo. Algo parecido acontece com o Funk carioca, como Vilson fez lembrar, galera que mesmo sem apoio nenhum e muitas vezes com equipamentos precários, faz a festa acontecer.

Não conheço bem essas cenas, mas me identifico com a maneira de fazer as coisas. Melhor do que ter alguém fazendo por você, é fazer você mesmo.

Trailer do documentário Brega S/A

“A pirataria divulga o meu produto, sem me cobrar nada”. É fato. Quantas pessoas eu conheço que fazem seus downloads, gostam do que ouvem, divulgam para seus amigos, e um dia todos vão ao concerto dessa banda, então a garotada ganha o salário do estágio no começo do mês e a primeira coisa que faz é ir na Rock Total ver qual é o álbum da sua banda favorita que vai comprar. Veja bem, como o amigo Oriel disse uma vez, “não posso ter todos os álbuns físicos das bandas que gosto, mas posso ter quase todos os álbuns no meu disco rígido”.

Aqui vai o link para o download do filme Brega S/A.

,

Desde início do ano, depois de conhecer o Arduino, venho montando pequenas experiências sonoras com arranjos de componentes eletrônicos. Fazia isso mais por um hobby, coisa de quem gosta de se perder nas madrugadas soldando e procurando bugs em placas.

Em uma dessas madrugadas, acabei encontrando a lista de projetos que usam o Arduino do Sebastian Tomczak, o little-scale e fiquei impressionado com a quantidade de coisa que esse cara faz com os mais diversos controladores/processadores. Ele tira música de toda tralha eletrônica que encontra pelo caminho. Esse foi meu primeiro contato com o Chiptune.

Chiptune

A Wikipedia diz:

Chiptune, ou chip music é um estilo musical escrito em formatos de som cujos efeitos sonoros são sintetizados em tempo real por um computador ou console de video game que gera sons característicos de jogos antigos.

Dentro da cena Chiptune mundial, do que conheço, gosto muito do trabalho do Joshua Davis, o Bit Shifter[1][2][3] que compõe suas performances em Game Boys. Ele é do 8bitpeoples, um coletivo de artistas interessados na estética audio-visual dos computadores e video games antigos. Dele eu recomendo em especial o álbum Life’s a Bit Shifter. Outro cara que compõe usando o Game Boy é Thomas Söderlund, o Covox[1][2], do qual conheço somente o álbum Handheld Electropop, que gosto muito. Nullsleep[1][2][3], de nome Jeremiah Johnson, é um dos fundadores do 8bitpeoples e fica na mesma linha sonora do Bit Shifter e Covox. Tem ainda o Anamanagushi[1][2], um quarteto que tem uns solinhos 8bits nas músicas muito legais, com influências de Indie Rock como Weezer e Hella.



Bit Shifter no Blip festival

O Brasil também tem uma cena Chiptune se formando. O pessoal do PixelMusic tem a intenção de formar uma NetLabel brasileira para distribuir o trabalho da galera em formato digital. Tem também o Chippanze, um selo e coletivo brasileiro de artistas daqui e de fora. Escutem o álbum Temple of Steel do Kurt Rizzo, o Subway Sonicbeat, o cara tem um vocal que lembra o Ian Curtis no Joy Division, não é para tanto que ele fez um cover da música Disorder. Lá no Chippanze da para pegar ainda álbuns do André Pagnossim, o Pulselooper e Eduardo Melo, o Droid-On, outros artistas brasileiros que fazem parte do coletivo. O que acho muito legal na cena é que o pessoal tem distribuindo seu material, em grande parte, sobre licenças coerentes com nosso tempo como o Creative Commons. Mas muito deles tem lançado seus trabalhos em Vinil e CD também. Outra coisa que chama muito minha atenção é o trabalho na forma do faça-você-mesmo desse pessoal.

Semana passada rolou em São Paulo o GameMusic, o primeiro festival de Chiptune do Brasil, dentro do GamePlay, um evento proposto pelo Itau Cultural para discutir a interatividade em jogos eletrônicos. Isso só mostra que existe mesmo uma cena se formando no pais. Espero poder ir em um próximo festival ou show dessa galera.

Nintendocore

Nintendocore é o encontro do Hardcore com o Chiptune. Na verdade o som tem uma tendência mais para o Metalcore, Trash e Grind, ou seria Digigrind?

Dentro dessa cena acho que a banda de maior expressão é o Horse the Band[1][2]. Os caras são uns engraçadões, deem uma olhada na página Hitlist do site deles onde falam bem e mal de outras bandas, pessoas e selos. O último álbum deles é o A Natural Death, quer dizer, que eu tive contato, ele tem tocado quase que diariamente e repetidamente aqui. Por favor, escutem o solinho 8bit que tem logo após o começo da música Murder, coisa fina!


Horse the Band
Horse the Band em show

Seguindo a mesma linha, mas com uma pegada mais Trash, tem a banda Sky Eats Airplane e Cutting Pink with Knives tocando um Digi-grindcore.

Misturar a energia do Punk/Hardcore com electro/techno não é novidade, bandas como o The Screamers (obrigado pela indicação Maia!) da década de 70, inicio de 80 e a polêmica Atari Teenage Riot[1][2] com suas letras anarquistas anti-nazi, já fizeram. Vale escutar o som dessas duas bandas também.

, , , ,

Aproveitei o domingo para descansar e fazer algo que não não fazia a muito tempo, estampar minhas roupas. Essa foi uma das belas lições que aprendi com a cultura “do it yourself” do punk/hardcore e sempre que posso gosto de praticar. Hoje estampei um casaco com o logo do Creative Commons:

Creative Commons TshirtCreative Commons Tshirtcreative commons

Outras estampas estão nos sets stencils e camisetas no meu Flickr.

Acho que roupas são uma das melhores formas de “propaganda”, então sempre estampo coisas sobre os projetos que apoio e as pessoas eventualmente perguntam o que significa e essa é a boa oportunidade de difundir um determinado assunto.

Se alguém se interessar, escrevi um tutorial, lá pelo final de 2006, explicando passo-a-passo como se faz. Vale apena experimentar, nem que seja em um pano velho :P

, ,