Arduino: Byte am Serial Monitor immer komplett ausgeben

OP #3183552
Lesenswert?

n'Abend,

Leider ist google heute nicht mein Freund, also muß das Forum herhalten.
Ich suche nach einer Möglichkeit einen Wert binär am Serial-Monitor oder 
auf einem LCD als komplettes Byte anzuzeigen auch wenn der wert kleiner 
0x80 ist.
In meinem Code werden Nullen vor dem höchsten High Bit nicht angezeigt.
1
int wert = 0x65;
2
Serial.print(wert, BIN);

was kann ich anders machen?

Cheers
Philipp
OP #3184267
Lesenswert?

PittyJ schrieb:
> Wenn man das von Hand macht (Schleife 7 -> 0) und die Bits als '1' oder
> '0' ausgibt, braucht das auch nur 5 Zeilen.
> Ist das so schwer zu implementieren? Braucht man dafür schon Google?


Peter Dannegger schrieb:
> void printbin8( uint8_t val )
> {
>   for( uint8_t i = 8; i; i--, val <<= 1 )
>     putchar( !!(val & 0x80) + '0' );
> }

vielen Dank für die Antworten, auf das bin ich auch schon gekommen. 
Dachte vielleicht gibt es einen Befehl der mir das so ausgibt. Die 
schleife verstehe ich soweit, aber was wenn ich einen dezimalen Wert von 
3 Stellen(Bsp: 903) 4- stellig anzeigen will(Bsp: 0903). wie kommt dann 
die "Null" vor den Wert?
#3184604
Lesenswert?

Hallo Philipp,

wenn du in der Arduino-IDE auf Hilfe->Referenz klickst, öffnet sich eine 
lokale Version von http://arduino.cc/en/Reference/HomePage. Schon 
gelesen? Da steht nämlich was interessantes: "It links against AVR Libc 
and allows the use of any of its functions; see its user manual for 
details."

Wenn du da die Referenz öffnest 
(http://www.nongnu.org/avr-libc/user-manual/modules.html), findest du 
unter "<stdio.h>: Standard IO facilities" die interessante Funktion 
"sprintf", die du in deinem Fall zum Beispiel so benutzen kannst:

int val = 903;
char buf[7];
sprintf(buf,"%04d",val);
Serial.print(buf);

Die Funktion sprintf und ihre Kollegen sind recht mächtig was 
Formatierung von Ausgabe angeht. Die komplette Anleitung ist daher recht 
lang, siehe 
http://www.nongnu.org/avr-libc/user-manual/group__avr__stdio.html unter 
vfprintf.

LG, Sebastian

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren