Hallo zusammen,
stehe seit einigen tagen vor einem problem, dass ich eigenständig nicht gelöst kriege, dacher bitte ich euch um hilfe
es geht um Auslesung eines Windmessgerätes von Eltako.
das Problem: bei der ausmessung der Zeit entstehen ab und zu falsche Werte...
anbei der Code
Bitte um Hilfe
C
#include <wiringPi.h>
#include <iostream>
#include <stdio.h>
#include <time.h>
#include <chrono>
#include <ctime>
int Counter = 0; // zähler der impulse
int counterState = 0; // anfangs status
int lastcounterState = 0; // letzter status
clock_t begin(0), end(0);
double time_spent(0);
int main()
{
if (wiringPiSetup() == -1)
return 1;
pullUpDnControl(1, PUD_UP); // Schalte GPIO 18 (=WiringPi Pin 1) auf Eingang sensor auslesen
begin = clock();
while (true)
{
counterState = digitalRead(1);
if (counterState != lastcounterState)
{
if (counterState == HIGH)
{
Counter++;
if (Counter % 2 == 0)
{
end = clock(); //zeit nach einer umdrehung lesen
time_spent = end - begin; //zeit zwischen anfang und ende berechnen
time_spent = (double)(end - begin) / CLOCKS_PER_SEC; // zeit in sekunden berechnen
printf(" %2.4f sec \n", time_spent);
begin = end; // zeiit neu setzen
}
printf("anzahl der vollen umdrehungen: %d \n", Counter / 2);
}
else
{
printf("es liegt keine signal an\n");
}
delay(50);
}
lastcounterState = counterState;
}
}
Alles anzeigen