Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/BasicUse

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Базовое использование[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. }

См.также

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

  1. github.com - BasicUse.pde