BME280 Sensor - Code für ATmega328 in C

OP #8085959
Lesenswert?

Hallo,

anbei ein ausgetesteter C Code für den ATmega328 (oder auch andere) zum Auslesen des BME280 Sensors. Hierzu wird das GY-BME280 Board verwendet, das mit einem I2C interface versehen ist und eine Versorgunsspannung von 5V benötigt. Hab's von AZ-Delivery für 7€ gekauft.

Berechnet wird:

  • der Luftdruck in hPa
  • die Temperatur in deg C * 10
  • die relative Feuchte in %

Alle notwendigen C Files sind im attached zip Ordner.

Vielleicht kann es jemand gebrauchen. Viel Spaß beim Ausprobieren.

Gruß Manni

Angehängte Dateien:
: Verschoben durch Admin
OP #8086191
Lesenswert?

@ Harald K.

Ich hasse es, mir den Quellcode im Browser anzusehen! Ich packe ihn lieber gleich ins Atmel Studio, da kann man gleich sehen, was falsch ist. Ansonsten ist die foreneigene Funktion schon sehr hilfreich - Danke dafür.

Ich muss den Compiler erst noch mal fragen, ob er do/while kennt :-) Ja - Du hast ja so recht, aber die do/while Anweisung ist in den alten grauen Zellen irgendwie verschütt gegangen.

@ N.M. (Mani)

Wieso soll das Delay_ms(10) unschön sein? Das Datenblatt sagt ausdrücklich, dass man auf das 0x01 Bit warten muss, bis es 0 wird. Unschön ist nur, dass ich kein Timeout eingebaut habe, der den Controller im Fehlerfall des Sensors im Endlos-Loop laufen lassen wird. Werde ich noch einbauen!

#8086199
Lesenswert?

Manfred L. schrieb:

Wieso soll das Delay_ms(10) unschön sein?

Weil es unnötig ist. Jede vernünftige Library macht das Warten über einen zusätzlichen State in einer Statemachine. Wenn das Mal ein paar us sind, OK. Kann man drüber diskutieren. Aber 10ms ist ne halbe Ewigkeit in der durch das delay nichts mehr anderes gemacht werden kann. Wenn das mehrere Programmteile so machen geht am Schluss garnichts mehr.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren