Ahoi!
Ich versuche, den binären Wert der Pins D2 bis D10 ein eine Variable
einzulesen, um damit später die Busadresse meines Geräts festlegen zu
können. Ich verwende einen Arduino Nano. Pin D2 hat dabei den Wert 1,
Pin D10 den Wert 256.
1 | int StAdr;
|
2 |
|
3 | void setup( ) {
|
4 | Serial.begin(9600);
|
5 | for(int i = 2; i < 11; i++){
|
6 | pinMode( i, INPUT_PULLUP );
|
7 | }
|
8 | }
|
9 |
|
10 | void loop( ) {
|
11 | StAdr = 0;
|
12 | for( int i = 0; i < 9; i++ ){
|
13 | if( digitalRead(i+2) == 0 ){
|
14 | StAdr = StAdr + pow( 2, i );
|
15 | }
|
16 | }
|
17 | Serial.println(StAdr);
|
18 | }
|
Verbinde ich nun Masse mit Pin D2, kommt der gewünschte Wert von 1. Wenn
ich nun aber einen Binärwert höher als Drei anlege, ist der Wert um eins
zu niedrig (die 3 kommt doppelt vor)
Also so:
1 | Angelegter Wert: 0 1 2 3 4 5 6 7 ...
|
2 | Seriell übert. Wert: 0 1 2 3 3 4 5 6 ...
|
Ich habe die For-Schleife nun für i von 1 bis 3 durchgerechnet und
theoretisch sollte es gehen. Hat jemand einen Tipp für mich? Liegt es an
der pow(base,exponent)-Funktion?
Mit freundlichen Grüßen
Valentin