Hallo Leute,
ich steh im Moment echt auf dem Schlauch. Ich hab hier einen Arduino Uno als Slave und meinen Pi als Master.
Der Arduino schreibt mir auf Anfrage vom Pi ein Array mit der Größe von 2 Byte auf den Bus.
- Anfrage des Pi´s
- Arduino sendet ein Array mit 2 Byte. Im ersten Byte steht 200 und wird in jeder Abfrage runtergezählt, im zweiten Byte 0 und wird bei jeder Anfrage hochgezählt.
Wie greife ich jetzt auf dieses Array zu? Bzw mit welcher Funktion empfange ich es?
da die Funktion bus.read_word_data eine Adresse des Byteregister will und ich diese nicht kenne, kann ich die Funktion nicht gebrauchen. Bis jetzt kann ich halt nur ein Byte mit der Funktion bus.read_byte auslesen
hier mal der Code vom Arduino:
#include <Wire.h> // Binde I2C Bibliothek ein
byte Anfragen[2]; // Globale Variable
void setup()
{
Serial.begin(9600); // Öffne Seriele Schnittstelle mit einer Baudrate von 9600 bit/s
Wire.begin(2); // Der Slave bekommt die I2C Adresse 2
Wire.onRequest(requestEvent); // register event2
Anfragen[0] = 200;
Anfragen[1] = 0;
}
void loop()
{
delay(100);
}
// Interruptsfunktion die Ausgeführt wird sobald der Master anfrägt
// this function is registered as an event, see setup()
void requestEvent()
{
Serial.println("I2C Anfrage es werden folgende Werte gesendet");
Serial.println(Anfragen[0]);
Serial.println(Anfragen[1]);
Wire.write(Anfragen,2); // Datenlänge so groß wie vom Master erwartet!!! Wenn 6 Byte erwartet werden dann "Hallo " m Leerzeichen
Anfragen[0]--;
Anfragen[1]++;
}
Alles anzeigen
Hoffe das genügt für ne kurze Übersicht und hoffentlich kann mir jemand helfen. Ich stell mich da schon seit Stunden einfach nur dumm an