7 сегментный индикатор. Вопрос по статье

Тема в разделе "Arduino & Shields", создана пользователем ArcticBear, 11 май 2015.

  1. ArcticBear

    ArcticBear Нерд

    Здравствуйте, уважаемые!

    Для пром прибора ищу не дорогие и примитивные варианты вывода цифровой информации.
    Приглянулась мне статья на вики про 7 сегментные индикаторы

    Не могу понять, а как с помощью драйверов выводить числа с точкой?
    Например у меня 4 индикатора. 4 драйвера
    Я хочу вывести значение переменной на индикаторы, которые выглядит скажем 51.12

    Не совсем понимаю, как в таком случае будет выглядеть функция вывода.

    Подкиньте мысль ...
     
  2. ArcticBear

    ArcticBear Нерд

    Пришла мысль ... Использовать целые числа, т.е. вместо 51.12 использовать 5112
    Но может есть более резумные варианты ...
     
  3. DrProg

    DrProg Вечный нерд

    Мне больше нравится через регистры. Програмка чутка сложнее, но все гибче.
     
  4. ANV

    ANV Гуру

    счетчиками/декодерами обслуживают сегменты a-g, сегмент h, он-же dp (точка) обслуживается отдельно. Просто запитайте точку и будет она всегда светиться.
    Второй вариант - точку рисуют на приборной панели в нужном месте
     
  5. ArcticBear

    ArcticBear Нерд

    А как оперировать с самим числом? Сдвинуть запятую чтобы ее не было? Т.е. вместо 21.12 я буду использовать 2112 ?
     
  6. mike_KH

    mike_KH Гик

    А в чем проблема через драйвер подключаешь и отдельно точки к пинам
     
  7. ANV

    ANV Гуру

    Да
     
  8. ArcticBear

    ArcticBear Нерд

    Проблемы подключить точку нет.

    Т.е. если у меня 4 индикатора и 4 драйвера, то для вывода числа 1111 я в цикле считаю это число, и драйверы со сдвигом отображают его.
    Понял. Пожалуй по коду достаточно компактно получится ...
     
  9. Alex88

    Alex88 Нуб

    Ребят! Подскажите чем можно заменить данные индикаторы, на что опираться при выборе
    Нашел новые на сайте https://dartelektronik.eu/LTS4002KR-15623i, но хрен пойми как их от туда заказать, и ценник наверное будет за доставку, хотелось бы найти местные аналоги
     

    Вложения:

    • EhvwASiO0mE.jpg
      EhvwASiO0mE.jpg
      Размер файла:
      130,2 КБ
      Просмотров:
      534
    • nCz5PhxGe6w.jpg
      nCz5PhxGe6w.jpg
      Размер файла:
      133,1 КБ
      Просмотров:
      436
    • XT65S-I4siA.jpg
      XT65S-I4siA.jpg
      Размер файла:
      86,3 КБ
      Просмотров:
      428
  10. ANV

    ANV Гуру

    1. Понять они с общим анодом или катодом
    2. Вызвонить распиновку
    3. Замерить размеры
    4. Вспомнить какой был цвет
    Тогда можно искать аналоги
     
    Alex88 нравится это.
  11. b707

    b707 Гуру

    что мешает заказать на Али? Там сотни предложений...
     
  12. Alex88

    Alex88 Нуб

    Ничего не мешает, но сначала разобраться нужно, что конкретно заказывать)))
     
  13. ELITE

    ELITE Гик

  14. Alex88

    Alex88 Нуб

    Про гугл смешно))) видел этот фаил, но не нашел нужной модели, или это одной то же?
     
  15. kt315where

    kt315where Гик

    Я для индикаторов использую регистр 74hc595
    С регистром удобно - можно подцепить их "паравозиком" и подрубать любое количество сегментов
    Важно перед подключением еще раз проверить правильность выводов согласно даташиту (есть много разных версий этого регистра и там выводы поменяны местами). ну и еще сами индикаторы бывают разные - с общим катодом или общим анодом. В случае с регистром 74hc595 нужен индикатор с общим катодом.

    Кстати на этом же форуме я когда-то нашел очень хороший пост с скетчем, при правильном подходе он очень сильно облегчит работу с индикаторами, я в нём добавил заполнения ячеек регистра чтобы показывались цифры на 7 сегментом индикаторе:

    Код (C++):
    const byte latchPin = 3;
    const byte clockPin = 4;
    const byte dataPin = 2;


    byte number[] =
    {
      0b00000000, // Выключено
      0b00000001, // точка
      0b01111110, // 0
      0b00010010, // 1
      0b10111100, // 2
      0b10110110, // 3
      0b11010010, // 4
      0b11100110, // 5
      0b11101110, // 6
      0b00110010, // 7
      0b11111110, // 8
      0b11110110 // 9
      };


    void setup() {

    pinMode(latchPin, OUTPUT);
    pinMode(clockPin, OUTPUT);
    pinMode(dataPin, OUTPUT);

    }
    void loop() {

      digitalWrite (latchPin, LOW);

      shiftOut(dataPin, clockPin, MSBFIRST, number[11]); // здесь пишем номер байта которому соответствует цифра на индикаторе


      digitalWrite (latchPin, HIGH);
    }
     
  16. ostrov

    ostrov Гуру

    Точка включается и выключается одной логической операцией над байтом с закодированной цифрой. Если она есть на индикаторе, конечно.
     
    Последнее редактирование: 2 апр 2018
    ELITE нравится это.
  17. ELITE

    ELITE Гик

    МАХ 7219 / 7221 - до 8 8ми разрядных индикаторов
    ТМ1640 - 16 8ми разрядных или 8 16ти разрядных индикатора...

    проще некуда... и также можно лепить цепочкой ....

    обе по СПИ протоколу

    есть готовые библиотеки для них - проще вообще некуда...

    ну и как сказали - надо точк - добавьте в байт её
    |= B00000001
     
    Последнее редактирование: 2 апр 2018