понравились... купил под свой проект сразу 8 штук. управление очень простое, цеплял через I2C.
До этого игрался с индикатором от грове http://www.seeedstudio.com/wiki/Grove_-_4-Digit_Display
, об этом мнение не однозначное, как просто часики, пойдет, а вот когда нужно обслуживать несколько, никаких пинов не хватит.
ну и небольшой кусочек кода.. инициализация вначале нужна, т.к. запоминает состояние в которым был выключен... у меня раздельное питание с ардуиной..
Код: Выделить всё
//Given a number, i2cSendValue chops up an integer into four values and sends them out over I2C
void initDisplay(int display_address) {
Wire.beginTransmission(display_address);
Wire.write(0x76); //очистка дисплея
Wire.write(0x79); //Cursor control 0x79 0-3 0=left=most, 3=right-most
Wire.write(0x00); //Cursor control 0x79 0-3 0=left=most, 3=right-most
Wire.write(0x7A); // Brightness control command
Wire.write(100); // Set brightness level: 0% to 100%
Wire.write(0x77); // Decimal control command
Wire.write(0b00000000); // Turns on colon, apostrophoe, and far-right decimal
// I2C address Config 0x80 1-126 Data byte is I2C addres
// Factory reset 0x81 None
// https://github.com/sparkfun/Serial7SegmentDisplay/wiki/Special-Commands
Wire.endTransmission();
}
void DispBrightness(int display_address,int Brightness) { // контроль яркости дисплея 0-100%
if(Brightness>0 && Brightness<=100) {
Wire.beginTransmission(DISPLAY_ADDRESS1);
Wire.write(0x7A); // Brightness control command
Wire.write(Brightness); // Set brightness level: 0% to 100%
Wire.endTransmission();
}
}
void DyspSendValue(int display_address,int tempCycles) { // i2cSendValue(cycles); //вывод 4 символов на дисплей
Wire.beginTransmission(display_address); // transmit to device #1
Wire.write(tempCycles / 1000); //Send the left most digit
tempCycles %= 1000; //Now remove the left most digit from the number we want to display
Wire.write(tempCycles / 100);
tempCycles %= 100;
Wire.write(tempCycles / 10);
tempCycles %= 10;
Wire.write(tempCycles); //Send the right most digit
Wire.endTransmission(); //Stop I2C transmission
}
//Given a string, i2cSendString chops up the string and sends out the first four characters over i2c
void DyspSendString(int display_address, char *toSend) {
Wire.beginTransmission(display_address); // transmit to device #1
for(byte x = 0 ; x < 4 ; x++)
Wire.write(toSend[x]); //Send a character from the array out over I2C
Wire.endTransmission(); //Stop I2C transmission
}