Arduino:Примеры/Регулировка яркости светодиодов с помощью двух SPI цифровых потенциометров MCP4231
Перейти к навигации
Перейти к поиску
Поддержать проект | Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Проверка/Оформление/Редактирование: Мякишев Е.А.
![]() |
Черновик |
Содержание
Регулировка яркости светодиодов с помощью двух SPI цифровых потенциометров MCP4231
Данный пример демонстрирует управление яркостью светодиодов с помощью цифровых потенциометров с использованием библиотеки SPI.
Необходимые компоненты
- Плата Arduino Uno, 1 шт.;
- Цифровой потенциометр MCP4231, 2 шт.;
- Резистор на 100 Ом, 4 шт.;
- Светодиод(можно разных цветов), 4 шт.;
- Макетная плата;
- Провода перемычки;
Монтажная схема
Соберите схему согласно монтажной схеме.

Распиновка цифрового потенциометра MCP4231
Код
1 #include <SPI.h> // Подключение SPI библиотеки
2
3 // Помните при подключении библиотеки SPI
4 // контактами MOSI, MISO и CLK по умолчанию
5 // будут следующие цифровые контакты Arduino:
6 // 11 = MOSI, 12 = MISO, 13 = CLK
7 const int SS1=10; // SS-контакт(Slave Select, т.е. контакт выбора ведомого устройства) 1-ой микросхемы MCP4231
8 const int SS2=9; // SS-контакт(Slave Select, т.е. контакт выбора ведомого устройства) 2-ой микросхемы MCP4231
9
10 const byte REG0=B00000000; // Команда записи в регистр 0 т.е. выбор 1-го потенциометра
11 const byte REG1=B00010000; // Команда записи в регистр 1 т.е. выбор 2-го потенциометра
12
13 void setup()
14 {
15 pinMode(SS1, OUTPUT); // Установка SS1-контакта как выход
16 pinMode(SS2, OUTPUT); // Установка SS2-контакта как выход
17
18 SPI.begin(); // Инициализация SPI-интерфейса
19 }
20
21 /*
22 * Функция управления яркостью светодиодов
23 * SS - контакт выбора ведомого устройства(микросхемы MCP4231)
24 * reg - адрес регистра потенциометра выбранной микросхемы MCP4231
25 * level - значение сопротивления
26 * Возможные варианты вызова:
27 * setLed(SS1, REG0, значение от 0 до 128) - выбор 1-ой микросхемы MCP4231, 1-го потенциометра и 1-ый светодиод(в данном случае)
28 * setLed(SS1, REG1, значение от 0 до 128) - выбор 1-ой микросхемы MCP4231, 2-го потенциометра и 3-ый светодиод(в данном случае)
29 * setLed(SS2, REG0, значение от 0 до 128) - выбор 2-ой микросхемы MCP4231, 1-го потенциометра и 2-ый светодиод(в данном случае)
30 * setLed(SS2, REG1, значение от 0 до 128) - выбор 2-ой микросхемы MCP4231, 2-го потенциометра и 4-ый светодиод(в данном случае)
31 */
32 void setLed(int SS, int reg, int level)
33 {
34 digitalWrite(SS, LOW); // Установить низкий уровень на контакте SS
35 SPI.transfer(reg); // Отправка команды (адрес регистра 1-го или 2-го потенциометра)
36 SPI.transfer(level); // Отправка значений (0-128) величины сопротивления
37 digitalWrite(SS, HIGH); // Установить высокий уровень на контакте SS
38 }
39
40 void loop()
41 {
42 for (int i = 0; i <= 128; i++)
43 {
44 setLed(SS1, REG0, i);
45 setLed(SS1, REG1, i);
46 setLed(SS2, REG0, i);
47 setLed(SS2, REG1, i);
48 delay(10);
49 }
50 delay(300);
51
52 for (int i = 128; i >= 0; i--)
53 {
54 setLed(SS1, REG0, i);
55 setLed(SS1, REG1, i);
56 setLed(SS2, REG0, i);
57 setLed(SS2, REG1, i);
58 delay(10);
59 }
60 delay(300);
61 }
См.также
Внешние ссылки