Various Arduino related stuff
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

91 lines
2.5 KiB

  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. // Timer Variablen
  14. unsigned long previousMillis = 0; // zum Speichern des letzten Timerwertes
  15. const long interval_ms = 10000; // Zeitraum in Millisekunden (10000 = 10 Sekunden)
  16. void setup() {
  17. Serial.begin(9600);
  18. pinMode(reflexlicht1, OUTPUT);
  19. pinMode(reflexscan1, INPUT); //denk an den Widerstand den du noch brauchst!! sonst kann es passieren dass ein kurzschlluss passiert
  20. pinMode(LEDrot, OUTPUT);
  21. pinMode(LEDgruen, OUTPUT);
  22. pinMode(LEDgelb, OUTPUT);
  23. digitalWrite(reflexlicht1, HIGH);
  24. digitalWrite(LEDrot, LOW);
  25. digitalWrite(LEDgelb, LOW);
  26. digitalWrite(LEDgruen, LOW);
  27. }
  28. void loop() {
  29. sensorwert1 = digitalRead(reflexscan1) ; // der sensorwert ist die auslesung von dem scanteil. sieht kompliziert aus aber vereinfacht alles
  30. Serial.print("Sensorwert1 = "); // bedeutet nur dass das was blau ist nacher im serial monitor steht
  31. Serial.println(sensorwert1); // schreibt den senorwert in den serialmonitor (immer eine zahl)
  32. // Zaehlen:
  33. if (sensorwert1 == HIGH) {
  34. press = count++;
  35. Y = 1 * press; // y=mx-b WOFUER WIRD Y GEBRAUCHT?
  36. delay(100); // WARUM WIRD HIER 100 ms GEWARTET?
  37. }
  38. // Hole aktuelle Zeit in ms
  39. // millis() gibt den aktuellen Wert des System Timers zurueck
  40. unsigned long currentMillis = millis();
  41. // Wenn Zeitunterschied >= festgelegtes Interval
  42. if (currentMillis - previousMillis >= interval_ms) {
  43. // aktuelle Zeit speichern fuer naechsten Durchlauf
  44. previousMillis = currentMillis;
  45. /*
  46. Jetzt je nach Stand von count einzelne LED anschalten
  47. 0-3: rot; 4-6: gelb; > 6: gruen
  48. */
  49. if (count <= 3) {
  50. digitalWrite(LEDrot, HIGH);
  51. delay (500); // WOZU DAS DELAY?
  52. } else if (3 < count && count <= 6) {
  53. digitalWrite(LEDgelb, HIGH);
  54. } else if (count > 6) {
  55. digitalWrite(LEDgruen, HIGH);
  56. }
  57. // Zaehler zuruecksetzen
  58. count = 0;
  59. delay(5000)
  60. // alle LEDs ausschalten
  61. digitalWrite(LEDrot, LOW);
  62. digitalWrite(LEDgelb, LOW);
  63. digitalWrite(LEDgruen, LOW);
  64. }
  65. /*
  66. Moeglicherweise delay() einfuegen, um UART nicht
  67. zu fluten
  68. */
  69. delay(1000);
  70. }