Capacitación Arduino · Sensor infrarrojo
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.
El componente
Cómo funciona
Truco de simulación
El módulo decide si hay algo delante y lo entrega por OUT.
| Parte del kit | La reemplazamos con | Arduino |
|---|---|---|
| Emisor + receptor (ve la mano) | Potenciómetro = distancia de la mano 0 a 40 cm con «asignar al rango» | A0 |
| Comparador LM393 + trimmer | El código: if (distancia < 10)alcance de 10 cm | — |
| LED obstáculo | LED verde (libre) y LED rojo (obstáculo), con 220 Ω | D4 · D6 |
El «Sensor IR» de Tinkercad es otra cosa: el receptor del control remoto.
Paso 1 · Componentes
Buscar: Arduino
Buscar: Placa de pruebas
Hace de distancia de la mano (0 a 40 cm).
Una para cada LED.
Camino libre.
¡Obstáculo!
Paso 2 · Circuito
Paso 2 · Conexiones
| Alimentación | ||
| Arduino 5V | Riel + inferior | |
| Arduino GND | Riel − inferior | |
| Potenciómetro (distancia de la mano) | ||
| — | Potenciómetro (fila e) | Columnas 18, 19, 20 |
| Columna 18 | Riel − | |
| Columna 20 | Riel + | |
| Columna 19 (cursor) | Arduino A0 | |
| LED verde · libre | ||
| — | LED cátodo / ánodo (fila e) | Columna 3 / 4 |
| — | 220 Ω | Columna 4 → 8 (fila c) |
| Arduino D4 | Columna 8 | |
| Columna 3 | Riel − | |
| LED rojo · obstáculo | ||
| — | LED cátodo / ánodo (fila e) | Columna 10 / 11 |
| — | 220 Ω | Columna 11 → 15 (fila c) |
| Arduino D6 | Columna 15 | |
| Columna 10 | Riel − | |
Paso 3 · Código en bloques
Variables → Crear variable: distancia.
Paso 3 · Código C++
// C++ code // int distancia = 0; void setup() { pinMode(A0, INPUT); pinMode(6, OUTPUT); pinMode(4, OUTPUT); }
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
| Siempre rojo | El cursor (columna 19) no llega a A0: A0 suelto lee valores bajos. |
| Nunca cambia | La lectura de A0 debe estar dentro de «siempre». |
| Funciona al revés | Intercambia los cables de las columnas 18 y 20. |
| Ningún LED enciende | Revisa la orientación (pata doblada = ánodo). |
Paso 5 · Kit real
| FC-51 | Arduino |
|---|---|
| OUT | D7 |
| GND | GND |
| VCC | 5V |
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.
Los objetos negros reflejan poca luz y el sol directo lo confunde: pruébalo en interior.
Alternativa · OpenCircuits
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.
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 }
Para seguir
Cuenta cuántas veces pasa algo frente al sensor y muéstralo en el Monitor serie.
Cuando hay obstáculo, suena el buzzer en D8 además del LED rojo.
Con un obstáculo, un motor se detiene y otro gira (idea para un carrito).
Con la mano delante, un servo abre una tapa por 2 segundos.