
Beispiel ⇒ Schieberegister
Im binären System werden ganzzahlige Werte durch eine Folge von 0 und 1 dargestellt.
void setup()
{
byte Zahl = 255;
Serial.begin(9600);
// auf serielle Verbindung warten
while (!Serial) {;}
Serial.print(Zahl, BIN);
Serial.println("\tDezimal: " + String(Zahl, DEC));
Serial.println("-------------------------------------");
Serial.println("shift links:");
Serial.println("-------------------------------------");
// shift links
for (int i = 7; i > 0; i--)
{
Zahl = Zahl << 1;
Serial.print(Zahl, BIN);
// Anzeige: Dezimal, Binär
Serial.println("\tDezimal: " + String(Zahl, DEC));
}
Serial.println("-------------------------------------");
// Neustart
Zahl = 255;
Serial.print(Zahl, BIN);
Serial.println("\tDezimal: " + String(Zahl, DEC));
Serial.println("shift rechts: zur Verdeutlichung Anzahl 0 erg\u00e4nzt");
Serial.println("-------------------------------------");
// shift rechts
for (int i = 0; i < 7; i++)
{
Zahl = Zahl >> 1;
Serial.print(Zahl, BIN);
Serial.print("\t");
// zur Verdeutlichung nicht angezeigte 0 ergänzen
for (int j = 0; j <= i; j++)
{
Serial.print("0");
}
Serial.print(Zahl, BIN);
// Anzeige: Dezimal, Binär
Serial.println("\tDezimal: " + String(Zahl, DEC));
}
// ~ -> Bits umkehren
Zahl = B11111100;
Serial.println("-------------------------------------");
Serial.println("Bits mit ~ umkehren");
Serial.print(Zahl, BIN);
Serial.println("\tDezimal: " + String(Zahl, DEC));
Zahl = ~ Zahl;
Serial.print(Zahl, BIN);
Serial.println("\tDezimal: " + String(Zahl, DEC));
}
void loop()
{
// bleibt leer, Programm läuft nur einmal
}
So sieht es aus:


Beispiel Lauflicht mit 5 LEDs
So sieht es aus:
void setup()
{
// LEDs 3 bis 7 als OUTPUT definieren
DDRD = B11111000;
}
void loop()
{
// Lauflicht hin Start mit LED Pin 7
PORTD = B10000000;
delay(200);
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(200);
}
// Lauflicht zurück Start mit LED Pin 3
PORTD = B00001000;
delay(200);
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(200);
}
}
Letzte Aktualisierung: