// Laufrichtung initialisieren
bool shiftRight = true;
void setup() {
GPIOA->MODER = 0; // Seitzt alle PA auf 0 (Input)
GPIOA->MODER = 21845; // Konfiguriert PA0 bis PA7 als output (01 auf jedem MODR)
GPIOB->MODER = 0; // Setzt PB0 und PB1 auf 0 (Input)
GPIOB->PUPDR = 10; // Aktiviert Pull-Down-Widerstände für PB0 und PB1 (10 in jedem PUPDR-Bitpaar)
GPIOA->ODR = 1; // Schalte die erste LED PA0 ein
}
void loop() {
// Prüfe Tasterstatus zur Laufrichtungssteuerung
if ((GPIOB->IDR & 1) != 0) { // PB0 gedrückt -> Rechtsverschiebung
shiftRight = true;
}
else if ((GPIOB->IDR & 2) != 0) { // PB1 gedrückt -> Linksschiebung
shiftRight = false;
}
// LED-Steuerung: Laufrichtung abhängig von shiftRight
if (shiftRight) {
// Rechtsverschiebung
GPIOA->ODR >>= 1;
if (GPIOA->ODR == 0) {
GPIOA->ODR = 128; // Setzt das höchste Bit bei Ende des Zyklus
}
} else {
// Linksschiebung
GPIOA->ODR <<= 1;
if (GPIOA->ODR == 128) {
GPIOA->ODR = 1; // Setzt das niedrigste Bit bei Ende des Zyklus
}
}
// Wartezeit für die Sichtbarkeit des Lauflichts
delay(200);
}