Einzelne Ziffern einer 8-stellige Zahl ändern

Hi,

ich habe eine 8-stellige Zahl nur mit 1 oder 0. Jetzt möchte ich gerne einzelene Stellen dieser Zahl ändern. Hab das jetzt mit bitwrite versucht.
Wenn die Zahl wie folgt aussieht: 11111111
und ich
bitWrite(pins, 2, 1) und
bitWrite(pins, 3, 0) ausführe kommt bei einem
Serial.println(pins, BIN);
folgendes raus
100

Ich hätte aber gerne
11101111
Kann mir jemand erklären, was ich hier falsch mache.

Danke Christoph

Ja, du zeigst den Kode nicht, der den Fehler hat.

Ich würde raten, du hast mehrere pins.

Hier ist Beispiel

Ja, Du zeigst uns nicht den Teil, wo der Fehler sich vor Dir versteckt.

Denn bei mir geht es:

void setup()
{
  Serial.begin(115200);
  delay(500);
  Serial.println("\nStart ...");
  uint8_t pins = 0b11111111;
  Serial.println("76543210");
  Serial.println(pins, BIN);
  bitWrite(pins, 2, 1);
  bitWrite(pins, 3, 0);
  Serial.println(pins, BIN);
}

void loop(){}

Ausgabe:

Start ...
76543210
11111111
11110111

Nö, irgendwie nicht :roll_eyes:

Upps total schief ist der Turm :speak_no_evil:
Aber jetzt bitWrite()
im #3 habe auch korrigiert

Wie so oft:

  1. Es wird nicht einzeln getestet
  2. Es wird kein komplettes Testprogramm gezeigt
  3. Der Testcode wird bis zu Untestbarkeit verstümmelt
  4. Der fehlerhafte Code wird raus geschnitten, also geheim gehalten
  5. Meistens befindet sich die Fehlerursache vor dem Monitor.

Also alles ganz normal.
Etwas nervig, aber offensichtlich normal.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.