User manual

25 26
4.7 Einfaches Lauicht
Unsere Schaltung kann auch zu einem Lauicht ausgebaut werden. Dazu wird hier noch ein weiterer Doppel-
LED-Brick dazugesetzt. Hier kommt noch ein Spezialbaustein zum Einsatz, der auch an der Unterseite Kontakte
hat. Diese bleiben aber in diesem Fall ungenutzt und dienen nur zur Weiterleitung der beiden LED Signale von
Port 6 und 7 auf der Oberseite.
Man beachte die Zuordnung von Port 6 und 7 über die Leitung. Wird das Doppel-T rechts anders eingebaut,
kann sich die Richtung des Lauichts für die beiden LED 6 und 7 umgekehren! Man beachte, dass LED 6 dem Bit
0 zugeordnet ist und LED 7 dem Bit 1. Dem Leser bleibt es hier überlassen, andere Reihenfolgen auszuprobie-
ren.
Downsi de
UP
+
-
9V
1A
LED
LED
LED
LED
LED
LED
// DE_7 Lauicht mit 6 LEDs
#dene PORTLED2 2 // Alle LEDs denieren
#dene PORTLED3 3 // Ports PD2 bis PD7
#dene PORTLED4 4 // werden verwendet
#dene PORTLED5 5 // Beim Brick auf die
#dene PORTLED6 6 // genaue Zuordnung achten
#dene PORTLED7 7
void setup() { // IO denieren
pinMode(PORTLED2,OUTPUT); // Port 2 als Ausgang schalten
pinMode(PORTLED3,OUTPUT); // Port 3 als Ausgang schalten
pinMode(PORTLED4,OUTPUT); // Port 4 als Ausgang schalten
pinMode(PORTLED5,OUTPUT); // Port 5 als Ausgang schalten
pinMode(PORTLED6,OUTPUT); // Port 6 als Ausgang schalten
pinMode(PORTLED7,OUTPUT); // Port 7 als Ausgang schalten
}
void loop() {
static int shiftreg = 1; // Lauicht Startbit 6 Bits werden verwendet
if (shiftreg & 1) { // Bit 0 pruefen bis Bit 5 diesmal
digitalWrite(PORTLED6,HIGH); // rechte LED
} else digitalWrite(PORTLED6,LOW); //
if (shiftreg & 2) { // Bit 1 pruefen
digitalWrite(PORTLED7,HIGH); // linke LED
} else digitalWrite(PORTLED7,LOW); //
if (shiftreg & 4) { // Bit 2 pruefen
digitalWrite(PORTLED4,HIGH); //
} else digitalWrite(PORTLED4,LOW); //
if (shiftreg & 8) { // Bit 3 pruefen
digitalWrite(PORTLED5,HIGH); //
} else digitalWrite(PORTLED5,LOW); //
if (shiftreg & 0x10) { // Bit 4 pruefen
digitalWrite(PORTLED3,HIGH); //
} else digitalWrite(PORTLED3,LOW); //
if (shiftreg & 0x20) { // Bit 5 pruefen
digitalWrite(PORTLED2,HIGH); //
} else digitalWrite(PORTLED2,LOW); //
//
delay(300); // 300 ms warten deniert die Geschwindigkeit
shiftreg = shiftreg << 1; // 1,2,4,8,16,32 Schiebebefehl C-Compiler
if (shiftreg > 32) shiftreg = 1; // dann wieder von Vorne. Damit es rund laeuft
} // Ende der Schleife
SCLS DA
+9V
A0
A1
Tx
Rx
PD2
SCLKMOSI
PD3
PD 6
PD 4
PD 5
PD 7
A7
A3
A2
A6
NANO
to
Br ick`R`
3,3V 5V
USB
B0
SS
MISC
B1
C
Was passiert? Von den 6 LEDs geht immer genau eine an, die andern sind dunkel. Dabei wandert
das Licht von rechts nach links durch. Der Wechsel zur nächsten LED geschieht alle 300ms. Danach
wiederholt sich der ganze Zyklus.