Ford Prefect
16.06.2014, 17:31
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?
// 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?
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?
// 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?