O Arduino nada mais é que uma plataforma para desenvolvimento ágil com microcontroladores, baseado na família ATMega da Atmel. Com uma IDE simples de usar, um número grande de bibliotecas prontas e uma comunidade ativa e amigável, é sempre possível encontrar novos usos para a plaquinha — que é montada por inúmeros fabricantes ao redor do mundo, embora seja fácil montar uma sua.
Daniel Andrade resolveu montar um relógio binário, muito parecido com as versões comerciais existentes. Mostra todo o esquemático (que é realmente simples) e o código-fonte (tão simples quanto), além de ensinar como ler as horas nesse relógio não convencional (pelo menos para quem não trabalha com esses números, números binários são meio alienígenas).
Embora já um pouco antiga, esta página mostra um easter egg de um modelo de ScanJet, da HP. A linguagem de controle do ScanJet 4C (e provavelmente outros modelos) possui um comando não documentado, chamado PLAY TUNE. O comando varia a taxa de passos do motor, fazendo com que estes produzam sons audíveis.
O software para download no site permite que se teste a funcionalidade. Para os incrédulos, eis o vídeo:
O site do Rickard Gunee já é conhecido de muita gente. Ele ensina técnicas de geração de vídeo via software, utilizando microcontroladores e conversores Digital-Analógicos simples (usando apenas resistores). Um dos exemplos é um jogo “PONG”, feito apenas com um PIC 16F84 rodando a 12MHz.
Há o código fonte, layout e esquemáticos para montar o seu próprio video game.
Programar microcontroladores pode ser uma tarefa chata sem um debugger. Interfaces seriais são ótimas para isso, já que é possível enviar e receber informações textuais de um computador.
O maior problema (ou melhor, desconforto) surge quando se está prototipando alguma coisa na protoboard, e nunca se acha um conversor de nível de serial (como um MAX232) e os capacitores na sua caixa de componentes. Ou, pior ainda: ter que montar sempre o mesmo circuito para fazer debug em seu código é um tanto entediante, para não dizer que é perda de tempo.
Com uma área de 132×132 pixels e 4096 cores, baixo consumo de energia e preço convidativo (em torno de R$50 em assistência técnica de telefones), os displays de telefones celulares da Nokia são uma boa pedida para montar ricas interfaces com o usuário.
Thomas Pfeifer explica como ele ligou tais displays em microcontroladores da Atmel (um ATMega8). Inclusive como fez a divisão de tensão, já que o display trabalha a 3.3V e o AVR a 5V. Mostra alguns exemplos, inclusive com vídeos: um simples osciloscópio, uma imagem 3D (apenas wireframe) e um demo com degradês. Além, é claro, de várias imagens demonstrativas.
Tão (ou mais) interessante que os displays do Nokia 3310, que são monocromáticos e de menor resolução.
Com a grande disponibilidade de portas USB nos computadores pessoais de hoje em dia, é comum que o interesse para usá-las nos mais variados projetos exista. Infelizmente o protocolo é um pouco trabalhoso para implementar do zero e, mesmo que existam soluções prontas em silício, são geralmente de difícil obtenção (principalmente aqui no Brasil) e de difícil soldagem (a maioria requer soldagem em superfície).
Pensando nisso, uma empresa austríaca desenvolveu uma implementação do protocolo USB inteiramente em software, e a disponibilizou gratuitamente na Internet (embora exista opção para uso comercial). Os requisitos são até altos em se tratando de microcontroladores (2kB de flash, 128bytes de RAM e clock de no mínimo 12MHz), mas um preço absolutamente baixo para se pagar pelos benefícios.
Este artigo no Instructables mostra como montar um gravador de AVR do modo mais barato possível. Apesar de funcionar, aconselho fazer a montagem dele em uma protoboard e usá-lo para montar um USBasp. Afinal, hoje em dia é muito mais fácil encontrar um computador com porta USB que um com porta paralela.
Ambos gravadores são multi-plataforma (funcionam pelo menos em Linux e em Windows) e requerem um número mínimo de peças.
Embora a capacidade dos microcontroladores esteja crescendo assustadoramente, ainda há a necessidade de interfaceamento com dispositivos externos. Controladores de rede, memórias, decodificadores MP3, receptores GPS. Obviamente, escrever drivers para todos estes dispositivos é um tanto demorado e de certa forma inútil, pois isso já foi feito e disponibilizado de graça na Internet.
A Procyon “AVRLib” engloba códigos em várias categorias:
Geral (funções auxiliares diversas)
Periféricos Embutidos nos AVR (timers, UART, conversor analógico-digital, interfaces SPI e I²C, interrupções)