X9C103S — потенциометр с цифровым управлением, изменение сопротивления происходит благодаря массиву из 99 резисторов. Модуль может запоминать последнее значение сопротивления в EEPROM.
У микросхемы нет привычного интерфейса вроде I2C или SPI, управление происходит по трем проводам, своеобразным способом.
- Выходы VH, RW, VL – максимальное напряжение через потенциометр 10 В, ток 8 мА.
- Вход U/D – UP/DOWN, в зависимости от состояния этого входа, ползунок резистора перемещается вверх или вниз.
- Вход INC – INCREMENT, управление ползунком, когда на входе изменяется состояние с 1 на 0, ползунок потенциометра делает один шаг, принцип работы как у аппаратного прерывания.
- Вход CS – DEVICE SELECT, выбор устройства, чтобы микросхема начала принимать команды, нужно подать логический 0.
Пример
Модуль можно подключать на любые свободные выходы Arduino, для модуля есть библиотека, однако работать с модулем очень просто, поэтому обойтись можно без неё.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
#define UD 8 // выходы к которым подключен модуль #define INC 9 #define CS 10 void up(){ // поднимает ползунок в верх на 1 ступень digitalWrite(UD, HIGH); // на U/D подаем единицу digitalWrite(INC, HIGH); // и на INC тоже digitalWrite(CS, LOW); // включаем микросхему delayMicroseconds(1); // ждем digitalWrite(INC, LOW); // дергаем вход INC delayMicroseconds(1); digitalWrite(INC, HIGH); delayMicroseconds(1); ///digitalWrite(INC, LOW); // в этом случае положение ползунка записано не будет digitalWrite(CS, HIGH); // выключаем микросхему и записываем положение в EEPROM } void down(){ // опускаем ползунок вверх на 1 ступень digitalWrite(UD, LOW); digitalWrite(INC, HIGH); digitalWrite(CS, LOW); delayMicroseconds(1); digitalWrite(INC, LOW); delayMicroseconds(1); digitalWrite(INC, HIGH); delayMicroseconds(1); digitalWrite(CS, HIGH); } void setup() { Serial.begin(9600); pinMode(INC, OUTPUT); pinMode(UD, OUTPUT); pinMode(CS, OUTPUT); digitalWrite(CS, HIGH); // выключаем микросхему } void loop() { for(int i=0; i<100; i++) { up(); delay(25); } delay(500); for(int i=100; i>0; i--) { down(); delay(25); } delay(500); } |
В примере две функции up() и down(), при вызове их, на микросхему дается команда поднять или опустить ползунок.
Выходы VL, VW, VH модуля подключаются на место обычного потенциометра, это может быть управление контрастностью текстовых экранов 1602 или управление микросхемой линейного стабилизатора напряжения LM317.