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 . Ich bitte darum mir eine ausführliche Anleitung zukommen zu lassen.
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
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 ?
#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
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.
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.
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)
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.