Capacitación Arduino · Sensor infrarrojo

FC-51
¿Hay algo
delante?

El módulo lanza luz infrarroja y mira si rebota: el LED verde dice «camino libre» y el rojo «¡obstáculo!». Simulado en Tinkercad y en OpenCircuits.

Entrada digital Si / si no Bloques + C++

El componente

Sensor infrarrojo de obstáculos FC-51

101103103LM3933362102201输出指示电源指示++OUTGNDVCCMH-B Emisor IRReceptor IR Comparador LM393Trimmer azul LED obstáculoLED de encendido lanza luz que no vemosrecibe la luz que rebota decide SÍ / NOfija el alcance (2 a 30 cm) encendido = hay algo delanteel módulo tiene corriente OUT → D7GND → GNDVCC → 5V
La luz infrarroja rebota en el objeto y llega al receptor. Mientras más cerca, más luz vuelve.
OUT es digital: LOW = hay un obstáculo dentro del alcance, HIGH = camino libre.

Cómo funciona

Luz que rebota, una señal digital

Distancia de la mano alcance (trimmer) mano cerca Salida OUT → pin D7 LOW = obstáculo HIGH
  1. El emisor lanza luz infrarroja todo el tiempo.
  2. Si hay algo cerca, la luz rebota y llega al receptor.
  3. El LM393 compara esa luz con el alcance del trimmer: si el objeto está más cerca, OUT pasa a LOW.
  4. Arduino lee D7 y enciende el LED rojo (obstáculo) o el verde (libre).

Truco de simulación

Tinkercad no tiene el FC-51

En el kit real

101103103LM3933362102201输出指示电源指示++OUTGNDVCCMH-B

El módulo decide si hay algo delante y lo entrega por OUT.

En Tinkercad: módulo virtual

Parte del kitLa reemplazamos conArduino
Emisor + receptor (ve la mano)Potenciómetro = distancia de la mano
0 a 40 cm con «asignar al rango»
A0
Comparador LM393 + trimmerEl código: if (distancia < 10)
alcance de 10 cm
—
LED obstáculoLED verde (libre) y LED rojo (obstáculo), con 220 ΩD4 · D6

El «Sensor IR» de Tinkercad es otra cosa: el receptor del control remoto.

Girar la perilla es como acercar o alejar la mano: el programa decide si está a menos de 10 cm. En el kit, esa decisión la toma el módulo y la entrega por OUT.

Paso 1 · Componentes

Búscalos en el panel de componentes de Tinkercad

Arduino Uno R3 ×1

Buscar: Arduino

Placa de pruebas pequeña ×1

Buscar: Placa de pruebas

Potenciómetro ×1

Hace de distancia de la mano (0 a 40 cm).

Resistencias 220 Ω ×2

Una para cada LED.

LED verde ×1

Camino libre.

LED rojo ×1

¡Obstáculo!

Para cambiar el color de un LED, haz clic en él y edítalo en el cuadro de propiedades.

Paso 2 · Circuito

Así se ve en Tinkercad

Mano 25 cm A0 0 Estado LIBRE Los botones giran la perilla, como lo harías en Tinkercad.

Paso 2 · Conexiones

Conexión por conexión

Alimentación
Arduino 5VRiel + inferior
Arduino GNDRiel − inferior
Potenciómetro (distancia de la mano)
—Potenciómetro (fila e)Columnas 18, 19, 20
Columna 18Riel −
Columna 20Riel +
Columna 19 (cursor)Arduino A0
Todo va en los rieles de abajo (+ y −). La pata doblada del LED es el ánodo (+).
LED verde · libre
—LED cátodo / ánodo (fila e)Columna 3 / 4
—220 ΩColumna 4 → 8 (fila c)
Arduino D4Columna 8
Columna 3Riel −
LED rojo · obstáculo
—LED cátodo / ánodo (fila e)Columna 10 / 11
—220 ΩColumna 11 → 15 (fila c)
Arduino D6Columna 15
Columna 10Riel −

Paso 3 · Código en bloques

Arrastra estos bloques · todo dentro de «siempre»

Antes de empezar

Variables → Crear variable: distancia.

«Asignar al rango» convierte la perilla (0 a 1023) en 0 a 40 cm. Bajo 10 cm hay obstáculo.
Controlsiempre, si / si no
Entradaleer pin analógico A0
Matemáticasasignar al rango, comparar ( < )
Variablesdefinir distancia en, distancia
Salidadefinir pin 4 / 6 en ALTA o BAJA

Paso 3 · Código C++

El mismo programa en texto

// C++ code
//
int distancia = 0;

void setup()
{
  pinMode(A0, INPUT);
  pinMode(6, OUTPUT);
  pinMode(4, OUTPUT);
}
En Tinkercad: Código → Bloques → Texto. Acepta el aviso, borra lo que haya y pega.
void loop()
{
  distancia = map(analogRead(A0), 0, 1023, 0, 40);
  if (distancia < 10) {
    digitalWrite(6, HIGH);
    digitalWrite(4, LOW);
  } else {
    digitalWrite(6, LOW);
    digitalWrite(4, HIGH);
  }
  delay(10); // Delay a little bit to improve simulation performance
}

Paso 4 · Simular

¡A probar!

  1. Pulsa Iniciar simulación: con la perilla en la mitad (20 cm) se enciende el LED verde.
  2. Gira el potenciómetro hacia el mínimo («acercar la mano»): bajo 10 cm se enciende el rojo.
  3. Gíralo de vuelta («alejar»): vuelve el verde.
  4. Cambia el 10 del bloque: es como girar el trimmer del módulo real.

Si algo no funciona

Siempre rojoEl cursor (columna 19) no llega a A0: A0 suelto lee valores bajos.
Nunca cambiaLa lectura de A0 debe estar dentro de «siempre».
Funciona al revésIntercambia los cables de las columnas 18 y 20.
Ningún LED enciendeRevisa la orientación (pata doblada = ánodo).

Paso 5 · Kit real

Del simulador al FC-51 real

Cambia el potenciómetro por el módulo

FC-51Arduino
OUTD7
GNDGND
VCC5V

Un solo cambio en el código: borra la línea de distancia y cambia el if (distancia < 10) por:

if (digitalRead(7) == LOW) {   // OUT en LOW = obstáculo

El alcance ya no está en el código: lo fija el trimmer del módulo.

Calibración

  1. Pon tu mano a la distancia que quieres detectar (por ejemplo 10 cm).
  2. Gira el trimmer azul hasta que el LED obstáculo del módulo justo se encienda.
  3. Aleja la mano: el LED se apaga y el Arduino vuelve al verde.

Los objetos negros reflejan poca luz y el sol directo lo confunde: pruébalo en interior.

Alternativa · OpenCircuits

En OpenCircuits está el FC-51 del kit

101103103LM3933362102201输出指示电源指示++OUTGNDVCCMH-B
Mano 25 cm OUT: HIGH Iniciar.bat → SensoresSensor infrarrojo FC-51 · Obstáculo

El bloque nuevo

El bloque verde de la categoría FC-51 lee OUT y responde directo «¿hay un obstáculo?». Reemplaza al if (distancia < 10) de Tinkercad: el alcance lo fija el trimmer.

FC-51FC-51 pin 7: ¿hay un obstáculo?
Controlsiempre, si / si no
Salidadefinir pin 4 / 6 en ALTA o BAJA

En la categoría también están «¿camino libre?» y «mostrar estado» (Monitor serie).

// C++ code
//
void setup()
{
  pinMode(7, INPUT);
  pinMode(6, OUTPUT);
  pinMode(4, OUTPUT);
}
void loop()
{
  if (digitalRead(7) == LOW) {
    digitalWrite(6, HIGH);
    digitalWrite(4, LOW);
  } else {
    digitalWrite(6, LOW);
    digitalWrite(4, HIGH);
  }
  delay(10); // Delay a little bit to improve simulation performance
}
Este texto lo escribe OpenCircuits a partir de los bloques. Es el programa del kit real, sin bibliotecas.

Para seguir

Retos

1 · Contador

Cuenta cuántas veces pasa algo frente al sensor y muéstralo en el Monitor serie.

2 · Alarma

Cuando hay obstáculo, suena el buzzer en D8 además del LED rojo.

3 · Robot que esquiva

Con un obstáculo, un motor se detiene y otro gira (idea para un carrito).

4 · Dispensador

Con la mano delante, un servo abre una tapa por 2 segundos.

← → para avanzar · + − acercar el circuito · F pantalla completa