Go Down

Topic: i2c Daten in Loop übernehmen (Read 221 times) previous topic - next topic

Torsten_OL

Dec 26, 2018, 04:15 pm Last Edit: Dec 26, 2018, 05:31 pm by uwefed Reason: add CODE TAGs
Guten Tag,
dass ich Anfänger bin, werdet ihr anhand meine Frage wohl erkennen.

Ich übertrage von einem Arduino Nano Texte zu einem weiteren Nano.
Wie bekomme ich die Texte in "void loop" um diese auszuwerten?

Master:
Code: [Select]
#include <Wire.h>

void setup() {
 Serial.begin(9600);
 Wire.begin();
}


void loop() {

 String text2 = String(x, DEC);
 String text3 = String(y, DEC);


 Wire.beginTransmission(9);
 Wire.write("Hallo Leute" );
 Wire.endTransmission();

 delay(500);

}

Slave:
Code: [Select]
#include <Wire.h>

void setup() {
 Serial.begin(9600);
  Wire.begin(9);
  Wire.onReceive(receiveEvent);
}

void receiveEvent(int bytes)
{
 while (1 < Wire.available())
 {
   char buchstabe = Wire.read();    
   Serial.print(buchstabe);
 
 }
 char buchstabe = Wire.read();
 Serial.println(buchstabe);
}

void loop() {

 
   delay(100);

   char text3[32] = "Hallo Leute";
   if (!strcmp(buchstabe, text3)) {
     digitalWrite(4, HIGH);
   }

 }

Danke schon mal im Voraus

combie

> Wire.onReceive(receiveEvent);
Diese Funktion wird in einer ISR aufgerufen.

Darum ist dieses darin verboten:
> Serial.print(buchstabe);


Und jetzt zum Problem!
Du benötigst eine als volatile deklarierte Übergabevariable, welche dann in loop() atomar ausgelesen wird.
Alle sagen: Das geht nicht!
Einer wusste das nicht und probierte es aus.
Und: Es ging nicht.

Torsten_OL

Danke und AHA - aber was bedeutet das - wie habe ich das einzurichten?

agmue

Wahnsinn und Verstand trennt nur eine dünne Wand. (Daniel Düsentrieb)

Go Up