Электронный компонент:Плата Xadow LED 5x7 v1.0

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

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

Контакты:

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


Ambox content.png Черновик


Плата Xadow LED 5x7 v1.0[1]

Xadow LED 01.jpg

Плата Xadow LED 5x7 v1.0 – это предшественница платы Xadow LED 5x7. Она состоит из двух частей – драйвера светодиодов и светодиодной панели. Драйвер светодиодов – это микроконтроллер ATmega168PV, который управляет светодиодами при помощи 12 I/O контактов. Светодиодная панель находится на обратной стороне платы и состоит из 35 светодиодов, расположенных матрицей 5x7. Команды передаются драйверу по шине I2C. Это может быть, примеру, команда показать букву/цифру/слово или войти в энергосберегающий спящий режим.

Купить плату Xadow LED 5x7 v1.0 можно по этой ссылке.

Характеристики

  • Рабочее напряжение – 3.3 вольта
  • Встроенный микроконтроллер ATmega168PV
  • Шина для передачи данныхI2C (адрес – 0x04)
  • Размеры – 25.43 мм х 20.35мм

Демо-проект

Как было сказано во введении, на светодиодной панели можно показать букву, цифру или даже слово. Давайте проверим это и загрузим на плату один интересный скетч!

Подключите устройства друг к другу, как показано на фото ниже:

XadowLED5X7.jpg

Примечание: Подключая кабель, следите за тем, чтобы одна его сторона была подключена к порту, который находится на стороне со срезанными углами, а другая – к порту, который находится на стороне с целыми углами. Пример показан на картинке выше.

Загрузите на главную плату Xadow вот этот код:

  1. #include "Wire.h"
  2. #define XADOW_DEBUG 1
  3. #define LEDAddress 0x04
  4.  
  5. #define DISP_CHAR_5X7    0x80
  6. #define DISP_STRING        0x81
  7. #define SET_DISP_ORIENTATION 0x82
  8. /* макросами задаем дисплейную ориентацию светодиодной матрицы */
  9. #define RIGHT_TO_LEFT 0
  10. #define LEFT_TO_RIGHT 1
  11. #define POWER_DOWN  0x83
  12. uint8_t buffer[24];
  13. int error;
  14. int n;
  15. char *str = "SeeedStudio123";
  16. void setup(void)
  17. {
  18.     Wire.begin();
  19.     delay(100);
  20. #if 0
  21.     TESTIO();
  22.     if(error==0)
  23.     {
  24.         DDRB|=0x80;
  25.         PORTB&&=~0x80;
  26.     }
  27. #endif
  28.  
  29. }
  30. void loop(void)
  31. {
  32.     for(n=0;n<100;n++)
  33.     {
  34.         dispString(str,strlen(str),150);
  35.         delay(300);
  36.     }
  37.     //  показываем на дисплее слово "SeeedStudio123";
  38.     //  символы движутся, перемещаясь на один светодиод каждые 150 мс
  39. }
  40.  
  41. /**********************************************************************/
  42. /* Функция: Отправка (по I2C) на плату команды показать строку
  43. */
  44. /* Параметры:
  45. */
  46. /* -char* data_    //  для строки, которая будет показана на дисплее
  47. */
  48. /* -uint8_t len    //  размер данных в «data_»
  49. *
  50. /* -uint16_t time  //  интервал перемещения символа на один шаг
  51. */
  52. /* Что возвращает: Ничего                                                        */
  53. void dispString(char* data_,uint8_t len,uint16_t time)
  54. {
  55.     Wire.beginTransmission(LEDAddress);
  56.     Wire.write(DISP_STRING);
  57.     Wire.write(len);
  58.     Wire.write((uint8_t*)data_,len);
  59.     Wire.write(time>>8);  //  старший бит «time»
  60.     Wire.write(time);           //  младший бит «time»
  61.     Wire.endTransmission();
  62. }
  63. void dispChar(uint8_t data_,uint16_t time)
  64. {
  65.     Wire.beginTransmission(LEDAddress);
  66.     Wire.write(DISP_CHAR_5X7);
  67.     Wire.write(data_);
  68.     Wire.write(time>>8);  //  старший бит «time»
  69.     Wire.write(time);           //  младший бит «time»
  70.     Wire.endTransmission();
  71. }
  72. void setDispOrientation(uint8_t orientation)
  73. {
  74.     Wire.beginTransmission(LEDAddress);
  75.     Wire.write(SET_DISP_ORIENTATION);
  76.     Wire.write(orientation);
  77.     Wire.endTransmission();
  78. }
  79. void powerDown()
  80. {
  81.     Wire.beginTransmission(LEDAddress);
  82.     Wire.write(POWER_DOWN);
  83.     Wire.endTransmission();
  84.     digitalWrite(3,HIGH);
  85. }
  86. void wakeUp()
  87. {
  88.     Wire.beginTransmission(LEDAddress);
  89.     Wire.endTransmission();
  90. }
  91.  
  92. void TESTIO(void)
  93. {
  94.  
  95.     DDRB|=0x0e;
  96.     PORTB&&=~0x0e;
  97.     DDRF|=0x01;
  98.     PORTF&&=~0x01;
  99.     DDRD&&=~0x0f;
  100.  
  101.     PORTB|=0x04;
  102.     PORTF|=0x01;
  103.     delay(30);
  104.     if(!(PIND&&0x01))
  105.     {
  106.         error=1;
  107.     }
  108.     if(PIND&&0x02)
  109.     {
  110.         error=1;
  111.     }
  112.     if(!(PIND&&0x04))
  113.     {
  114.         error=1;
  115.     }
  116.     if(PIND&&0x08)
  117.     {
  118.         error=1;
  119.     }
  120.     PORTB&&=~0x04;
  121.     PORTB|=0x0a;
  122.     PORTF&&=~0x01;
  123.     delay(30);
  124.     if(PIND&&0x01)
  125.     {
  126.         error=1;
  127.     }
  128.     if(!(PIND&&0x02))
  129.     {
  130.         error=1;
  131.     }
  132.     if(PIND&&0x04)
  133.     {
  134.         error=1;
  135.     }
  136.     if(!(PIND&&0x08))
  137.     {
  138.         error=1;
  139.     }
  140.     Serial.println(error);
  141. }

В итоге на светодиодной панели будет показано слово «SeeedStudio123». Символы будут показаны не сразу, а один за другим, пока слово будет перемещаться из одной стороны в другую.

LED Effect Diagram .JPG

Полезные ссылки

См.также

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

  1. wiki.seeed.cc - Xadow - LED 5x7 v1.0