Binärzahler

Dieses Programm zählt Binär von 0 bis 255 und gibt die 8bit Binärkombination auf 8 LEDs aus.

binarycount.ino
/*
 * Dieses Programm zählt binär von 0 bis 255 und zeigt den aktuellen Zählerstand
 * mit 8 LEDs an 8 digitalen Ausgängen an. Bei 255 angekommen startet es wieder bei 0.
 */
 
byte b = B00000000; // Der Datentyp byte speichert einen vorzeichenlosen 8-Bit integer Wert zwischen 0 und 255.
// Die Definition hier ist ein großes "B" für Bit.
// Kann auch einfach 0 (Dezimal) oder 0x00 (Hexadezimal) sein.
uint8_t c = 0;
 
// Die 8 Bits repräsentiert durch 8 LEDs an 8 Ausgängen
const uint8_t bit0 = 0; // LSB
const uint8_t bit1 = 1;
const uint8_t bit2 = 2;
const uint8_t bit3 = 3;
const uint8_t bit4 = 4;
const uint8_t bit5 = 5;
const uint8_t bit6 = 6;
const uint8_t bit7 = 7; // MSB
 
void setup () {
  Serial.begin (9600);
  pinMode (bit0, OUTPUT);
  pinMode (bit1, OUTPUT);
  pinMode (bit2, OUTPUT);
  pinMode (bit3, OUTPUT);
  pinMode (bit4, OUTPUT);
  pinMode (bit5, OUTPUT);
  pinMode (bit6, OUTPUT);
  pinMode (bit7, OUTPUT);
  while (!Serial) { // Trick 17: Das Hauptprogramm wird erst ausgeführt wenn die Serielle Konsole aufgemacht wurde.
  }                 // So verpasst man keine Ausgabe auf der Konsole weil das Programm losläuft bevor die Konsole offen ist.
}
 
void loop () {
  c = b % 256; // Definition bis wohin der Zähler zählen soll. % ist der Modulo Operator (Rest einer Division).
  //  Bei %16 würde der Zähler z.B. immer nur von 0 bis 15 laufen und wieder von vorne bei 0 beginnen.
  digitalWrite (bit0, (c >> 0) % 2); // verschiebt die Bits um den angegebenen Wert nach rechts. Modulo 2 für Bitüberprüfung.
  digitalWrite (bit1, (c >> 1) % 2); // Bei Bit 0 verschieben um 0
  digitalWrite (bit2, (c >> 2) % 2); // Bei Bit 4 verschieben um 4 usw...
  digitalWrite (bit3, (c >> 3) % 2); //
  digitalWrite (bit4, (c >> 4) % 2); // %2 zur Bitüberprüfung. Bei 1 LED an bei 0 LED aus
  digitalWrite (bit5, (c >> 5) % 2);
  digitalWrite (bit6, (c >> 6) % 2);
  digitalWrite (bit7, (c >> 7) % 2);
  Serial.println (c); // Kontrollausgabe der Dezimalzahl auf der seriellen Konsole
  b++;
  delay (1000);
}
f11/technik/arduino/programme/binaerzaehler.txt · Zuletzt geändert: 2019/09/29 12:03 (Externe Bearbeitung)
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0