#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const int triggerPin = 2; // Pin für das Triggersignal
const int sensorPin1 = 3; // Pin für Sensor 1
const int sensorPin2 = 4; // Pin für Sensor 2
const int sensorPin3 = 5; // Pin für Sensor 3
unsigned long startTimes[3] = {0, 0, 0}; // Array für Startzeiten
unsigned long deltaTimes[3] = {0, 0, 0}; // Array für Deltazeiten
bool triggerState = false;
bool lastTriggerState = false;
void setup() {
if(!display.begin(SSD1306_I2C_ADDRESS, OLED_RESET)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display();
delay(2000);
display.clearDisplay();
pinMode(triggerPin, INPUT);
pinMode(sensorPin1, INPUT);
pinMode(sensorPin2, INPUT);
pinMode(sensorPin3, INPUT);
}
void loop() {
triggerState = digitalRead(triggerPin);
if (triggerState && !lastTriggerState) {
startTimes[0] = micros();
startTimes[1] = micros();
startTimes[2] = micros();
}
lastTriggerState = triggerState;
for (int i = 0; i < 3; i++) {
if (digitalRead(i + 3) == HIGH && startTimes[i] != 0) {
deltaTimes[i] = micros() - startTimes[i];
}
}
if (!triggerState) {
for (int i = 0; i < 3; i++) {
startTimes[i] = 0;
deltaTimes[i] = 0;
}
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.print(F("Delta Zeiten: "));
for(int i = 0; i < 3; i++) {
display.print(deltaTimes[i]);
display.print(F(" "));
}
display.display();
}