#include <TM1637.h>
#define calibration_const 355.55
#define OVER_CURRENT_LED_A 4
#define OVER_CURRENT_LED_B 7
#define OVER_CURRENT_THRESHOLD_A 300
#define OVER_CURRENT_THRESHOLD_B 300
int max_val_A;
int new_val_A;
int old_val_A = 0;
int max_val_B;
int new_val_B;
int old_val_B = 0;
float rms_A;
float IRMS_A;
float rms_B;
float IRMS_B;
int CLK_A = 2;
int DIO_A = 3;
int CLK_B = 5;
int DIO_B = 6;
TM1637 tm_A(CLK_A,DIO_A);
TM1637 tm_B(CLK_B,DIO_B);
void setup() {
// put your setup code here, to run once:
tm_A.init();
tm_B.init();
//set brightness; 0-7
tm_A.set(2);
tm_B.set(2);
pinMode(A0,INPUT);
pinMode(A1,INPUT);
pinMode(OVER_CURRENT_LED_A, OUTPUT);
pinMode(OVER_CURRENT_LED_B, OUTPUT);
//Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
new_val_A = analogRead(A0);
if(new_val_A > old_val_A) {
old_val_A = new_val_A;
max_val_A = new_val_A;
}
else {
new_val_A = analogRead(A0);
if(new_val_A < old_val_A) {
old_val_A = 0;
}
rms_A = max_val_A * 5.00 * 0.707 / 1024;
IRMS_A = rms_A * calibration_const;
if (IRMS_A > OVER_CURRENT_THRESHOLD_A){
digitalWrite(OVER_CURRENT_LED_A, LOW);
}
else {
digitalWrite(OVER_CURRENT_LED_A, HIGH);
}
//Serial.print(" IRMS_A: ");
//Serial.println(IRMS_A);
displayNumber_A(IRMS_A);
new_val_B = analogRead(A1);
if(new_val_B > old_val_B) {
old_val_B = new_val_B;
max_val_B = new_val_B;
}
else {
new_val_B = analogRead(A1);
if(new_val_B < old_val_B) {
max_val_B = old_val_B;
old_val_B = 0;
}
rms_B = max_val_B * 5.00 * 0.707 / 1024;
IRMS_B = rms_B * calibration_const;
if (IRMS_B > OVER_CURRENT_THRESHOLD_B){
digitalWrite(OVER_CURRENT_LED_B, LOW);
}
else {
digitalWrite(OVER_CURRENT_LED_B, HIGH);
}
//Serial.print(" IRMS_B: ");
//Serial.println(IRMS_B);
displayNumber_B(IRMS_B);
}
}
}
void displayNumber_A(int num){
tm_A.display(3, num % 10);
tm_A.display(2, num / 10 % 10);
tm_A.display(1, num / 100 % 10);
tm_A.display(0, num / 1000 % 10);
}
void displayNumber_B(int num){
tm_B.display(3, num % 10);
tm_B.display(2, num / 10 % 10);
tm_B.display(1, num / 100 % 10);
tm_B.display(0, num / 1000 % 10);
}