Este es un ejemplo de funcionamiento para quienes quieren experimentar por primera vez con el potenciómetro digital AD5280. Soporta una tensión máxima de hasta 15 voltios entre los pines A y B.
Encontré esta imagen en un foro alemán. La modifiqué. He buscado la fuente original pero no la he vuelto a encontrar.
Código de ejemplo:
#include <Wire.h>
void setup()
{
Wire.begin();
}
void loop()
{
Wire.beginTransmission(0x2C);// Byte de 7 bits de dirección.
Wire.write(0x00); // Instrucción: Valor medio /SHDN <-> V_logic (0x00); /SHDN <-> O1 = (0x10);
/SHDN <-> O2 = (0x08).
Wire.write(0); // Dato de salida (0..255) entre W y B; entre W y A sería inverso (255..0).
Wire.endTransmission();
delay(1000);
}
El tercer byte es el valor resistivo equivalente a enviar. En el programa establezco cero, pero tú has de ir probando diferente valores entre 0 y 255, y ver la respuesta con un multímetro entre los pines B y W, o si no, entre A y W, pero en este último verás el valor equivalente invertido, que es lo mismo que sucedería en un potenciómetro real.
Si montas el circuito tal como está en el esquema (con el pin /SHDN conectado a V_logic, es decir, a positivo de 5V ó 3.3V), al darle alimentación (sin enviar ningún valor, o con el microcontrolador desconectado) te saldrá un valor medio. Por ejemplo, si el AD5280 es de 20K te dará 10K (la mitad) a la salida. Una vez que el microcontrolador envía el valor resistivo, es cuando el AD5280 toma dicho valor y lo mantendrá hasta que le enviemos otro valor, pero una vez quites la alimentación se perderá esa información. Si deseas comenzar con un valor cero, debes conectar el pin /SHDN al pin O1 o bien al pin O2 (observa el esquema para saber dónde están esos pines), y en el programa cambiar el valor correspondiente del segundo byte de transmisión de los tres que envía. Por ejemplo, si conectas la patilla /SHDN a la patilla O1, el segundo byte (Instrucción) debe tener el valor 0x10, y si conectas la patilla /SHDN a la patilla O2, entonces el valor ha de ser 0x08. De esta dos formas conseguimos que al ponerse en marcha el potenciómetro, tenga una salida cercana a los cero ohmios. Para más información mira la hoja de datos.
Si necesitas comprobar que el dato de salida es correcto o tienes algún problema para hacerlo funcionar, puedes ver ese error mostrándolo a través de "Serial.print" de la siguiente manera:
error = Wire.endTransmission();
Entonces "error" puede contener uno de estos valores:
0: Todo perfecto.
1: Datos demasiado largos para caber en el buffer de transmisión.
2: Error en el dato de la dirección. (Es el primer byte; recuerda que este byte es de 7 bits.)
3: Error en los datos.
4: Otro tipo de error.