die beiden wurden mir Master send (micro), und slave Receive (nano) beschrieben...
hier der Code - habe einen BEispielcode von Instructables minimal geändert:
Code: Alles auswählen
#include <Wire.h>
#define LED_PIN 13
byte x = 0;
void setup()
{
Wire.begin(); // Start I2C Bus as Master
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
Serial.begin(9600);
}
void loop()
{
delay(450);
digitalWrite (LED_PIN, HIGH);
Wire.beginTransmission(9); // transmit to device #9
Wire.write(x); // sends x
Wire.endTransmission(); // stop transmitting
x++;
if (x > 5) x=0;
delay(450);
digitalWrite (LED_PIN, LOW);
Serial.println(x);
}
Code: Alles auswählen
#include <Wire.h>
#define LED_PIN 13
#define LED_1 8
#define LED_2 9
int x;
void setup() {
Wire.begin(9); // Start I2C Bus as a Slave (Device Number 9)
Wire.onReceive(receiveEvent); // register event
pinMode(LED_PIN, OUTPUT);
pinMode(LED_1, OUTPUT);
pinMode(LED_2, OUTPUT);
digitalWrite(LED_PIN, LOW);
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
Serial.begin(9600);
x = 0;
}
void loop() {
//If value received is 0 blink LED 1
if (x == 0) {
digitalWrite(LED_1, HIGH);
delay(200);
digitalWrite(LED_1, LOW);
delay(200);
}
//If value received is 1 blink LED 2
if (x == 1) {
digitalWrite(LED_2, HIGH);
delay(200);
digitalWrite(LED_2, LOW);
delay(200);
}
Serial.println(x);
}
void receiveEvent(int howMany) {
x = Wire.read(); // receive byte as an integer
}
Eigtl teilen sich die beiden Arduinos nur die Betriebsspannung + Bus + 2 LEDs.
Arduino Micro Pin D2 SDA, gelb, geht auf Arduino nano Pin D4 SDA
Arduino Micro Pin D3 DCL, grün, geht auf Arduino nano Pin D5 SCL
inkl den beiden blauen 20 k Pullups
die weißen sind die beiden LEDs mit 200 Ohm direkt an DOs 8/9...
Der Master zählt definitiv aufwärts - also das klappt. Der slave liest nur nullen aus byte "x" zeigt der Serial monitor (-> Led 1 Blinkt).
Ideen?? Danke schonmal