const int botonAumentarPin = 15; // Pin para aumentar la frecuencia
const int botonDisminuirPin = 3; // Pin para disminuir la frecuencia
const int ledPin = 9; // Pin de salida para la señal cuadrada
const int incrementoFrecuencia = 50; // Incremento/decremento de frecuencia
const int frecuenciaMinima = 50; // Frecuencia mínima en Hz
volatile bool aumentoPendiente = false;
volatile bool disminucionPendiente = false;
unsigned long tiempoAnterior = 0; // Variable para almacenar el tiempo del último cambio de frecuencia
int frecuencia = 1000; // Frecuencia inicial en Hz
void IRAM_ATTR aumentarFrecuencia() {
aumentoPendiente = true;
}
void IRAM_ATTR disminuirFrecuencia() {
disminucionPendiente = true;
}
void setup() {
Serial.begin(9600);
pinMode(botonAumentarPin, INPUT_PULLUP);
pinMode(botonDisminuirPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
digitalWrite(ledPin, LOW); // Inicialmente, apagar el LED
attachInterrupt(digitalPinToInterrupt(botonAumentarPin), aumentarFrecuencia, FALLING);
attachInterrupt(digitalPinToInterrupt(botonDisminuirPin), disminuirFrecuencia, FALLING);
}
void loop() {
if (aumentoPendiente) {
frecuencia += incrementoFrecuencia;
aumentoPendiente = false;
Serial.println("Frecuencia aumentada a: " + String(frecuencia) + " Hz");
}
if (disminucionPendiente) {
if (frecuencia > frecuenciaMinima) { // Asegurar que la frecuencia no baje de la mínima
frecuencia -= incrementoFrecuencia;
}
disminucionPendiente = false;
Serial.println("Frecuencia disminuida a: " + String(frecuencia) + " Hz");
}
// Generar señal cuadrada
unsigned long tiempoActual = millis();
if (tiempoActual - tiempoAnterior >= frecuencia) {
digitalWrite(ledPin, !digitalRead(ledPin)); // Alternar el estado del LED
tiempoAnterior = tiempoActual;
}
}
Loading
esp32-s3-devkitc-1
esp32-s3-devkitc-1