Hatte ein wenig zu tun aber heute mal wieder Zeit mich dem Projekt zu widmen und aus einigen anderen Threads meinen Code zusammenzubasteln. Allerdings wenn ich das richtig verstehe speichert mein "start" nicht das erste sondern das letzte eingefangene Signal und mein "finished" aber das erste Signal.
Habs getestet indem ich den Magneten ca 5 Sekunden an Hallsensor1 gehalten hab und dann raus und nach 2 Sekunden an Hallsensor2 und in der Ausgabe erhalte ich auch diese 2 Sekunden. Kann man jeweils nur das erste Signal speichern?
const int hallPin1 = 9;
const int hallPin2 = 12;
const int ledPin = 13;
int hallState1 = 0;
int hallState2 = 0;
unsigned long start, elapsed, finished;
void setup() {
// initialize the LED pin as an output:
pinMode(ledPin, OUTPUT);
// initialize the hall effect sensor pin as an input:
pinMode(hallPin1, INPUT);
// initialize the hall effect sensor pin as an input:
pinMode(hallPin2, INPUT);
Serial.begin(9600);
}
void loop(){
// read the state of the hall effect sensor:
hallState1 = digitalRead(hallPin1);
// read the state of the hall effect sensor:
hallState2 = digitalRead(hallPin2);
if (hallState1 == LOW) { // start Stopwatch
start=micros();
// turn LED on:
digitalWrite(ledPin, HIGH);
}
else {
// do nothing
digitalWrite(ledPin, LOW);
}
if (hallState2 == LOW) { // stop Stopwatch
finished=micros();
digitalWrite(ledPin, HIGH); // turn LED on:
elapsed=finished-start;
Serial.println("Time:");
Serial.println(elapsed);
Serial.print("microseconds elapsed");
Serial.println();
delay(500);
}
else {
// do nothing
digitalWrite(ledPin, LOW); }
}
Schönes Wochenende noch