Added led indicators

This commit is contained in:
Warky 2024-09-23 19:11:37 +02:00
parent ed421346a9
commit 42554a57da

View File

@ -17,6 +17,8 @@
#define TX_PIN 7 // SoftwareSerial TX pin #define TX_PIN 7 // SoftwareSerial TX pin
#define SLAVE_ID 101 #define SLAVE_ID 101
#define SERIAL_BAUDRATE 9600 #define SERIAL_BAUDRATE 9600
#define LED_A_PID 3
#define LED_B_PID 5
// Try to select the best SD card configuration. // Try to select the best SD card configuration.
#define SPI_CLOCK SD_SCK_MHZ(50) #define SPI_CLOCK SD_SCK_MHZ(50)
@ -38,8 +40,22 @@ ModbusMaster node;
unsigned long lastRefreshTime = 0; unsigned long lastRefreshTime = 0;
bool headerWritten = false; bool headerWritten = false;
void flicker(uint8_t pin ,uint8_t times , uint16_t speed ) {
for (int i = 0; i < times; i++) {
digitalWrite(pin, HIGH);
delay(speed);
digitalWrite(pin, LOW);
delay(speed);
}
}
void setup() void setup()
{ {
pinMode(LED_A_PID, OUTPUT);
pinMode(LED_B_PID, OUTPUT);
digitalWrite(LED_A_PID, LOW);
digitalWrite(LED_B_PID, HIGH);
Serial.begin(SERIAL_BAUDRATE); // For debugging Serial.begin(SERIAL_BAUDRATE); // For debugging
Serial.println(F("Startup \n")); Serial.println(F("Startup \n"));
@ -47,6 +63,7 @@ void setup()
if (!rtc.begin()) if (!rtc.begin())
{ {
Serial.println(F("Couldn't find RTC\n")); Serial.println(F("Couldn't find RTC\n"));
flicker(LED_B_PID,4,500); //4 times on LED b is RTC Error
} }
if (rtc.lostPower()) if (rtc.lostPower())
@ -54,6 +71,7 @@ void setup()
Serial.println(F("RTC lost power, let's set the time!\n")); Serial.println(F("RTC lost power, let's set the time!\n"));
// Comment out the following line once the time is set to avoid resetting on every start // Comment out the following line once the time is set to avoid resetting on every start
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
flicker(LED_B_PID,4,100); //4 times fast on LED b is RTC reset
} }
Serial.print(F("Time: ")); Serial.print(F("Time: "));
@ -73,6 +91,7 @@ void setup()
if (!sd.begin(SD_CONFIG)) if (!sd.begin(SD_CONFIG))
{ {
sd.initErrorHalt(&Serial); sd.initErrorHalt(&Serial);
flicker(LED_B_PID,2,500); //2 Times slow, SD Card initilize error
return; return;
} }
Serial.println(F("SD card initialized.\n")); Serial.println(F("SD card initialized.\n"));
@ -86,18 +105,21 @@ void setup()
node.begin(SLAVE_ID, modbusSerial); node.begin(SLAVE_ID, modbusSerial);
node.preTransmission(preTransmission); node.preTransmission(preTransmission);
node.postTransmission(postTransmission); node.postTransmission(postTransmission);
flicker(LED_A_PID,2,100);
} }
void preTransmission() void preTransmission()
{ {
// Serial.println(F("Transmitting Start")); // Serial.println(F("Transmitting Start"));
digitalWrite(DE_RE_PIN, HIGH); // Enable RS485 transmit digitalWrite(DE_RE_PIN, HIGH); // Enable RS485 transmit
digitalWrite(LED_A_PID, HIGH);
} }
void postTransmission() void postTransmission()
{ {
digitalWrite(DE_RE_PIN, LOW); // Disable RS485 transmit digitalWrite(DE_RE_PIN, LOW); // Disable RS485 transmit
digitalWrite(LED_A_PID, LOW);
// Serial.println(F("Transmitting End")); // Serial.println(F("Transmitting End"));
} }
@ -160,6 +182,7 @@ void loop()
Serial.print("\n"); Serial.print("\n");
if (!dataFile.open(filename.c_str(), FILE_WRITE)) if (!dataFile.open(filename.c_str(), FILE_WRITE))
{ {
flicker(LED_B_PID,6,100); //Six quick flickers. SD Card error
Serial.println(F("Failed to Open Card ")); Serial.println(F("Failed to Open Card "));
} }
if (!headerWritten) if (!headerWritten)
@ -173,6 +196,7 @@ void loop()
dataFile.print(","); dataFile.print(",");
} }
headerWritten = true; headerWritten = true;
flicker(LED_A_PID,50,10); //10 flickers, written header
} }
primeFileDate(); primeFileDate();
Serial.print("\n"); Serial.print("\n");
@ -242,7 +266,7 @@ void loop()
Serial.print(F("\n\n")); Serial.print(F("\n\n"));
delay(100); flicker(LED_A_PID,4,10); //Cycle written 4 quick flickers
} }
// // Check if the read was successful // // Check if the read was successful