Индикатор TM1637 с точкой

Тема в разделе "Arduino & Shields", создана пользователем Karabas, 2 авг 2016.

  1. Karabas

    Karabas Гик

    Уважаемые ардуинщики, а кто в курсе, как вывести точку на четырехциферном индикаторе на TM1637.
    То есть, есть двоеточие для часов- с ним проблем нет, библиотеки его потдерживают.
    А вот как зажечь точки после цифр- ума не приложу, скачал уже три разные библиотеки, но точки пока не горят :(
     
  2. alex-prog

    alex-prog Гик

    Ищу в поиске, но на картинках там только двоеточие. Может добавите картинку, как он у Вас выглядит?
     
  3. это потому что модуль для часов, нет в нем точек.
     
  4. alex-prog

    alex-prog Гик

    Может у автора там и точки есть :D

    Обидно кстати, что сегменты под вывод секунд в таких дисплеях только в виде двоеточия...
     
  5. [​IMG]

    точки там есть, только светодиодов в них нет.
     
  6. alex-prog

    alex-prog Гик

    Физически нет даже?
     
  7. Karabas

    Karabas Гик

    Да, именно такой. Но видимо вы правы, могу зажигать любой сегмент, но даже передавая 8 единиц точка не горит.
    Пичаль :(
     
  8. alex-prog

    alex-prog Гик

    Так вопрос в том, есть ли там физически светодиод, или нет?
     
  9. [​IMG]
    [​IMG]
     
    alex-prog нравится это.
  10. Karabas

    Karabas Гик

    Есть и хорошая новость, точками можно управлять по отдельности, вобщем хоть на термометр сгодиться
    IMG_5245.JPG
    Если кому интересно, вот код (немного бардака из кусков примеров но с коментами и сылками на библиотеку)
    Код (C++):
    /*
        Basic usage example

        Demonstrated some of the basic functionality of the library. Initialize the display, set the backlight brightness, print some text, count from 0 to 100 and print on display and blink some text.

      Note: make sure to set your serial monitor to line end: NEW LINE!

        The circuit:
      * connect TM1637 pin CLK to Arduino pin D4
      * connect TM1637 pin DIO to Arduino pin D5
      * connect TM1637 pin Vcc to Arduino pin 5V
      * connect TM1637 pin GND to Arduino pin GND

        Created 25 September 2015
        By Bram Harmsen

        https://github.com/bremme/arduino-tm1637

    */


    // include the SevenSegmentTM1637 library
    #include "SevenSegmentTM1637.h"
    #include <OneWire.h>
    #include <DallasTemperature.h>
    #define ONE_WIRE_BUS 2
    /* initialize global TM1637 Display object
    *  The constructor takes two arguments, the number of the clock pin and the digital output pin:
    * SevenSegmentTM1637(byte pinCLK, byte pinDIO);
    */

    const byte PIN_CLK = 4;   // define CLK pin (any digital pin)
    const byte PIN_DIO = 5;   // define DIO pin (any digital pin)
    SevenSegmentTM1637    display(PIN_CLK, PIN_DIO);
    OneWire oneWire(ONE_WIRE_BUS);
    DallasTemperature sensors(&oneWire);
    int temp ;
    //int dec  =  5;
    uint8_t _char = B11100011;

    // run setup code
    void setup() {
        Serial.begin(9600);
      display.begin();            // initializes the display
      display.setBacklight(100);  // set the brightness to 100 %
      sensors.begin();
    };

    // run loop (forever)
    void loop() {
      sensors.requestTemperatures();
      temp = (sensors.getTempCByIndex(0))*10;
    //  display.setCursor(0, 0);
      display.print(temp);
    //  display.setCursor(0, 2);
    //  display.print(dec);
      display.printRaw(& _char, 1, 3);
    };
     
    Пушной звер и alex-prog нравится это.
  11. alex-prog

    alex-prog Гик

    Karabas, на фото выглядит красиво ;)

    Что-то интересно стало, неужели в корпусе сделали отверстия под нижние светодиоды для точки, и не впаяли их? Может просто на схему не вывели?
     
  12. Karabas

    Karabas Гик

    Похоже на то, я даже подумал просверлить их и вставить смд, но боюсь поврежу дорожки.
    Возможно, это просто общий корпус, а ты выбераешь, либо точки, либо двоеточие... Не удивлюсь, если там и светодиоды есть и перемычка либо-либо.
     
  13. OSBoy

    OSBoy Нуб

    Похоже, что, действительно, точками можно управлять по отдельности, НО НЕ НА ВСЕХ дисплеях! Видимо можно, например, на дисплеях производства RobotDyn (как на фото выше).
    А у меня есть вот такой дисплейчик, раза в два дешевле:
    [​IMG]
    Так вот на нём точки физически запараллелены и зажигаются установкой в 1 старшего бита третьей цифры (или второй, не помню точно), по аналогии с десятичной точкой. Так что включить на нём отдельно нижнюю точку можно, разве что высверлив физически верхний светодиод :)
     
    Последнее редактирование: 20 фев 2017
  14. a91234

    a91234 Нерд

    Приобрел 7 сегментный индикатор RobotDyn, в нем нет точек для часов, но есть десятичные точки в каждом индикаторе. Использую доработанную библиотеку TM1637.h (не SevenSegmentTM1637.h), в ней есть символы градуса, 'r' & 'h' и др. Есть 2 варианта включения точек: 1-ставить display.point(false) или display.point(true) перед каждым блоком, 2 - через setSegments(3, 0b10000000);. Оба варианта работают, точки зажигаются (значит светодиоды есть, это радует) но надо чтобы кроме точки был на индикаторе символ, который формируется из массива и отключается, если включаю точку. Как это можно реализовать? Точка нужна для отделения десятичных значения градусника.
    Код (C++):
    int8_t TemperDisp[] = {0x00,0x00,0x00,0x00};
    TemperDisp[0]= Raw1;
    TemperDisp[1]= Raw2;
    TemperDisp[2]= Raw3;
    TemperDisp[3]= 18;
    disp.display(TemperDisp);
    //setSegments(2, 0b10000000);
     
    Последнее редактирование: 3 янв 2018