Postagens

Mostrando postagens de julho, 2012

Arduino & Educação - O início

Cumprindo quarentena depois de ter vendido minha empresa a uma multinacional, resolvi fazer uma experiência e me iniciar como professor de ensino superior. Já tinha muita experiência como instrutor, e mesmo como professor em cursos de extensão na Universidade Federal de Viçosa. Também trabalhei como técnico pesquisador na Universidade, num órgão onde havia intensa atividade de extensão rural, e onde dei alguns cursos. Em julho de 2011 assumi a disciplina Instrumentação Industrial na FATESF, uma faculdade particular de engenharia em Jacareí. O curso forma Engenheiros de Controle e Automação. De cara vi que precisava criar práticas específicas para a turma, dado que não havia um laboratório específico para a disciplina. Pesquisa daqui, dali, cheguei no Arduino. Bolei um kit bem versátil, que possibilitasse o desenvolvimento de diferentes práticas de instrumentação e controle, e que coubesse num orçamento que fosse aceitável para a escola. Montei um protótipo e consegui que a escola

Comandando displays de LEDs com 74HC595 - parte II

Imagem
Agora, vamos ver como foi feito o software para "domar" os displays. Para isso, criei uma library do Arduino e disponibilizei, free as usual, no Google Code , é só clicar. É uma biblioteca baseada numa outra que fiz para LEDs RGB, que também está no GC e pode ser visualizada aqui . Para saber como criar uma lib, em português, clique cá . Já no idioma de sir Mick Jagger, clique cá . Não se esqueça de renomear os arquivos da lib, retirando o número da versão do nome. Ou então baixe o arquivo .zip da última versão. Aqui vai a interface da lib, devidamente comentada: class LED8SegDisplay595 { public: // Constructor //   int _displayCount: number of 8 segment displays to be managed //   int _clockPin: number of Arduino port that´s connected the clock pin of the first 595 CI (CI pin 12) //   int _latchPin: number of Arduino port that´s connected the latch pin of the first 595 CI (CI pin 11) //   int _dataPin: number of Arduino port that´s connected the data pin of th

Comandando displays de LEDs com 74HC595 - parte I

Imagem
A partir de uma solicitação de um frequentador do Lab de Garagem, resolvi criar um exemplo de como usar o 74HC595 para controlar, com apenas 3 portas, "infinitos" displays LED de oito segmentos. Então, hoje pela manhã no Arduino no Parque fiz o circuito e o software que descrevo a seguir. O display é muito semelhante a esse aí do lado. Ele é é meio grandão, então tive que usar duas protoboards emendadas para conectá-lo. Usei dois displays porque só  tinha 2, mas podem ser usados até 10, ou mais se a biblioteca for alterada. O código dele é MLS-12101AHR1. Para ligá-lo, achei um esquema na net. que segue abaixo. Os diferentes segmentos são "numerados" de A a G. o ponto decimal, dot point, é o DP. Vc deve ficar atento à pinagem do seu display, que varia de modelo a modelo. Outra coisa que vc deve observar é se o seu display é anodo (-) comum ou catodo (+) comum. O meu exemplo é para anodo comum. Se for catodo comum, este deve ser ligado no (+) e não no terra co

O milagre da multiplicação das portas analógicas

Imagem
No projeto da mesa da Mariana havia a necessidade de colocarmos sensores que permitissem que o usuário (?!?) da mesa conseguisse intervir na música e nos efeitos visuais. Decidimos usar sensores de luminosidade (LDR-Light Dependent Resistor). São sensores baratos e eficientes, que captam a movimentação das mãos dos usuários sobre eles. Como o nome diz, eles são resistores cuja resistência à passagem da corrente varia em função da quantidade de luz que atinge a sua superfície. É encontrado em qualquer boa casa de componentes eletrônicos. Esse é o LDR. Instalamos seis desses sensores na mesa. Como o nosso pobre Arduino Uno não tem portas disponíveis, resolvi multiplexar também as portas analógicas, de maneira a liberar algumas delas para uso em outros circuitos. Para isso, usei o CI CD4051, que é também fácil de encontrar e muito barato. Abaixo o esquema do bicho: Os pinos y0 a y7 podem ser conectados a entradas (ou saídas, ele pode também ser usado para demux, mas não é

Genius comentado

Imagem
Tempos atrás eu fiz um Genius (game dos anos 80, vc pode conferir o bicho funcionando aqui embaixo): A ideia é repetir uma sequência de sons e cores criadas aleatoriamente pelo jogo. Como ele tem muitas coisas interessantes em termos de software, vou fazer um post mais detalhado aqui Esse é o circuito montado. Usei um tweeter velho desses de carro para fazer o som, ficou legal, bem alto. Um LED de cada cor, um botão correspondente a cada cor e som. Aqui mais de perto: E o esquema no Fritzing: Fazer games tem os seus desafios: tem que levar em conta a ergonomia, quer dizer, montar o circuito de maneira que o jogador consiga ter acesso aos comandos. Depois, o programa tem que ser rápido e consistente, de maneira a fazer o jogador ter uma experiência adequada. Acho que ficou legal. Vc pode ver no vídeo o "meu" Genius funcionando: Abaixo, como prometido, o código comentado: // biblioteca que define as frequências das notas musicais #i

Controlando “infinitos” LEDs com Arduino III

Imagem
Abaixo, a imagem das protoboards (foi necessário usar 2) com os CI conectados aos LEDs. Estou elaborando o projeto de uma placa para substituir as protoboards. Os fios dos LEDs foram escolhidos conforme as cores destes. Existem também alguns outros fios de outros sensores que eu usei, falarei sobre eles em um outro post. Uma outra coisa interessante a respeito desse CI é que ele pode operar muito rápido, até 100 Mhz. Isso é muito mais rápido do que o Arduino pode fazer, o que significa que, usando PWM, a gente poderia até controlar a intensidade de brilho dos LEDs. A lib que eu vou descrever abaixo não tem essa feature, mas é fácil de fazer. Numa versão 2.0 eu pretendo implementar isso. Se alguém quiser contribuir, é só me avisar e eu compartilho o projeto lá no Google Code. O Software Para gerenciar os LEDs, criei uma lib do Arduino.Para saber como criar uma, clique aqui  para maiores detalhes em português ou aqui para texto em inglês do site do Arduino. O projeto está h

Arduino no TED

Apresentação de Massimo Banzi, um dos criadores do Arduino, sobre o projeto, no TED:  http://www.ted.com/talks/lang/pt-br/massimo_banzi_how_arduino_is_open_sourcing_imagination.html

Controlando “infinitos” LEDs com Arduino II

Imagem
A ideia deste CI é a gente mandar os dados para ele em uma forma chamada serial (um bit por vez) e ele converter para paralelo, ou seja, eu "escrevo" nele o estado de cada cor dos LED um a um e quando eu disser que acabei de mandar ele envia todos os estados de uma só vez, um para cada pino de saída (ele tem oito, então com um chip dá para controlar dois LEDs RGB mais as cores vermelha e verde do terceiro LED. O azul fica com o pino Q0 do próximo chip. Abaixo, o esquema de ligação do 74HC595 (595 para os íntimos, que já já seremos): Os pinos do chip, como é padrão, são numerados da forma descrita, a partir da esquerda do chanfro descendo e subindo do outro lado. Os pinos 1 a 7 são os pinos de dados Q1 a Q7. O pino Q0 é o 15. Porque será que os pinos de dados não são os de 1 a 8? Vai saber... O pino 16 é o Vcc. Como vamos alimentar os LEDs com 3,3V, ele deve ser conectado ao 3V3 do Arduino através do barramento da protoboard. O pino 10 deve também ser ao Vcc  e o 13

Controlando “infinitos” LEDs com Arduino I

Imagem
Como parte de um projeto de automação de uma mesa concebida pela Mariana Lourenço, aluna de design da UNESP-Bauru, foi necessário ligar 24 LEDs RGB num Arduino Duemillanove. Para isso, precisaria de 72 portas, já que cada LED tem quatro pinos, um para cada cor e o comum, que ainda por cima pode ser positivo (catodo) ou negativo (anodo), dependendo do fabricante. Como esse Arduino tem apenas 14 portas digitais (19, se contarmos as analógicas, que podem ser usadas como digitais) e eu tinha ainda que ligar um shield MP3, seis sensores de luminosidade (LDR) e três sonares, nem se eu usasse um Arduino Mega seria possível ligar tudo nele. Ou seja, teria que usar multiplexação. No excelente livro Arduino Básico, capítulo 6, Contadores Binários, tem uma implementação de multiplexação para controlar LEDs usando o 74HC595, um CI barato e fácil de encontrar. A partir dos exemplos do livro, que usam um e dois desse CI para controlar 8 e 16 LEDs monocromáticos, eu construí uma lib do Arduino

Alguns posts interessantes...

Abaixo, alguns links para posts de Arduino do meu outro blog: Controle remoto para PC Genius (o jogo) Toscuino (o primeiro robô a gente não esquece...)