Ich war mir sicher, daß es gehen muss: Den CalliopeMini vollständig über mbed zu nutzen. Das Calliope-Team versicherte, dass der Calliope kompatibel zum Micro:Bit ist. Also..
Ich lud das Spiel "Snake"runter. Matrix lief, Lagesensor nicht. Und an dieser Stelle fing der Lernprozess an!
Okay - man nutzt den BMX055 als ACC, GYR, MAG.
Der Schaltplan des Calliope zeigte, dass der Sensor über I2C angesprochen wird.
Ich konnte also die MicroBitI2C-Klasse verwenden.
Das Datenblatt vom BMX055 lesen war die nächste Herausforderung. Ich beschloß , erst einmal ein einfaches Programm zu schreiben und die ChipId herauszufinden. Das kann ich eigentlich allen nur als Einstiegsprogramm empfehlen. Das Ergebnis muss 0x32 lauten und wird im Register 0x40 gelesen, aber nur, wenn vorher der Magnetsensor aktiviert wird.
Okay.. aber wie liest und schreibt man die Register?
Nur weil der Magnetsensor die Adress 0x10 hat, heißt das noch lange nicht, daß man auch 0x10 schreiben muss: Das sind nur die obersten 7 Bits, das letzte Bit ist zum Schreiben eine 0 und zum Lesen eine 1.
Dies und noch vieles mehr habe ich aus dem Buch
Micro:bit IoT In C von Harry Fairhead
erfahren. Für mich war das Buch ideal, weil ich ganz gut mit englischsprachigen Fachbüchern zurechtkomme und mein Wissenstand in etwa den Voraussetzungen entsprach. Der Preis war auch noch ok. Inwiefern andere damit was anfangen können, weiß ich nicht. Für Kinder ist es natürlich völlig ungeeignet.
Der Endorphinausstoß, nachdem das Programm die erwünschte 32 ausgespuckt hat, war enorm. An dieser Stelle habe ich dann aber eine Abkürzung genommen und die Konfigurationsregister aus einem anderen Programm abgeluschert.
https://github.com/ControlEverythingCommunity/BMX055/blob/master/C/BMX055.c
Ich weiß gar nicht, ob das Programm wirklich funktioniert - bei mir tat es das nicht.
Erst als ich das Aktivieren des Mags noch einmal eingebaut hatte, kamen Daten, die sich auch änderten, als ich den Calliope bewegte,
Da ich das ganze nur als zu lösendes Rätsel angesehen habe, ist es mir auch nicht so wichtig, ob die (abgepinnte) Verarbeitung der Registerdaten korrekt ist.
Es hat einfach am Ende nur Spaß gemacht.
Comments