Hardwarenahe Programmierung
ESP32 LM75B Programmierung
Die mbed I2C Programmierung wird an Hand des Temperatursensors LM75B am ESP32 über das AddOn Board PBPCB1 für das mbed-Application-Board und die Arduino IDE gezeigt (es werden die Default GPIO verwendet: SDA 21, SCL 22):
mbedEsp32S_LM75B_I2C.ino
#include <Wire.h> #define LM75B_address 0x48 // A0=A1=A2=Low #define temp_reg 0x00 // Temperture register #define conf_reg 0x01 // Configuration register double temp = 0.0; void setup() { Wire.begin(); Serial.begin(115200); Wire.beginTransmission(LM75B_address); Wire.write(temp_reg); Wire.endTransmission(); } void loop() { delay(500); Wire.requestFrom(LM75B_address, 2); double tmp = (double((Wire.read()<<8)|Wire.read()) / 256.0); Serial.println(tmp); }
- Zeile 11: Initialisiert die Bibliothek und meldet den ESP32 mit der angegebenen Adresse am I²C-Bus an.
- Zeile 14: Bereitet eine Datenübertragung an das Gerät mit der angegebenen Adresse vor.
- Zeile 15: Anschließend werden die zu übertragenden Daten mit einem oder mehreren Wire.write()-Befehl(en) in einen Puffer geschrieben.
- Zeile 16: Mit dem Aufruf von Wire.endTransmission() werden die Daten übertragen.
- Zeile 23: Fordert vom angegebenen Gerät bzw. der Adresse die angegebene Anzahl von Bytes an (hier: 2).
- Zeile 24: Erfolgt die Zusammensetzung des Temperaturwertes analog zum Datenblatt bzw. mbed Programm
- Zeile 25 gibt den Temperaturwert über die serielle Schnittstelle aus.
Siehe auch
So wie es beim mbed System die LM75B-Bibliothek gibt, werden auch im Arduino System dafür z.B. die Temperature_LM75_Derived-Bibliothek, die auch über die Arduino-IDE eingebunden werden kann: Files->Examples->I2C_Temperature_Sensors_derived_from_the_LM75->BasicUsage.