Гуру
Регистрация: 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 ?
|