Hallo Leute, Ich arbeite mich erst in C++ und MC Technik ein. Nun möchte ich folgende Aufgabenstellung lösen und weiss nicht mehr weiter. Ich möchte die Bytereihung beibehalten und über die serielle augeben. ich erhalte aber immer folgende Ausgabe "01110000",ich möchte aber "00001110" ausgeben. Der Fehler liegt sicher hier "byte mask = 0x01; mask; mask <<= 1" was muss ich ändern dass sich die Ausgabe dreht ? lg eddi #include <SoftwareSerial.h> void setup() { Serial.begin(57600); } void loop() { byte test = 00001110; for (byte mask = 0x01; mask; mask <<= 1) { if (test & mask) // wähle das bit Serial.print("1"); // send 1 else Serial.print("0"); // send 0 } }
1 | void loop(){ |
2 | byte test = 0b00001110; |
3 | byte mask = 0x80; |
4 | |
5 | do{ |
6 | if (test & mask) // wähle das bit |
7 | Serial.print("1"); // send 1 |
8 | else
|
9 | Serial.print("0"); // send 0 |
10 | |
11 | mask >>= 1; |
12 | }while(mask); |
13 | }
|
:
Bearbeitet durch User
Leider hänge ich bei meinem Problem noch immer etwas fest. Obige Lösung funktioniert aber nur mit einem Wert in einer Varianblen Warum bekomme ich dann verschiedene Werte ob ich den wert aus einer Variablen nehme oder aus einem Array ? lg ed #include <SoftwareSerial.h> void setup() { Serial.begin(57600); } unsigned long Long_Array1[2] = {918016,9502976}; uint8_t i; void loop() { // Ausgabe Long_Array1 long test; long mask = 0x800000; for (i=0; i<2; i++); { // test = Long_Array2[i]; // nehme ich die Daten aus dem Array bekomme ich folgende Ergebnis: 000000000010010110000000 test = 918016; // nehme ich die Daten direkt aus der Variablenrehalte ich das Richtige Ergebins: 000011100000001000000000 do{ if (test & mask) // wähle das bit Serial.print("1"); // send 1 else Serial.print("0"); // send 0 mask >>= 1; }while(mask); } Serial.println(" "); }
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.