88 lines
1.7 KiB
C++
88 lines
1.7 KiB
C++
#include <Wire.h>
|
|
|
|
#define MIRQ 2
|
|
|
|
unsigned long timing;
|
|
|
|
void conf() {
|
|
TWBR = 0xff;
|
|
TWSR = 0x01;
|
|
//TWCR &= ~(1<<TWEA);
|
|
}
|
|
|
|
void sendStringToDisplay(char* str, bool dotPointEnable = false) {
|
|
Wire.beginTransmission(0x23);
|
|
//byte[] packet = { 0x0C, 0x90, 0x7E, 0x71, 0x01, }
|
|
Wire.write(0x0F);
|
|
Wire.write(0x90);
|
|
Wire.write(0x7F);
|
|
Wire.write(0xFF); //19 traffic on ? 55 ?
|
|
Wire.write(0xFF);
|
|
Wire.write(0xFF); //7F traffic on ? //FD ?
|
|
Wire.write(0x71); // PRESET
|
|
Wire.write(0x01); // DOT POINT //A5 ?
|
|
Wire.write(str[0]);
|
|
Wire.write(str[1]);
|
|
Wire.write(str[2]);
|
|
Wire.write(str[3]);
|
|
Wire.write(str[4]);
|
|
Wire.write(str[5]);
|
|
Wire.write(str[6]);
|
|
Wire.write(str[7]);
|
|
}
|
|
|
|
/*
|
|
0x19 0001 1001
|
|
0x55 0101 0101
|
|
*/
|
|
|
|
void setup() {
|
|
Serial.begin(9600);
|
|
Wire.begin();
|
|
conf();
|
|
//Wire.setClock(10000);
|
|
pinMode(LED_BUILTIN, OUTPUT);
|
|
pinMode(MIRQ, INPUT_PULLUP);
|
|
}
|
|
|
|
void up() {
|
|
pinMode(MIRQ, INPUT_PULLUP);
|
|
}
|
|
|
|
void down() {
|
|
pinMode(MIRQ, OUTPUT);
|
|
digitalWrite(MIRQ, LOW);
|
|
}
|
|
|
|
bool initialized = false;
|
|
|
|
void loop() {
|
|
if (millis() - timing > 2000) { // Обновление данных на дисплее
|
|
Serial.println("WRITING");
|
|
while (!digitalRead(MIRQ))
|
|
;
|
|
if (digitalRead(MIRQ)) {
|
|
delay(1);
|
|
down();
|
|
Wire.beginTransmission(0x23);
|
|
conf();
|
|
Wire.write(0x01);
|
|
Wire.write(0x11);
|
|
Wire.endTransmission();
|
|
up();
|
|
delay(1);
|
|
}
|
|
|
|
while (!digitalRead(MIRQ))
|
|
;
|
|
if (digitalRead(MIRQ)) {
|
|
down();
|
|
sendStringToDisplay("HELLO", true);
|
|
Wire.endTransmission();
|
|
up();
|
|
delay(1);
|
|
}
|
|
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
|
|
timing = millis();
|
|
}
|
|
} |