![]() |
|
|
#11 |
|
Старший Пользователь
![]() Регистрация: 22.10.2012
Регион: 78, 98
Сообщений: 758
![]() ![]() ![]() ![]() |
а обязательно побитово слать? помню у меня тоже были проблемы с бинарной отправкой. в хексе все нормально слалось.
__________________
В работе Китайнедожып+медиацентр на андроиде |
|
|
|
|
|
#12 |
|
Гуру
![]() Регистрация: 20.07.2009
Город: Минск
Регион: Беларусь
Сообщений: 1,543
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
уже перевел в hex, те же, только в профиль.
__________________
Мой проект: Citroen Xsara Android CarPC |
|
|
|
|
|
#13 |
|
Гуру
![]() Регистрация: 20.07.2009
Город: Минск
Регион: Беларусь
Сообщений: 1,543
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Завел частично индикатор
Вот скетч, выводящий слово CODE Код:
#define I2C_ADDR 0x38
#define I2C_SEND_BUFFER_SIZE 17
#include <Wire.h>
void setup() {
delay(5000);
//Serial.begin(115200);//
Wire.begin();
initLCD();
/*
Wire.beginTransmission(I2C_ADDR);
uint8_t dataArray3[I2C_SEND_BUFFER_SIZE] = { 0xE0, 0xCB, 0xF0, 0, 0, 0, 0, 0, 169, 99, 1, 20, 96, 161, 0, 0, 0 };
// uint8_t dataArray3[I2C_SEND_BUFFER_SIZE] = { 0xE0, 0xCB, 0xF0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, 0, 0, 0, 0 };
Wire.write(dataArray3, I2C_SEND_BUFFER_SIZE);
Wire.endTransmission();
*/
unsigned char data[14];
data[0] = 0x00;
data[1] = 0x00;
data[2] = 0x00;
data[3] = 0x00;
data[4] = 0x00;
data[5] = 0xA9;
data[6] = 0x63;
data[7] = 0x01;
data[8] = 0x14;
data[9] = 0x60;
data[10] = 0xA1;
data[11] = 0x00;
data[12] = 0x00;
data[13] = 0x00;
sendDataToLCD(data);
/*
Wire.beginTransmission(I2C_ADDR);
uint8_t dataArray4[I2C_SEND_BUFFER_SIZE] = { 0xE0, 0xCB, 0xF0, 2, 0, 0, 0, 21, 108, 224, 98, 12, 20, 96, 0, 0, 0 };
//uint8_t dataArray4[I2C_SEND_BUFFER_SIZE] = { 0xE0, 0xCB, 0xF0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
Wire.write(dataArray4, I2C_SEND_BUFFER_SIZE);
Wire.endTransmission();
*/
unsigned char data2[14];
data2[0] = 0x02;
data2[1] = 0x00;
data2[2] = 0x00;
data2[3] = 0x00;
data2[4] = 0x15;
data2[5] = 0x6C;
data2[6] = 0xE0;
data2[7] = 0x62;
data2[8] = 0x0C;
data2[9] = 0x14;
data2[10] = 0x60;
data2[11] = 0x00;
data2[12] = 0x00;
data2[13] = 0x00;
sendDataToLCD(data2);
}
void loop() {
}
void sendDataToLCD(unsigned char *data) {
unsigned char buffer[I2C_SEND_BUFFER_SIZE];
byte i = 0;
buffer[0] = 0xE0;
buffer[1] = 0xCB;
buffer[2] = 0xF0;
for (i = 3; i < I2C_SEND_BUFFER_SIZE; i ++) {
buffer[i] = data[i - 3];
}
Wire.beginTransmission(I2C_ADDR);
Wire.write(buffer, I2C_SEND_BUFFER_SIZE);
Wire.endTransmission();
}
void initLCD() {
/* init
E0CBF000000000000000
E0CBF020000000000000
E0CBF000000000000000
E0CBF020000000000000
*/
/*
Wire.beginTransmission(I2C_ADDR);
uint8_t dataArray[I2C_SEND_BUFFER_SIZE] = { 0xE0, 0xCB, 0xF0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };
Wire.write(dataArray, I2C_SEND_BUFFER_SIZE);
Serial.print(Wire.endTransmission());
Wire.beginTransmission(I2C_ADDR);
uint8_t dataArray2[I2C_SEND_BUFFER_SIZE] = { 0xE0, 0xCB, 0xF0, 0x20, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 };
Wire.write(dataArray2, I2C_SEND_BUFFER_SIZE);
Serial.print(Wire.endTransmission());
*/
unsigned char data[14];
byte i = 0;
for (i = 0; i <= 14; i++) {
data[i] = 0x00;
}
sendDataToLCD(data);
data[0] = 0x20;
sendDataToLCD(data);
}
Нашел только куски кода для 1:2 Может у кого-то есть готовый кусок кода для случая 1:3 ?
__________________
Мой проект: Citroen Xsara Android CarPC |
|
|
|
|
|
#14 |
|
Гуру
![]() Регистрация: 20.07.2009
Город: Минск
Регион: Беларусь
Сообщений: 1,543
![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Раскурил индикатор.
Если кому понадобится, вот скетч для управления любым сегментом через 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);
}
Код:
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 Проверено под Виндой под запущенным USBWebserver. Установка проста - распаковать в корневую папку вебсервера, в файле index.php указать номер порта и скорость (сейчас COM3 и 9600). Приложение будет доступно по адресу http://localhost/com/ Можно задавать значения в десятичном, шестнатеричном, бинарном форматах. Все значения будут немедленно отправлены в индикатор. Можно стереть все символы кнопкой Reset.
__________________
Мой проект: Citroen Xsara Android CarPC |
|
|
|
![]() |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
| Опции темы | Поиск в этой теме |
|
|