I2C Fehler in Makecode oder im Mini?


#1

Nach meinen Fehlschlägen mit der I2C-Steuerung des maqueen von dfrobot habe ich mir einen Logicanalyzer gekauft und für den microbit und den mini folgenden Code compiliert und aufgespielt:

input.onButtonPressed(Button.A, () => {
let buf = pins.createBuffer(3);
buf[0] = 0x00; // Motor1
buf[1] = 0x00; // Direction Clockwise
buf[2] = 255;  // Speed
pins.i2cWriteBuffer(0x10, buf);
led.toggle(2, 2)

})

Auf dem Microbit kam folgendes raus


auf dem Mini das:

Also kein Wunder dass der mit dem Mini nicht fährt.
@joern.alraun liegt es an makeCode, am Mini oder an mir?


#2

Hallo @klmi
das liegt dann wohl an dir. :grinning:

Die Bilder entsprechen beim mini doch dem Programm – oder sind die etwa vertauscht?
Läuft das Auto denn mit diesem Code auf dem microbit?
Hast du mit dem makecode.calliope.cc kompiliert?

Beste Grüße
Jörn


#3

Die Bilder stimmen so. Das Programm wurde jeweils für microbit (oben) und mini (unten) compiliert. Ich hab jetzt noch nicht so viel über I2C gelesen aber inzwischen glaube ich auch dass der Mini den korrekten Code erzeugt. Der Microbit scheint nach der Setupkommunikation gleich das Endsignal zu schicken während der Mini brav die Codes überträgt. Dummerweise fährt aber das Fahrzeug nur mit dem Signal vom microbit. Das ist ja auch unverhältnismäßig lang auf low. Vielleicht entspricht das Fahrzeug nicht genau den I2c Spezifikationen! Wenn ich mehr Zeit hab teste ich nochmal. Demnächst bekomme ich das Robotikboard von Kitronik (mit 4 Motoren und 6 Servos) welches auch über I2C läuft, das werde ich auch mal testen. Das Adafruit crickit läuft ja auch probemlos über I2C!
Erstmal danke für dein Schauen und Tschüss!

PS: Ich weiß, dass Problem sitzt immer vor dem Computer :laughing:


#4

Roboticsboard läuft!
https://youtu.be/582I0-MQPyc