#include "SevSeg.h"
SevSeg sevseg1; //Instantiate a seven segment controller object
uint8_t ss_periode[] = {
// GFEDCBA Segments 7-segment map:
0b10111111, // 0 "0" AAA
0b10000110, // 1 "1" F B
0b11011011, // 2 "2" F B
0b11001111, // 3 "3" GGG
0b11100110, // 4 "4" E C
0b11101101, // 5 "5" E C
0b11111101, // 6 "6" DDD
0b10000111, // 7 "7"
0b11111111, // 8 "8"
0b11101111 // 9 "9"
};
uint8_t ss[] = {
// GFEDCBA Segments 7-segment map:
0b00111111, // 0 "0" AAA
0b00000110, // 1 "1" F B
0b01011011, // 2 "2" F B
0b01001111, // 3 "3" GGG
0b01100110, // 4 "4" E C
0b01101101, // 5 "5" E C
0b01111101, // 6 "6" DDD
0b00000111, // 7 "7"
0b01111111, // 8 "8"
0b01101111 // 9 "9"
};
void setup() {
byte digitPins1[] = {2, 3, 4 , 5,6,7};
byte segmentPins[] = {8, 9, 10, 11, 12, 13,14,15};
sevseg1.begin(COMMON_ANODE, 6, digitPins1, segmentPins);
sevseg1.setBrightness(10);
}
long read_voltage = 0;
long read_current = 0;
float voltage=0;
float current=0;
void loop() {
read_voltage = 0; //clear previous result
for (int i = 0; i < 20; i++)
{
read_voltage += analogRead(A2);
}
read_voltage /= 20; //get average value
voltage = read_voltage*(5.0/1023.0);
read_current = 0; //clear previous result
for (int i = 0; i < 20; i++)
{
read_current += analogRead(A3);
}
read_current /= 20; //get average value
current = read_current*(5.0/1023.0);
int i = int(current);
float middle = current-i;
middle = middle*10;
int p1 = int(middle);
middle = middle - p1;
middle = middle*10;
int p2 = int(middle);
int vi = int(voltage);
float vmiddle = voltage-vi;
vmiddle = vmiddle*10;
int vp1 = int(vmiddle);
vmiddle = vmiddle - vp1;
vmiddle = vmiddle*10;
int vp2 = int(vmiddle);
sevseg1.setSegmentsDigit(0, ss_periode[i]);
sevseg1.setSegmentsDigit(1, ss[p1]);
sevseg1.setSegmentsDigit(2, ss[p2]);
sevseg1.setSegmentsDigit(3, ss_periode[vi]);
sevseg1.setSegmentsDigit(4, ss[vp1]);
sevseg1.setSegmentsDigit(5, ss[vp2]);
sevseg1.refreshDisplay(); // Must run repeatedly
}