Menu mobile
Este corto tutorial explica como poder detectar el movimiento de individuos cuando pasan por el sensor gracias a nuestra placa Arduino y un sensor de movimiento HC-SR501. Con el siguiente código de ejemplo, puede leer el sensor y controlar el LED integrado del Arduino (conectado al pin 13). Este código también se puede usar para controlar relés simples para encender o apagar una luz más grande.
Para obtener más información sobre productos o sus descripciones técnicas entre en nuestra web Solectro Shop.
Conexión
El módulo se alimenta directamente de Arduino, así que no necesitamos una fuente de energía externa. Los pines están conectados según la tabla:
Pin del sensor
Pin de Arduino UNO
VCC
5V
S1
D4
S0
D3
LED
GND
S3
D6
S2
D5
Out
D2
Los otros dos pines del módulo del sensor se conectan a la sonda de medición mediante los cables suministrado, como se muestra en el siguiente diagrama, mediante cables dupont de manera directa o a través de una protoboard:
Operación
EL TCS3200 es un sensor óptico que permite detectar el color que capte frente a él del objeto. Internamente, el TCS3200 está formado por una matriz de fotodiodos de silicona junto con un conversor de frecuencia, en un único integrado CMOS. Podemos emplearlo para reconocer el color de una tarjeta o un objeto, y guiar a un robot en un recorrido. En el siguiente ejemplo realizamos la lectura del TCS3200. Para ello empleamos la función PulseIn para determinar la duración del pulso recibido por el sensor.
Realizamos el proceso para cada color, y empleamos los valores obtenidos para clasificarlo como rojo, azul o verde.
Abre un nuevo sketch y pega el siguiente código:
//VCC——5V
//GND——GND
//S0——D3
//S1——D4
//S2——D5
//S3——D6
//OUT——D2
const int s0 = 8;
const int s1 = 9;
const int s2 = 12;
const int s3 = 11;
const int out = 10;
byte countRed = 0;
byte countGreen = 0;
byte countBlue = 0;
void setup() {
Serial.begin(9600);
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
pinMode(out, INPUT);
digitalWrite(s0, HIGH);
digitalWrite(s1, HIGH);
}
void loop() {
getColor();
Serial.print("Red: ");
Serial.print(countRed, DEC);
Serial.print("Green: ");
Serial.print(countGreen, DEC);
Serial.print("Blue: ");
Serial.print(countBlue, DEC);
if (countRed < countBlue && countGreen > 100 && countRed < 80)
{
Serial.println(" - Red");
else if (countBlue < countRed && countBlue < countGreen)
Serial.println(" - Blue");
else if (countGreen < countRed && countGreen < countBlue)
Serial.println(" - Green");
else {
Serial.println("-");
delay(300);
void getColor()
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
countRed = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
digitalWrite(s3, HIGH);
countBlue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
digitalWrite(s2, HIGH);
countGreen = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);