Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal_I2C.h>
- #include <Encoder.h>
- LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse des LCD (kann variieren)
- Encoder encoderVZ(2, 3); // Pins für den Drehgeber
- const int laserPin = 9; // Pin für die Laserdiode
- const int ledPin = 10; // Pin für die Leuchtdiode
- const int sensorPin = A0; // Pin für die Fotozelle
- unsigned long delayTime = 250; // Standardverzögerung in Millisekunden
- bool ledState = false;
- void setup() {
- Serial.begin(9600); // Starte die serielle Kommunikation für Debugging
- pinMode(laserPin, OUTPUT);
- pinMode(ledPin, OUTPUT);
- digitalWrite(laserPin, HIGH); // Laserdiode einschalten
- lcd.init();
- lcd.backlight();
- updateLCD();
- }
- void loop() {
- long encoderPosVZ = encoderVZ.read(); // Encoder-Position lesen
- delayTime = constrain(map(encoderPosVZ, 0, 500, 250, 1000), 0, 2000); // Mappe die Position auf 0 - 2 Sekunden
- updateLCD();
- int sensorValue = analogRead(sensorPin);
- Serial.println(sensorValue); // Gebe den Wert zur Überwachung aus
- if (sensorValue > 150) { // Überprüfe, ob der Strahl unterbrochen ist
- delay(10); // Kurze Verzögerung, um Flackern zu vermeiden
- if (analogRead(sensorPin) > 150) { // Bestätige die Unterbrechung
- delay(delayTime); // Warte die eingestellte Verzögerung ab
- digitalWrite(ledPin, HIGH); // LED einschalten
- delay(1000); // Warte die eingestellte Verzögerung ab
- digitalWrite(ledPin, LOW); // LED ausschalten
- }
- }
- }
- void updateLCD() {
- lcd.clear();
- lcd.setCursor(0, 0);
- lcd.print("VZ:");
- lcd.setCursor(4, 0);
- lcd.print(delayTime); // Anzeige in Millisekunden
- lcd.print(" ms");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement