INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
NodeMCU und Nano über I2C verbinden Werte sind falsch
09.10.2018, 18:51
Beitrag #1
NodeMCU und Nano über I2C verbinden Werte sind falsch
Ein nettes Hallo ,

ich versuche nun seit gut zwei Stunden einen Nano (slave) und einen NodeMCU (master) über I2C über das Beispiel in diesem
Link: https://forum.arduino.cc/index.php?topic...msg3199520
zu verbinden. Es kommen auch Daten an aber die Werte sind falsch:
Die Werte im slave sind:
10
40
120
32000
-1000

und im Master kommt an:
2621450
2097152120
-1000
-1
-1

Ich kann es mir nicht erklären wenn ich ein char übertrage geht es (Beispielcode)

Ich stehe auf dem Schlauch und komme einfach nicht weiter.

Anbei noch meine Codes dich ich mit Serial.print erweitert habe

Master
Code:
#include <Wire.h>

const int SLAVE_ADR = 8;

union data_u
{
struct
{
   int value1;
   int value2;
   int value3;
   int value4;
   int value5;
};
byte bytes[10];
};

data_u data;

void setup()
{
Serial.begin(9600);
Serial.println("Master");
Serial.println("-----------------------------");
Wire.begin(D1, D2);

// getData();
}

void loop()
{
getData();
}

void getData()
{
  Wire.requestFrom(SLAVE_ADR, sizeof(data));
  for (unsigned int i = 0; i < sizeof(data); i++)
    data.bytes[i] = Wire.read();

  Serial.println(data.value1);
  Serial.println(data.value2);
  Serial.println(data.value3);
  Serial.println(data.value4);
  Serial.println(data.value5);
  Serial.println("-----------------------------");

  delay (3000);
}

Slave
Code:
#include <Wire.h>

const int SLAVE_ADR = 8;

union data_u
{
struct
{
   int value1;
   int value2;
   int value3;
   int value4;
   int value5;
};
byte bytes[10];
};

data_u data;

void setup()
{
data.value1 = 10;
data.value2 = 40;
data.value3 = 120;
data.value4 = 32000;
data.value5 = -1000;

Serial.begin(9600);
Serial.println("Slave");
Serial.println("-----------------------------");

Wire.begin(SLAVE_ADR);
Wire.onRequest(requestEvent);
}

void loop()
{
Serial.println(data.value1);
Serial.println(data.value2);
Serial.println(data.value3);
Serial.println(data.value4);
Serial.println(data.value5);
Serial.println("-----------------------------");
delay (3000);
}

void requestEvent()
{
Wire.write(data.bytes, sizeof(data));
}

Ich möchte mehrere Werte (die Zahl steht noch nicht endgültig fest) über Sensoren des Nano oder Unos aufnehmen, dann per I2C an den NodeMCU übergeben und dann per wlan in einem MySQL Datenbank übergeben.

Gruß und schonmal danke fürs ansehen
Franzel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
09.10.2018, 19:04
Beitrag #2
RE: NodeMCU und Nano über I2C verbinden Werte sind falsch
Ich habe das etwas anders gelöst. Schaue Dir mal https://www.arduinoforum.de/arduino-Thre...%BCber-I2C an.
Interessant sollte auch dieses und dieses sein.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.10.2018, 16:49
Beitrag #3
RE: NodeMCU und Nano über I2C verbinden Werte sind falsch
Hallo Tommy,

danke für die Links. Die Informationen darin sind sehr hilfreich und haben mir näher gebracht was das Problem ist und wo mein Denkfehler lag.
Leider bin ich noch nicht soweit mit meinen Wissen, dass ich dein Sript so ändern und bei mir einfügen könnte, dass ich 5 Int Werte von dem Arduino zum NodeMCU richtig übergeben könnte. Ich werde mich aber weiter daran versuchen.

Gruß und nochmals danke
Franzel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
10.10.2018, 17:19
Beitrag #4
RE: NodeMCU und Nano über I2C verbinden Werte sind falsch
Zuerst musst Du festlegen, wer der Master ist (wahrscheinlich der NodeMCU), denn der muss die Kommunikation führen.
Dann kommt die Festlegung was gemacht werden soll.

Wenn Du z.B. nur die 5 int auf Anforderung vom Arduino holen willst, dann ist das, was Du dorthin sendest egal. Nehmen wir mal an eine 1.

Wichtig ist, dass die Zahlen auf beiden Systemen gleich groß sind.
Deshalb sollte die gleiche Definition mit Längenangabe in beiden Sketchen genutzt werden. (ungetestet)
Alles gepackt, damit das Array auf beiden Systemen gleich lang ist.
Code:
// ---------------- das in beiden Sketchen
#pragma pack (push, 1)
uint16_t zahlen[5];  // andere Schreibweise für int
#pragma pack (pop)
byte *bytePtr = (byte *)zahlen; // wir betrachten die 5 int als Byte  
const ARRLEN = sizeof(zahlen); // 10 Bytes
// ------------------------------------------------


// NodeMCU
// senden
uint8_t i = 0, b;
  Wire.beginTransmission(SLAVE_ADR);
  Wire.write(1);
  Wire.endTransmission();
  delay(1);
  // Antwort abholen
  Wire.requestFrom(SLAVE_ADR, ARRLEN);
  while (Wire.available() > 0) {
    b = Wire.read();
    if (i < ARRLEN) {
      bytePtr+i = b;
      i++;
    }

// Arduino
// Frage empfangen
void receiveEvent(int wieviel) { // nutzen wir hier nicht
    uint8_8 w = Wire.read();
    // Die 5 Ints mit Deinen Daten füllen, also die Antwort vorbereiten
}

// Antwort senden auf Wire.requestFrom(SLAVE_ADR, menge);
void requestEvent()
{
  Wire.write(bytePtr,ARRLEN);
}

Das ist jetzt nur mal grob runter geschrieben, ich habe gerade keinen passenden Aufbau zum Testen hier.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
11.10.2018, 12:16
Beitrag #5
RE: NodeMCU und Nano über I2C verbinden Werte sind falsch
Hallo Tommy,

danke für die Hilfe. das habe ich nun verstanden und werde es am Wochenende versuchen umzusetzen. ich melde mich wie es mir ergieng.

Gruß
Franzel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
19.09.2019, 18:44
Beitrag #6
RE: NodeMCU und Nano über I2C verbinden Werte sind falsch
(11.10.2018 12:16)Franzel007 schrieb:  Hallo Tommy,

danke für die Hilfe. das habe ich nun verstanden und werde es am Wochenende versuchen umzusetzen. ich melde mich wie es mir ergieng.

Gruß
Franzel
Da ich gerade zufällig hier vorbei kam: Wie erging es Dir denn?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
21.09.2019, 17:09
Beitrag #7
RE: NodeMCU und Nano über I2C verbinden Werte sind falsch
Hallo Thommy,
ich habe noch lange rumprobiert aber leider hat mich der ganze Aufwand nicht zum Ziel gebracht. ich denke iche benötige da noch mehr Erfahrung.
Ich habe mich dann auf meine Wurzel im Raspberry Pi besonnen und an den NodeMCU zwei ADS1015 per I2C angeschlossen und somit das Problem gelöst. Eigentlich wollte ich es so nicht machen aber es geht.

Gruß und danke der Nachfrage
Franzel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ESP32 NodeMCU von AZ Delivery georg1010 5 258 21.02.2020 10:08
Letzter Beitrag: biologist
  Esp 32 serielle Datenausgabe über WIFI zarathustra 18 667 20.02.2020 17:00
Letzter Beitrag: Fips
  NodeMCU ArtNetNode_V2 Leonard 13 1.144 12.12.2019 22:52
Letzter Beitrag: Tommy56
  NodeMCU Schalter an D0 steffus 6 637 30.11.2019 19:56
Letzter Beitrag: Bernd666
  12V LED-Streifen mit ESP8266 verbinden LEDArduino 18 2.813 26.11.2019 18:59
Letzter Beitrag: amithlon
  ESP32s NodeMCU mit MOD-ENC28J60 (Ehternet) verbinden Plammi 13 1.361 11.11.2019 18:36
Letzter Beitrag: hotsystems
  werte vergleichen becki 59 5.559 02.10.2019 08:18
Letzter Beitrag: Fips
  ESP32 > RS485 >Nano shrimps 4 1.066 22.09.2019 22:49
Letzter Beitrag: shrimps
  Fehler beim Kompilieren für das Board NodeMCU 1.0 magnum1795 14 2.060 21.09.2019 10:44
Letzter Beitrag: magnum1795
  ESP8266 Datenaufzeichnung auf Client über WiFi nuon 24 3.431 13.09.2019 14:33
Letzter Beitrag: Fips

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste