Es como un “sentido” del robot. Detecta lo que pasa a su alrededor (como luz, temperatura o movimiento) y convierte esa información en datos que el robot puede entender.
Arduino recibe información del sensor, la interpreta, y envía una orden al actuador.
Parte del robot que se mueve o hace algo. Recibe una orden y realiza una acción, como girar una rueda, prender una luz o emitir un sonido.
Existen diferentes tipos de sensores y actuadores, por lo que en esta clase veremos los siguientes
Sensor(ultrasónico)
Un sensor ultrasónico es como los "ojos" de un robot que no ven, ¡escuchan! Usa sonidos súper agudos (que nosotros no podemos oír) para medir la distancia entre él y algo que está enfrente. Si rebota rápido, el objeto está cerca. Si tarda, está lejos.
Un buzzer es un componente electrónico que vibra al recibir corriente, y esa vibración produce un sonido. Dependiendo del tipo, el sonido puede ser más simple o tan variado como una canción.
Existen dos tipos principales de buzzer:
Tiene su propia frecuencia interna. Solo lo enciendes y suena (como un “¡bip!”)
Necesita que tú le digas qué frecuencia usar (¡perfecto para tocar canciones!).
Si al conectarlo al positivo y al negativo suena sin hacer nada, probablemente es activo.
Lo que aprenderemos hoy:
Actividad 1: Mide distancias con el sensor
Protoboard
Arduino Un
Jumper (macho-hembra)
Sensor ultrasónico
Código de programación:
Conexiones:
const int trigPin = 2;
const int echoPin = 3;
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;
Serial.print("Distancia: ");
Serial.print(distance);
Serial.println(" cm");
delay(500);
}
const int trigPin = 9;
Define el pin digital 9 del Arduino para el TRIG del sensor ultrasónico.
const int echoPin = 10;
Define el pin digital 10 del Arduino para el ECHO del sensor.
long duration;
Variable que guarda el tiempo que tarda la señal en ir y regresar.
int distance;
Variable que almacena la distancia calculada en centímetros.
duration = pulseIn(echoPin, HIGH);
Mide el tiempo que tarda en recibirse el eco.
distance = duration * 0.034 / 2;
Convierte el tiempo en distancia usando la velocidad del sonido.
Actividad 2: ¡ Haz sonar el buzzer !
Protoboard
Arduino Uno
Jumper (macho-hembra)
Buzzer (activo)
Código de programación:
Conexiones:
const int buzzer = 4;
void setup() {
pinMode(buzzer, OUTPUT);
}
void loop() {
digitalWrite(buzzer, HIGH);
delay(1000);
digitalWrite(buzzer, LOW);
delay(1000);
}
const int buzzer = 4;
Define el pin digital 4 donde está conectado el buzzer.
pinMode(buzzer, OUTPUT);
Configura el pin del buzzer como salida.
digitalWrite(buzzer, HIGH);
Enciende el buzzer (suena).
digitalWrite(buzzer, LOW);
Apaga el buzzer (silencio).
¿Qué pasa si conectamos un sensor a un actuador?
Actividad 3: Alarma de proximidad
Código de programación:
Conexiones:
const int trigPin = 7;
const int echoPin = 6;
const int buzzerPin = 9;
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzerPin, OUTPUT);
digitalWrite(buzzerPin, LOW);
Serial.begin(9600);
Serial.println("Sistema iniciado");
}
void loop() {
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
long duration = pulseIn(echoPin, HIGH, 30000);
int distance;
if (duration == 0) {
Serial.println("Error: No se recibió eco");
distance = -1;
} else {
distance = duration * 0.034 / 2;
Serial.print("Distancia: ");
Serial.print(distance);
Serial.println(" cm");
}
if (distance > 0 && distance < 5) {
digitalWrite(buzzerPin, HIGH);
} else {
digitalWrite(buzzerPin, LOW);
}
delay(200);
}
const int trigPin = 7;
Define el pin digital 7 para TRIG, encargado de enviar el pulso.
const int echoPin = 6;
Define el pin digital 6 para ECHO, encargado de recibir el eco.
const int buzzerPin = 9;
Define el pin digital 9 donde está conectado el buzzer.
long duration = 0;
Variable que guarda el tiempo del eco medido en microsegundos.
int distance = 0;
Variable que guarda la distancia calculada en centímetros.
duration = pulseIn(echoPin, HIGH, 30000);
Mide el tiempo que tarda en recibirse el eco (con límite de 30 ms).
distance = duration * 0.034 / 2;
Convierte el tiempo medido en distancia en centímetros.
if (distance > 0 && distance < 5) { ... }
Si el objeto está a menos de 5 cm, el buzzer se enciende.
else { ... }
Si no hay objeto cerca, el buzzer se apaga.
Video con explicación:
Presentación Clase 9: Control de Servomotores
Código y conexiones