tunerlistd/arduino/master_writer_copy_20250415202949.ino
2025-04-24 23:03:07 +03:00

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();
}
}