Arduino: Byte am Serial Monitor immer komplett ausgeben

OP #3183552
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
Gast #3183639
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?
OP #3184267
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
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

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.