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

Материал из Онлайн справочника
Версия от 12:51, 30 декабря 2017; Myagkij (обсуждение | вклад)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску

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


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

Плата 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мм

Демо-проект

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

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

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

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

#include "Wire.h"
#define XADOW_DEBUG 1
#define LEDAddress 0x04

#define DISP_CHAR_5X7    0x80
#define DISP_STRING        0x81
#define SET_DISP_ORIENTATION 0x82
/* макросами задаем дисплейную ориентацию светодиодной матрицы */
#define RIGHT_TO_LEFT 0
#define LEFT_TO_RIGHT 1
#define POWER_DOWN  0x83
uint8_t buffer[24];
int error;
int n;
char *str = "SeeedStudio123";
void setup(void)
{
    Wire.begin();
    delay(100);
#if 0
    TESTIO();
    if(error==0)
    {
        DDRB|=0x80;
        PORTB&&=~0x80;
    }
#endif

}
void loop(void)
{
    for(n=0;n<100;n++)
    {
        dispString(str,strlen(str),150);
        delay(300);
    }
    //  показываем на дисплее слово "SeeedStudio123";
    //  символы движутся, перемещаясь на один светодиод каждые 150 мс
}

/**********************************************************************/
/* Функция: Отправка (по I2C) на плату команды показать строку
*/
/* Параметры:
*/
/* -char* data_    //  для строки, которая будет показана на дисплее
*/
/* -uint8_t len    //  размер данных в «data_»
*
/* -uint16_t time  //  интервал перемещения символа на один шаг
*/
/* Что возвращает: Ничего                                                        */
void dispString(char* data_,uint8_t len,uint16_t time)
{
    Wire.beginTransmission(LEDAddress);
    Wire.write(DISP_STRING);
    Wire.write(len);
    Wire.write((uint8_t*)data_,len);
    Wire.write(time>>8);  //  старший бит «time»
    Wire.write(time);           //  младший бит «time»
    Wire.endTransmission();
}
void dispChar(uint8_t data_,uint16_t time)
{
    Wire.beginTransmission(LEDAddress);
    Wire.write(DISP_CHAR_5X7);
    Wire.write(data_);
    Wire.write(time>>8);  //  старший бит «time»
    Wire.write(time);           //  младший бит «time»
    Wire.endTransmission();
}
void setDispOrientation(uint8_t orientation)
{
    Wire.beginTransmission(LEDAddress);
    Wire.write(SET_DISP_ORIENTATION);
    Wire.write(orientation);
    Wire.endTransmission();
}
void powerDown()
{
    Wire.beginTransmission(LEDAddress);
    Wire.write(POWER_DOWN);
    Wire.endTransmission();
    digitalWrite(3,HIGH);
}
void wakeUp()
{
    Wire.beginTransmission(LEDAddress);
    Wire.endTransmission();
}

void TESTIO(void)
{

    DDRB|=0x0e;
    PORTB&&=~0x0e;
    DDRF|=0x01;
    PORTF&&=~0x01;
    DDRD&&=~0x0f;

    PORTB|=0x04;
    PORTF|=0x01;
    delay(30);
    if(!(PIND&&0x01))
    {
        error=1;
    }
    if(PIND&&0x02)
    {
        error=1;
    }
    if(!(PIND&&0x04))
    {
        error=1;
    }
    if(PIND&&0x08)
    {
        error=1;
    }
    PORTB&&=~0x04;
    PORTB|=0x0a;
    PORTF&&=~0x01;
    delay(30);
    if(PIND&&0x01)
    {
        error=1;
    }
    if(!(PIND&&0x02))
    {
        error=1;
    }
    if(PIND&&0x04)
    {
        error=1;
    }
    if(!(PIND&&0x08))
    {
        error=1;
    }
    Serial.println(error);
}

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

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

См.также

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