Hallo,
ich hab mir bei eBay einen MAX30102 Pulssensor wie diesen hier
für 'nen Euro besorgt und wollte dann so etwas wie dieses Projekt hier auf dem Calliope
nachbauen. Dabei habe ich noch dieses Projekt gefunden, was supereinfach klang.
Leider ist mein Sensor jedoch wohl über das linke, I2C Interface anzuschließen und reagiert mitnichten auf ein simples „wenn P16 gepulst“ vom analogen Anschluß.
Ok. Danach habe ich gesehen, dass es für den MAX30102 für den micro:bit eine pxt Erweiterung https://github.com/sparkfun/pxt-gator-particle gibt.
Die wiederum lässt sich bei makecode.calliope.cc nicht hinzufügen.
Dann habe ich gedacht, klein anfangen wäre kein Fehler und habe mir die C++ Routinen mal angesehen. Im Standard (Sparkfun library) wird erstmal geprüft, ob am I2C überhaupt ein MAX30102 (bzw. 105) hängt:
if (readRegister8(MAX30105_ADDRESS, MAX30105_PARTID) != MAX_30105_EXPECTEDPARTID)
usw.
Also wollte ich erstmal irgendwas vom Pulssensor lesen, hier also die Teilenummer 0x15.
Ich verstehe das so, dass ein Sensor letztlich wie ein Array aufgebaut ist, also
sensor[ Register ]
gibt irgendwelche Bytewerte zurück, die dann den Zustand des Sensors (Firmwareversion, Temperatur, Spannung, was auch immer) beschreiben.
Leider passt die Doku zu i2c_read_buffer und i2c_read_number so gar nicht zu dieser Vorstellung.
Ich hatte es dann mit diesem Code versucht, allerdings ohne Erfolg (174=0xAE ist die Adresse des Sensors, an Register 0xFF = 255 sollte die Teilenummer 0x15 zu finden sein):
pins.i2cWriteNumber(174,255,NumberFormat.UInt8LE,false) basic.showNumber(pins.i2cReadNumber(174, NumberFormat.UInt8LE, false))
An der Stelle nehmen die Fragen überhand
Woran wird das festgemacht, für welche Plattform eine Erweiterung supported wird? Laut Doku soll es in der pxt.json einen target Parameter geben, aber ich hab den bei einigen Stichproben noch nie gesehen.
Wieso lässt sich die pxt-gator-particle Erweiterung nicht im Calliope makecode installieren ?
Kann ich I2C Register so auslesen, geht das überhaupt mit Bordmitteln?
VG
Jochen