1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
/*
Arduino Tutorial 1.2 - Taster entprellen
Wenn der Taster gedrückt wird, schalten verschiedene Beleuchtungsmodi durch.
1. Normales Blinken mit 1000ms delay.
2. Schnellerses Blinken mit 500ms delay.
3. Schnelles Blinken mit 250ms delay.
4. Durchgehendes Leuchten.
5. LED aus.
by Scynd 2015
http://www.scynd.de/tutorials/arduino-tutorials.html
*/
// Konstanten
const int tasterPin = 2; // Pin Nummer des Tasters
const int ledPin = 3; // Pin Nummer der LED des Arduinos
// Variablen
int tasterStatus = LOW; // aktuelles Signal vom Eingangspin
int tasterGedrueckt = 0; // abfragen ob Taster gedrückt war
int lichtmodus = 0; // festlegen der verschiedenen Lichtprogramme
int ledStatus = LOW; // aktueller Zusatnd der LED
int entprellZeit = 200; // Zeit für Entprellung, anpassen!
unsigned long tasterZeit = 0; // Zeit beim drücken des Tasters
unsigned long ledMillis = 0; // Zeit für den Blinkrythmus der LED
void setup()
{
pinMode(ledPin, OUTPUT); // LED Pin wird als Ausgang gesetzt
pinMode(tasterPin, INPUT); // Taster Pin wird als Eingang gesetzt
}
void loop()
{
// Lesen des tasterPin
tasterStatus = digitalRead(tasterPin);
// Wenn der Taster gedrückt ist...
if (tasterStatus == HIGH)
{
tasterZeit = millis(); // aktualisiere tasterZeit
tasterGedrueckt = 1; // speichert, dass Taster gedrückt wurde
}
// Wenn die gewählte entprellZeit vergangen ist und der Taster gedrückt war...
if ((millis() - tasterZeit > entprellZeit) && tasterGedrueckt == 1)
{
lichtmodus++; // lichtmodus wird um +1 erhöht
tasterGedrueckt = 0; // setzt gedrückten Taster zurück
}
//*************************************Leuchtprogramme**************************************
// Wenn Lichtmodus 0 ist, blinke im 1000ms Rythmus
if (lichtmodus == 0)
{
// Wenn 1000ms vergangen sind...
if (millis() - ledMillis > 1000)
{
ledStatus = !ledStatus; // kehre den letzten LED Zustand um (z.B LOW -> HIGH)
digitalWrite(ledPin, ledStatus); // Ausgabe am LED Pin
ledMillis = millis(); // beginne die Zeitzählung von vorne
}
}
// Wenn Lichtmodus 1 ist, blinke im 500ms Rythmus
else if (lichtmodus == 1)
{
// Wenn 500ms vergangen sind...
if (millis() - ledMillis > 500)
{
ledStatus = !ledStatus; // kehre den letzten LED Zustand um (z.B LOW -> HIGH)
digitalWrite(ledPin, ledStatus); // Ausgabe am LED Pin
ledMillis = millis(); // beginne die Zeitzählung von vorne
}
}
// Wenn Lichtmodus 2 ist, blinke im 250ms Rythmus
else if (lichtmodus == 2)
{
// Wenn 250ms vergangen sind...
if (millis() - ledMillis > 250)
{
ledStatus = !ledStatus; // kehre den letzten LED Zustand um (z.B LOW -> HIGH)
digitalWrite(ledPin, ledStatus); // Ausgabe am LED Pin
ledMillis = millis(); // beginne die Zeitzählung von vorne
}
}
// Wenn Lichtmodus 3 ist, leuchte durchgehend
else if (lichtmodus == 3)
{
digitalWrite(ledPin, HIGH); // LED leuchtet
}
// Wenn Lichtmodus 4 ist, LED aus
else if (lichtmodus == 4)
{
digitalWrite(ledPin, LOW); // LED ist aus
}
// Wenn der Lichtmodus auf 5 sprngt, setzte ihn wieder zurück auf 0 um von vorne zu beginnen
else
{
lichtmodus = 0;
}
}
|