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 | }
|
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.