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?
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);
}
ps, edit:
muss man vom Master aus zusätzlich zur dev Addresse evtl noch eine Registeradresse eingeben? Ggf welche?
Lesezeichen