Escolar Documentos
Profissional Documentos
Cultura Documentos
4 Montagens Prticas
Cdigo fonte
}
void loop(){
int i; //Define a varivel i
{
lcd.setCursor(0,0); //(Coluna,Linha)
lcd.print("hello WORD");//Escreve hello WORD
lcd.setCursor(0,1);
print("ou ALO MUNDO");
delay(1500); // Espera
lcd.clear();//Limpa o display do LCD
lcd.print("UNIVILLE");
delay(1500);
lcd.clear();
lcd.print("AUTI");
lcd.setCursor(0,1);
lcd.print("ENGENHARIA");
delay(1500);
lcd.clear();
lcd.print("EXEMPLO");
delay(1500);
lcd.clear();
}
for(i=0; i<16; i++)//(Faz a escrita iniciar na Coluna 0 ,depois na
coluna 1, depois na 2 at a 16 criando o efeito de rolagem da
mensagem)
{
lcd.setCursor(i,1);
lcd.print("Rolagem Texto ");
delay(750);
lcd.setCursor(i,1);
lcd.print(" ");
}
}
Sugesto de montagem
Conecte um potencimetro na porta 0 e um LED na porta 13, com
um resistor de 330 Ohms, como mostra as Figuras 6 e 7.
Cdigo-fonte
void setup() {
pinMode(ledPin, OUTPUT); //Inicializa a vaivel ledPin
como uma sada digital.
}
void loop() {
val = analogRead(potPin); //Carrega em val o valor da
atual da entrada analgica
digitalWrite(ledPin, HIGH);
delay(val);
digitalWrite(ledPin, LOW);
delay(val);
}
void setup() {
Serial.begin(9600); //Inicializa a comunicao serial com o PC
lcd.begin(16, 2); //Define o numero de linhas e colunas do LCD
pinMode(ledPin, OUTPUT);
}
void loop() {
val = analogRead(potPin); //Carrega na varivel val o valor de
//entrada analgica
resistencia = val*9.775; //Carrega na varivel resistncia o clculo
//do valor da resistencia
digitalWrite(ledPin, HIGH); //Liga o Led
delay(val);
digitalWrite(ledPin, LOW); //Desliga o Led
delay(val);
Serial.println(val); //Envia o valor da varivel val pela porta serial
Serial.println(resistencia); //Envia o valor da varivel resistncia
//pela porta serial
}
Lendo tempertaturas com LM35 no Arduino
int val;
void setup() {
meuservo.attach(10);
}
void loop() {
val = analogRead(potpin);
val = map(val, 0, 1023, 0, 180);
meuservo.write(val);
delay(500);
}
#include <Servo.h>
Servo meuservo;
int potpin = 0; //Inicializa a vaivel potPin com o valor zero
int val;
void setup() {
meuservo.attach(10);
}
void loop() {
val = analogRead(potpin);
val = map(val, 0, 1023, 0, 180);
meuservo.write(val);
delay(500);
}
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 mdulo TCS230 / TCS3200.
Esse mdulo 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 no
tem filtro algum.
Como no mdulo mostrado acima, o sensor TCS230 geralmente vem montado em conjunto
com quatro leds brancos para iluminao, e oito pinos para conexo.
O pino OE (Output Enable, ou sada habilitada/ativada) deve ser ligado ao GND, j que o
mdulo vai enviar informaes 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 primrias, nada impede que outras combinaes sejam usadas no programa, de
acordo com os nveis do sinal RGB.
O TCS230/3200 possui quatro entradas: S0, S1, S2, e S3. As duas primeiras servem
para selecionar uma escala de frequncia (2%, 20% ou 100%), ou simplesmente
desligar o sensor. As duas ltimas servem para selecionar o conjunto de fotodiodos que
voc quer o resultado: como so dois bits, teremos exatamente quatro possiblidades, que
so correspondentes aos quatro conjuntos de fotodiodos. Assim o sensor dar um
resultado com a intensidade de cada cor que ele consegue medir, e a intensidade total,
permitindo o desenvolvimento de uma aplicao que calcule o valor RGB para a cor
detectada. Veja abaixo a tabela, extrada do datasheet:
Finalmente temos uma biblioteca para lidar com esse sensor no Arduino!!! A bilioteca
MD_TCS230 est disponvel para download no GitHub e no CodePlex. Vamos a um
passo-a-passo para testar seu primeiro programinha com o sensor de cores no Arduino!!
// Pin definitions
#define S2_OUT 12
#define S3_OUT 13
#define OE_OUT 8 // LOW = ENABLED
void setup()
{
Serial.begin(57600);
Serial.println("[TCS230 Simple NON_BLOCKING Example]");
Serial.println("\nMove the sensor to different color to see the RGB
value");
Serial.println("Note: These values are being read in without sensor
calibration");
Serial.println("and are likely to be far from reality");
CS.begin();
}
void readSensor()
{
static bool waiting;
if (!waiting)
{
CS.read();
waiting = true;
}
else
{
if (CS.available())
{
colorData rgb;
CS.getRGB(&rgb);
Serial.print("RGB [");
Serial.print(rgb.value[TCS230_RGB_R]);
Serial.print(",");
Serial.print(rgb.value[TCS230_RGB_G]);
Serial.print(",");
Serial.print(rgb.value[TCS230_RGB_B]);
Serial.println("]");
waiting = false;
}
}
}
void loop()
{
readSensor();
}
Arduino UNO
Nesse primeiro programa de exemplo, que bastante simples, voc precisar fazer
apenas quatro conexes alm do VCC e GND, que so a alimentao do sensor: S2, S3,
OE, e OUT. At mesmo OE (Output Enable), se quiser, voc pode simplesmente ligar o
pino OE do sensor ao GND, sem conectar no Arduino, mas aconselhvel seguir o
projeto do programa, j que estamos aprendendo e poder ser importante, no futuro,
desabilitar temporariamente a sada do sensor.
fcil descobrir as conexes para S2, S3, e OE simplesmente verificando as linhas de
cdigo dentro do programa:
// Pin definitions
#define S2_OUT 12
#define S3_OUT 13
#define OE_OUT 8 // LOW = ENABLED
Mas e onde vou conectar OUT no Arduino?? Como que eu sei onde vou conectar a
sada do meu sensor de cores RGB no Arduino? Ento, tive um trabalho aqui, mas foi
apenas falta de ler a documentao da bilioteca. Se voc observar na descrio da
biblioteca aqui, perceber uma NOTA IMPORTANTE onde o autor da biblioteca avisa
sobre uma limitao da dependencia FreqCount, que permite a utilizao apenas de
determinados pinos para a contagem da frequencia e limita o uso de outros pinos,
conforme a tabela abaixo:
Logo, sabemos que o pino para a conexo da sada do sensor (pino OUT), o pino 5 do
Arduino. Ficam ento as conexes:
Uma vez terminadas as conexes, carregue o programa para dentro do Arduino e teste
seu programa! Assim que carregar o programa (voc ver ver a mensagem Done
uploading. na barra de status da Arduino IDE), pressione Ctrl+Shift+M ou v em
Tools -> Serial Monitor. Quando abrir o Serial Monitor, selecione a taxa de
transferncia de 57600 baud no canto inferior direito, seno voc apenas enxergar
caracteres malucos em sua tela rs. Aproxime uma folha branca de papel do sensor
para ver como ele marca perfeitamente: [255,255,255] no Serial Monitor. Outras cores
ficaro aproximadas, o preto bastante difcil de detectar. Cores mais claras so mais
fceis por terem uma SATURAO maior e tambm maior INTENSIDADE de luz,
permitindo assim que o software tenha mais informaes com que trabalhar. Deixe seu
comentrio e at a prxima!!
https://automacaoifrsrg.wordpress.com/2013/10/02/ensaio-
utilizando-o-sensor-de-cor-rgb-modelo-tcs230/
Sensores de Cor
Esse sensor opera a partir da incidncia de luz na base do transistor que compe o
dispositivo. Assim, o transistor passa a conduzir corrente de acordo com a cor que est
sobre ele. Os filtros permitem que apenas a cor incidida passe a excitar a base do
fototransistor. Logo, o que no possui o filtro, torna-se sensvel a qualquer luz que
incida sobre ele. Sendo assim, h a possibilidade de escolher outros filtros para que, a
partir das combinaes dos pinos, o sensor passe a detectar outros tons de cores partindo
dos que j esto definidos, sendo possvel, por exemplo, fazer a leitura da cor amarela.
Experimento
Calibrao
Programao
Para a realizao deste ensaio, foi inserida uma biblioteca especfica na programao,
chamada TimerOne. Essa biblioteca responsvel por auxiliar os parmetros exigidos
pelo sensor de cor, e assim, o seu respectivo funcionamento.
3
#define S0 6 // Informa que a saida S0 do sensor sera conectada
4 ao pino 6 do Arduino.
11
int g_count=0;
12
int g_flag = 0;
13
int g_array[3] = {0};
14
float g_SF[3] = {0.0};
15
16
void TSC_Init() // Inicializa o TSC230 e seta os valores da
frequencia.
17
18 {
24
digitalWrite(S0, HIGH); // Escreve um sinal alto no pino S0.
25
digitalWrite(S1, LOW); // Escreve um sinal baixo no pino S1.
26 // Essas escritas fazem que a frequencia seja de 20%.
27 }
28
34
if(Level02 != 0)
35
Level02 = HIGH;
36
37
digitalWrite(S2, Level01);
38 digitalWrite(S3, Level02);
39 }
40
41 void TSC_Count()
42 {
43 g_count ++ ;
}
44
45
46 void TSC_Callback()
47 {
switch(g_flag)
48
{
49
case 0:
50
Serial.println("->WB Start"); // Escreve na porta serial a
51 mensagem "->WB Start".
63 Serial.println(g_count);
64 g_array[1] = g_count;
TSC_WB(LOW, HIGH); // Condiao para o filtro sem o
65
azul.
66 break; // Finaliza a aao.
67
68 case 3:
73 g_array[2] = g_count;
TSC_WB(HIGH, LOW); // Condiao sem o filtro.
74
break; // Finaliza a aao.
75
default:
76
g_count = 0;
77
break;
78
}
79 }
80
82 {
83 g_count = 0;
g_flag ++;
84
TSC_FilterColor(Level0, Level1);
85
Timer1.setPeriod(1000000); // set 1s period
86
}
87
88
void setup()
89
{
90 TSC_Init();
91 Serial.begin(9600);
92 Timer1.initialize(); // defaulte is 1s
93 Timer1.attachInterrupt(TSC_Callback);
95
delay(4000);
96
97
for(int i=0; i<3; i++)
98
99 Serial.println(g_array[i]);
100
104
Serial.println(g_SF[0]);
105
Serial.println(g_SF[1]);
106
Serial.println(g_SF[2]);
107
108
}
109
110void loop()
111{
112g_flag = 0;
114Serial.println(int(g_array[i] * g_SF[i]));
delay(4000); // Aguarda 4 segundos
115