Browse Source

1st try to implement requested functionality

T. Meissner 4 months ago
parent
commit
937d7c2a96
3 changed files with 95 additions and 64 deletions
  1. 0
    64
      erkenn_opto.ino
  2. 86
    0
      erkenn_opto/erkenn_opto.ino
  3. 9
    0
      erkenn_opto/sketch.json

+ 0
- 64
erkenn_opto.ino View File

@@ -1,64 +0,0 @@
1
-int reflexlicht1 = 3; // lampre bei reflex1
2
-int reflexscan1 = 4;// erkennungsteil bei reflex1
3
-int LEDrot = 5;
4
-int LEDgruen = 6;
5
-int LEDgelb = 7;
6
-int sensorwert1 = 0;//kein pin sondern einfach dass das normalerweise eine null ist
7
-int val;
8
-int press; //umgeflogen
9
-int count = 0;
10
-int Y;
11
-
12
-
13
-
14
-void setup() {
15
-  Serial.begin(9600);
16
-
17
-  pinMode(reflexlicht1, OUTPUT); 
18
-  pinMode(reflexscan1, INPUT); //denk an den wiederstand den du noch brauchst!! sonst kann es passieren dass ein kurzschlluss passiert
19
-  pinMode(LEDrot, OUTPUT);
20
-  pinMode(LEDgruen, OUTPUT);
21
-  pinMode(LEDgelb, OUTPUT);
22
-
23
-}
24
-
25
-void loop() {
26
-
27
-  sensorwert1 = digitalRead(reflexscan1) ;   // der sensorwert ist die auslesung von dem scanteil. sieht kompliziert aus aber vereinfacht alles
28
-  Serial.print("Sensorwert1 = ");            // bedeutet nur dass das was blau ist nacher im serial monitor steht
29
-  Serial.println(sensorwert1);               // schreibt den senorwert in den serialmonitor (immer eine zahl)
30
-
31
-  digitalWrite(reflexlicht1,HIGH);      //soll licht ausgeben, damit der erkennt ob da was drauf steht
32
-
33
-
34
-  // Zählung:
35
-  val=digitalRead(sensorwert1);
36
-  if (val==HIGH) {
37
-    press=count++;
38
-    Y=1*press; //y=mx-b
39
-    delay (100);
40
-  }
41
-
42
-
43
-   // Count Auslesung + reset:
44
-  
45
-
46
-  // unter3=rot; 3-6=gelb; über6=grün;
47
-  if (count<= 3) {
48
-    digitalWrite(LEDrot, HIGH);
49
-    delay (500); }
50
-    else {
51
-    digitalWrite(LEDrot, LOW);
52
-    }
53
-   
54
-
55
-  if (3 < count && count <= 6) {
56
-    digitalWrite(LEDgelb, HIGH);  
57
-  }
58
-
59
-  if (count > 6) {
60
-    digitalWrite(LEDgruen, HIGH);
61
-  }
62
-
63
-  
64
-}

+ 86
- 0
erkenn_opto/erkenn_opto.ino View File

@@ -0,0 +1,86 @@
1
+// Pins (const, da sich die Werte nicht aendern)
2
+const int reflexlicht1 = 3; // lampre bei reflex1
3
+const int reflexscan1 = 4;// erkennungsteil bei reflex1
4
+const int LEDrot = 5;
5
+const int LEDgruen = 6;
6
+const int LEDgelb = 7;
7
+// Variablen
8
+int sensorwert1 = 0;  //kein pin sondern einfach dass das normalerweise eine null ist
9
+int val;
10
+int press; //umgeflogen
11
+unsigned int count = 0;
12
+int Y;
13
+
14
+// Timer Variablen
15
+unsigned long previousMillis = 0;  // zum Speichern des letzten Timerwertes
16
+const long interval_ms = 10000;    // Zeitraum in Millisekunden (10000 = 10 Sekunden)
17
+
18
+
19
+
20
+void setup() {
21
+
22
+  Serial.begin(9600);
23
+
24
+  pinMode(reflexlicht1, OUTPUT);
25
+  pinMode(reflexscan1, INPUT); //denk an den Widerstand den du noch brauchst!! sonst kann es passieren dass ein kurzschlluss passiert
26
+  pinMode(LEDrot, OUTPUT);
27
+  pinMode(LEDgruen, OUTPUT);
28
+  pinMode(LEDgelb, OUTPUT);
29
+
30
+}
31
+
32
+void loop() {
33
+
34
+  sensorwert1 = digitalRead(reflexscan1) ;   // der sensorwert ist die auslesung von dem scanteil. sieht kompliziert aus aber vereinfacht alles
35
+  Serial.print("Sensorwert1 = ");            // bedeutet nur dass das was blau ist nacher im serial monitor steht
36
+  Serial.println(sensorwert1);               // schreibt den senorwert in den serialmonitor (immer eine zahl)
37
+
38
+  digitalWrite(reflexlicht1, HIGH);      //soll licht ausgeben, damit der erkennt ob da was drauf steht
39
+
40
+  // Zaehlen:
41
+  if (sensorwert1 == HIGH) {
42
+    press=count++;
43
+    Y=1*press; //y=mx-b  WOFUER WIRD Y GEBRAUCHT?
44
+    delay (100);  // WARUM WIRD HIER 100ms GEWARTET?
45
+  }
46
+
47
+  // Count Auslesung + reset:
48
+  // Hole aktuelle Zeit in ms
49
+  unsigned long currentMillis = millis();
50
+
51
+  // Wenn Zeitunterschied >= festgelegtes Interval
52
+  if (currentMillis - previousMillis >= interval_ms) {
53
+
54
+    // aktuelle Zeit speichern fuer naechsten Durchlauf
55
+    previousMillis = currentMillis;
56
+
57
+    // Zunaechst alle LEDs ausschalten
58
+    digitalWrite(LEDrot, LOW);
59
+    digitalWrite(LEDgelb, LOW);
60
+    digitalWrite(LEDgruen, LOW);
61
+
62
+    /*
63
+      Jetzt je nach Stand von count einzelne LED anschalten
64
+      0-3: rot;  4-6: gelb; > 6: gruen
65
+    */
66
+    if (count <= 3) {
67
+      digitalWrite(LEDrot, HIGH);
68
+      delay (500);  // WOZU DAS DELAY?
69
+    } else if (3 < count && count <= 6) {
70
+      digitalWrite(LEDgelb, HIGH);
71
+    } else if (count > 6) {
72
+      digitalWrite(LEDgruen, HIGH);
73
+    }
74
+
75
+    // Zaehler zuruecksetzen
76
+    count = 0;
77
+
78
+  }
79
+
80
+  /*
81
+    Moeglicherweise delay() einfuegen, um UART nicht
82
+    zu fluten
83
+  */
84
+  delay(100);
85
+
86
+}

+ 9
- 0
erkenn_opto/sketch.json View File

@@ -0,0 +1,9 @@
1
+{
2
+  "cpu": {
3
+    "fqbn": "arduino:avr:mega:cpu=atmega2560",
4
+    "name": "Arduino Mega or Mega 2560",
5
+    "type": "serial"
6
+  },
7
+  "secrets": [],
8
+  "included_libs": []
9
+}