sábado, 19 de setembro de 2015

Dado eletrônico usando o Attiny

Eu sei, a internet está cheia de dados eletrônicos por ai, mas por que eu quis reinventar a roda ? Muito simples, eu queria um projeto que fosse o mais simples e barato possível e ainda ser o mais "divertido". 

Divertido pelo fato de que ele não simplesmente joga aleatoriamente um resultado nos leds, mas você pode rodar o dado pelo tempo que quiser, e você ainda vê isso acontecer. É mais ou menos como jogar naquelas maquinas de cassino, você aperta e segura o botão e ele vai mostrando rapidamente números aleatórios nos leds (numa frequência de 0,1 segundo), sendo impossível você "escolher" um numero, ao soltar o numero para de rodar e "trava" por 5 segundos. Ele trava justamente para que se caso o resultado não tenha agradado o jogador, não seja possível ele rodar novamente "acidentalmente", tornando o jogo mais justo. Se você acha pouco ou muito esse tempo, basta alterar a constante "tempo" no código fonte, antes de compilar.

Esse projeto basicamente usa um Attiny85 (porém pode usar até um Attiny25, mas no Brasil a diferença de preço é quase nula, não compensa) e um CI 74HC595, já que o attiny tem somente 6 portas disponíveis e para esse projeto precisaremos de 8 (7 para os leds e 1 para o botão), abaixo eu mostro a minha referência para ligar o CI 74HC595 no attiny:
E nessa próxima imagem, como deve ser ligado os leds nas suas respectivas portas:



Eu ainda não passei para uma placa definitiva, (vamos ver quando terei saco pra isso), mas de maneira geral funciona bem, e ainda está implementado para funcionar com uma bateria botão de 3V (CR2032), sendo assim nada de resistores para os leds, já que todos os componentes funcionam bem com 3V. E nada de chave liga-desliga também, pois no código está implementado para que o Attiny desligue toda vez que os leds apagam, eu medi a corrente com um multímetro e quando os leds estão desligados a corrente era ZERO (sim eu fiquei impressionado com esse modo de economia do Attiny, ta de parabéns Atmel !). Aparentemente o 74HC595 também não consome energia quando todas as saídas estão em low. Bom chega de falar, veja como ficou:

Exemplo como ficou (ainda na protoboard)

Como eu disse, esse projeto não tem a necessidade de nenhum resistor nem capacitor (se achar necessário fique a vontade de por), somente a ligação direta mesmo. Se você viu um lm78l05 perdido ali na protoboard, é porque primeiramente eu fiz ele funcionar numa bateia de 9V, depois mudei de idéia, mas deixei ele espetado lá numa trilha nula, pois eles realmente são fáceis de perder. Caso tenha se interessado, aqui está o código para ser compilado via IDE do Arduíno (Você achará dezenas de tutoriais por ai de como gravar o Attiny usando arduino). E para não ter erro, aqui está a biblioteca do Attiny85 que eu utilizei, que aliás para esse projeto eu setei o Attiny para rodar a 1Mhz (oscilador interno) afim de economizar energia (lembre-se de usar a opção "gravar bootloader" para fazer isso). Qualquer dúvida fique a vontade de coloca-la nos comentários deste post.