Fevereiro 2014 - Arduino e Cia
NewTone - Alternativa à biblioteca tone do Arduino
Um leitor do site me escreveu , dizendo que ao tentar utilizar a biblioteca IRremote junto com o comando Tone do Arduino, o programa não compilava, apresentando a seguinte mensagem :
.....\arduino\cores\arduino/Tone.cpp:535: multiple definition of `__vector_7'
Já havia acontecido comigo em algumas oportunidades, especialmente ao tentar utilizar o comando Tone junto com a biblioteca NewPing, usada para controlar múltiplos sensores ultrasônicos HC-SR04 (usei a NewPing no post Controle de estacionamento com o sensor HC-SR04).
A biblioteca tone do Arduino realmente apresenta alguns problemas de compatibilidade com outras biblioteca quando estas utilizam a mesma interrupção/timer.
Felizmente encontrei uma biblioteca bem simples, a NewTone, que pelo menos nos meus testes, não apresentou nenhum conflito. Inclusive utilizei os programas que eu já havia criado no post Sons no Arduino para me certificar que não seriam necessárias grandes alterações no código.
E realmente a utilização é simples. As únicas alterações no programa são o carregamento da biblioteca NewTone no início, e a substituição dos comandos Tone por NewTone, e noTone por noNewTone. E só.
// Programa : Som no Arduino - Sirene - Teste biblioteca NewTone
Ao montar o circuito, ligue o buzzer na porta 10 do Arduino, e não se esqueça de ligar em série um resistor de pelo menos 100 ohms :
Se você está enfrentando problemas de conflito com a biblioteca tone padrão do Arduino, esta pode ser a solução.
Postado por Arduino e Cia às 16:36 11 comentários:
Marcadores: arduino, buzzer, som
Video - Sensor de reconhecimento de cor TCS230 / TCS3200
Vídeo demonstrando o funcionamento do circuito e programa apresentados no post Sensor de reconhecimento de cor TCS230 / TCS3200
Postado por Arduino e Cia às 14:22 2 comentários:
Marcadores: cor, tcs230, tcs3200, videos
Sensor de reconhecimento de cor TCS230 / TCS3200
O artigo de hoje fala sobre como utilizar o Arduino para montar um sistema de reconhecimento de cores usando o módulo TCS230 / TCS3200.
Esse módulo usa o sensor TCS230 (datasheet), que é composto por 64 fotodiodos. Desses 64 fotodiodos, 16 tem filtros para a cor vermelha, 16 para a cor verde, 16 para a cor azul e 16 não tem filtro algum.
Distribuídos uniformemente sobre o sensor, esses sensores captam a luminosidade, filtrando as cores, e geram na saída um sinal de onda quadrada com as informações sobre a intensidade das cores vermelho (R = Red), verde (G = Green) e Azul (B = Blue).
Como no módulo mostrado acima, o sensor TCS230 geralmente vem montado em conjunto com quatro leds brancos para iluminação, e oito pinos para conexão.
O módulo aceita alimentação de 3 à 5 volts e são utilizados 5 pinos para conexão ao Arduino : os pinos de controle S0, S1, S2, S3, e o pino OUT, que é o responsável pelo envio das informações.
O pino OE (Output Enable, ou saída habilitada/ativada) deve ser ligado ao GND, já que o módulo vai enviar informações continuamente ao Arduino.
No circuito adicionei 3 leds nas cores correspondentes, para que acendam quando determinada cor for reconhecida pelo sensor. Apesar de trabalhar nesse experimento apenas com as 3 cores primárias, nada impede que outras combinações sejam usadas no programa, de acordo com os níveis do sinal RGB.
No programa, os pinos S0 e S1 são colocados em nível alto e então são alternados os estados dos pinos S2 e S3, que determinam qual fotodiodo será ativado. Veja na tabela abaixo as combinações que determinam o tipo de frequência de saída e também o padrão de ativação dos fotodiodos :
// Programa : Detector de cores usando modulo TCS230
// Alteracoes e comentarios : Arduino e Cia
// Baseado no programa original de Martin Mason
//Pinos de conexao do modulo TCS230
//Variaveis que armazenam o valor das cores
color(); //Chama a rotina que le as cores
//Mostra no serial monitor os valores detectados
digitalWrite(pinoledverm, HIGH); //Acende o led vermelho
digitalWrite(pinoledverd, LOW);
digitalWrite(pinoledazul, HIGH); //Acende o led azul
digitalWrite(pinoledverd, HIGH); //Acende o led verde
//Aguarda 2 segundos, apaga os leds e reinicia o processo
Carregue o programa e aproxime objetos de diferentes cores ao sensor. O led correspondente irá acender, e também é gerada uma saída como essa no serial monitor, onde você pode ver exatamente os níveis de sinal das cores detectadas :