Kommunikation zwischen Arduinos

Hallo liebe Community,

ich versuche die Daten eines digitalen Sensors (touch), der an dem digitalem Pin 2 angeschlossen ist, von meinem Arduino Uno zu meinem Arduino Leonardo zu senden, der dann einen Keyboard.press-befehl ausführen soll. Leider funktioniert dies nicht :confused: . Ich bitte darum mir eine ausführliche Anleitung zukommen zu lassen.

Meine Versuche:

Ich freue mich auf eure Antworten

Mit freundlichen Grüßen

GuardDog

Die Verbindung kannst Du über I2C oder über serial bauen.
Schau Dir mal die Beispiele an.

Gruß Tommy

GuardDog:
ich versuche die Daten eines digitalen Sensors (touch), der an dem digitalem Pin 2 angeschlossen ist, von meinem Arduino Uno zu meinem Arduino Leonardo zu senden, der dann einen Keyboard.press-befehl ausführen soll. Leider funktioniert dies nicht :confused:

Ich freue mich auf eure Antworten

Und was genau funktioniert nicht ?

Der digitale Touch-Sensor ?
Die Verbindung zwischen dem Uno und Leonardo ?
Oder die "Keyboard.press" Anweisung ?

Bitte etwas genauer ?

Ich bitte darum mir eine ausführliche Anleitung zukommen zu lassen.

?

Verbinde doch einfach einen digitalen Ausgang des Uno an einen Eingang des Leonardo. Nicht vergessen Gnd auch zu verbinden

HotSystems:
Und was genau funktioniert nicht ?

Der digitale Touch-Sensor ?
Die Verbindung zwischen dem Uno und Leonardo ?
Oder die "Keyboard.press" Anweisung ?

Bitte etwas genauer ?

Die Verbindung zwichen den Arduinos funktioniert nicht.

Tommy56:
Die Verbindung kannst Du über I2C oder über serial bauen.
Schau Dir mal die Beispiele an.

Gruß Tommy

Vielen Dank für deine Antwort! Allerdings habe ich nicht wirklich viel Ahnung von I2C bzw. verstehe es nicht genau :confused:

Sorry, aber die Videos schaue ich mir nicht an.

Code und Schaltplan.
Das wäre mal was...

GuardDog:
Die Verbindung zwichen den Arduinos funktioniert nicht.

Und wie hast du es probiert ?
Das geht aus deinem ersten Post nicht hervor.
Deinen Sketch zeigen, hatte ja auch combie dir geschrieben.

Vielen Dank für deine Antwort! Allerdings habe ich nicht wirklich viel Ahnung von I2C bzw. verstehe es nicht genau :confused:

Dann mach es so wie EIEspanol es geschrieben hat.
Oder einfach lernen. Die Beispiele zeigen doch genau, wie es funktioniert.

Und anhand der Videos (son Mist brauchen wir hier nicht) können wir nicht sehen, welche Fehler du machst.

Die Videos waren nur Tutorials zu folgendem Thema:

GuardDog:
Die Videos waren nur Tutorials zu folgendem Thema:

https://www.arduino.cc/en/Tutorial/MasterWriter

Ich brauche keine Video Tutorials.
Und dir helfen sie offensichtlich auch nicht.

Warum hältst du Aufbau und Code geheim?

GuardDog:
Die Videos waren nur Tutorials zu folgendem Thema:

Und nochmal, wir können daran nicht erkennen, was du alles falsch machst.

Somit ist es immer wichtig, deine Ergebnisse zu zeigen.

Also....

der Aufbau lautet wie folgt:

der Master-Skript (Uno)

#include <Wire.h>

void setup() {
  Wire.begin(); // join i2c bus (address optional for master)
}

byte x = 0;

void loop() {
  Wire.beginTransmission(8); // transmit to device #8
  Wire.write("x is ");        // sends five bytes
  Wire.write(x);              // sends one byte
  Wire.endTransmission();    // stop transmitting

  x++;
  delay(500);
}

Der Slave Code (Leonardo):

#include <Wire.h>

void setup() {
  Wire.begin(8);                // join i2c bus with address #8
  Wire.onReceive(receiveEvent); // register event
  Serial.begin(9600);           // start serial for output
}

void loop() {
  delay(100);
}

// function that executes whenever data is received from master
// this function is registered as an event, see setup()
void receiveEvent(int howMany) {
  while (1 < Wire.available()) { // loop through all but the last
    char c = Wire.read(); // receive byte as a character
    Serial.print(c);         // print the character
  }
  int x = Wire.read();    // receive byte as an integer
  Serial.println(x);         // print the integer
}

Das ist jetzt nur um zu überprüfen, ob die Verbindung funktioniert, also ohne den Touch-Sensor

GuardDog:
Das ist jetzt nur um zu überprüfen, ob die Verbindung funktioniert, also ohne den Touch-Sensor

Ja, und das funktioniert bei dir nicht ?
Das sind doch Beispiele aus der Library.

HotSystems:
Ja, und das funktioniert bei dir nicht ?
Das sind doch Beispiele aus der Library.

Beim "leonardo-Serialmonitor" kommt nichts an

I2C ist auf dem Arduino UNO auf den Pins A4 und A5, auf dem Leonardo aber auf 2 und 3.
Wenn Du die Pins SDA und SCL verwendest ist die verschiedene Pinbelegung egal.

Ich verstehe aber nicht, warum Du Das mit 2 Arduinos machen willst und wieso Du den Sensor nicht direkt an den Leonardo anschießen willst, sondern einen Arduino UNO dazwischenschalten willst. Ich verstehe auch nicht wieso Du eine Schnittstelle verwenden willst wo ein einzelnes Pin HIGH oder LOW auch genügt.

Grüße Uwe

uwefed:
I2C ist auf dem Arduino UNO auf den Pins A4 und A5, auf dem Leonardo aber auf 2 und 3.
Wenn Du die Pins SDA und SCL verwendest ist die verschiedene Pinbelegung egal.

Wire - Arduino Reference

Ich verstehe aber nicht, warum Du Das mit 2 Arduinos machen willst und wieso Du den Sensor nicht direkt an den Leonardo anschießen willst, sondern einen Arduino UNO dazwischenschalten willst. Ich verstehe auch nicht wieso Du eine Schnittstelle verwenden willst wo ein einzelnes Pin HIGH oder LOW auch genügt.

Grüße Uwe

Weil ich noch mehrere Sensoren anschließen möchte und das geht nicht (oder)

Weil ich noch mehrere Sensoren anschließen möchte und das geht nicht (oder)

Bisher sehe ich noch keinen deiner Sensoren....
Also: KA!

Aber nichts desto trotz:
I2C funktioniert zwischen Arduinos!

der Aufbau lautet wie folgt:

Der Aufbau ist falsch!

Denn:

I2C ist auf dem Arduino UNO auf den Pins A4 und A5, auf dem Leonardo aber auf 2 und 3.

Ich wiederhole:

I2C ist auf dem Arduino UNO auf den Pins A4 und A5, auf dem Leonardo aber auf 2 und 3.
Wenn Du die Pins SDA und SCL verwendest ist die verschiedene Pinbelegung egal.

Wieso machst Du das mit 2 Arduinos?
Wieso hängst Du die Sensoren nicht an den Leonardo?

Die I2C Schnittstelle kann keine langen Distanzen überbrücken. Bei ca 10m ist Schluß.
Die serielle Schnittstelle kann größere distanzen überbrücken. Für noch längere Abstände eignet sich RS485.

Grüße Uwe

Die I2C Schnittstelle kann keine langen Distanzen überbrücken. Bei ca 10m ist Schluß.

Ohne Zusatzmaßnahmen, so wie zusätzliche Pullup, ist bei 20cm schon Ende.
Von 10m muss man da gar nicht erst träumen.

Hallo, vielen Dank es funktioniert nun wunderbar! :slight_smile: