Arduino:Примеры/BasicUse

Материал из Онлайн справочника
Перейти к навигации Перейти к поиску

Перевод: Максим Кузьмин (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 }

См.также

Внешние ссылки