add arduino code
This commit is contained in:
parent
9b80e02194
commit
8f7bb96282
88
arduino/master_writer_copy_20250415202949.ino
Normal file
88
arduino/master_writer_copy_20250415202949.ino
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
#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();
|
||||||
|
}
|
||||||
|
}
|
120
arduino/sketch_apr9c.ino
Normal file
120
arduino/sketch_apr9c.ino
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
#include <SoftwareSerial.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
|
||||||
|
#define MRQ_PIN 1
|
||||||
|
|
||||||
|
SoftwareSerial serial(3,4);
|
||||||
|
|
||||||
|
enum State { IDLE,
|
||||||
|
ACTIVE,
|
||||||
|
PAUSE };
|
||||||
|
|
||||||
|
byte HANDSHAKE[] = { 0x01, 0x00 };
|
||||||
|
byte PONG[] = { 0x01, 0x01 };
|
||||||
|
byte BUTTON[] = { 0x04, 0x82, 0x91, 0x00, 0x00 };
|
||||||
|
|
||||||
|
State currentState = IDLE;
|
||||||
|
unsigned long lastChange = 0;
|
||||||
|
|
||||||
|
bool handshakeComplete = false;
|
||||||
|
bool processButton = false;
|
||||||
|
|
||||||
|
byte readBuffer[16];
|
||||||
|
bool newBuffer = false;
|
||||||
|
|
||||||
|
void up() {
|
||||||
|
pinMode(MRQ_PIN, INPUT_PULLUP);
|
||||||
|
}
|
||||||
|
|
||||||
|
void down() {
|
||||||
|
pinMode(MRQ_PIN, OUTPUT);
|
||||||
|
digitalWrite(MRQ_PIN, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
void onRequest() {
|
||||||
|
while (digitalRead(MRQ_PIN))
|
||||||
|
;
|
||||||
|
if (!handshakeComplete) {
|
||||||
|
Wire.write(HANDSHAKE, sizeof HANDSHAKE);
|
||||||
|
} else {
|
||||||
|
if (processButton) {
|
||||||
|
processButton = false;
|
||||||
|
Wire.write(BUTTON, sizeof BUTTON);
|
||||||
|
} else {
|
||||||
|
Wire.write(PONG, sizeof PONG);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void onReceive(int bytes) {
|
||||||
|
//Serial.println(bytes);
|
||||||
|
byte first_byte = Wire.read();
|
||||||
|
byte second_byte = Wire.read();
|
||||||
|
if (first_byte == 0x01 && second_byte == 0x11) {
|
||||||
|
if (!handshakeComplete) {
|
||||||
|
handshakeComplete = true;
|
||||||
|
//currentState = PAUSE;
|
||||||
|
}
|
||||||
|
} else if (first_byte == 0x01 && second_byte == 0x10) {
|
||||||
|
handshakeComplete = false;
|
||||||
|
//currentState = ACTIVE;
|
||||||
|
} else {
|
||||||
|
for (int i = 0; i < 16; i++) readBuffer[i] = 0x0;
|
||||||
|
readBuffer[0] = first_byte;
|
||||||
|
readBuffer[1] = second_byte;
|
||||||
|
for (int i = 0; i < bytes - 2; i++) {
|
||||||
|
readBuffer[i + 2] = Wire.read();
|
||||||
|
}
|
||||||
|
newBuffer = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
serial.begin(9600);
|
||||||
|
|
||||||
|
Wire.setClock(10000);
|
||||||
|
Wire.begin(0x23);
|
||||||
|
Wire.onRequest(onRequest);
|
||||||
|
Wire.onReceive(onReceive);
|
||||||
|
|
||||||
|
pinMode(MRQ_PIN, INPUT_PULLUP);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
if (serial.available()) {
|
||||||
|
BUTTON[3] = serial.read();
|
||||||
|
BUTTON[4] = serial.read();
|
||||||
|
processButton = true;
|
||||||
|
currentState = ACTIVE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newBuffer) {
|
||||||
|
for (int i = 0; i < 16; i++) {
|
||||||
|
serial.write(readBuffer[i]);
|
||||||
|
}
|
||||||
|
newBuffer = false;
|
||||||
|
serial.println();
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned long now = millis();
|
||||||
|
switch (currentState) {
|
||||||
|
case PAUSE:
|
||||||
|
break;
|
||||||
|
case IDLE:
|
||||||
|
up();
|
||||||
|
if (now - lastChange >= 480) {
|
||||||
|
if (digitalRead(MRQ_PIN)) {
|
||||||
|
lastChange = now;
|
||||||
|
currentState = ACTIVE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case ACTIVE:
|
||||||
|
down();
|
||||||
|
if (now - lastChange >= 30) {
|
||||||
|
lastChange = now;
|
||||||
|
currentState = IDLE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user