Arduino:Примеры/BasicUse
Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.
Базовое использование[1]
Это скетч для библиотеки TLC5940 и платы Arduino, который демонстрирует, как при помощи одного или нескольких чипов TLC5940 показать на светодиодах анимацию из сериала «Рыцарь дорог».
Код
/*
Базовое использование
Настройка контактов:
------------ ---u---
ARDUINO 13|-> SCLK (конт. 25) OUT1 |1 28| 0-ой вых. канал
12| OUT2 |2 27|-> GND (VPRG)
11|-> SIN (конт. 26) OUT3 |3 26|-> SIN (конт. 11)
10|-> BLANK (конт. 23) OUT4 |4 25|-> SCLK (конт. 13)
9|-> XLAT (конт. 24) . |5 24|-> XLAT (конт. 9)
8| . |6 23|-> BLANK (конт. 10)
7| . |7 22|-> GND
6| . |8 21|-> VCC (+5V)
5| . |9 20|-> резистор (2 кОм) -> GND
4| . |10 19|-> +5V (DCPRG)
3|-> GSCLK (конт. 18) . |11 18|-> GSCLK (конт. 3)
2| . |12 17|-> SOUT
1| . |13 16|-> XERR
0| OUT14 |14 15| 15-ый вых. канал
---------- -------
- Подключите длинные ножки (аноды) светодиодов к +5V,
а короткие к (катоды) к OUT (0-15).
- +5V на Arduino -> конт. 21 и 19 (TLC) (VCC и DCPRG)
- GND на Arduino -> конт. 22 и 27 (TLC) (GND и VPRG)
- 3-ий цифр.конт. -> конт. 18 (TLC) (GSCLK)
- 9-ий цифр.конт. -> конт. 24 (TLC) (XLAT)
- 10-ий цифр.конт. -> конт. 23 (TLC) (BLANK)
- 11-ий цифр.конт. -> конт. 26 (TLC) (SIN)
- 13-ий цифр.конт. -> конт. 25 (TLC) (SCLK)
- Резистор на 2 кОм между 20-ым контактом TLC и GND позволит,
чтобы через каждый светодиод проходило примерно 20 мА.
Если еще точнее, то это ток рассчитывается
по формуле I = 39.06 / R (в омах). То есть этот показатель
не зависит от напряжения, управляющего светодиодом.
- (Опционально): Подключите подтягивающий резистор
(примерно на 10 кОм) между +5V и BLANK, чтобы
при сбросе Arduino все светодиоды выключались.
Если вы гирляндно подключили к цепи больше одного TLC,
подключите SOUT первого TLC к SIN следующего. Все остальные
контакты должны быть подключены вместе:
BLANK на Arduino -> BLANK на TLC1 -> BLANK на TLC2 -> ...
XLAT на Arduino -> XLAT на TLC1 -> XLAT на TLC2 -> ...
Но есть одно исключение – каждому TLC нужен резистор между
20-ым контактом и GND.
Эта библиотека использует ШИМ, которая генерируется на 3-ем,
9-ом, 10-ом и 11-ом контактах Arduino. Не используйте
на этих контактах функцию analogWrite(...).
Этот скетч делает на светодиодах анимацию из «Рыцаря дорог».
Создан 2009-02-03 Алексом Леоне (Alex Leone; acleone ~AT~ gmail.com)
*/
#include "Tlc5940.h"
void setup()
{
/*
Вызываем функцию Tlc.init(), чтобы инициализировать TLC.
Опционально можно задать начальное значение ШИМ (0 – 4095),
которое будет использоваться на всех каналах.
*/
Tlc.init();
}
/*
Если к выходным контактам TLC подключены светодиоды, то этот цикл
выполнит на них анимацию из «Рыцаря дорог». Значение NUM_TLC
задано в файле «tlc_config.h», который находится
в папке библиотеки. Отредактировав «tlc_config.h», удалите
файл «Tlc5940.o», чтобы сохранить изменения.
*/
void loop()
{
int direction = 1;
for (int channel = 0; channel < NUM_TLCS * 16; channel += direction) {
/*
Функция Tlc.clear() сбрасывает все значения, отвечающие за оттенки
черного и белого, на ноль, но не отправляет их на TLC.
Чтобы отправить эти данные, используйте Tlc.update()
*/
Tlc.clear();
/*
Функция Tlc.set(channel (0-15), value (0-4095)) задает
монохромное значение для одного канала («15» - это 15-ый выходной
контакт на первом TLC; если к цепи подключено несколько TLC,
то «16» - это 0-ый выходной контакт на втором TLC и т.д.).
Значения варьируются от «выкл» (0) до «вкл» (4095).
Как и Tlc.clear(), эта функция только задает значения, но не
отправляет их на TLC. За это отвечает Tlc.update().
*/
if (channel == 0) {
direction = 1;
} else {
Tlc.set(channel - 1, 1000);
}
Tlc.set(channel, 4095);
if (channel != NUM_TLCS * 16 - 1) {
Tlc.set(channel + 1, 1000);
} else {
direction = -1;
}
/*
Функция Tlc.update() отправляет данные на TLC. Именно после
этого, собственно, и меняется значение на светодиоде.
*/
Tlc.update();
delay(75);
}
}