Arduino:Примеры/BasicUse
Перейти к навигации
Перейти к поиску
Поддержать проект | Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.
Базовое использование[1]
Это скетч для библиотеки TLC5940 и платы Arduino, который демонстрирует, как при помощи одного или нескольких чипов TLC5940 показать на светодиодах анимацию из сериала «Рыцарь дорог».
Код
1 /*
2
3 Базовое использование
4
5 Настройка контактов:
6 ------------ ---u---
7 ARDUINO 13|-> SCLK (конт. 25) OUT1 |1 28| 0-ой вых. канал
8 12| OUT2 |2 27|-> GND (VPRG)
9 11|-> SIN (конт. 26) OUT3 |3 26|-> SIN (конт. 11)
10 10|-> BLANK (конт. 23) OUT4 |4 25|-> SCLK (конт. 13)
11 9|-> XLAT (конт. 24) . |5 24|-> XLAT (конт. 9)
12 8| . |6 23|-> BLANK (конт. 10)
13 7| . |7 22|-> GND
14 6| . |8 21|-> VCC (+5V)
15 5| . |9 20|-> резистор (2 кОм) -> GND
16 4| . |10 19|-> +5V (DCPRG)
17 3|-> GSCLK (конт. 18) . |11 18|-> GSCLK (конт. 3)
18 2| . |12 17|-> SOUT
19 1| . |13 16|-> XERR
20 0| OUT14 |14 15| 15-ый вых. канал
21 ---------- -------
22
23 - Подключите длинные ножки (аноды) светодиодов к +5V,
24 а короткие к (катоды) к OUT (0-15).
25 - +5V на Arduino -> конт. 21 и 19 (TLC) (VCC и DCPRG)
26 - GND на Arduino -> конт. 22 и 27 (TLC) (GND и VPRG)
27 - 3-ий цифр.конт. -> конт. 18 (TLC) (GSCLK)
28 - 9-ий цифр.конт. -> конт. 24 (TLC) (XLAT)
29 - 10-ий цифр.конт. -> конт. 23 (TLC) (BLANK)
30 - 11-ий цифр.конт. -> конт. 26 (TLC) (SIN)
31 - 13-ий цифр.конт. -> конт. 25 (TLC) (SCLK)
32 - Резистор на 2 кОм между 20-ым контактом TLC и GND позволит,
33 чтобы через каждый светодиод проходило примерно 20 мА.
34 Если еще точнее, то это ток рассчитывается
35 по формуле I = 39.06 / R (в омах). То есть этот показатель
36 не зависит от напряжения, управляющего светодиодом.
37 - (Опционально): Подключите подтягивающий резистор
38 (примерно на 10 кОм) между +5V и BLANK, чтобы
39 при сбросе Arduino все светодиоды выключались.
40
41 Если вы гирляндно подключили к цепи больше одного TLC,
42 подключите SOUT первого TLC к SIN следующего. Все остальные
43 контакты должны быть подключены вместе:
44
45 BLANK на Arduino -> BLANK на TLC1 -> BLANK на TLC2 -> ...
46 XLAT на Arduino -> XLAT на TLC1 -> XLAT на TLC2 -> ...
47
48 Но есть одно исключение – каждому TLC нужен резистор между
49 20-ым контактом и GND.
50
51 Эта библиотека использует ШИМ, которая генерируется на 3-ем,
52 9-ом, 10-ом и 11-ом контактах Arduino. Не используйте
53 на этих контактах функцию analogWrite(...).
54
55 Этот скетч делает на светодиодах анимацию из «Рыцаря дорог».
56
57 Создан 2009-02-03 Алексом Леоне (Alex Leone; acleone ~AT~ gmail.com)
58
59 */
60
61 #include "Tlc5940.h"
62
63 void setup()
64 {
65 /*
66 Вызываем функцию Tlc.init(), чтобы инициализировать TLC.
67 Опционально можно задать начальное значение ШИМ (0 – 4095),
68 которое будет использоваться на всех каналах.
69 */
70 Tlc.init();
71 }
72
73 /*
74 Если к выходным контактам TLC подключены светодиоды, то этот цикл
75 выполнит на них анимацию из «Рыцаря дорог». Значение NUM_TLC
76 задано в файле «tlc_config.h», который находится
77 в папке библиотеки. Отредактировав «tlc_config.h», удалите
78 файл «Tlc5940.o», чтобы сохранить изменения.
79 */
80
81 void loop()
82 {
83 int direction = 1;
84 for (int channel = 0; channel < NUM_TLCS * 16; channel += direction) {
85
86 /*
87 Функция Tlc.clear() сбрасывает все значения, отвечающие за оттенки
88 черного и белого, на ноль, но не отправляет их на TLC.
89 Чтобы отправить эти данные, используйте Tlc.update()
90 */
91 Tlc.clear();
92
93 /*
94 Функция Tlc.set(channel (0-15), value (0-4095)) задает
95 монохромное значение для одного канала («15» - это 15-ый выходной
96 контакт на первом TLC; если к цепи подключено несколько TLC,
97 то «16» - это 0-ый выходной контакт на втором TLC и т.д.).
98
99 Значения варьируются от «выкл» (0) до «вкл» (4095).
100
101 Как и Tlc.clear(), эта функция только задает значения, но не
102 отправляет их на TLC. За это отвечает Tlc.update().
103 */
104 if (channel == 0) {
105 direction = 1;
106 } else {
107 Tlc.set(channel - 1, 1000);
108 }
109 Tlc.set(channel, 4095);
110 if (channel != NUM_TLCS * 16 - 1) {
111 Tlc.set(channel + 1, 1000);
112 } else {
113 direction = -1;
114 }
115
116 /*
117 Функция Tlc.update() отправляет данные на TLC. Именно после
118 этого, собственно, и меняется значение на светодиоде.
119 */
120 Tlc.update();
121
122 delay(75);
123 }
124
125 }
См.также
Внешние ссылки