i2c-scanner

Hallo habe eine frage bezüglich dem des I2C-scanner auf folgender Seite: http://playground.arduino.cc/Main/I2cScanner.

Da ist folgende :

if (address<16) 
        Serial.print("0");

Wozu ist diese Abfrage? Ist es vllt da einige Adressen wie ich niachgelesen habe von 0000 0000 (general call adress) bis 0000 1111 reserviert sind und er falls dies der fall ist eine 0 ausgibt?

Oder verstehe ich da was falsch?

16 Adressen sind reserviert und deswegen für Slaves nicht verwendbar.
laut

http://www.rn-wissen.de/index.php/I2C:
Zwei Adressbereiche von jeweils 8 Adressen (1111XXX und 0000XXX) wurden reserviert, um den Bus ausbaufähig zu halten oder um Missverständnissen vorzubeugen.
Adresse R/W Bit Beschreibung
0000000 0 General Call Adresse
0000000 1 Startbyte
0000001 X CBUS Adresse
0000010 X Reserviert für ein anderes Busformat
0000011 X Für zukünftige Erweiterungen reserviert
00001XX X Für zukünftige Erweiterungen reserviert
11111XX X Für zukünftige Erweiterungen reserviert
11110XX X 10-Bit Adressierung

Nach Abzug der 16 Reservierten Adressen bleiben also 112 freie Adressen übrig, die man mit der 7-Bit-Adressierung verwenden kann.

Die reservierten Adressen sind ( 7 bit ohne R/W-Bit):
0x00, 0x01, 0x02, 0x03, 0x04 bis 0x07, 0x78 bis 0x7F
oder dezimal von 0 bis 8 und von 120 bis 127.
Das sind die unteren 8 und die oberen 8.

Aber der Grund für die Kontrolle ob die Adresse kleiner als 16 ist, ist viel einfacher: Es braucht die führende Null damit die Adresse als 2 Stellen Hex-Zahl ausgegeben wird.

Grüße Uwe

Hi Uwe danke für die Erklärung, inwiefern meinst du das , er braucht die führende 0?
ist es somit gemient:

zahlen von 0-15 sind in BINÄR: 0000 0000 (0x00) - 0000 1111 (0x0F)-> führende 0 dickmarkiert
ab 16 ist bin 0001 0000 d.h. ich hab keine führende null sondern eine führende 1 also in HEX(0x10).

Es sie dient zur Anzeige des Hexwertes nach dem 0x..?

Ist es so von dir gemeint?

Danke Uwe

milito:
Ist es so von dir gemeint?

Wenn Du keine führenden Nullen ausgibst, dann würden die Adressen unterhalb 16 ausgegeben werden als:
0x0
0x1
0x2
0x3
...
0xC
0xD
0xE
0xF
und danach dann mit einer Stelle mehr:
0x10
0x11
0x12
...

Durch Ausgabe der führenden Null werden Adressen unter 16 allerdings auch mit 2 Stellen nach dem x ausgegeben
0x00
0x01
0x02

Ach so ok :D.
somit habe ich immer eine zweistellige Ausgabe.

Danke kurs danke uwe:D