PRÁCTICA 4
// C++ code
//
// Definición de pines
const int pinZumbador = 6; // Pin donde está conectado el zumbador
const int pinSensor = A0; // Pin donde está conectado el sensor
// Definición de constantes
const unsigned long tiempoCaptura = 5000; // Tiempo de calibración en milisegundos
// Definición de variables
int sensorHigh = 0; // Valor máximo del sensor
int sensorLow = 1023; // Valor mínimo del sensor
// Función para calibrar el sensor
void calibracion() {
[Link]("Calibrando sensor...");
unsigned long tiempoInicio = millis();
while (millis() - tiempoInicio < tiempoCaptura) {
int valorSensor = analogRead(pinSensor);
if (valorSensor > sensorHigh) {
sensorHigh = valorSensor; // Actualizar valor máximo
}
if (valorSensor < sensorLow) {
sensorLow = valorSensor; // Actualizar valor mínimo
}
delay(100); // Pequeña pausa para estabilidad
}
[Link]("Calibración completada");
}
void setup() {
[Link](9600); // Iniciar comunicación serie
pinMode(pinZumbador, OUTPUT); // Configurar el pin del zumbador como salida
calibracion(); // Llamar a la función de calibración
}
void loop() {
int valorSensor = analogRead(pinSensor); // Leer el sensor
// Asegurar que sensorHigh y sensorLow no sean iguales para evitar división por cero
if (sensorHigh == sensorLow) {
sensorHigh = sensorLow + 1;
}
// Mapear el valor del sensor a una frecuencia de sonido
int frecuencia = map(valorSensor, sensorLow, sensorHigh, 100, 1000);
frecuencia = constrain(frecuencia, 100, 1000);
// Activar el buzzer con la frecuencia calculada
tone(pinZumbador, frecuencia);
// Enviar datos al Serial Plotter para visualización gráfica
[Link]("Sensor: ");
[Link](valorSensor);
[Link](" | Frecuencia: ");
[Link](frecuencia);
[Link](" | Min: ");
[Link](sensorLow);
[Link](" | Max: ");
[Link](sensorHigh);
delay(50); // Pequeña pausa para estabilidad
}