Раскурил индикатор.
Если кому понадобится, вот скетч для управления любым сегментом через COM-порт
Код:
#define I2C_ADDR 0x38
#define I2C_SEND_BUFFER_SIZE 17
#include <Wire.h>
void setup() {
Serial.begin(115200);//
Wire.begin();
initLCD();
}
void loop() {
String content = "";
char character;
while(Serial.available()) {
character = Serial.read();
content.concat(character);
}
if (content != "") {
Serial.println(content);
if (content == "!") {
Serial.println("Reset");
initLCD();
}
else {
int numArgs = 0;
int beginIdx = 0;
int idx = content.indexOf(",");
String arg;
Wire.beginTransmission(I2C_ADDR);
while (idx != -1) {
numArgs++;
arg = content.substring(beginIdx, idx);
Serial.println((byte)arg.toInt());
Wire.write((byte)arg.toInt());
if (numArgs == 17) {
Serial.println('#');
Wire.endTransmission();
Wire.beginTransmission(I2C_ADDR);
}
beginIdx = idx + 1;
idx = content.indexOf(",", beginIdx);
}
arg = content.substring(beginIdx);
Serial.println((byte)arg.toInt());
Wire.write((byte)arg.toInt());
Wire.endTransmission();
}
}
}
void sendDataToLCD(unsigned char *data) {
unsigned char buffer[I2C_SEND_BUFFER_SIZE];
byte i = 0;
Wire.beginTransmission(I2C_ADDR);
buffer[0] = 0xE0;
buffer[1] = 0xCB;
buffer[2] = 0xF0;
for (i = 3; i < I2C_SEND_BUFFER_SIZE; i ++) {
buffer[i] = data[i - 3];
}
Wire.write(buffer, I2C_SEND_BUFFER_SIZE);
Wire.endTransmission();
}
void initLCD() {
/* init
E0CBF000000000000000
E0CBF020000000000000
E0CBF000000000000000
E0CBF020000000000000
*/
unsigned char data[14];
byte i = 0;
for (i = 0; i <= 14; i++) {
data[i] = 0x00;
}
sendDataToLCD(data);
data[0] = 0x20;
sendDataToLCD(data);
}
Вот такая строка выводит слово CODE
Код:
224,203,240,0,0,0,0,0,169,99,1,20,96,161,0,0,0,224,203,240,2,0,0,0,21,108,224,98,12,20,96,0,0,0
Для удобного манипулирования такими строками написал маленькое веб-приложение на PHP, которое формирует и отправляет в указанный порт такие строки.
Проверено под Виндой под запущенным USBWebserver.
Установка проста - распаковать в корневую папку вебсервера, в файле index.php указать номер порта и скорость (сейчас COM3 и 9600).
Приложение будет доступно по адресу
http://localhost/com/
Можно задавать значения в десятичном, шестнатеричном, бинарном форматах. Все значения будут немедленно отправлены в индикатор.
Можно стереть все символы кнопкой Reset.