Guten Abend,
ich sitze nun schon eine ganze Zeit an einem Problem, für das ich einfach keine Lösung finde(habe auch schon viele Seiten und Foren durchsucht), Ich möchte per I2C mehrere Daten von einem Raspberry PI an einen Arduino senden. Später möchte ich damit noch Motoren steuern aber erstmal Eins nach dem Anderen.
Wenn ich den Code ausführe, geben mir die beiden Serial.println Anweisungen immer den 2. Wert des Python-Codes und 255. Der erste Wert geht also verloren. Woran kann das liegen? Danke schon mal im vorraus.
Edit: Gibts hier sowas wie Code-tags?
Grüße Scio__
Master-Code(Raspberry):
from smbus import SMBus
addr = 0x8
Steps1 = 0
Steps2 = 0
while True:
print("Steps1: ")
Steps = input()
print("Steps2: ")
Steps2 = input()
bus = SMBus(1)
bus.write_byte(addr, int(Steps))
bus.write_byte(addr, int(Steps2))
bus.close()
Slave-Code(Arduino):
#include <Wire.h>
#include <AccelStepper.h>
AccelStepper myStepper(1,7,6);
volatile char x=0;
char xalt = 0;
volatile char y =0;
void setup() {
// Join I2C bus as slave with address 8
Wire.begin(0x8);
// Call receiveEvent when data received
Wire.onReceive(receiveEvent);
myStepper.setMaxSpeed(1000);
Serial.begin(9600);
myStepper.setAcceleration(400);
}
// Function that executes whenever data is received from master
void receiveEvent(int howMany) {
while(Wire.available())
{
x = Wire.read();
y = Wire.read();
}
}
void loop() {
//Serial.print("x[0] =");
Serial.println(x);
// Serial.println("");
// Serial.print("x[1} =");
Serial.println(y);
//Serial.println("");
//if (x!=xalt){
// myStepper.move((int)x*100);}
//while(myStepper.distanceToGo() !=0)
//{
// myStepper.run();
//}
//xalt = x;
}