#include void setup() { // put your setup code here, to run once: Serial.begin(115200); } const int rcpin = 2; const float vih_voltage = 2.85; const float capacity = 100 * pow(10, -9); const float resistor = 100000; const int dischargeDelay = 200; float meassureVoltage(){ //Pin auf Low setzen zum entladen des Kondensators pinMode(2, OUTPUT); digitalWrite(rcpin, LOW); delay(dischargeDelay); //Warten bis Kondensator leer long startMicros = micros(); //Startzeit festlegen pinMode(2, INPUT); //Pin auf Input legen um zu detektieren wann Pin High while(!digitalRead(rcpin)){ //Warte solange Pin nicht High } long endMicros = micros(); //Neue Zeit speichern long finalMicros = endMicros - startMicros; //Dauer des Vorgangs berechnen //Serial.println(finalMicros); //Berechnen der Spannung float vbat = (vih_voltage * capacity * resistor) /((float)(finalMicros * pow(10, -6))); return vbat; } void loop() { Serial.println(meassureVoltage()); }