Commit 4a5cc1c2 刘韬

1

0 个父辈
{
"configuration": "PSRAM=disabled,PartitionScheme=default,CPUFreq=240,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,LoopCore=1,EventsCore=1,DebugLevel=none",
"board": "esp32:esp32:esp32",
"sketch": "multiplexer.ino"
}
\ No newline at end of file
/*
There are three serial ports on the ESP known as U0UXD, U1UXD and U2UXD.
U0UXD is used to communicate with the ESP32 for programming and during reset/boot.
U1UXD is unused and can be used for your projects. Some boards use this port for SPI Flash access though
U2UXD is unused and can be used for your projects.
*/
#define RXD2 16
#define TXD2 17
#define ADDR 0
#include <ArduinoJson.h>
#include <HardwareSerial.h>
long TIME_OUT = 45L;
String in;
void setup()
{
Serial.begin(115200);
pinMode(13, OUTPUT);
Serial.println("wait 30s to open pin 13");
delay(1000*5);
digitalWrite(13, 1);
// Serial1.begin(9600, SERIAL_8N1, RXD2, TXD2);
Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2); // Note the format for setting a serial port is as follows: Serial2.begin(baud-rate, protocol, RX pin, TX pin);
// Serial.println("Serial Txd is on pin: "+String(TX));
// Serial.println("Serial Rxd is on pin: "+String(RX));
while (!Serial)
;
Serial.println();
Serial.println("Input an str (waiting for 0.5 seconds");
delay(2000);
//delay(1000);
//digitalWrite(13, 0);
//delay(1000);
//digitalWrite(13, 1);
}
void loop()
{
serial();
// delay(100);
// Serial.println("flag1");
// Serial2.println("abcdefg");
// sensortomain();
}
void serial()
{
String bufferx = "";
int value;
if (Serial.available() > 0)
{
unsigned long timeLastInput = millis();
// char buffer[10];
while (true)
{
char x = Serial.read();
if (x > 22 && x < 126)
{
bufferx += x;
}
else if (x == '\n')
{
// buffer[index] = 0;
// value = atoi(buffer);
// Serial.print("Recived:");
// Serial.print( bufferx);
// Serial2.println( bufferx);
break;
}
unsigned long now = millis();
if (now - timeLastInput > TIME_OUT)
{
Serial.println("Time out");
// timeLastInput = now;
break;
}
}
/*
Serial.println("end of event");
int Site = bufferx.indexOf('{', 0);
Serial.print ("index is : ");
Serial.println(Site);
if (Site > 0 ){
int addr = bufferx.substring(0, Site).toInt();
Serial.print ("Addr is : ");
Serial.println(addr);*/
bool quick_scan_flag = false;
for (int g = 1; g < 16; g++)
{
String str = "A" + String(g);
String str1 = "B" + String(g);
if (bufferx == str || bufferx == str1)
{
quick_scan_flag = true;
Serial.print(bufferx);
Serial2.print(str);
Serial2.print('\n');
str = "";
// Serial.println(sizeof(bufferx));
sensortomain();
}
}
if (bufferx == "T")
{
for (int g = 1; g < 16; g++)
{
String str = "H" + String(g);
// delay(1);
Serial2.print(str);
Serial2.print('\n');
str = "";
sensortomain();
}
quick_scan_flag = true;
}
if (bufferx == "diagnosMode")
{
for (int g = 1; g < 16; g++)
{
Serial2.print("diagnosMode");
Serial2.print('\n');
}
quick_scan_flag = true;
}
if (bufferx == "report")
{
Serial2.println("{\"ADDR\":\"99\",\"action\":\"report\"}");
TIME_OUT = 1000;
sensortomain();
quick_scan_flag = true;
}
if (quick_scan_flag == false)
{
char json[320];
bufferx.toCharArray(json, 320);
StaticJsonDocument<2000> doc;
DeserializationError error = deserializeJson(doc, json);
// Serial.println(json);
// Test if parsing succeeds.
if (error)
{
Serial.print(F("mainboard deserializeJson() failed: "));
Serial.println(error.f_str());
return;
}
int addr = doc["ADDR"];
if (ADDR == addr)
{
// Serial.println(F("addr flag"));
if (doc["lightoff"][0] > 0)
for (int i = 0; i < 10; i++)
{
int indexoflight = doc["lightoff"][i];
if (indexoflight == 0)
break;
light(indexoflight, false);
}
if (doc["lighton"][0] > 0)
for (int i = 0; i < 10; i++)
{
int indexoflight = doc["lighton"][i];
if (indexoflight == 0)
break;
light(indexoflight, true);
// Serial.println(i);
// Serial.println(indexoflight);
}
// {"ADDR":"0","lighton":[1]}
if (doc["reset"] == "true")
{
light(0, false);
delay(1000);
light(0, true);
ESP.restart();
}
}
else
{
// Serial.println(F("send for sensors "));
Serial2.println(bufferx);
bufferx = "";
sensortomain();
}
}
}
}
void sensortomain()
{
unsigned long timeLastInput = millis();
// String bufferx= "";
// static int index = 0;
// int value;
if (Serial2.available() > 0 || (millis() - timeLastInput) < TIME_OUT)
{
// char buffer[10];
// bufferx= "";
while (true)
{
char x = Serial2.read();
if (x > 22 && x < 126)
{
Serial.print(x);
}
else if (x == '\n')
{
// buffer[index] = 0;
// value = atoi(buffer);
Serial.println();
// Serial2.println( bufferx);
// index = 0;
if (Serial2.available() == 0)
{
break;
}
else
{
timeLastInput = millis();
}
}
unsigned long now = millis();
if (now - timeLastInput > TIME_OUT)
{
Serial.println("sensor Time out");
// index = 0;
// timeLastInput = now;
break;
}
}
// Serial.println( bufferx);
// bufferx= "";
}
}
void light(int pin, bool state)
{
// Serial.print("pin is");Serial.println(pin);
switch (pin)
{
case 1:
pinMode(32, OUTPUT);
digitalWrite(32, state);
// ESP.restart();
// Serial.println("flag");
break;
case 2:
pinMode(33, OUTPUT);
digitalWrite(33, state);
// ESP.restart();
// Serial.println("flag");
break;
case 3:
pinMode(2, OUTPUT);
digitalWrite(2, state);
break;
case 4:
pinMode(15, OUTPUT);
digitalWrite(15, state);
break;
case 5:
pinMode(14, OUTPUT);
digitalWrite(14, state);
break;
case 6:
pinMode(4, OUTPUT);
digitalWrite(4, state);
break;
case 0:
pinMode(13, OUTPUT);
digitalWrite(13, 0);
Serial.println("resrting ");
delay(2000);
digitalWrite(13, 1);
ESP.restart();
// Serial.println("resrting ");
break;
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!