// Hinzugefügte Bibliotheken
#include "SevSeg.h"
SevSeg sevseg;
// Definierung der Variablen
const int buttonPin = 2; //Taster
int buttonState = 0; //lesen des Tasters
int lastState = 0; //Tasterstand
int counter = 0; //Zähler
int ErrorLED = 6;
int FertigLED = 5;
int Akkuspannung = A0;
int Akkustrom = A1;
int Ladevorgang = 4;
int Start = 3;
// Initialisierung der Variablen, I/O und Bibliothek
void setup() {
Serial.begin(9600);
pinMode(buttonPin, INPUT); // Taster als Input
pinMode(Akkuspannung, INPUT); // erfassung der Akkuspannung
pinMode(Akkustrom, INPUT); // erfassung des Akkustroms
pinMode(Start, INPUT); // Taster für das starten und stoppen des Ladevorgangs
pinMode(ErrorLED, OUTPUT); // Fehler LED
pinMode(Ladevorgang, OUTPUT); // Stromoutput für das Laden
pinMode(FertigLED, OUTPUT); // LED wenn der Ladevorgang abgeschlossen ist
byte numDigits = 1; // Anzahl der Segmentziffern
byte digitPins[] = {}; // Festlegung der Pins zu den Ziffern
byte segmentPins[] = {7, 8, 9, 10, 11, 12, 13}; // Die Pins von den Segmenten werden angegeben
bool resistorsOnSegments = true;
byte hardwareConfig = COMMON_ANODE;
sevseg.begin(hardwareConfig, numDigits, digitPins, segmentPins, resistorsOnSegments);
float ErrorLED = 21.60;
float FertigLED = 25.20;
}
// Steuerung des Codes
void loop() {
// Sieben Segment Anzeige
sevseg.setNumber(counter, counter%2);
sevseg.refreshDisplay();
buttonState = digitalRead(buttonPin);
// Counter von 1 - 9 auf der Segmentanzeige
if(buttonState == HIGH) { //Wenn Taster betätigt wird, zählt es 1 hoch
lastState = 1;
}
if(buttonState == LOW && lastState == 1) {
Serial.println(counter);
counter = (counter +1);
lastState = 2;
delay(250);
}
if (counter >= 10) { // begrenzt die zahlen und setzt sich wieder auf 0 züruck, wenn es die 9 überschritten hat
sevseg.setNumber(counter, counter%2);
sevseg.refreshDisplay();
counter = 0;
Serial.println(counter);
delay(250);
}
// Spannungserfassung
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0 / 1024.0); //Konvertiert die Analogwerte (0 - 1023) zu Spannung (0V-5V)
float Akkuspannung = voltage * 6; //Multipliziert den Wert und wird als 30V Spannung simuliert (5V = 30V)
Serial.print(Akkuspannung);
Serial.println("V");
delay(100);
// Stromerfassung
int SensorValue = analogRead(A1);
float ampere = SensorValue * (5.0 / 1024.0); //Konvertiert die Analogwerte (0 - 1023) zu Spannung (0V-5V)
float Akkustrom = ampere * 4; //Multipliziert den Wert und wird als 20A Strom simuliert (5V = 20A)
Serial.print(Akkustrom);
Serial.println("A");
delay(100);
if(ErrorLED <= 21.60){
digitalWrite(ErrorLED , HIGH);
} else (ErrorLED, LOW);
if(FertigLED >= 25.20){
digitalWrite(FertigLED, HIGH);
}else (FertigLED, LOW);
}