Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

const int swPin = 2; // Pin del interruptor

const int dtPin = 4; // Pin DT del encoder


const int clkPin = 8; // Pin CLK del encoder
const int ledPin = 9; // Pin del LED

int brightness = 0; // Brillo del LED

int lastEncoded = 0; // Valor del encoder en la lectura anterior


long lastSwitchTime = 0; // Tiempo de la �ltima pulsaci�n del interruptor
boolean buttonPressed = false; // Estado del bot�n (pulsado o no)

void setup() {
pinMode(ledPin, OUTPUT);
pinMode(swPin, INPUT_PULLUP);
pinMode(dtPin, INPUT);
pinMode(clkPin, INPUT);
digitalWrite(swPin, HIGH); // Habilitar resistencia pull-up interna
Serial.begin(9600);
}

void loop() {
int switchState = digitalRead(swPin); // Leer el estado del interruptor

if (switchState == LOW && !buttonPressed) {


long switchTime = millis() - lastSwitchTime;
if (switchTime > 50) {
buttonPressed = true;
lastSwitchTime = millis();
}
} else if (switchState == HIGH) {
buttonPressed = false;
}

if (buttonPressed) {
int encoded = readEncoder();
if (encoded != lastEncoded) {
brightness += encoded;
if (brightness < 0) {
brightness = 0;
} else if (brightness > 255) {
brightness = 255;
}
analogWrite(ledPin, brightness);
Serial.print("Brillo del LED: ");
Serial.println(brightness);
}
lastEncoded = encoded;
}

delay(10);
}

int readEncoder() {
int dtState = digitalRead(dtPin);
int clkState = digitalRead(clkPin);
if (dtState != clkState) {
return 1;
} else {
return -1;
}
}

You might also like