hallo,
ich bin gerade bei meinen ersten Versuchen, den NXT mit Arduino per I2C zu verbinden.
Der Arduino liest alle 20ms einen Taster an digital pin 2 aus (Taster an VCC über 100kOhm gegen GND)
value=digitalRead(signalpin);
und gibt das Ergebnis an ledpin 13 (interne LED) aus
digitalWrite(ledpin,value);
Bis hierhin funktioniert es.
Gleichzeitig wird er als devaddr 0x03 definiert
Wire.begin(3);
und soll auf i2c-request den Zustand des signalpins als byte an den i2c-Bus übergeben
void requestEvent() {
Wire.write(signalpin); // respond with message of 1 byte
}
das müsste soweit auch stimmen, oder?
Leider funktioniert es nicht mit dem NXT-Master, daher will ich jetzt erstmal den Arduino-Teil klar kriegen.
Ist der soweit in Ordnung?
ps, edit:Code:// touch sensor with external Pullup at pin digital 2 // I2C as slave, dev addr. 0x03 #include <Wire.h> // serial lib int ledpin=13; byte signalpin=12; byte value=0; //************************************************************************* void setup() { pinMode(ledpin,OUTPUT); pinMode(signalpin,INPUT); Wire.begin(3); // join I2C bus with dev address 0x03 Wire.onRequest(requestEvent); // register event } //************************************************************************* void requestEvent() { Wire.write(signalpin); // respond with message of 1 byte } //************************************************************************* void loop() { value=digitalRead(signalpin); digitalWrite(ledpin,value); delay(20); }
muss man vom Master aus zusätzlich zur dev Addresse evtl noch eine Registeradresse eingeben? Ggf welche?







Zitieren

Lesezeichen