Arduino:Примеры/DigitalPotentiometer
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Управление цифровым потенциометром AD5171 с помощью библиотеки Wire [1]
Этот пример показывает, как при помощи библиотеки Wire управлять цифровым потенциометром AD5171 от Analog Devices, который коммуницирует через синхронный последовательный протокол I2C. Мы настроим потенциометр таким образом, чтобы он преодолевал 64 уровня сопротивления, тем самым меняя яркость светодиода.
В протоколе I2C для отправки и передачи данных используется два контакта: Serial Clock (SCL), через который Arduino отбивает тактовый импульс, и Serial Data (SDA), по которому и проходит обмен данными между девайсами.
Если тактовый импульс меняется с LOW на HIGH (этот сценарий известен как «положительный фронт тактового сигнала»), Arduino через SDA-линию отсылает I2C-девайсу бит информации, содержащий адрес конкретного устройства, а также запрос на отправку данных. Если тактовый импульс меняется с HIGH на LOW («отрицательный фронт тактового сигнала»), «разбуженный» I2C-девайс в ответ на запрос отсылает Arduino необходимые данные по той же SDA-линии.
Поскольку I2C-протокол позволяет всем подключенным девайсам иметь свой уникальный адрес, а оба устройства (и ведущее, и ведомое) обмениваются информацией по одной и той же линии, Arduino может коммуницировать с несколькими девайсами (но по очереди), при этом используя лишь два контакта микроконтроллера.
Необходимое оборудование
- Плата Arduino;
- Цифровой потенциометр AD5171;
- Светодиод;
- Резистор на 220 Ом;
- Два резистора на 4,7 кОм;
- Макетная плата Breadboard;
- Провода-перемычки;
Цепь
Подключите 3-ий, 6-ой и 7-ой контакты AD5171 к «земле», а 2-ой и 8-ой контакты – к +5V.
Контакт номер 4 потенциометра (т.е. SCL, используется для тактового импульса) подключите к 5-ому аналоговому контакту на Arduino, а контакт номер 5 (т.е. SDA, используется для передачи данных) – к 4-ому аналоговому контакту.
Также к каждой из этих линий (и к SCL, и к SDA) добавьте по одному подтягивающему резистору и подсоедините их к +5V.
Наконец, подключите светодиод к 1-ому контакту AD5171 (т.е. к его движку), но через 220-омовый резистор.
Когда 6-ой контакт AD5171 (т.е. ADO) подсоединен к «земле», его адрес – это «44». Чтобы добавить к той же SDA-шине еще один цифровой потенциометр, подключите его ADO-контакт к +5V, и это сменит его адрес на «45».
Одновременно можно использовать только два таких цифровых потенциометра.
Схема
Код
// Управление цифровым потенциометром через I2C
// от Николаса Замбетти (Nicholas Zambetti, http://www.zambetti.com)
// и Шона Бонковски (Shawn Bonkowski, http://people.interaction-ivrea.it/s.bonkowski)
// Демонстрирует использование библиотеки Wire.
// Управляет цифровым потенциометром AD5171 через I2C/TWI.
// Создан 31 марта 2006.
// Этот код не защищен авторским правом.
#include <Wire.h>
void setup()
{
Wire.begin(); // подключаем шину I2C (для ведущего устройства адрес опционален)
}
byte val = 0;
void loop()
{
Wire.beginTransmission(44); // начинаем передачу данных девайсу #44 (0x2c);
// этот адрес указан в «даташите»
Wire.write(byte(0x00)); // отсылаем байт с инструкцией
Wire.write(val); // отсылаем байт со значением от потенциометра
Wire.endTransmission(); // останавливаем передачу данных
val++; // увеличиваем значение
if(val == 64) // если достигли 64-ой позиции (т.е. максимума)...
{
val = 0; // ...начинаем с самого низкого значения
}
delay(500);
}
См.также
- Wire.begin()
- Wire.beginTransmission()
- Wire.endTransmission()
- Wire.send()
- Wire Library
- SFRRanger_reader
- Master Reader/Slave Writer
- Master Writer/Slave receiver
- SPIDigitalPot
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |
- Страницы, использующие повторяющиеся аргументы в вызовах шаблонов
- Справочник языка Arduino
- Arduino
- Перевод от Сubewriter
- Проверка:myagkij
- Оформление:myagkij
- Редактирование:myagkij
- Страницы, где используется шаблон "Навигационная таблица/Телепорт"
- Страницы с телепортом
- Пример
- Примеры
- Пример программирования Arduino
- Примеры программирования Arduino