#include <Encoder.h>
// Definimos los pines a los que están conectados los encoders
Encoder encoder1(2, 4);
Encoder encoder2(3, 5);
const int volUpButton = 6; // Pin del botón para subir volumen
const int volDownButton = 7; // Pin del botón para bajar volumen
int volume = 5; // Volumen inicial (0 a 15)
long position1 = 0;
long delta1=0;
long position2 = 0;
long delta2=0;
long newPosition1;
long newPosition2;
float frequency = 103.70; // Frecuencia deseada
float frequencyant=0.0;
void setup() {
pinMode(volUpButton, INPUT_PULLUP); // Usa la resistencia pull-up interna
pinMode(volDownButton, INPUT_PULLUP); // Usa la resistencia pull-up interna
Serial.begin(9600);
Serial.println("Basic Encoder Test:");
}
void loop() {
newPosition1 = encoder1.read();
newPosition2 = encoder2.read();
// Si hay un cambio en la posición del encoder 1, imprimimos el nuevo valor
if (newPosition1 != position1) {
Serial.print("Encoder 1: ");
Serial.println(newPosition1);
long delta1 = newPosition1 - position1;
if (delta1 < 0) {
// Giró hacia la derecha, incrementar frecuencia
frequency += 1.0;
} else {
// Giró hacia la izquierda, decrementar frecuencia
frequency -= 1.0;
}
position1 = newPosition1;
Serial.print("valor del delta 1: ");
Serial.println(delta1);
if (frequency > 108.0){
frequency = 108.0;
}
if (frequency < 87.5){
frequency = 87.5;
}
Serial.print("Frecuencia: ");
Serial.println(frequency);
position1 = newPosition1; // Actualizar la posición anterior
}
// Si hay un cambio en la posición del encoder 2, imprimimos el nuevo valor
if (newPosition2 != position2) {
Serial.print("Encoder 2: ");
Serial.println(newPosition2);
long delta2 = position2 - newPosition2; // Calcular el cambio de posición
if (delta2 > 0) {
// Giró hacia la derecha, incrementar frecuencia
frequency += 0.1;
} else {
// Giró hacia la izquierda, decrementar frecuencia
frequency -= 0.1;
}
if (frequency > 108.0){
frequency = 108.0;
}
if (frequency < 87.5){
frequency = 87.5;
}
Serial.print("valor del delta 2: ");
Serial.println(delta2);
Serial.print("Frecuencia: ");
Serial.println(frequency);
position2 = newPosition2;
}
if (digitalRead(volUpButton) == LOW) { // Botón presionado
volume = min(volume + 1, 15); // Incrementa el volumen
Serial.print("Volume Increased: ");
Serial.println(volume);
delay(200); // Debounce
}
if (digitalRead(volDownButton) == LOW) { // Botón presionado
volume = max(volume - 1, 0); // Decrementa el volumen
Serial.print("Volume Decreased: ");
Serial.println(volume);
delay(200); // Debounce
}
delay(300);
}