Как подключить LED Display Module for Arduino 595 Driver

Тема в разделе "Схемотехника, компоненты, модули", создана пользователем Игорюшка Владимирович, 8 май 2016.

  1. Приехал надысь
    http://ru.aliexpress.com/item/J34-F...2401419391.html?spm=2114.10010208.0.47.TXirQz
    На сайте есть красивые картиночки.
    Первый раз в руках у меня такая игрушка и хочЮ поделиться впечатлением о нём - может кому пригодиться.
    По мере её изучения (с вашей помощью), планирую использовать этот индикатор в нескольких само-делках.
    Выглядит вполне аккуратно (по сравнению с моим ХОум-мейдем :)) .
    Первоначальную инфу и как подключить модуль к Ардуино - мне очень помогло Видео


    Там же есть "простой пример" для пробного теста ( у меня заработало с первого ррраза) и библиотека.
    Если у кого-нибудь есть опыт работы с таким модулем, делитесь тут впечатлениями и примерами -
    новичкам вроде меня будет очень полезно.
    Сапсибо ! :)
     
  2. А тут интересное описание подключения подобного модуля на восемь разрядов
    http://ucheba33.ru/?p=206 через библиотеку SPI
     
  3. Tomasina

    Tomasina Сушитель лампочек Модератор

    как на нем вывести не цифры, а нужные мне символы?
    Например, минус, t, C, H, рамку?
     
  4. Я только учЮсь ...:rolleyes:
    Думается, что "рисунками" из зажжённых сегментов занимается
    //перекодировка символа в 7-сегментное представление
    byte CodeSeven(char inv)
    { byte rez; switch (inv)
    { case '0': rez = 0xc0; //"0" все светятся кроме G break;
    или
    case '5': rez = 0x92;

    - т.е. некая маска отображения числа на семисегметной "ячейке".
    наверное 0xc0; - это и есть её представление в виде 16(?)-тиричном виде. А вот взять такую маску можно из описи-датшита конкретного индикатора (не модуля). Там такие видел в виде таблицы. :eek:

    Тут принцип http://wiki.amperka.ru/конспект-arduino:секундомер
    // Нам достаточно всего байта (англ. byte, 8 бит) для хранения // комбинации сегментов для каждой из цифр. byte numberSegments[10] = { 0b00111111, 0b00001010, 0b01011101, 0b01011110, 0b01101010, 0b01110110, 0b01110111, 0b00011010, 0b01111111, 0b01111110, };
     
    Последнее редактирование: 8 май 2016
  5. Вот для этого индикатора состряпал (читать: из двух примеров кое-кака в один - да простят меня гуру :oops: ) пробник на индикацию переменной:
    Код (C++):
    //выводим значение pot для индикатора
    #define SCLK 7  // пины ардуины
    #define RCLK 6  
    #define DIO 5  
    byte digitBuffer[4];

    void setup()
    {
      pinMode(RCLK, OUTPUT);
      pinMode(SCLK, OUTPUT);
      pinMode(DIO, OUTPUT);
    }

    void loop()
    {
    // значения для индикатора делим на разряды
      int pot ;
      pot=2461; // пробное значения с параметра должно быть на индикаторе
          int x1;
          int x2;
          int x3;
          int x4;

          x4 = (pot / 1000) % 10;
          x3 = (pot /100)% 10;
          x2 = (pot / 10) % 10 ;
          x1 =  pot % 10;
     
      // заполняем массив
      digitBuffer[0] = x4;
      digitBuffer[1] = x3;
      digitBuffer[2] = x2;
      digitBuffer[3] = x1;

      // однократно выводим данные из массива на 7сигмент
      // тоесть функция должна постоянно крутится.
      showDisplay();
    }

    void showDisplay(){

      const byte digit[10] = {  // маска для 7 сигментного индикатора
          0b11000000, // 0
          0b11111001, // 1
          0b10100100, // 2
          0b10110000, // 3
          0b10011001, // 4
          0b10010010, // 5
          0b10000010, // 6
          0b11111000, // 7
          0b10000000, // 8
          0b10010000, // 9
      };

      const byte chr[4] = { // маска для разряда
          0b00001000,
          0b00000100,
          0b00000010,
          0b00000001
      };

      // отправляем в цикле по два байта в сдвиговые регистры
      for(byte i = 0; i <= 3; i++){
        digitalWrite(RCLK, LOW); // открываем защелку
          shiftOut(DIO, SCLK, MSBFIRST, digit[digitBuffer[i]]);  // отправляем байт с "числом"
          shiftOut(DIO, SCLK, MSBFIRST, chr[i]);   // включаем разряд
        digitalWrite(RCLK, HIGH); // защелкиваем регистры
        delay(1); // ждем немного перед отправкой следующего "числа"
      }
    }

     
    Тут можно с масками одного разряда поиграться - мож "Н" и получится :).