Hallo sschultewolter, hallo Eisbaer,
meine Frage war.
"Hat jemand so was am laufen?"
Aber bitte hier ist die letzte Version meiner Versuche.
/******************************************************************
Created with PROGRAMINO IDE for Arduino - 10.10.2016 21:09:11
Project :
Libraries :
Author :
Description :
******************************************************************/
#include <Wire.h>
#define SLAVE_ADDRESS 0x04
int number = 0;
int dataindex = 0;
char daten[8] = {23, 51, 88, 127, 128, 180, 221, 230};
void setup()
{
pinMode(13, OUTPUT);
Serial.begin(9600); // start serial for output
// initialize i2c as slave
Wire.begin(SLAVE_ADDRESS);
// define callbacks for i2c communication
Wire.onReceive(receiveEvent);
Wire.onRequest(sendData);
Serial.println("Ready!");
}
void loop()
{
delay(100);
}
void receiveEvent(int howMany) {
while (Wire.available()) { // loop through all but the last
char c = Wire.read(); // receive byte as a character
Serial.print(c); // print the character
index = 0;
}
index++;
Serial.println("empfangen"); // print the integer
}
// callback for sending data
void sendData()
{
Wire.write(daten[index]);
Serial.print(index);
Serial.print("--");
Serial.print(daten[index]);
Serial.println(" senden");
}
Python auf dem Raspberry:
import smbus
import time
# for RPI version 1, use "bus = smbus.SMBus(0)"
bus = smbus.SMBus(1)
# This is the address we setup in the Arduino Program
address = 0x04
while True:
vTimeDate = time.localtime()
data = [vTimeDate[0]-2000, vTimeDate[1], vTimeDate[2], vTimeDate[3], vTimeDate[4], vTimeDate[5]]
try:
bus.write_i2c_block_data(address,0,data)
except IOError:
print("Schreibfehler ")
time.sleep(1)
print ("Nachricht an Aduino ", data)
time.sleep(1)
x = 0
while x <= 7:
dataread = bus.read_byte_data(address,0)
print(dataread)
x += 1
Ausgabe vom Terminal am Arduino:
8empfangen
empfangen Die empfangenen Daten kann man in der ASCII-Einstellung nicht lesen
1--3 senden werden aber korrekt empfangen
empfangen
1--3 senden
empfangen
1--3 senden
empfangen
1--3 senden
empfangen
1--3 senden
empfangen
1--3 senden
empfangen
1--3 senden
empfangen
1--3 senden
:empfangen
empfangen
1--3 senden
empfangen
1--3 senden
empfangen
1--3 senden
empfangen
1--3 senden
empfangen
1--3 senden
empfangen
1--3 senden
empfangen
1--3 senden
empfangen
1--3 senden
und von der Python Shell:
Nachricht an Aduino [16, 10, 13, 9, 13, 31]
51
51
51
51
51
51
51
51
Nachricht an Aduino [16, 10, 13, 9, 13, 32]
51
51
51
51
51
51
51
51
Nachricht an Aduino [16, 10, 13, 9, 13, 33]