
Die LEDs sollen als Lauflicht und in verschiedenen Kombination leuchten:
- Lauflicht hin und zurück
- alle LEDs
- die LEDs 7 5 3
- die beiden inneren LEDs
- die beiden äußeren LEDs
- alle außer den äußeren LEDs
- nur die mittlere
So sieht es aus:

Die digitalen und die analogen Pins des Arduinos sind in drei Gruppen aufgeteilt:


Funktionen wie digitalWrite() und digitalRead() sind relativ langsam in der Ausführung und manchmal werden Programme mit vielen Ein- oder Ausgängen komplex und schwer überschaubar.Deshalb ist es oft übersichtlicher die Pins mithilfe der Ports zu definieren und zu schalten.
Es existieren drei sogenannte Register:
| Register | Funktion |
|---|---|
| DDR(D,B,C) | Pins als INPUT = 0 oder als OUTPUT = 1 definieren |
| PORT(D,B,C) | Pins als HIGH = 1 oder als LOW = 0 festlegen |
| PIN(D,B,C) | gibt den Zustand der Pins an, die im DDR-Register auf Input gesetzt wurden |
Das Register wird jeweils mit dem Namen des Ports (D, B oder C) ergänzt.
Beim Zugriff auf die Ports wird jeweils ein Bit gesetzt. Sein Wert ist entweder 1 = an, oder 0 = aus
Beispiele:
Digitale Pins 7, 6, 5, 4 und 3 als OUTPUT setzen
DDRD = B11111000;
Digitale Pins 7, 6, 5, 4 und 3 auf HIGH setzen:
PORTD = B11111000;
Taster an Pin 11 als INPUT setzen
DDRB = B00001000;
Pin 11 auf HIGH setzen
PORTB = B00001000;
Einzelne Bits werden mit den Operatoren « eine Position nach links und » eine Position nach rechts verschoben.
Nach rechts schieben:

PORTD = PORTD » 1;
PORTD = PORTD » 1;
PORTD = PORTD » 1;
PORTD = PORTD » 1;
PORTD = PORTD » 1;
Nach links schieben:

PORTD = PORTD « 1;
PORTD = PORTD « 1;
PORTD = PORTD « 1;
PORTD = PORTD « 1;
PORTD = PORTD « 1;

Der Parameter ~ kehrt den Wert eines Bits um:
// LEDs an den Pins 7 5 3 leuchten
PORTD = B10101000;
// Werte umkehren, aus 0 wird 1 und aus 1 wird 0
PORTD = ~PORTD;
// PORTD hat jetzt den Wert B01010111
// -> Die LEDs an den Pins 6 4 leuchten (Pins 2 bis 0 sind nicht belegt)
Benötigte Bauteile:
- 5 LEDs
- 3 Widerstände 220 Ω (gelbe, rote und grüne LED)
- 2 Widerstände 100 Ω (blaue und weiße LED)
- Leitungsdrähte

Beachte die ⇒Vorwiderstände verschiedener LEDs
Baue die Schaltung auf:
(Fahre mit der Maus über das Bild, um die Bezeichnungen der Bauteile zu sehen)
Das Programm. Beachte die Kommentare.
|
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 |
int Leuchtdauer = 200; void setup() { // Pins 7 bis 3 als OUTPUT definieren DDRD = B11111000; } void loop() { // Lauflicht hin Start mit LED Pin 7 PORTD = B10000000; delay(Leuchtdauer); for (int i = 0; i < 4; i++) { /* 1 Bit nach rechts schieben B01000000 -> Pin 6 B00100000 -> Pin 5 B00010000 -> Pin 4 B00001000 -> Pin 3 */ PORTD = PORTD » 1; delay(Leuchtdauer); } // Lauflicht zurück Start mit LED Pin 3 PORTD = B00001000; delay(Leuchtdauer); for (int i = 0; i < 4; i++) { /* 1 Bit nach links schieben B00010000 -> Pin 4 B00100000 -> Pin 5 B01000000 -> Pin 6 B10000000 -> Pin 7 */ PORTD = PORTD « 1; delay(Leuchtdauer); } delay(Leuchtdauer); // alle LEDs PORTD = B11111000; delay(1000); // alle aus PORTD = B00000000; delay(1000); // LEDs an den Pins 7 5 3 leuchten PORTD = B10101000; delay(1000); // umkehren PORTD = ~PORTD; delay(1000); // die beiden äußeren PORTD = B10001000; delay(1000); // die inneren PORTD = ~PORTD;; delay(1000); // nur die mittlere PORTD = B00100000; delay(1000); // alle aus PORTD = B00000000; delay(1000); } |
Ähnliche Projekte
- Blinkende LED
- Blinkende LED mit einem Potentiometer
- Blinkende LEDs mit Multithreading
- Farbe und Helligkeit eines LED-Streifens mit Potentiometern manipulieren
- Farbenspiele mit einem LED-Streifen
- Farbenspiele mit einer RGB-LED
- Glücksrad mit NeoPixel-Ring
- Interrupt: Lauflicht
- Interrupt — Lauflicht mit Drehgeber
- Interrupt: Licht ein- und ausschalten
Letzte Aktualisierung:






