Уважаемые ардуинщики, а кто в курсе, как вывести точку на четырехциферном индикаторе на TM1637. То есть, есть двоеточие для часов- с ним проблем нет, библиотеки его потдерживают. А вот как зажечь точки после цифр- ума не приложу, скачал уже три разные библиотеки, но точки пока не горят
Может у автора там и точки есть Обидно кстати, что сегменты под вывод секунд в таких дисплеях только в виде двоеточия...
Да, именно такой. Но видимо вы правы, могу зажигать любой сегмент, но даже передавая 8 единиц точка не горит. Пичаль
Есть и хорошая новость, точками можно управлять по отдельности, вобщем хоть на термометр сгодиться Если кому интересно, вот код (немного бардака из кусков примеров но с коментами и сылками на библиотеку) Код (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); };
Karabas, на фото выглядит красиво Что-то интересно стало, неужели в корпусе сделали отверстия под нижние светодиоды для точки, и не впаяли их? Может просто на схему не вывели?
Похоже на то, я даже подумал просверлить их и вставить смд, но боюсь поврежу дорожки. Возможно, это просто общий корпус, а ты выбераешь, либо точки, либо двоеточие... Не удивлюсь, если там и светодиоды есть и перемычка либо-либо.
Похоже, что, действительно, точками можно управлять по отдельности, НО НЕ НА ВСЕХ дисплеях! Видимо можно, например, на дисплеях производства RobotDyn (как на фото выше). А у меня есть вот такой дисплейчик, раза в два дешевле: Так вот на нём точки физически запараллелены и зажигаются установкой в 1 старшего бита третьей цифры (или второй, не помню точно), по аналогии с десятичной точкой. Так что включить на нём отдельно нижнюю точку можно, разве что высверлив физически верхний светодиод
Приобрел 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);