Advertisement
DK0975

Laser

Sep 30th, 2024
359
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.73 KB | None | 0 0
  1. #include <LiquidCrystal_I2C.h>
  2. #include <Encoder.h>
  3.  
  4. LiquidCrystal_I2C lcd(0x27, 16, 2); // Adresse des LCD (kann variieren)
  5. Encoder encoderVZ(2, 3); // Pins für den Drehgeber
  6.  
  7. const int laserPin = 9; // Pin für die Laserdiode
  8. const int ledPin = 10;   // Pin für die Leuchtdiode
  9. const int sensorPin = A0; // Pin für die Fotozelle
  10.  
  11. unsigned long delayTime = 250; // Standardverzögerung in Millisekunden
  12. bool ledState = false;
  13.  
  14. void setup() {
  15.     Serial.begin(9600);          // Starte die serielle Kommunikation für Debugging
  16.     pinMode(laserPin, OUTPUT);
  17.     pinMode(ledPin, OUTPUT);
  18.     digitalWrite(laserPin, HIGH); // Laserdiode einschalten
  19.     lcd.init();
  20.     lcd.backlight();
  21.     updateLCD();
  22. }
  23.  
  24. void loop() {
  25.     long encoderPosVZ = encoderVZ.read(); // Encoder-Position lesen
  26.  
  27.     delayTime = constrain(map(encoderPosVZ, 0, 500, 250, 1000), 0, 2000); // Mappe die Position auf 0 - 2 Sekunden
  28.     updateLCD();
  29.  
  30.     int sensorValue = analogRead(sensorPin);
  31.     Serial.println(sensorValue); // Gebe den Wert zur Überwachung aus
  32.     if (sensorValue > 150) { // Überprüfe, ob der Strahl unterbrochen ist
  33.         delay(10); // Kurze Verzögerung, um Flackern zu vermeiden
  34.         if (analogRead(sensorPin) > 150) { // Bestätige die Unterbrechung
  35.             delay(delayTime); // Warte die eingestellte Verzögerung ab
  36.             digitalWrite(ledPin, HIGH); // LED einschalten
  37.             delay(1000); // Warte die eingestellte Verzögerung ab
  38.             digitalWrite(ledPin, LOW); // LED ausschalten
  39.         }
  40.     }
  41. }
  42.  
  43. void updateLCD() {
  44.     lcd.clear();
  45.     lcd.setCursor(0, 0);
  46.     lcd.print("VZ:");
  47.     lcd.setCursor(4, 0);
  48.     lcd.print(delayTime); // Anzeige in Millisekunden
  49.     lcd.print(" ms");
  50.  
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement