Hola, estoy practicando el uso de controladores y me gustaría saber si es posible controlar la potencia de un LED a traves de un controlador 74HC595 y un potenciómetro. La verdad es que me está costando bastante encontrar buena información sobre el uso de este controlador, porque la mayoría está en inglés y aunque me suelo manejar bastante bien, en este caso me está costando bastante. He probado con el siguiente código:
const int latchPin = 7;
const int clockPin = 8;
const int dataPin = 9;
const int led = 3;
const int pot = 0;
int brillo;
void setup()
{
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
}
void loop()
{
brillo = analogRead(pot);
brillo = map(brillo, 0, 1023, 0, 255);
digitalWrite(latchPin, LOW);
shiftOut(dataPin,clockPin,LSBFIRST,brillo);
digitalWrite(latchPin, HIGH);
delay(100);
}
El problema es que el led no se activa hasta que el potenciómetro no alcanza el valor de 128. Creo que se debe a que el controlador, al funcionar en binario interpreta de 0 a 127 como 0 y de 128 a 255 como 1. ¿Como podría hacer para convertir el valor del potenciómetro a un número binario que el controlador pueda interpretar? Con el comando Serial.print(brillo, BIN); me muestra el valor del potenciómetro en binario, pero como podría hacer para guardarlo en una variable en lugar de imprimirlo en pantalla?
He probado creando una variable llamada brilloBin y haciendo brilloBin = (brillo, BIN); y shiftOut(dataPin,clockPin,LSBFIRST,brilloBin); y cosas parecidas, pero no consigo que funcione. ¿Alguien me podría dar alguna indicación de qué estoy haciendo mal?
Otra pregunta, el pin que va a la entrada de datos del controlador tiene que ser siempre PWN?
Muchas gracias.