Este ejemplo muestra cómo controlar un Potenciómetro digital Analog Devices
AD5171 que se comunica a través del protocolo serie síncrono de I2C. El uso de
I2C de Arduino con la biblioteca Wire, el potencómetro digital pasa a través de
64 niveles de resistencia, consiguiendo el desvanecimiento de un LED.
El protocolo I2C implica el uso de dos
líneas para enviar y recibir datos: un pin de reloj serie (SCL) que la placa
Maestra Arduino o Genuino envía pulsos a intervalos regulares, y un pin de datos
serie (SDA) sobre la cual se envían los datos entre los dos dispositivos. Como
los cambios en las líneas de reloj de nivel LOW a nivel HIGH (conocido como el
flanco de subida del pulso de reloj), un único bit de información - que va a
formar en la secuencia de la dirección de un dispositivo específico y manda un
comando de datos - se transfiere desde desde la placa al dispositivo I2C sobre
la línea SDA. Cuando se envía esta información - bit a bit -, la llamada del
dispositivo ejecuta la solicitud y transmite sus datos de nuevo - si es
necesario - a la placa sobre la misma línea utilizando la señal de reloj que
sigue siendo generada por el Maestro en SCL como sincronización.
Debido a que el protocolo de 12C permite que cada dispositivo sea habilitado
para tener su propia dirección única, y como ambos dispositivos maestro y
esclavo se comunican por turnos a través de una sola línea, es posible que la
placa Arduino o Genuino se comunique (a su vez) con muchos dispositivos , u
otras plataformas, mientras utiliza sólo dos pines del microcontrolador.
Hardware Necesitado
- 1 Placa Arduino o Genuino
- 1 Potenciómetro Digital AD5171
- 1 LED
- 1 Resistencia de 220 ohm
- 2 Resistencias de 4.7k ohm
- Hilo para cableado
- 1 Protoboard
Circuito
Conectar los pines 3, 6, y 7 del AD5171 a
GND, y los pines 2 y 8 a +5V.
Conecte el pin 4, pin de reloj del potenciómetro digital (SCL), al pin analógico
5 en el Arduino, y el pin 5, la línea de datos (SDA), al pin analógico 4. En
ambas líneas SCL y SDA, añadir las resistencias de 4.7K ohm como pull-up, a las
dos líneas a 5 V.
Por último, un terminal del LED al pin 1 del AD5171, con una resistencia
de 220 ohmios en serie.
Cuando el pin del AD5171 6, ADO, está conectado a tierra, su dirección es 44.
Para añadir otro potenciómetro digital al mismo bus SDA, conecte el pin ADO del
segunda potenciómetro a + 5V, cambiando su dirección a 45.Sólo se pueden
utilizar dos de estos potenciómetros digitales al mismo tiempo.
Esquema
Código
// por Nicholas Zambetti <http://www.zambetti.com>
// y Shawn Bonkowski <http://people.interaction-ivrea.it/s.bonkowski/>
// Demuestra el uso de la biblioteca Wire
// Contro de potenciometro digital AD5171 via I2C/TWI
// Creado el 31 Mazo de 2006
// Este codigo es de dominio publico
#include <Wire.h>
void setup() {
Wire.begin() // unirse a bus I2C (dirección de maestro opcional )
}
byte val = 0;
void loop() {
Wire.beginTransmission(44); // transmite al device #44 (0x2c)
// la dirección del dispositivo se especifica en la ficha técnica
Wire.write(byte(0x00)); // envia la direccion en un byte
Wire.write(val); // envia un byte con la direccion del dispositivo
Wire.endTransmission(); // parada de transmision
val++; // incrementa el valor
if (val == 64) { // si alcanza la posicion 64 (max)
val = 0; // empieza de nuevo desde el valor más bajo
}
delay(500);
}
No hay comentarios:
Publicar un comentario