User manual
27 28
4.8 Lauicht Geschwingkeit steuern
Mit einer zusätzlichen Taste soll die Lauichtgeschwindigkeit umgeschaltet werden können. Dazu verwenden
wir einen der B-Ports, der multifunktional belegt ist. Hier bezeichnet als das Signal MOSI, welches von Port B3
kommt und mit #11 als Parameter angesprochen werden kann. MOSI steht für „Master Out Slave In“ und wird
eigentlich für die eingebaute SPI Schnittstelle verwendet (bestehend aus MOSI+MISO+SCK). Man kann diese
Pins aber ganz normal als IO-Ports verwenden, wie in unserem Beispiel.
+
-
9V
1A
Downsi de
UP
LED
LED
LED
LED
LED
LED
Portbelegung
Kürzel Port Parameter
SCK PB5 #13
MOSI PB3 #11
B1 PB1 #9
SS PB2 #10
MISO PB4 #12
B0 PB0 #8
Wenn man die Taste gedrückt hält so wird der Lauichzyklus schneller.
// DE_8 Lauicht mit Taste - Geschwindigkeit steuern
#dene PORTLED2 2 // LEDs and POrt PD2-PD7
#dene PORTLED3 3
#dene PORTLED4 4
#dene PORTLED5 5
#dene PORTLED6 6
#dene PORTLED7 7
#dene SWITCHB3MOSI 11 // Nun Port PB3 =#11 als Eingang
// er traegt den Namen MOSI auf unserem Brick da er eine
// doppelte Bedeutung hat.
void setup() { // IOs denieren
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
pinMode(SWITCHB3MOSI,INPUT_PULLUP); // MOSI verwenden
}
void loop() {
static int shiftreg = 1; // Lauicht Startbit 6 Bits werden verwendet
if (shiftreg & 1) { // Bit 0 pruefen bis Bit 5
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); //
//
if (digitalRead(SWITCHB3MOSI)==LOW) { // bzw. PORT PB3 #11
delay(50); // 50 ms warten also sehr schnell
} else {
delay(300); // 300 ms warten langsamer
}
shiftreg = shiftreg << 1; // 1,2,4,8,16,32 dann wieder 1,2,3,4...
if (shiftreg > 32) shiftreg = 1; // dann wieder von Vorne. auf 1 setzen
} // 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
I²C
Was passiert? Von den 6 LEDs geht
immer genau eine an, die anderen
sind dunkel. Dabei wandert das
Licht von rechts nach links durch.
Der Wechsel zur nächsten LED
geschieht nun in Abhängigkeit
der Taste unterschiedlich schnell.
Entweder beim Drücken alle 50ms
sonst alle 300ms. Danach wieder-
holt sich der ganze Zyklus.










